23 de febrero de 2026

El sistema operativo CP/M (Control Program for Microcomputers) representa un pilar fundamental en la historia de la informática. Creado por Gary Kildall en 1974 para su empresa Digital Research, fue el primer sistema operativo estándar de la industria para microordenadores, antes de que IBM y Microsoft dominaran el mercado.

Cronología del CP/M: Ascenso y Relevancia

La trayectoria de CP/M marcó el camino para la computación personal tal como la conocemos:

  • 1974 – El Origen: Gary Kildall desarrolla la primera versión de CP/M en lenguaje PL/M para el procesador Intel 8080. Introdujo la revolucionaria idea de separar el sistema operativo en dos partes: el BDOS (operaciones de disco) y el BIOS (personalización para el hardware específico).
  • 1976 – Comercialización: Se funda Digital Research, Inc. (DRI) para vender licencias de CP/M. Se convierte rápidamente en el estándar para máquinas basadas en los procesadores Intel 8080 y Zilog Z80.
  • 1979 – CP/M 2.2: Se lanza la versión más exitosa y estable. Soportaba discos duros y una gestión de archivos mucho más eficiente, convirtiéndose en el ecosistema donde nacieron programas legendarios como WordStar y dBase.
  • 1980 – El Punto de Inflexión: IBM busca un sistema operativo para su futuro PC. Tras una reunión fallida con Digital Research, IBM recurre a Microsoft, lo que da lugar al nacimiento de MS-DOS (que se basó fuertemente en la estructura de CP/M).
  • 1982 – CP/M-86: Versión diseñada para el procesador 16 bits Intel 8086. Aunque técnicamente superior, llegó tarde al mercado y no pudo competir con el impulso de MS-DOS.
  • 1991 – El Final: Novell adquiere Digital Research. El legado de CP/M se diluye, aunque su influencia persiste en la arquitectura de comandos de Windows.

Comparativa Técnica: CP/M vs. MS-DOS vs. Unix/Linux

Para entender la magnitud de CP/M, es necesario compararlo con sus sucesores y con los sistemas multiusuario que existían en entornos de grandes servidores.

CaracterísticaCP/MMS-DOSUnix / Linux
MultitareaNo (Monotarea)No (Monotarea)Sí (Multitarea Real)
MultiusuarioNoNo
Arquitectura8 bits (Principalmente)16 bits32 / 64 bits
Sistema de ArchivosSimple (8.3 caracteres)FAT (Evolución de CP/M)Jerárquico (ext4, XFS)
PortabilidadAlta (vía BIOS)Baja (Atado a x86)Extrema (Casi cualquier CPU)

CP/M frente a la Filosofía Unix/Linux

La diferencia entre CP/M y Unix (y por extensión Linux) es abismal en términos de diseño. Mientras que CP/M fue diseñado para ser minimalista y caber en apenas unos pocos kilobytes de memoria RAM, Unix fue concebido desde el principio como un sistema para que varios usuarios trabajaran simultáneamente en una misma máquina.

  1. Estructura de Directorios: En CP/M no existían las carpetas (directorios). Solo podías tener un número limitado de archivos en la raíz del disco. Unix introdujo la estructura de árbol jerárquica que usamos hoy.
  2. Seguridad: CP/M no tenía concepto de «permisos». Cualquier programa podía escribir en cualquier parte de la memoria o el disco. Linux, siguiendo a Unix, separa estrictamente el espacio del usuario del espacio del núcleo (kernel).
  3. Abstracción: CP/M obligaba a menudo al programador a conocer detalles del hardware. Linux utiliza capas de abstracción profundas que permiten que el mismo comando ls funcione igual en una Raspberry Pi que en un superordenador.

Antes de la llegada de CP/M en 1974, el concepto de «sistema operativo» para microordenadores prácticamente no existía. Si tenías una computadora pequeña en esa época, no «encendías el sistema»; la computadora era una pizarra en blanco y tú tenías que darle instrucciones desde el primer segundo.

Aquí te detallo las tres formas principales en las que se operaba el hardware antes de que el estándar de Gary Kildall pusiera orden:

1. Paneles Frontales y Switches (Código Máquina Puro)

