Código Fuente del CP/M de Digital Research
|Hola a todos!, una de las cosas que mas me gustan, es cuando pasan cosas como estas. Se ha liberado nada mas ni nada menos que el código fuente de CP/M!, todo a traves del Museo de Historia de la Computación (Computer History Museum).
CP/M, ese sistema operativo legendario que fue el estándar de facto en la industria durante fines de los años 70 e Inspiró fuertemente el diseño de MS-DOS. Es mas si no fuera por CP/M, MS-DOS nunca hubiera existido, no como lo conocemos hoy.
Para los que no lo saben, CP/M fue como el abuelo de todos los sistemas operativos para PC. Antes que existiera Windows, antes que DOS... estaba CP/M corriendo en los primeros microcomputadores cuando tener una computadora personal era cosa de nerds y entusiastas, que podian darse el lujo de tenerlas.
Si eres un fan de lo Sistemas Retro como yo, esto es como encontrar los planos originales del primer Ford Model T o las partituras manuscritas de Mozart. ¡Un verdadero pedazo de historia! Así que les traigo la traducción de este anuncio histórico para que todos podamos apreciar este momento.
Software Gems: Serie de código fuente históricos del Computer History Museum
Para cuando las computadoras personales basadas en microprocesadores comenzaron a surgir a mediados de los años 70, los programadores ya llevaban unos veinte años escribiendo sistemas operativos – el software que administra el hardware de la computadora y proporciona servicios comúnmente utilizados para programas de aplicación. Las grandes computadoras mainframe tenían sistemas operativos enormes y complicados, creados a partir de cientos de miles de líneas de código. Pero otros sistemas operativos, diseñados para caber en la pequeña memoria de minicomputadoras, eran diminutos. Ese era el tipo que las PC podían usar.
Gary Kildall en la primera feria de computacion de West Coast, en el Auditorio Cívico de San Francisco en 1977. [CHM Object ID: 500004174 © Tom Munnecke/Hulton Archive/Getty Images]
El científico computacional Gary Kildall creó precisamente ese tipo de sistema operativo en 1974 para una pequeña computadora llamada "Intellec-8" que Intel había diseñado para mostrar sus nuevos microprocesadores. Llamado "CP/M", era diferente a la mayoría de los otros sistemas operativos para computadoras pequeñas porque estaba escrito en PL/M, un lenguaje de alto nivel portable que él había diseñado anteriormente, en lugar de estar en el lenguaje ensamblador de una computadora particular. Eso significaba que CP/M podía ser portado para ejecutarse en muchas computadoras personales diferentes. Y si las aplicaciones estaban escritas en PL/M, también podían ser portadas.
La disponibilidad temprana de CP/M, combinada con su portabilidad, lo convirtió en un éxito rotundo. Kildall fundó una empresa llamada Digital Research, Inc. en Pacific Grove, California para desarrollar y comercializar CP/M, y durante años fue el sistema operativo dominante para microcomputadoras personales. Finalmente fue superado por MS-DOS de Microsoft para el IBM PC en la década de 1980, pero antes de eso fue responsable de un vibrante ecosistema de programas de aplicación que contribuyeron a la rápida proliferación de las primeras computadoras personales.
Para conmemorar el 40º aniversario de la demostración del prototipo en el cobertizo de herramientas en el patio trasero de Kildall en Pacific Grove en el otoño de 1974, el Museo de Historia de la Computación se complace en poner a disposición, para uso no comercial, el código fuente de varias de las primeras versiones de CP/M.
El creador de CP/M
A principios de la década de 1970, Gary Kildall era instructor de ciencias de la computación en la Escuela Naval de Postgrado en Monterey, California. También era consultor a tiempo parcial para Intel, y comenzó a usar un sistema de desarrollo de Intel para crear software para los nuevos microprocesadores de esa joven empresa.
En 1974, Kildall escribió un programa que permitía a los diseñadores de microprocesadores reemplazar el lento almacenamiento en cinta de papel con los nuevos disquetes rápidos de 8" que estaban empezando a estar disponibles comercialmente. Inicialmente llamado Control Program/Monitor, más tarde renombrado Control Program for Microcomputers ("CP/M"), su programa demostró tener un valor mucho más allá de cumplir con los requisitos de su trabajo de consultoría a tiempo parcial para Intel. Cuando se configuró completamente como un sistema operativo comercial en 1976, CP/M elevó una actividad de aficionado a una herramienta de computadora personal y de pequeña empresa convencional, y al hacerlo, sentó una base importante para la revolución de las computadoras personales.
"A Guide to PL/M Programming," Intel Corporation, September 1973
Las primeras versiones de CP/M fueron escritas completamente en PL/M ("Programming Language for Microcomputers"), un lenguaje de programación de sistemas de alto nivel que Kildall desarrolló para Intel en 1972, especifico para sus sistemas de desarrollo de microprocesadores. Principalmente un subconjunto del lenguaje de computadoras mainframe PL/I, también incorporaba ideas de ALGOL y XPL, e incluía un procesador de macros integrado. En un artículo presentado en la Conferencia Nacional de Computación de 1975, Kildall llamó a CP/M "modesto en estructura y alcance", pero "permitiendo el acceso a todas las funciones de la máquina, sin volverse completamente dependiente de una organización particular de CPU".
La historia de CP/M
A partir de finales de la década de 1970, una de las principales publicaciones para la incipiente industria del software de computadoras personales fue la inusualmente nombrada Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. En el número de enero de 1980, Gary Kildall publicó una memoria personal sobre la creación y el crecimiento de CP/M. Estas secciones citan abundantemente de ese artículo.
La primera generación de software para sistemas basados en microprocesadores se desarrolló utilizando sistemas mainframe de tiempo compartido. Kildall soñaba con el día en que los propios microprocesadores pudieran ser utilizados para desarrollar su propio software.
Como consultor, mi trabajo era diseñar y desarrollar ciertas herramientas de software para Intel. Una era Interp/80, un programa que simulaba el recién evolucionado microprocesador 8080 de Intel para ser utilizado por los clientes de Intel en sistemas de tiempo compartido ... Era evidente que los sistemas de desarrollo residentes no podían competir con los servicios de tiempo compartido al considerar el rendimiento, los recursos y los servicios. Aún así, la noción de una computadora personal para el desarrollo de software interesaba a todos.
Se dio cuenta de que un requisito clave era un mejor almacenamiento, y que había algo apropiado en el horizonte.
Casi todos los sistemas de computadoras pequeñas en 1973 utilizaban cinta de papel como dispositivo de almacenamiento de respaldo, con el ubicuo Teletipo Modelo 33 sirviendo como dispositivo de E/S que destrozaba los nervios... Me intrigó un nuevo dispositivo llamado disco flexible, que, aunque diseñado por IBM para reemplazar tarjetas perforadas, parecía tener un potencial mucho mayor. El dispositivo era ideal: más de 3,000 veces la velocidad de datos de un Teletipo, cada disquete de $7 podía acceder aleatoriamente al equivalente a 2000 pies de cinta de papel...
En ese momento, una pequeña empresa llamada Shugart Associates... a pocas millas de Intel... donó una de sus unidades de prueba de 10,000 horas a la causa, completa con rodamientos desgastados y un kit de reparación de rodamientos. Solo después, mientras estaba sentado en mi oficina en casa, mirando la unidad de disco desnuda, me di cuenta de que no tenía gabinete, cables, fuentes de alimentación, controlador y, lo más angustioso de todo, no tenía experiencia en diseño de hardware.
Sin dejarse intimidar por la falta de hardware, Kildall procedió a desarrollar CP/M utilizando un simulador de tiempo compartido.
Creé el primer sistema de archivos CP/M, diseñado para soportar un compilador PL/M residente. La versión de tiempo compartido de PL/M, junto con el simulador Interp, me permitió desarrollar y verificar las diversas operaciones de archivos hasta el nivel de E/S primitiva de disco.
El primer arranque
Sin embargo, construccón de la interfaz de hardware para el disco flexible sí ocurrio, permitiendo que CP/M cobrara vida.
Cualquiera que haya puesto en marcha CP/M en una computadora casera ha sentido este momento de euforia. Una miríada de conexiones se cierran correctamente; los bits vuelan a velocidades vertiginosas por buses y circuitos y lógica de programa, para producir un único prompt. En comparación con nuestros dispositivos de cinta de papel, teníamos el poder de un [IBM] S/370 en la punta de los dedos. Algunas pruebas nerviosas confirmaron que todo funcionaba correctamente, así que nos retiramos para la noche a tomar la tarea más simple de vaciar una jarra de vino tinto no tan bueno mientras reconstruíamos batallas y especulábamos sobre el futuro de nuestra nueva herramienta de software. Poco después, en el otoño de 1974, John Torode [un compañero alumno de la Universidad de Washington] se interesó en el proyecto. Ofrecí todo el apoyo moral posible mientras John trabajaba a través de las aberraciones del estándar IBM para completar uno de mis controladores abortados. Nuestro primer controlador era un hermoso nido de ratas de cables envueltos, placas y cables (bueno, ¡al menos era hermoso para nosotros!) que, por buena fortuna, a menudo realizaba búsquedas, lecturas y escrituras tal como se solicitaba. Durante minutos agonizantes, cargamos el código de máquina de CP/M a través del lector de cinta de papel en la memoria del Intellec-8. Para nuestro asombro, el sistema de disco pasó por su inicialización e imprimió el prompt de CP/M en el Teletipo.
Comercialización
La proliferación de CP/M dependía de que fuera adoptado por los fabricantes de PC. El salvador de hardware de Kildall fue el primer adoptante.
John Torode rediseñó y refinó nuestro controlador original y produjo su primer sistema completo, comercializado bajo el nombre de su empresa, Digital Systems (que más tarde se convirtió en Digital Microsystems). La primera licencia comercial de CP/M tuvo lugar en 1975 con contratos entre Digital Systems y Omron of America para su uso en su terminal inteligente, y con los Laboratorios Lawrence Livermore, donde CP/M se utilizó para monitorear programas en su red de tiempo compartido Octopus.
Rápidamente quedó claro que para facilitar la adaptación a otras computadoras, las partes dependientes del hardware tenían que segregarse en una parte separada y fácilmente modificable.
En 1976, Glenn Ewing se acercó a mí con un problema: IMSAI Incorporated, para quien Glenn consultaba, había enviado un gran número de subsistemas de disco con la promesa de que seguiría un sistema operativo. Yo estaba algo reacio a adaptar CP/M a otro controlador, y así surgió la noción de un Sistema Básico de E/S (BIOS) separado. En principio, las partes dependientes del hardware de CP/M se concentraron en el BIOS, permitiendo así a Glenn, o a cualquier otra persona, adaptar CP/M al equipo IMSAI.
Fue una estrategia exitosa. DRI licenció CP/M a IMSAI por una tarifa única de $25,000, y otros pronto siguieron.
IMSAI System, CP/M User Manual (1977). CHM Catalog #102679413
Creando un mercado para proveedores de software independientes
Antes de CP/M, los fabricantes de computadoras diseñaban sus sistemas operativos para que funcionaran solo con su propio hardware y equipos periféricos. Un sistema operativo de IBM solo funcionaría con computadoras IBM; un sistema operativo de Burroughs con computadoras Burroughs, etc. Y las aplicaciones tenían que ser escritas para el sistema operativo específico de cada computadora. Tales "sistemas cerrados" hacían difícil o imposible mezclar y combinar las mejores piezas de equipos y programas de aplicaciones de software de diferentes fabricantes.
La adición del BIOS por parte de Kildall permitió no solo a los sistemas IMSAI sino a todas las computadoras basadas en el microprocesador Intel 8080 y compatibles de otros fabricantes ejecutar el mismo sistema operativo en cualquier hardware nuevo con modificaciones triviales que podían ser realizadas por un programador en unas pocas horas. Esta capacidad estimuló el surgimiento de una industria de software independiente al expandir el tamaño potencial del mercado para cada producto. Un solo programa podía ejecutarse sin modificación en computadoras de múltiples proveedores.
Crecimiento
Junto con su esposa Dorothy McEwen, Kildall incorporó Digital Research, Inc (DRI) en Pacific Grove en 1976 para comercializar la versión 1.3 de CP/M, que incorporaba el código BIOS. A través de anuncios por correo en la revista Byte y otras publicaciones, se corrió la voz de que había un sistema operativo independiente del fabricante disponible.
Había poca competencia. CP/M se vendió inicialmente por correo a aficionados por $75. Más tarde se convirtió en un sistema operativo estándar ofrecido por muchos fabricantes de computadoras personales pioneros, como Altair, Amstrad, Kaypro y Osborne. Para 1980, alrededor de 200 modelos diferentes de computadoras estaban ejecutando CP/M.
CP/M estaba inicialmente limitado a computadoras personales basadas en el microprocesador Intel 8080 y sus derivados. Pero CP/M y los programas de aplicación escritos para él proporcionaban tanto valor que era razonable hacer un "trasplante de cerebro" e instalar un microprocesador adicional en computadoras que no tenían un chip 8080 o compatible. Microsoft, por ejemplo, construyó una "SoftCard" basada en el Zilog Z80 para el Apple II, pque de otro modo sería incompatible. Ya que eran proveedores de compiladores e intérpretes de lenguaje para CP/M. Esto permitió que el Apple II ejecutara aplicaciones populares de CP/M como dBASE y WordStar.
DRI lanzó muchas versiones de CP/M, de las cuales la que más vendió fue la versión 2.2 en 1979. También desarrollaron versiones multiusuario (MP/M), multitarea (Concurrent CP/M) y de red (CP/Net). Para 1982, la empresa disfrutaba de ventas anualizadas superiores a los 20 millones de dólares, empleaba a más de 200 personas y afirmaba que "más de un millón de personas" estaban utilizando sistemas basados en su tecnología.
Perdiendo la ventaja
En 1980, Tim Paterson en Seattle Computer Products utilizó la CP/M Interface Guide de 1976 de DRI y otra información para guiar el desarrollo de QDOS, un nuevo sistema operativo con la apariencia y sensación de CP/M pero con diferentes internos, que Paterson estaba escribiendo para el nuevo microprocesador Intel 8086 de 16 bits. Microsoft más tarde adquirió QDOS y lo licenció a IBM como PC-DOS, y a otros fabricantes de PC-compatibles como MS-DOS.
Debido a la popularidad de la plataforma IBM PC, a mediados de la década de 1980, CP/M había perdido su dominio del mercado frente a MS-DOS. Para más información sobre la historia de MS-DOS, consulte la otra entrada en la serie Software Gems: "Microsoft MS-DOS early source code".
Qué era CP/M, y qué no era
CP/M y los otros sistemas operativos para pequeñas computadoras personales, incluidos MS-DOS y Apple DOS, eran muy diferentes de los sistemas operativos que conocemos hoy, o los que estaban en las grandes mainframes en la década de 1970. Un sistema operativo basado en PC era básicamente solo un sistema de administración de archivos, un procesador de comandos de texto rudimentario y una forma de cargar programas de aplicación. CP/M venía con cinco comandos incorporados (para guardar, borrar, renombrar, listar y escribir archivos), y nueve comandos "transitorios" adicionales. No había interfaz gráfica de usuario, ni controladores de dispositivos cargables para nuevos periféricos, ni sistema de gestión de memoria.
Screen shot of CP/M version 1.3; courtesy of Udo Munk
El manual "Introduction to CP/M Features and Facilities" publicado inicialmente por DRI en 1976 describe sus características clave:
CP/M también soporta un potente editor de contexto, ensamblador compatible con Intel y subsistemas de depuración. El software opcional incluye un potente macro ensamblador compatible con Intel, depurador simbólico, junto con varios lenguajes de alto nivel. Cuando se combina con el procesador de comandos de consola de CP/M, las instalaciones resultantes igualan o superan instalaciones similares de computadoras grandes. CP/M está lógicamente dividido en varias partes distintas: BIOS - Sistema Básico de E/S (dependiente del hardware) BDOS - Sistema Básico de Operación de Disco CCP - Procesador de Comandos de Consola TPA - Área de Programa Transitorio El BIOS proporciona las operaciones primitivas necesarias para interactuar con periféricos estándar (teletipo, CRT, Lector/Perforador de Cinta de Papel y periféricos definidos por el usuario), y puede ser adaptado por el usuario para cualquier entorno de hardware particular "parcheando" esta porción de CP/M. El BDOS proporciona la gestión del disco controlando una o más unidades de disco que contienen directorios de archivos independientes. El BDOS implementa estrategias de asignación de disco que proporcionan una construcción de archivo totalmente dinámica mientras minimizan el movimiento de la cabeza a través del disco durante el acceso. Cualquier archivo en particular puede contener cualquier número de registros, sin exceder el tamaño de un solo disco (240 registros de 128 bytes cada uno). En un sistema CP/M estándar, cada disco puede contener hasta 64 archivos distintos... El CCP proporciona una interfaz simbólica entre la consola del usuario y el resto del sistema CP/M. El CCP lee el dispositivo de consola y procesa comandos que incluyen la lista del directorio de archivos, la impresión del contenido de archivos y el control de la operación de programas transitorios, como ensambladores, editores y depuradores. ... El último segmento de CP/M es el área llamada Área de Programa Transitorio (TPA). La TPA contiene programas que se cargan desde el disco bajo el comando del CCP. Durante la edición de programas, por ejemplo, la TPA contiene el código de máquina del editor de texto CP/M y las áreas de datos. De manera similar, los programas creados bajo CP/M pueden ser verificados cargando y ejecutando estos programas en la TPA. CP/M es un programa de control de monitor para el desarrollo de sistemas de microcomputadoras que utiliza discos flexibles compatibles con IBM para almacenamiento de respaldo. Utilizando un mainframe de computadora [sic] basado en el microprocesador 8080 de Intel, CP/M proporciona un entorno general para la construcción, almacenamiento y edición de programas, junto con instalaciones de ensamblaje y verificación de programas... El monitor CP/M proporciona un acceso rápido a los programas a través de un completo paquete de gestión de archivos. El subsistema de archivos soporta una estructura de archivos con nombre, permitiendo la asignación dinámica de espacio de archivo así como el acceso secuencial y aleatorio a archivos. Usando este sistema de archivos, se puede almacenar un gran número de programas distintos tanto en forma de fuente como en forma ejecutable de máquina.
La implementación original de CP/M utilizaba solo el lenguaje de alto nivel PL/M de Kildall. Las versiones posteriores de CP/M que tenían un BIOS separado utilizaban una mezcla de lenguaje ensamblador y PL/M.
Reconocimiento para CP/M
Aunque CP/M desapareció como sistema operativo convencional, todavía sobreviven ecos de él. Tan recientemente como a principios de 2014, cada vez que el sistema operativo IBM OS 4690 se iniciaba en terminales de punto de venta en todo el mundo, mostraba el aviso "Copyright © 1976 Digital Research".
IEEE Milestone plaque installed outside 801 Lighthouse Avenue, Pacific Grove, CA
CP/M fue indiscutiblemente una parte importante de la revolución temprana de la computadora personal. En abril de 2014, el Instituto de Ingenieros Eléctricos y Electrónicos reconoció el desarrollo de CP/M como un hito de IEEE en Ingeniería Eléctrica y Computación mediante la instalación de una placa de bronce fuera de la antigua sede de DRI en 801 Lighthouse Avenue, Pacific Grove.
- Detalles del hito de IEEE "The CP/M Microcomputer Operating System, 1974".
- Video de la dedicación.
- Un blog del Museo de Historia de la Computación sobre el aniversario.
El código fuente
Estamos liberando listados de impresora escaneados y/o código fuente legible por máquina para cuatro versiones tempranas de CP/M que datan de 1975 a 1979. Algunas versiones están incompletas, pero por favor no nos pidan lo que falta porque estamos liberando todo lo que tenemos.
Este material se proporciona solo para uso no comercial. Todos los archivos se combinan en un archivo ZIP con cuatro directorios que representan las cuatro versiones.
Descargar Código Fuente de CP/M [147.5 MB]
1. Versión 1.1(?), de 1975
Este es el código fuente más antiguo de CP/M que tenemos, que data de antes de que hubiera números de versión oficiales. Se utilizó en los Laboratorios Lawrence Livermore para su sistema de red Octopus. Otra variante se produjo para el fabricante de terminales Omron.
CP/M fue escrito originalmente en PL/M y compilado con las herramientas de desarrollo cruzado basadas en FORTRAN de Intel que se ejecutaban en una computadora mainframe de tiempo compartido. El código objeto estaba en un formato de cinta hex de Intel que no podía ser vinculado con otros objetos, lo que significaba que el BIOS y el BDOS tenían que estar en un solo módulo de código fuente. Esta versión tampoco tenía un punto de entrada fijo para las llamadas al sistema operativo; los programas de aplicación tenían que llamar al punto de entrada BDOS usando la "dirección mágica" de donde se compilaba.
Los comandos incorporados tenían una forma larga ("DIRECT" para el listado de directorios) y una forma corta ("DIR"). Pero eran primitivos. Si escribías "DIR", no mostraba nada; necesitabas escribir "DIR ." para mostrar todos los archivos. Udo Munk, un entusiasta dedicado de CP/M, observó: "Tampoco se puede hacer DIR B::. Primero hay que cambiar a B: y luego ejecutar comandos allí. Esto muestra muy bien cómo todo esto fue mejorado con el tiempo. Debe haber sido un proceso muy dinámico de constante prueba y avance."
Para esta primera versión tenemos archivos de código fuente PL/M originales para el BIOS y BDOS, para el Procesador de Comandos de Consola, y para el Cargador de Comandos Transitorios. Estos fueron recuperados por Udo Munk del disco #5 del Grupo de Usuarios de CP/M. Otros archivos en este directorio son reconstrucciones posteriores por Udo; consulta el archivo readme.txt para más detalles.
2. Versión 1.3, de 1976
En respuesta a la necesidad de suministrar otra versión de CP/M al fabricante de microcomputadoras IMSAI, Kildall se dio cuenta de que necesitaba empezar a hacerlo más fácil de modificar para diferentes computadoras. En la versión 1.3, el BIOS y BDOS fueron separados y compilados por separado. El BIOS fue reescrito en lenguaje ensamblador para que tuviera fácil acceso a los registros de E/S de hardware. Ahora había un punto de entrada permanente en la ubicación 0005 para las llamadas BDOS. Esta es, en esencia, la primera versión pública de CP/M.
El código fuente auténtico que tenemos para esta versión, cortesía de Steven A. Ness, es un escaneo de un listado de impresora que fue lanzado por Digital Research en 1976. Steve describe cómo adquirió el manual de Gary Kildall:
En mis primeras visitas, utilicé máquinas en el cobertizo de Gary (en 781 Bayview Avenue). Muy pronto después, Gary y Dorothy trasladaron Digital Research al piso superior de 716 Lighthouse Avenue, y trabajé allí hasta que conseguí mi propia máquina, probablemente en mayo o junio de 1977. Normalmente pasaba varios días en PG [Pacific Grove] antes de regresar a Palo Alto, así que a menudo dormía en el pequeño mirador en la parte superior del edificio. Gary Kildall me dio una copia impresa del código fuente de CP/M 1.3 durante ese período (es decir, entre el Feb/77 y el Jun/77). Recuerdo un estante de copias idénticas en la oficina; cada cliente que compraba el código fuente de CP/M recibía uno, además del código fuente legible por máquina en disquetes." Bob Swartz, fundador de Mark Williams Company, me contrató en febrero de 1977 para escribir un intérprete BASIC (eventualmente llamado XYBASIC) para 8080s. En ese momento, era posible obtener hardware 8080 de bus S-100, pero había una lista de espera para unidades de disquete de 8". Bob ya tenía una máquina CP/M y conocía a Gary Kildall y John Torode, y él arregló para que yo usara el hardware de Gary inicialmente. Viajé desde mi apartamento en Palo Alto a Pacific Grove durante varios meses.
Hay un hueco de varias líneas en la página 78 del listado. El código que falta ha sido reconstruido por Larry Greene a partir de una versión posterior y se incluye como un archivo de texto en el directorio.
Para la versión 1.3 también tenemos un increíble listado de código fuente con ingeniería inversa de 48 páginas que creemos fue escrito por Wayne Gramlich y modificado por Leo Kenen. Aunque CP/M fue parcialmente escrito en PL/M, este cuidadoso desensamblado anotado a mano del código objeto se hizo sin acceso al código fuente original. El autor analizó el código y creó sus propios comentarios originales. ¡En algunos lugares notó que no estaba seguro si el código objeto fue compilado a partir de PL/M o ensamblado a partir de código ensamblador 8080! El listado impreso está fechado en 1980, pero el desensamblado probablemente se hizo antes. Si alguien sabe más sobre este tour de force, háganoslo saber.
Manuales relacionados con esta versión son:
- An Introduction to CP/M Features and Facilities, Digital Research, 1976
- CP/M INTERFACE GUIDE, Digital Research, 1976
- CP/M (DOS-A) FLOPPY DISK OPERATING SYSTEM MANUAL, IMSAI, 1977
- IMSAI CP/M SYSTEM USER'S GUIDE Version 1.31, Rev. 2, IMSAI,, 1977
- CP/M System Alteration Guide for IMSAI CP/M Version 1.31, IMSAI, 1977
3. Versión 1.4, de 1978
En esta versión, el BDOS se ha dividido en dos partes: un cuerpo principal en PL/M y un "Módulo de Interfaz BDOS" escrito en lenguaje ensamblador.
Esta es la primera versión que no requería una computadora mainframe para construirla. La compilación y el ensamblaje se hacían en sistemas de desarrollo Intel que ejecutaban ISIS, que tenía un compilador PL/M y un ensamblador macro.
Para esta versión solo tenemos el código fuente del BDOS, en sus dos partes.
Manuales relacionados con esta versión son:
- AN INTRODUCTION TO CP/M FEATURES AND FACILITIES, Digital Research, 1978
- CP/M INTERFACE GUIDE, Digital Research, 1978
- CP/M SYSTEM ALTERATION GUIDE, Digital Research, 1978
- CP/M DYNAMIC DEBUGGING TOOL (DDT) USER'S GUIDE, Digital Research, 1978
- CP/M ASSEMBLER (ASM) USER'S GUIDE, Digital Research, 1978
- ED: A CONTEXT EDITOR FOR THE CP/M DISK SYSTEM USER'S MANUAL, Digital Research, 1978
4. Versión 2.0, de 1979
La versión 2.0 amplió y generalizó considerablemente el acceso a discos. Podía haber hasta 16 unidades lógicas con 8 MB cada una, según lo especificado por un "bloque de parámetros de disco". Los archivos podían distribuirse en hasta 512 extensiones. También había un nuevo concepto de usuarios con "números de usuario", cuyos archivos se mantienen separados.
El código fuente de esta versión, gracias al ex vicepresidente de Ingeniería de Digital Research, Tom Rolander, es un escaneo del listado de código fuente lanzado por la empresa en 1979.
También tenemos código fuente legible por máquina para la mayoría de los archivos. Sospechamos que han sido reescritos del listado, por lo que pueden tener errores, pero las comprobaciones puntuales son alentadoras sobre su precisión.
Manuales relacionados con esta versión son:
- CP/M 2.0 USER'S GUIDE FOR CP/M 1.4 OWNERS, Digital Research, 1979
- CP/M 2.0 INTERFACE GUIDE, Digital Research, 1979
- CP/M 2.0 ALTERATION GUIDE, Digital Research, 1979
Agradecimientos
Gracias a Steven Ness, Tom Rolander y Udo Munk por donar código fuente, y a Al Kossow, Dag Spicer, Udo Munk y Len Shustek por contribuir a este blog. Gracias también a los muchos otros entusiastas de CP/M y ex empleados y consultores de DRI que inspiraron este proyecto de liberación de código fuente, incluyendo a Larry Greene, Herb Johnson, Emmanuel Roche y John Wharton.
Este post es una traducción y adaptación del artículo original "Early Digital Research CP/M Source Code" escrito por David Laws y publicado el 1 de octubre de 2014 en el blog del Computer History Museum.