PC/M
CP/M, que originalmente significaba Control Program/Monitor y más tarde Control Program for Microcomputers, es un sistema operativo de mercado masivo creado en 1974 para microcomputadoras basadas en Intel 8080/85 por Gary Kildall de Digital Research, Inc. Inicialmente limitado a una sola tarea en procesadores de 8 bits y no más de 64 kilobytes de memoria, las versiones posteriores de CP/M agregaron variaciones multiusuario y se migraron a procesadores de 16 bits.
La combinación de computadoras de bus CP/M y S-100 se convirtió en uno de los primeros estándares en la industria de las microcomputadoras. Esta plataforma informática se usó ampliamente en los negocios desde finales de la década de 1970 hasta mediados de la de 1980. CP/M aumentó el tamaño del mercado tanto para el hardware como para el software al reducir en gran medida la cantidad de programación necesaria para instalar una aplicación en la computadora de un nuevo fabricante. Un impulsor importante de la innovación del software fue la llegada de microcomputadoras (relativamente) de bajo costo que ejecutan CP/M, ya que los programadores independientes y los piratas informáticos las compraron y compartieron sus creaciones en grupos de usuarios. CP/M finalmente fue desplazado por DOS luego de la introducción de IBM PC en 1981.
Historia
Historia temprana
Gary Kildall desarrolló originalmente CP/M durante 1974, como un sistema operativo para ejecutarse en un sistema de desarrollo Intel Intellec-8, equipado con una unidad de disquete de 8 pulgadas de Shugart Associates conectada a través de un controlador de disquete personalizado. Fue escrito en el propio PL/M (Lenguaje de programación para microcomputadoras) de Kildall. Varios aspectos de CP/M fueron influenciados por el sistema operativo TOPS-10 de la computadora central DECsystem-10, que Kildall había utilizado como entorno de desarrollo.
Bajo la dirección de Kildall, John Pierce llevó a cabo principalmente el desarrollo de CP/M 2.0 en 1978. Kathryn Strutynski, una amiga de Kildall de la época de la Naval Postgraduate School (NPS), se convirtió en la cuarta empleada de Digital Research Inc. a principios de 1979. Comenzó depurando CP/M 2.0 y luego se volvió influyente como desarrolladora clave para CP/M 2.2 y CP/M Plus. Otros de los primeros desarrolladores de la base CP/M incluyeron a Robert "Bob" Silberstein y David 'Dave' K. Marrón.
CP/M originalmente significaba "Programa de control/Monitor", un nombre que implica un monitor residente, un precursor primitivo del sistema operativo. Sin embargo, durante la conversión de CP/M a un producto comercial, los documentos de registro de marca presentados en noviembre de 1977 dieron el nombre del producto como "Programa de control para microcomputadoras". El nombre CP/M sigue un esquema de nombres prevaleciente en la época, como en el lenguaje PL/M de Kildall y el PL/P (Lenguaje de programación para Prime) de Prime Computer. ambos sugiriendo PL/I de IBM; y el sistema operativo CP/CMS de IBM, que Kildall había utilizado cuando trabajaba en el NPS. Este cambio de nombre de CP/M fue parte de un esfuerzo mayor de Kildall y su esposa con su socia comercial, Dorothy McEwen, para convertir el proyecto personal de Kildall de CP/M y el compilador PL/M contratado por Intel en una empresa comercial. Los Kildall tenían la intención de establecer la marca Digital Research y sus líneas de productos como sinónimo de "microcomputadora" en la mente del consumidor, similar a lo que IBM y Microsoft juntos lograron más tarde con éxito al hacer "computadora personal" sinónimo de sus ofertas de productos. Posteriormente, Intergalactic Digital Research, Inc. pasó a llamarse Digital Research, Inc. a través de una presentación de cambio de nombre de la corporación.
Éxito inicial
Para septiembre de 1981, Digital Research había vendido más de 260000 Licencias CP/M; InfoWorld declaró que el mercado real probablemente era mayor debido a las sublicencias. Muchas empresas diferentes produjeron computadoras basadas en CP/M para muchos mercados diferentes; la revista afirmó que "CP/M está bien encaminado para establecerse como el sistema operativo para computadoras pequeñas". Las empresas optaron por admitir CP/M debido a su gran biblioteca de software. La Xerox 820 ejecutó el sistema operativo porque "donde hay literalmente miles de programas escritos para ella, sería imprudente no aprovecharla", dijo Xerox. (Xerox incluyó un manual de CP/M de Howard W. Sams como compensación por la documentación de Digital Research, que InfoWorld en 1982 describió como atroz). En 1984, la Universidad de Columbia usó el mismo código fuente para construya binarios de Kermit para más de una docena de sistemas CP/M diferentes, además de una versión genérica. El sistema operativo se describió como un 'bus de software', que permite que varios programas interactúen con diferentes hardware de forma estandarizada. Los programas escritos para CP/M solían ser portátiles entre diferentes máquinas y, por lo general, solo requerían la especificación de las secuencias de escape para el control de la pantalla y la impresora. Esta portabilidad hizo que CP/M fuera popular y se escribió mucho más software para CP/M que para sistemas operativos que se ejecutaban en una sola marca de hardware. Una restricción a la portabilidad era que ciertos programas usaban el conjunto de instrucciones extendido del procesador Z80 y no funcionaban en un procesador 8080 u 8085. Otro fueron las rutinas de gráficos, especialmente en juegos y programas de gráficos, que generalmente eran específicos de la máquina, ya que usaban acceso directo al hardware para aumentar la velocidad, sin pasar por el sistema operativo y el BIOS (este también era un problema común en las primeras máquinas DOS).
Bill Gates afirmó que la serie Apple II con una SoftCard Z-80 era la plataforma de hardware CP/M más popular. Muchas marcas diferentes de máquinas ejecutaron el sistema operativo, algunos ejemplos notables son Altair 8800, IMSAI 8080, Osborne 1 y Kaypro luggables, y computadoras MSX. El sistema compatible con CP/M más vendido de todos los tiempos fue probablemente el Amstrad PCW. En el Reino Unido, CP/M también estaba disponible en las computadoras educativas de Research Machines (con el código fuente de CP/M publicado como recurso educativo) y para BBC Micro cuando estaba equipado con un coprocesador Z80. Además, estaba disponible para la serie Amstrad CPC, Commodore 128, TRS-80 y modelos posteriores de ZX Spectrum. CP/M 3 también se usó en NIAT, una computadora de mano personalizada diseñada para uso interno de A.C. Nielsen con 1 MB de memoria SSD.
Multiusuario
En 1979, se lanzó un derivado de CP/M compatible con múltiples usuarios. MP/M permitió que múltiples usuarios se conectaran a una sola computadora, utilizando múltiples terminales para proporcionar a cada usuario una pantalla y un teclado. Las versiones posteriores se ejecutaron en procesadores de 16 bits.
CP/M Plus
La última versión de 8 bits de CP/M fue la versión 3, a menudo llamada CP/M Plus, lanzada en 1983. Su BDOS fue diseñado por Brown. Incorporó la gestión de memoria de conmutación de banco de MP/M en un sistema operativo de una sola tarea para un solo usuario compatible con las aplicaciones CP/M 2.2. Por lo tanto, CP/M 3 podría utilizar más de 64 KB de memoria en un procesador 8080 o Z80. El sistema podría configurarse para admitir el estampado de la fecha de los archivos. El software de distribución del sistema operativo también incluía un ensamblador y un enlazador móviles. CP/M 3 estaba disponible para la última generación de computadoras de 8 bits, en particular Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, máquinas MSX y Radio Shack TRS-80 Model 4.
Versiones de 16 bits
También hubo versiones de CP/M para algunas CPU de 16 bits.
La primera versión de la familia de 16 bits fue CP/M-86 para Intel 8086 en noviembre de 1981. Kathryn Strutynski fue la directora de proyecto de la línea de sistemas operativos CP/M-86 en evolución. En este punto, el CP/M original de 8 bits pasó a ser conocido por el retroónimo CP/M-80 para evitar confusiones.
Se esperaba que CP/M-86 fuera el sistema operativo estándar de las nuevas PC de IBM, pero DRI e IBM no pudieron negociar los términos de licencia y desarrollo. En cambio, IBM recurrió a Microsoft, y Microsoft entregó PC DOS basado en 86-DOS. Aunque CP/M-86 se convirtió en una opción para la PC de IBM después de que DRI amenazara con emprender acciones legales, nunca superó al sistema de Microsoft. La mayoría de los clientes se sintieron repelidos por el precio significativamente mayor que cobró IBM por CP/M-86 sobre PC DOS (US$240 y US$40, respectivamente).
Cuando Digital Equipment Corporation (DEC) lanzó el Rainbow 100 para competir con IBM, venía con CP/M-80 usando un chip Z80, CP/M-86 o MS-DOS usando un microprocesador 8088, o CP/ M-86/80 usando ambos. Las CPU Z80 y 8088 se ejecutaron simultáneamente. Una ventaja de Rainbow era que podía seguir ejecutando software CP/M de 8 bits, preservando la inversión posiblemente considerable de un usuario a medida que avanzaba hacia el mundo de MS-DOS de 16 bits. Una adaptación similar de doble procesador para CompuPro System 816
se denominó CP/M 8- dieciséis. La adaptación CP/M-86 para el Zenith Z-100 basado en 8085/8088 también admitía la ejecución de programas para sus dos CPU.Poco después de CP/M-86, otra versión de 16 bits de CP/M fue CP/M-68K para el Motorola 68000. La versión original de CP/M-68K en 1982 fue escrito en Pascal/MT+68k, pero luego fue portado a C. CP/M-68K, que ya se ejecutaba en los sistemas Motorola EXORmacs, iba a usarse inicialmente en la computadora Atari ST, pero Atari decidió optar por un sistema operativo de disco más nuevo llamado GEMDOS. CP/M-68K también se usó en las computadoras SORD M68 y M68MX.
En 1982, también hubo un puerto de CP/M-68K a Zilog Z8000 de 16 bits para Olivetti M20, escrito en C, llamado CP/M-8000.
Estas versiones de 16 bits de CP/M requerían que los programas de aplicación se volvieran a compilar para las nuevas CPU. Algunos programas escritos en lenguaje ensamblador podrían traducirse automáticamente para un nuevo procesador. Una herramienta para esto fue XLT86 de Digital Research, que tradujo el código fuente.ASM para el procesador Intel 8080 en el código fuente.A86 para Intel 8086. El traductor también optimizaría la salida para el tamaño del código y se ocuparía de las convenciones de llamadas., de modo que los programas CP/M-80 y MP/M-80 pudieran ser portados a las plataformas CP/M-86 y MP/M-86 automáticamente. XLT86 fue escrito en PL/I-80 y estaba disponible para plataformas CP/M-80 así como para VAX/VMS.
Desplazamiento por MS-DOS
Muchos esperaban que CP/M fuera el sistema operativo estándar para computadoras de 16 bits. En 1980, IBM se acercó a Digital Research, en Bill Gates' sugerencia, licenciar una próxima versión de CP/M para su nuevo producto, la computadora personal de IBM. Ante la imposibilidad de obtener un acuerdo de confidencialidad firmado, las conversaciones fracasaron e IBM, en cambio, contrató a Microsoft para proporcionar un sistema operativo. El producto resultante, MS-DOS, pronto comenzó a venderse más que CP/M.
Muchos de los conceptos y mecanismos básicos de las primeras versiones de MS-DOS se parecían a los de CP/M. Los elementos internos, como las estructuras de datos de manejo de archivos, eran idénticos y ambos se referían a unidades de disco con una letra (
Aunque uno de los primeros periféricos para la PC de IBM fue una tarjeta de expansión similar a una SoftCard que le permitía ejecutar software CP/M de 8 bits, InfoWorld declaró en 1984 que los esfuerzos para introducir CP/M al mercado doméstico había fracasado en gran medida y la mayor parte del software CP/M era demasiado caro para los usuarios domésticos. En 1986, la revista declaró que Kaypro había detenido la producción de modelos basados en CP/M de 8 bits para concentrarse en las ventas de sistemas compatibles con MS-DOS, mucho después de que la mayoría de los demás proveedores dejaran de producir nuevos equipos y software para CP/M. CP/M perdió rápidamente cuota de mercado cuando el mercado de la microcomputación pasó a la plataforma compatible con IBM y nunca recuperó su antigua popularidad. La revista Byte, en ese momento una de las revistas líderes en la industria de las microcomputadoras, esencialmente dejó de cubrir los productos CP/M a los pocos años de la introducción de IBM PC. Por ejemplo, en 1983 todavía había algunos anuncios de placas S-100 y artículos sobre el software CP/M, pero en 1987 ya no se encontraban en la revista.
Las versiones posteriores de CP/M-86 lograron avances significativos en rendimiento y facilidad de uso y se hicieron compatibles con MS-DOS. Para reflejar esta compatibilidad, se cambió el nombre y CP/M-86 se convirtió en DOS Plus, que a su vez se convirtió en DR-DOS.
ZCPR
ZCPR (el reemplazo del procesador de comandos Z80) se presentó el 2 de febrero de 1982 como un reemplazo directo para el procesador de comandos (CCP) estándar de la consola de Digital Research y fue escrito inicialmente por un grupo de aficionados a la informática que se hacían llamar "El Grupo PCCh". Eran Frank Wancho, Keith Petersen (el archivista detrás de Simtel en ese momento), Ron Fowler, Charlie Strom, Bob Mathias y Richard Conn. Richard era, de hecho, la fuerza impulsora de este grupo (todos los cuales mantenían contacto a través del correo electrónico).
ZCPR1 se publicó en un disco publicado por SIG/M (Special Interest Group/Microcomputers), una parte del Amateur Computer Club of New Jersey.
ZCPR2 se lanzó el 14 de febrero de 1983. Se lanzó como un conjunto de diez discos de SIG/M. ZCPR2 se actualizó a 2.3 y también se lanzó en el código 8080, lo que permite el uso de ZCPR2 en los sistemas 8080 y 8085.
ZCPR3 se lanzó el 14 de julio de 1984 como un conjunto de nueve discos de SIG/M. El código para ZCPR3 también podría compilarse (con funciones reducidas) para el 8080 y se ejecutaría en sistemas que no tuvieran el microprocesador Z80 necesario. Las funciones de ZCPR a partir de la versión 3 incluían shells, alias, redirección de E/S, control de flujo, directorios con nombre, rutas de búsqueda, menús personalizados, contraseñas y ayuda en línea. En enero de 1987, Richard Conn dejó de desarrollar ZCPR y Echelon le pidió a Jay Sage (que ya tenía un ZCPR 3.1 mejorado de forma privada) que continuara trabajando en él. Por lo tanto, se desarrolló y lanzó ZCPR 3.3. ZCPR 3.3 ya no era compatible con la serie 8080 de microprocesadores y agregó la mayoría de las funciones de cualquier actualización en la línea ZCPR. ZCPR 3.3 también incluía un complemento completo de utilidades con capacidades considerablemente ampliadas. Si bien fue respaldado con entusiasmo por la base de usuarios de CP/M de la época, ZCPR por sí solo fue insuficiente para retrasar la desaparición de CP/M.
Modelo de hardware
Un sistema CP/M mínimo de 8 bits contendría los siguientes componentes:
- Una terminal de ordenadores usando el conjunto de caracteres ASCII
- Un microprocesador Intel 8080 (y más tarde el 8085) o Zilog Z80
- Los procesadores NEC V20 y V30 soportan un modo de 8080-emulación que puede ejecutar CP/M de 8 bits en un ordenador PC DOS/MS-DOS así equipado, aunque cualquier PC también puede ejecutar el CP/M-86 de 16 bits.
- Al menos 16 kilobytes de RAM, comenzando por la dirección 0
- Un medio para arrancar el primer sector de la disquete
- Al menos una unidad floppy-disk
El único sistema de hardware que CP/M, vendido por Digital Research, admitía era el sistema de desarrollo Intel 8080. Los fabricantes de sistemas compatibles con CP/M personalizaron partes del sistema operativo para su propia combinación de memoria instalada, unidades de disco y dispositivos de consola. CP/M también funcionaría en sistemas basados en el procesador Zilog Z80 ya que el Z80 era compatible con el código 8080. Si bien el núcleo distribuido de Digital Research de CP/M (BDOS, CCP, comandos básicos transitorios) no usó ninguna de las instrucciones específicas de Z80, muchos sistemas basados en Z80 usaron el código Z80 en el BIOS específico del sistema y muchas aplicaciones estaban dedicadas. a máquinas CP/M basadas en Z80.
Digital Research posteriormente se asoció con Zilog y American Microsystems para producir Personal CP/M, una versión basada en ROM del sistema operativo destinada a sistemas de menor costo que potencialmente podrían estar equipados sin unidades de disco. Presentado por primera vez en el Sharp MZ-800, un sistema basado en cassette con unidades de disco opcionales, Personal CP/M se describió como "reescrito para aprovechar el conjunto de instrucciones Z-80 mejorado" en lugar de preservar la portabilidad con el 8080. American Microsystems anunció un microprocesador compatible con Z80, el S83, con 8 KB de ROM en el paquete para el sistema operativo y BIOS, junto con una lógica integral para interactuar con dispositivos de RAM dinámicos de 64 kilobits.
En la mayoría de las máquinas, el arranque era un cargador de arranque mínimo en la ROM combinado con algún medio de cambio de banco mínimo o un medio para inyectar código en el bus (ya que el 8080 necesita ver el código de arranque en la Dirección 0 para el inicio, mientras que CP /M necesita RAM allí); para otros, este arranque tuvo que ingresarse en la memoria utilizando los controles del panel frontal cada vez que se iniciaba el sistema.
CP/M usó el conjunto ASCII de 7 bits. Los otros 128 caracteres posibles gracias al byte de 8 bits no estaban estandarizados. Por ejemplo, un Kaypro los usó para caracteres griegos, y las máquinas Osborne usaron el conjunto de bits 8 para indicar un carácter subrayado. WordStar usó el octavo bit como marcador de fin de palabra. Los sistemas CP/M internacionales utilizan con mayor frecuencia la norma ISO 646 para juegos de caracteres localizados, reemplazando ciertos caracteres ASCII con caracteres localizados en lugar de agregarlos más allá del límite de 7 bits.
Componentes
En las versiones de 8 bits, mientras se ejecutaba, el sistema operativo CP/M cargado en la memoria tenía tres componentes:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Procesador del Comando de Consola (CCP).
El BIOS y BDOS residían en la memoria, mientras que el CCP residía en la memoria a menos que una aplicación lo sobrescribiera, en cuyo caso se recargaba automáticamente después de que la aplicación terminaba de ejecutarse. También se proporcionaron una serie de comandos transitorios para utilidades estándar. Los comandos transitorios residían en archivos con la extensión.COM en el disco.
El BIOS controlaba directamente los componentes de hardware además de la CPU y la memoria principal. Contenía funciones como la entrada y salida de caracteres y la lectura y escritura de sectores de disco. El BDOS implementó el sistema de archivos CP/M y algunas abstracciones de entrada/salida (como la redirección) sobre el BIOS. El CCP tomó los comandos del usuario y los ejecutó directamente (comandos internos como DIR para mostrar un directorio o ERA para eliminar un archivo) o cargó e inició un archivo ejecutable con el nombre dado (comandos transitorios como PIP.COM para copiar archivos o STAT.COM para mostrar varios archivos e información del sistema). Las aplicaciones de terceros para CP/M también eran esencialmente comandos transitorios.
Los comandos transitorios BDOS, CCP y estándar eran los mismos en todas las instalaciones de una revisión particular de CP/M, pero la parte del BIOS siempre se adaptaba al hardware en particular.
Agregar memoria a una computadora, por ejemplo, significaba que el sistema CP/M tenía que ser reinstalado para permitir que los programas transitorios usaran el espacio de memoria adicional. Se proporcionó un programa de utilidad (MOVCPM) con la distribución del sistema que permitió reubicar el código objeto en diferentes áreas de memoria. El programa de utilidad ajustó las direcciones en las instrucciones de llamada de subrutina y salto absoluto a las nuevas direcciones requeridas por la nueva ubicación del sistema operativo en la memoria del procesador. Esta versión recién parcheada podría guardarse en un disco nuevo, lo que permitiría que los programas de aplicación accedieran a la memoria adicional disponible al mover los componentes del sistema. Una vez instalado, el sistema operativo (BIOS, BDOS y CCP) se almacenaba en áreas reservadas al principio de cualquier disco que se utilizaría para arrancar el sistema. En el inicio, el gestor de arranque (generalmente contenido en un chip de firmware ROM) cargaría el sistema operativo desde el disco en la unidad A:
.
Según los estándares modernos, CP/M era primitivo, debido a las limitaciones extremas del tamaño del programa. Con la versión 1.0 no había provisión para detectar un disco modificado. Si un usuario cambiaba de disco sin volver a leer manualmente el directorio del disco, el sistema escribiría en el nuevo disco usando la información del directorio del disco anterior, arruinando los datos almacenados en el disco. Desde la versión 1.1 o 1.2 en adelante, cambiar un disco y luego intentar escribir en él antes de que se lea su directorio provocaría la señalización de un error fatal. Esto evitó sobrescribir el disco pero requirió un reinicio y la pérdida de los datos que se iban a almacenar en el disco.
La mayor parte de la complejidad en CP/M estaba aislada en el BDOS y, en menor medida, en el CCP y los comandos transitorios. Esto significaba que al transferir el número limitado de rutinas simples en el BIOS a una plataforma de hardware en particular, todo el sistema operativo funcionaría. Esto redujo significativamente el tiempo de desarrollo necesario para admitir nuevas máquinas y fue una de las razones principales del uso generalizado de CP/M. Hoy en día, este tipo de abstracción es común a la mayoría de los sistemas operativos (una capa de abstracción de hardware), pero en el momento del nacimiento de CP/M, los sistemas operativos generalmente estaban destinados a ejecutarse en una sola plataforma de máquina y los diseños multicapa se consideraban innecesarios.
Procesador de comandos de consola
El procesador de comandos de la consola, o CCP, aceptó la entrada del teclado y transmitió los resultados a la terminal. El propio CP/M funcionaría con una terminal de impresión o con una terminal de video. Todos los comandos CP/M tenían que escribirse en la línea de comandos. La consola mostraría con mayor frecuencia el indicador A>
, para indicar la unidad de disco predeterminada actual. Cuando se usa con una terminal de video, esto suele ir seguido de un cursor parpadeante proporcionado por la terminal. El CCP esperaría la entrada del usuario. Se puede usar un comando interno de CCP, con la forma de letra de unidad seguida de dos puntos, para seleccionar la unidad predeterminada. Por ejemplo, escribir B:
y presionar enter en el símbolo del sistema cambiaría la unidad predeterminada a B, y el símbolo del sistema se convertiría en B>
para indicar este cambio.
La interfaz de línea de comandos de CP/M se diseñó a partir de los sistemas operativos de Digital Equipment, como RT-11 para el PDP-11 y OS/8 para el PDP-8. Los comandos tomaron la forma de una palabra clave seguida de una lista de parámetros separados por espacios o caracteres especiales. Similar a un shell de Unix incorporado, si se reconocía un comando interno, el propio CCP lo ejecutaba. De lo contrario, intentaría encontrar un archivo ejecutable en la unidad de disco registrada actualmente y (en versiones posteriores) en el área de usuario, cargarlo y pasarle cualquier parámetro adicional desde la línea de comando. Estos se denominaron "transitorios" programas Al finalizar, CP/M volvería a cargar la parte del CCP que había sido sobrescrita por los programas de aplicación; esto permitió que los programas transitorios tuvieran un espacio de memoria más grande.
Los comandos en sí a veces pueden ser oscuros. Por ejemplo, el comando para duplicar archivos se llamaba PIP
(Peripheral-Interchange-Program), el nombre de la antigua utilidad DEC utilizada para ese propósito. El formato de los parámetros dados a un programa no estaba estandarizado, por lo que no había un solo carácter de opción que diferenciara las opciones de los nombres de archivo. Diferentes programas podían y usaban diferentes personajes.
El procesador de comandos de la consola CP/M incluye DIR, ERA, REN, SAVE, TYPE y USER como comandos integrados. Los comandos transitorios en CP/M incluyen ASM, DDT, DUMP, ED, LOAD, MOVCPM
, PIP, STAT, ENVIAR y SYSGEN.CP/M Plus (CP/M Versión 3) incluye DIR (muestra una lista de archivos de un directorio excepto aquellos marcados con el atributo SYS), DIRSYS / DIRS (muestra una lista de archivos marcados con el atributo SYS en el directorio), ERASE / ERA (eliminar un archivo), RENAME / REN (cambiar el nombre de un archivo), TYPE / TYP (mostrar el contenido de un archivo de caracteres ASCII) y USER / USE (cambiar el número de usuario) como comandos integrados: CP/M 3 permite el usuario para abreviar los comandos incorporados. Los comandos transitorios en CP/M 3 incluyen COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT y XREF.
Sistema operativo de disco básico
El sistema operativo de disco básico, o BDOS, brindaba acceso a operaciones tales como abrir un archivo, enviarlo a la consola o imprimir. Los programas de aplicación cargarían los registros del procesador con un código de función para la operación y direcciones para parámetros o búferes de memoria, y llamarían a una dirección fija en la memoria. Dado que la dirección era la misma independientemente de la cantidad de memoria en el sistema, los programas de aplicación se ejecutarían de la misma manera para cualquier tipo o configuración de hardware.
Sistema básico de entrada y salida
El sistema básico de entrada y salida o BIOS, proporcionó las funciones de nivel más bajo requeridas por el sistema operativo.
Estos incluían leer o escribir caracteres individuales en la consola del sistema y leer o escribir un sector de datos del disco. El BDOS manejó parte del almacenamiento en búfer de los datos del disquete, pero antes de CP/M 3.0 asumía un tamaño de sector de disco fijo en 128 bytes, como se usa en los disquetes de 8 pulgadas de densidad única. Dado que la mayoría de los formatos de disco de 5,25 pulgadas usaban sectores más grandes, el bloqueo y desbloqueo y la administración de un área de búfer de disco se manejaban mediante un código específico del modelo en el BIOS.
La personalización era necesaria porque las opciones de hardware no estaban limitadas por la compatibilidad con ningún estándar popular. Por ejemplo, algunos fabricantes utilizaron una terminal de computadora separada, mientras que otros diseñaron un sistema integrado de visualización de video. Los puertos seriales para impresoras y módems podían usar diferentes tipos de chips UART y las direcciones de los puertos no eran fijas. Algunas máquinas usaban E/S mapeadas en memoria en lugar del espacio de direcciones de E/S 8080. Todas estas variaciones en el hardware se ocultaron de otros módulos del sistema mediante el uso del BIOS, que usaba puntos de entrada estándar para los servicios necesarios para ejecutar CP/M, como E/S de caracteres o acceder a un bloque de disco. Dado que el soporte para la comunicación en serie con un módem era muy rudimentario en el BIOS o puede haber estado ausente por completo, era una práctica común para los programas CP/M que usaban módems tener una superposición instalada por el usuario que contenía todo el código necesario para acceder a una máquina en particular. #39; puerto serie.
Aplicaciones
WordStar, uno de los primeros procesadores de texto ampliamente utilizados, y dBase, uno de los primeros y populares programas de bases de datos para microcomputadoras, se escribieron originalmente para CP/M. Dos de los primeros delineadores, KAMAS (Knowledge and Mind Amplification System) y su sucesor recortado Out-Think (sin funciones de programación y rediseñado para compatibilidad con 8080/V20) también se escribieron para CP/M, aunque luego se reescribieron para MS-DOS. Turbo Pascal, el antepasado de Borland Delphi, y Multiplan, el antepasado de Microsoft Excel, también debutaron en CP/M antes de que estuvieran disponibles las versiones de MS-DOS. Visicalc, el primer programa de hoja de cálculo, estuvo disponible para CP/M. Otra empresa, Sorcim, creó su hoja de cálculo SuperCalc para CP/M, que se convertiría en líder del mercado y estándar de facto en CP/M. Supercalc pasaría a ser un competidor en el mercado de hojas de cálculo en el mundo de MS-DOS. AutoCAD, una aplicación CAD de Autodesk debutó en CP/M. Se disponía de una gran cantidad de compiladores e intérpretes para los lenguajes de programación populares de la época (como BASIC, Turbo Pascal de Borland, FORTRAN e incluso PL/I), entre ellos varios de los primeros productos de Microsoft.
El software CP/M a menudo venía con instaladores que lo adaptaban a una amplia variedad de computadoras. El código fuente de los programas BASIC era fácilmente accesible y la mayoría de las formas de protección contra copias no eran efectivas en el sistema operativo. Un propietario de Kaypro II, por ejemplo, obtendría software en formato Xerox 820, luego lo copiaría y ejecutaría desde discos de formato Kaypro.
La falta de gráficos estandarizados admite videojuegos limitados, pero se portaron varios juegos basados en texto y personajes, como Telengard, Gorillas, Hamurabi i>, Lunar Lander, junto con la primera ficción interactiva que incluye la serie Zork y Colossal Cave Adventure. El especialista en aventuras de texto Infocom fue uno de los pocos editores que lanzó constantemente sus juegos en formato CP/M. Lifeboat Associates comenzó a recopilar y distribuir mensajes "gratis" escritos por los usuarios. software. Uno de los primeros fue XMODEM, que permitía transferencias de archivos fiables a través de módem y línea telefónica. Otro programa nativo de CP/M fue el procesador de esquemas KAMAS.
Área de programa transitorio
La memoria de lectura/escritura entre la dirección 0100 hexadecimal y la dirección más baja del BDOS era el Área de programa transitorio (TPA) disponible para los programas de aplicación CP/M. Aunque todos los procesadores Z80 y 8080 pueden manejar 64 kilobytes de memoria, la cantidad disponible para los programas de aplicación puede variar según el diseño de la computadora en particular. Algunas computadoras usaban gran parte del espacio de direcciones para cosas como BIOS ROM o memoria de visualización de video. Como resultado, algunos sistemas tenían más memoria TPA disponible que otros. El cambio de banco era una técnica común que permitía que los sistemas tuvieran un gran TPA mientras cambiaban la ROM o el espacio de memoria de video según fuera necesario. CP/M 3.0 también permitía que partes del BDOS estuvieran en la memoria conmutada por banco.
Aplicación de depuración
CP/M vino con una herramienta de depuración dinámica, apodada DDT (después del insecticida, es decir, un eliminador de errores), que permitía examinar y manipular módulos de memoria y de programa, y permitía ejecutar un programa paso a paso. hora.
Programas para residentes
CP/M originalmente no admitía el equivalente de los programas de terminación y permanencia residente (TSR) como en DOS. Los programadores podrían escribir software que pudiera interceptar ciertas llamadas al sistema operativo y extender o alterar su funcionalidad. Usando esta capacidad, los programadores desarrollaron y vendieron programas auxiliares de escritorio, como SmartKey, una utilidad de teclado para asignar cualquier cadena de bytes a cualquier tecla. CP/M 3, sin embargo, agregó soporte para Extensiones de sistema residente cargables dinámicamente (RSX). Se podría usar un llamado archivo de comando nulo para permitir que CCP cargue un RSX sin un programa transitorio. Soluciones similares como RSM (para Módulos de sistema residente) también fueron adaptadas a sistemas CP/M 2.2 por terceros.
Instalación de software
Aunque CP/M proporcionó algo de abstracción de hardware para estandarizar la interfaz para E/S de disco o E/S de consola, los programas de aplicación aún requerían instalación para utilizar todas las funciones de equipos como impresoras y terminales. A menudo, estos estaban controlados por secuencias de escape que tenían que modificarse para diferentes dispositivos. Por ejemplo, la secuencia de escape para seleccionar negrita en una impresora habría sido diferente entre los fabricantes y, a veces, entre los modelos dentro del rango de un fabricante. Este procedimiento no estaba definido por el sistema operativo; un usuario generalmente ejecutaría un programa de instalación que permitiría la selección de una variedad de dispositivos o permitiría la edición característica por característica de las secuencias de escape requeridas para acceder a una función. Esto tuvo que repetirse para cada programa de aplicación, ya que no se proporcionó un servicio de sistema operativo central para estos dispositivos.
Los códigos de inicialización para cada modelo de impresora debían escribirse en la aplicación. Para usar un programa como Wordstar con más de una impresora (por ejemplo, una impresora de matriz de puntos rápida o una impresora de rueda de margaritas más lenta pero con calidad de presentación), se tuvo que preparar una versión separada de Wordstar y se tuvo que cargar el Wordstar versión que correspondía a la impresora seleccionada (y saliendo y recargando para cambiar de impresora).
Formatos de disco
IBM System/34 e IBM 3740's de densidad única y formato de un solo lado es el formato estándar de disquete de 8 pulgadas de CP/M's. No existe un formato de disco CP/M estándar de 5,25 pulgadas; Kaypro, Morrow Designs, Osborne y otros utilizan cada uno el suyo propio. InfoWorld estimó en septiembre de 1981 que "alrededor de dos docenas de formatos eran lo suficientemente populares como para que los creadores de software tuvieran que considerarlos para llegar al mercado más amplio posible". JRT Pascal, por ejemplo, proporcionó versiones en disco de 5,25 pulgadas para North Star, Osborne, Apple, Heath hard sector y soft sector, y Superbrain, y una versión de 8 pulgadas. Ellis Computing también ofreció su software para ambos formatos Heath y otros 16 formatos de 5,25 pulgadas, incluidas dos modificaciones diferentes de TRS-80 CP/M.
Ciertos formatos de disco eran más populares que otros. La mayoría del software estaba disponible en el formato Xerox 820 y otras computadoras como Kaypro II eran compatibles con él. Sin embargo, ningún fabricante prevaleció en la era de 5,25 pulgadas del uso de CP/M, y los formatos de disco a menudo no eran portátiles entre los fabricantes de hardware. Un fabricante de software tuvo que preparar una versión separada del programa para cada marca de hardware en el que iba a ejecutarse. Con algunos fabricantes (Kaypro es un ejemplo), ni siquiera hubo estandarización entre los diferentes modelos de la empresa. Debido a esta situación, los programas de traducción de formato de disco, que permitían que una máquina leyera muchos formatos diferentes, se hicieron populares y redujeron la confusión, al igual que programas como Kermit, que permitía la transferencia de datos y programas de una máquina a otra utilizando los puertos serie que la mayoría de las máquinas CP/M tenían.
Se utilizaron varios formatos según las características de los sistemas particulares y, hasta cierto punto, las elecciones de los diseñadores. Opciones admitidas por CP/M para controlar el tamaño de las áreas reservadas y de directorio en el disco, y la asignación entre los sectores lógicos del disco (tal como los ven los programas CP/M) y los sectores físicos asignados en el disco. Había muchas formas de personalizar estos parámetros para cada sistema, pero una vez que se habían configurado, no existía una forma estandarizada para que un sistema cargara parámetros desde un disco formateado en otro sistema.
El grado de portabilidad entre diferentes máquinas CP/M dependía del tipo de unidad de disco y controlador utilizado, ya que existían muchos tipos diferentes de disquetes en la era CP/M, tanto en formato de 8 pulgadas como de 5,25 pulgadas. Los discos pueden tener sectores rígidos o blandos, densidad simple o doble, cara simple o doble, 35 pistas, 40 pistas, 77 pistas u 80 pistas, y el diseño del sector, el tamaño y la intercalación también pueden variar ampliamente. Aunque los programas de traducción podían permitir al usuario leer tipos de disco de diferentes máquinas, el tipo de unidad y el controlador también eran factores. En 1982, los discos de 5,25 pulgadas y 40 pistas de una sola cara se habían convertido en el formato más popular para distribuir software CP/M, ya que los usaban las máquinas de nivel de consumo más comunes de esa época, como la Apple II, TRS-80, Osborne 1, Kaypro II e IBM PC. Un programa de traducción permitía al usuario leer cualquier disco en su máquina que tuviera un formato similar; por ejemplo, el Kaypro II podía leer discos TRS-80, Osborne, IBM PC y Epson. Otros tipos de discos, como los de 80 pistas o los de sectores duros, eran completamente imposibles de leer. La primera mitad de los discos de dos caras (como los de la Epson QX-10) se podía leer porque CP/M accedía a las pistas del disco secuencialmente, siendo la pista 0 la primera pista (la más exterior) de la cara 1 y la pista 79 (en un disco de 40 pulgadas). track disk) siendo la última pista (la más interna) del lado 2. Los usuarios de Apple II no podían usar nada más que el formato GCR de Apple y, por lo tanto, tenían que obtener el software CP/M en discos de formato Apple o transferirlo a través de un enlace serial.
El mercado fragmentado de CP/M, que requiere que los distribuidores almacenen múltiples formatos de discos o inviertan en equipos de duplicación multiformato, en comparación con los formatos de disco de PC de IBM más estandarizados, fue un factor que contribuyó a la rápida obsolescencia de CP/M después 1981.
Una de las últimas máquinas compatibles con CP/M notables que aparecieron fue la Commodore 128 en 1985, que tenía un Z80 para compatibilidad con CP/M además de su modo nativo usando una CPU derivada de 6502. El uso de CP/M requería una unidad de disco 1571 o 1581 que pudiera leer discos de formato MFM de 40 pistas de sector software.
La primera computadora que utilizó una unidad de disquete de 3,5 pulgadas, la Sony SMC-70, ejecutaba CP/M 2.2. La computadora portátil Commodore 128, Bondwell-2, Micromint/Ciarcia SB-180, MSX y TRS-80 Model 4 (con Montezuma CP/M 2.2) también admiten el uso de CP/M con disquetes de 3,5 pulgadas. CP/AM, la versión de CP/M de Applied Engineering para Apple II, también admitía discos de 3,5 pulgadas (así como discos RAM en tarjetas RAM compatibles con la tarjeta de expansión de memoria Apple II). El Amstrad PCW ejecutó CP / M usando unidades de disquete de 3 pulgadas al principio y luego cambió a unidades de 3,5 pulgadas.
Sistema de archivos
Los nombres de archivo se especificaron como una cadena de hasta ocho caracteres, seguida de un punto, seguido de una extensión de nombre de archivo de hasta tres caracteres (formato de nombre de archivo &"8.3"). La extensión generalmente identificaba el tipo de archivo. Por ejemplo, .COM
indicaba un archivo de programa ejecutable y .TXT
indicaba un archivo que contenía texto ASCII. Los caracteres en los nombres de archivo ingresados en el símbolo del sistema se convirtieron a mayúsculas, pero el sistema operativo no lo hizo cumplir. Los programas (MBASIC es un ejemplo notable) pudieron crear nombres de archivo que contenían letras minúsculas, que luego no se podían referenciar fácilmente en la línea de comando.
Cada unidad de disco se identificó con una letra de unidad, por ejemplo, unidad A
y unidad B
. Para hacer referencia a un archivo en una unidad específica, la letra de la unidad se antepuso al nombre del archivo, separada por dos puntos, por ejemplo, A:FILE.TXT
. Sin una letra de unidad prefijada, el acceso era a los archivos en la unidad predeterminada actual.
El tamaño del archivo se especificó como el número de registros de 128 bytes (correspondientes directamente a los sectores del disco en unidades de 8 pulgadas) ocupados por un archivo en el disco. No había una forma generalmente admitida de especificar tamaños de archivo exactos en bytes. El sistema operativo mantuvo el tamaño actual de un archivo en el bloque de control de archivos (FCB) del archivo. Dado que muchos programas de aplicación (como los editores de texto) prefieren tratar los archivos como secuencias de caracteres en lugar de secuencias de registros, por convención los archivos de texto terminaban con un carácter de control-Z (ASCII SUB, hexadecimal 1A). Por lo tanto, determinar el final de un archivo de texto implicaba examinar el último registro del archivo para localizar el control-Z de terminación. Esto también significaba que insertar un carácter de control-Z en medio de un archivo generalmente tenía el efecto de truncar el contenido de texto del archivo.
Con la llegada de unidades de disco fijas y extraíbles más grandes, se emplearon fórmulas de desbloqueo de disco que resultaron en más bloques de disco por bloque de asignación de archivos lógicos. Si bien esto permitió tamaños de archivo más grandes, también significó que el archivo más pequeño que se podía asignar aumentó de tamaño de 1 KB (en unidades de una sola densidad) a 2 KB (en unidades de doble densidad) y así sucesivamente, hasta 32 KB para un archivo que contiene un solo byte. Esto generaba un uso ineficiente del espacio en disco si el disco contenía una gran cantidad de archivos pequeños.
Las marcas de tiempo de modificación de archivos no se admitían en versiones hasta CP/M 2.2, pero eran una función opcional en MP/M y CP/M 3.0.
CP/M 2.2 no tenía subdirectorios en la estructura de archivos, pero proporcionaba 16 áreas de usuario numeradas para organizar archivos en un disco. Para cambiar de usuario, simplemente tenía que escribir "Usuario X" en el símbolo del sistema, siendo X el número de usuario. La seguridad era inexistente y se consideraba innecesaria en una computadora personal. El concepto de área de usuario era hacer que la versión de usuario único de CP/M fuera algo compatible con los sistemas MP/M multiusuario. Un parche común para el CP/M y los sistemas operativos derivados fue hacer que un área de usuario fuera accesible para el usuario independientemente del área de usuario configurada actualmente. Un comando de USUARIO permitía cambiar el área de usuario a cualquier área de 0 a 15. El usuario 0 era el valor predeterminado. Si uno cambiara a otro usuario, como el USUARIO 1, el material guardado en el disco para este usuario solo estaría disponible para el USUARIO 1; El USUARIO 2 no podría verlo ni acceder a él. Sin embargo, los archivos almacenados en el área USUARIO 0 eran accesibles para todos los demás usuarios; su ubicación se especificó con una ruta preliminar, ya que los archivos del USUARIO 0 solo eran visibles para alguien que inició sesión como USUARIO 0. Podría decirse que la función del área de usuario tenía poca utilidad en disquetes pequeños, pero era útil para organizar archivos en máquinas con disco duro. unidades La intención de la función era facilitar el uso de la misma computadora para diferentes tareas. Por ejemplo, una secretaria podría ingresar datos y luego, después de cambiar las áreas de USUARIO, otro empleado podría usar la máquina para realizar la facturación sin que sus archivos se mezclen.
Gráficos
Aunque los sistemas S-100 con capacidad para gráficos existían desde la comercialización del bus S-100, CP/M no proporcionó ninguna compatibilidad con gráficos estandarizados hasta 1982 con GSX (Graphics System Extension). Debido a la pequeña cantidad de memoria disponible, los gráficos nunca fueron una característica común asociada con los sistemas operativos CP/M de 8 bits. La mayoría de los sistemas solo podían mostrar gráficos y diagramas de arte ASCII rudimentarios en modo de texto o mediante el uso de un juego de caracteres personalizado. Algunas computadoras en la línea Kaypro y el TRS-80 Model 4 tenían hardware de video que admitía caracteres gráficos en bloque, y estos eran accesibles para programadores ensambladores y programadores BASIC que usaban el comando CHR $. El Modelo 4 podría mostrar gráficos de 640 por 240 píxeles con una placa opcional de alta resolución.
Derivados
Existían varios derivados de CP/M-80 en el antiguo Bloque del Este con varios nombres, incluido SCP (Programa de control de usuario único
), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM y otros. También hubo derivados de CP/M-86 llamados SCP1700, CP/K y K8918-OS. Fueron producidos por el VEB Robotron de Alemania Oriental y otros.Legado
Varios comportamientos exhibidos por Microsoft Windows son el resultado de la compatibilidad con versiones anteriores de MS-DOS, que a su vez intentó alguna compatibilidad con versiones anteriores con CP/M. La letra de unidad y las convenciones de nombre de archivo 8.3 en MS-DOS (y las primeras versiones de Windows) se adoptaron originalmente de CP/M. Los caracteres comodín que coinciden con Windows (? y *) se basan en los de CP/M, al igual que los nombres de archivo reservados que se usan para redirigir la salida a una impresora ("PRN:") y la consola ("CON:"). Los nombres de unidad A y B se utilizaron para designar las dos unidades de disquete que los sistemas CP/M solían utilizar; cuando aparecieron los discos duros, se designaron como C, que sobrevivieron en MS-DOS como el símbolo del sistema C:>
. El carácter de control ^Z que marca el final de algunos archivos de texto también se puede atribuir a CP/M. Varios comandos en DOS se modelaron a partir de los comandos CP/M; algunos de ellos incluso tenían el mismo nombre, como DIR, REN/RENAME o TYPE (y ERA/ERASE en DR-DOS). Las extensiones de archivo como .TXT
o .COM
todavía se usan para identificar tipos de archivos en muchos sistemas operativos.
En 1997 y 1998, Caldera lanzó algunos archivos binarios y código fuente de CP/M 2.2 bajo una licencia de código abierto, lo que también permitió la redistribución y modificación de más archivos de Digital Research recopilados relacionados con las familias CP/M y MP/M a través de Tim El sitio web no oficial de CP/M de Olmstead desde 1997. Después de la muerte de Olmstead el 12 de septiembre de 2001, la licencia de distribución fue actualizada y ampliada por Lineo, quien mientras tanto se había convertido en el propietario de esos activos de Digital Research, el 19 de octubre de 2001. En octubre de 2014, para conmemorar el 40 aniversario de la primera presentación de CP/M, el Computer History Museum lanzó las primeras versiones del código fuente de CP/M.
A partir de 2018, hay una cantidad de personas y grupos activos de computadoras antiguas, aficionadas y retro, y algunas pequeñas empresas comerciales, que aún desarrollan y admiten plataformas informáticas que usan CP/M (principalmente 2.2) como sistema operativo host..
Contenido relacionado
Tecnología en Star Trek
Asignación de letra de unidad
Ordenar por fusión