Las primeras máquinas, como la Altair 8800, no tenían teclado ni monitor. La interacción se hacía mediante interruptores físicos en el panel frontal.+1

  • El proceso: Tenías que introducir la dirección de memoria y el dato en binario (subiendo y bajando palanquitas) para cada instrucción.
  • Limitación: Si cometías un error en el interruptor número 50, tenías que empezar de nuevo. No había una interfaz que te dijera qué estaba pasando; solo luces LED que parpadeaban.

2. Monitores de Sistema (ROM Monitors)

Fue el paso intermedio hacia un SO. Un Monitor era un pequeño programa (de apenas 2KB o menos) grabado en un chip de memoria ROM.

  • Qué hacían: Permitían usar un terminal de texto (teclado y pantalla) para ver el contenido de la memoria, cambiar valores y ejecutar programas.
  • Ejemplo famoso: El Apple I usaba el Woz Monitor, creado por Steve Wozniak.
  • Diferencia con CP/M: Un monitor no sabía gestionar archivos ni discos; solo entendía direcciones de memoria hexadecimales.

3. Sistemas Operativos Propietarios de Grandes Máquinas

Mientras los microordenadores (PCs) estaban en pañales, las computadoras grandes (Mainframes y Minicomputadores) ya tenían sistemas operativos complejos, pero eran gigantescos e incompatibles entre sí:

  • Sistemas de Tarjetas Perforadas: Muchos computadores leían directamente pilas de tarjetas. El «sistema operativo» era básicamente un cargador que leía la siguiente tarjeta.
  • DEC OS/8: Utilizado en la minicomputadora PDP-8. Aunque avanzado, ocupaba demasiado espacio y hardware para los chips Intel 8080 de la época.

Artículo: La era del «Bare Metal» antes del estándar

Antes de 1974, los programadores trabajaban directamente sobre el «Bare Metal» (el metal desnudo). Esto significa que no había una capa intermedia entre tu código y el hardware. Si querías escribir un carácter en la pantalla, tenías que saber exactamente en qué dirección de memoria estaba el controlador de video y enviarle la señal eléctrica manualmente.

Cada computadora era una isla. Un programa escrito para una máquina no servía para otra, aunque usaran el mismo procesador, porque la forma de acceder al teclado o a la cinta de casete era distinta en cada diseño. La genialidad de Gary Kildall con CP/M fue crear la BIOS (Basic Input/Output System). Al separar el software del hardware, permitió que por primera vez un programador escribiera una aplicación una sola vez y esta funcionara en cualquier máquina que corriera CP/M. Fue el fin de la era de los switches y el inicio de la era del software comercial.

La creación de CP/M es una de las historias más fascinantes de la ingeniería de software, porque Gary Kildall no solo creó un sistema operativo, sino que inventó la metodología moderna de desarrollo de sistemas.

La Computadora: El «Intellec-8»

CP/M no se creó en una computadora personal (porque aún no existían), sino en un Sistema de Desarrollo Intellec-8 de Intel.

  • Intel había contratado a Kildall como consultor para escribir software para su nuevo chip, el 8080.
  • El Intellec-8 era una caja metálica enorme, sin monitor ni teclado propio, que se conectaba a un teletipo o terminal externa.
  • Tenía apenas 16 KB de RAM, lo que obligó a Kildall a ser extremadamente eficiente con el código.

El Lenguaje: PL/M (Programming Language for Microcomputers)

A diferencia de otros programadores de la época que escribían todo en Lenguaje Ensamblador (instrucciones directas al procesador, muy lentas de programar), Kildall decidió crear su propio lenguaje de «alto nivel»: el PL/M.

  • Kildall basó el PL/M en PL/I, un lenguaje potente usado en los mainframes de IBM.
  • Escribir el sistema operativo en PL/M permitió que CP/M fuera mucho más sofisticado y fácil de mantener que si hubiera sido escrito a mano en código máquina.
  • Sin embargo, las partes críticas que necesitaban velocidad máxima (como la gestión de entrada y salida) sí se refinaron después en ensamblador del Intel 8080.

El proceso de creación: Un acto de rebeldía

Kildall trabajaba para Intel, pero la empresa no estaba interesada en sistemas operativos; ellos solo querían vender chips. Kildall desarrolló CP/M en sus ratos libres y como un proyecto personal para resolver un problema práctico: quería usar una unidad de disquete.

  1. El controlador de disquete: En 1974, las unidades de disquete eran gigantescas y experimentales. Kildall compró una usada de Shugart Associates, pero no tenía forma de conectarla a su Intellec-8.
  2. La invención de la BIOS: Para que el software pudiera hablar con el hardware del disquete sin tener que reescribir todo el programa cada vez, Kildall inventó el concepto de BIOS (Basic Input/Output System). Separó el código que manejaba el hardware (BIOS) del código que manejaba los archivos (BDOS).
  3. El éxito: Al terminarlo, se dio cuenta de que tenía un sistema que podía adaptarse a cualquier computadora simplemente cambiando la pequeña parte de la BIOS. Intel rechazó el producto, así que Kildall y su esposa Dorothy fundaron Digital Research para venderlo por su cuenta.

Artículo: La arquitectura que definió el futuro

El éxito de CP/M radicó en su portabilidad. Antes de Kildall, el software estaba «casado» con el hardware. Si cambiabas un componente, el software dejaba de funcionar. Al programar CP/M en PL/M y estructurarlo de forma modular, Kildall creó un estándar universal. El núcleo del sistema (el Common Command Processor o CCP) era siempre el mismo; los fabricantes de hardware solo tenían que escribir su propia BIOS para que miles de programas (como las primeras hojas de cálculo) funcionaran instantáneamente en sus máquinas. Esta arquitectura es, hasta el día de hoy, la base sobre la cual funcionan todos los sistemas operativos modernos, desde Windows hasta el kernel de Linux.

Para entender cómo Gary Kildall programó el PL/M, debemos separar la herramienta (el lenguaje) del proceso físico (la computadora). Kildall no escribió el PL/M en una computadora personal; utilizó la potencia de las grandes máquinas de la época para crear software para los pequeños chips del futuro.

1. ¿Cómo programó el PL/M? (El proceso de «Cross-Compilation»)

Kildall no escribió el compilador de PL/M directamente en el procesador Intel 8080. En 1972-1973, los microprocesadores eran demasiado débiles para ejecutar un compilador complejo.

  • El método: Utilizó lo que se conoce como Compilación Cruzada (Cross-Compilation).
  • La herramienta: Escribió el compilador original de PL/M utilizando FORTRAN IV.
  • El flujo de trabajo: Escribía el código PL/M en una terminal, lo procesaba en un mainframe potente que ejecutaba el compilador de Fortran, y este generaba el código binario (ceros y unos) específico para el chip Intel 8008 o 8080.

2. ¿En qué computadora lo hizo?

Kildall tenía acceso a una PDP-10 de Digital Equipment Corporation (DEC) en la Escuela Naval de Posgrado de Monterrey.

  • La PDP-10: Era una «minicomputadora» del tamaño de varios armarios. Era una máquina extremadamente avanzada que permitía tiempo compartido (varios usuarios a la vez).
  • El simulador: En esa PDP-10, Kildall no solo compilaba, sino que escribió un simulador del procesador Intel. Esto le permitía probar si su código funcionaba antes de grabarlo físicamente en un chip. Era como usar un emulador de Android hoy en día para desarrollar apps.

3. El Lenguaje PL/M en detalle

PL/M significa Programming Language for Microcomputers. Kildall lo diseñó basándose en PL/I, un lenguaje de IBM que combinaba lo mejor de Fortran (cálculo) y COBOL (negocios).

  • Nivel medio: PL/M era un lenguaje de «nivel medio». Tenía estructuras de alto nivel como IF-THEN-ELSE y bucles DO-WHILE, pero permitía al programador manipular directamente bytes y direcciones de memoria, algo vital para crear un sistema operativo como CP/M.
  • Eficiencia: El compilador de Kildall era capaz de traducir esas instrucciones humanas a un código máquina muy compacto que cabía en los escasos 16 KB o 64 KB de RAM de las primeras computadoras.

Legado Histórico

Aunque hoy CP/M parezca una pieza de museo, dejó una huella imborrable. Las letras de las unidades de disco (C:, A:) que todavía usamos en Windows, así como la estructura de nombres de archivos de 8 caracteres y extensiones de 3, son herencia directa del sistema que Gary Kildall creó en un pequeño monitor de texto hace más de 50 años.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *