BIOS del IBM PC: historia, clones y revolución de los compatibles

  • La BIOS del IBM PC inicializaba el hardware, ejecutaba el POST y lanzaba el Boot Strap Loader, definiendo el arranque estándar del PC.
  • IBM documentó en detalle el hardware y el ROM BIOS, lo que facilitó la creación de expansiones y, mediante diseño en habitación limpia, de BIOS compatibles.
  • La apertura de la arquitectura PC y la ruptura del monopolio de IBM sentaron las bases del ecosistema Wintel y del PC moderno.

Historia de la BIOS y los clones del IBM PC

Cuando hoy encendemos un ordenador moderno, parece que todo ocurre de forma mágica: logo del fabricante, sistema operativo cargando y, en cuestión de segundos, escritorio listo. Sin embargo, bajo esa aparente simplicidad hay una larga historia que arranca con el IBM Personal Computer y su BIOS original. Una pieza de firmware que no solo se encargaba de dar vida al hardware, sino que acabó marcando el nacimiento de los ordenadores clónicos y de todo el ecosistema PC que conocemos.

En las próximas líneas vamos a recorrer cómo funcionaba la BIOS del IBM PC. Qué hacía exactamente desde que se encendía la máquina, por qué IBM pensó que así mantendría el control del estándar, y cómo se rompió ese monopolio. De paso, veremos el papel que jugó Microsoft, cómo surgieron los compatibles y por qué aquel diseño aparentemente temporal de IBM se convirtió en el estándar mundial.

Qué ocurre al encender un IBM PC: el papel real de la BIOS

Al encender un IBM PC original prácticamente nada del sistema está “vivo”: ni la RAM está inicializada, ni la tarjeta de vídeo responde, ni el teclado está listo, y mucho menos el controlador de DMA, el de interrupciones o el temporizador programable. Lo único que realmente funciona es la CPU Intel 8088 y la capacidad de leer el contenido de la memoria ROM.

Por diseño, el 8088 comienza a ejecutar instrucciones en la dirección de memoria física que equivale a FFFF:0000h. En esa posición, dentro de la ROM del sistema, IBM colocó una instrucción de salto (JMP) que redirige la ejecución al inicio del código de autocomprobación, el famoso Power On Self Test (POST). A partir de ahí, el ordenador empieza a despertarse, pieza a pieza.

El POST se encarga, en primer lugar, de comprobar el propio procesador, validar la integridad de la ROM que alberga la BIOS y las ROM que contienen el IBM Cassette BASIC. También de chequear y contar la memoria RAM disponible. Además, va inicializando uno a uno los principales circuitos integrados del sistema.

Mientras el POST avanza, la BIOS reserva y rellena determinadas zonas bajas de memoria con tablas de datos y áreas de trabajo internas. Solo cuando estas direcciones están correctamente apuntando a sus manejadores y se activan las interrupciones de la CPU, se puede decir que la BIOS “cobra vida” y comienza a ofrecer sus servicios a cualquier software que se ejecute después.

Una vez terminadas las comprobaciones y sin errores críticos detectados, la BIOS ejecuta el segundo gran bloque de código de arranque: el Boot Strap Loader (BSL). El encargado de iniciar el proceso de carga del sistema operativo o, en su defecto, del BASIC en ROM.

BIOS

Del POST al arranque del sistema: cómo trabajaba el Boot Strap Loader

El Boot Strap Loader del IBM PC era un trozo de código relativamente pequeño pero decisivo. Debía localizar un dispositivo de arranque válido y transferirle el control. Primero comprobaba si existía una unidad de disquete válida con un disco insertado. Si la encontraba, intentaba leer su primer sector físico, el famoso sector de arranque.

El contenido de ese sector se copiaba en una dirección de memoria muy concreta, 0000:7C00h (BOOT_LOCN), y a continuación la BIOS saltaba a esa dirección para dejar en manos de ese minúsculo cargador la siguiente fase del arranque. Si no se encontraba disquete, si la unidad no existía, o si la lectura fallaba por cualquier motivo, la BIOS recurría a su plan B: arrancar el IBM Cassette BASIC residente en ROM, que presentaba su pantalla de bienvenida lista para introducir comandos.

Este comportamiento marcaba una diferencia clara con muchos clones posteriores. Muchos compatibles carecían de BASIC en ROM, así que, en caso de no poder cargar el sector de arranque, lo que mostraban era simplemente un mensaje de error del tipo “No boot device”, sin ofrecer al usuario un intérprete de BASIC de emergencia.

En los disquetes formateados con PC DOS, ese primer sector al que saltaba la BIOS contenía un pequeño programa que distinguía entre un disco de sistema y uno de datos. Si era de datos, mostraba un mensaje; si era un disco de sistema, empezaba a cargar en memoria los ficheros esenciales de DOS y ejecutaba el código que terminaba de poner en marcha el sistema operativo. Esta pieza tan crítica fue, con el tiempo, objetivo de mecanismos de protección anticopia. Y, más tarde, de numerosos virus de arranque que se cargaban antes que nada y se quedaban residentes en memoria listos para infectar otros disquetes.

Servicios de la BIOS: interrupciones, entrada/salida y tablas internas

Más allá del arranque, la BIOS del IBM PC proporcionaba un conjunto de funciones estándar de entrada y salida accesibles mediante interrupciones software. Los programas y sistemas operativos tempranos podían invocar estas funciones para leer del teclado, escribir en pantalla, manejar la impresora, acceder a las unidades de disquete o hablar con el puerto serie RS‑232, entre otras tareas.

La forma de acceso era muy simple. El programa cargaba en los registros del procesador (AX, BX, CX, DX, etc.) los parámetros necesarios y ejecutaba una instrucción INT n, donde n era el número de interrupción de la BIOS. El 8088 consultaba la tabla de vectores, saltaba a la rutina correspondiente, y al finalizar la llamada la BIOS devolvía el control al programa, en ocasiones retornando resultados también en registros.

En paralelo, la BIOS debía gestionar varias interrupciones de hardware provenientes del controlador 8259: el temporizador (IRQ0), el teclado (IRQ1) y la controladora de disquete (IRQ6) eran las más relevantes. Estas se traducían en vectores de interrupción 08h, 09h y 0Eh respectivamente, y la BIOS tenía ya manejadores preparados para actualizar el contador de tiempo del sistema, procesar pulsaciones de teclas o responder a eventos de E/S del disquete.

Además de las llamadas de servicio y de los manejadores de hardware, la BIOS ponía a disposición del sistema una serie de tablas de parámetros y áreas de datos en memoria RAM baja. Un bloque especialmente importante era el situado entre los segmentos 0040:0000 y 0040:00FF, donde se almacenaban, entre otras cosas, la configuración de puertos serie y paralelo, el estado del teclado y su búfer circular de 16 caracteres, la información de vídeo activo, datos sobre la unidad de casete y un contador de “ticks” de reloj (a 18,2 Hz) utilizado para calcular la hora del día.

IBM PC

Juego de caracteres, memoria y arquitectura abierta del IBM PC

Otro aspecto clave del legado de la BIOS y del IBM PC fue la estandarización del juego de caracteres ASCII extendido. Partiendo del ASCII de 7 bits (0‑127), IBM definió un conjunto extendido de 8 bits (0‑255) . Este  incluía caracteres acentuados, símbolos griegos, signos matemáticos y los famosos caracteres de pseudográfico para dibujar cuadros, sombras y barras en pantalla.

En modos de texto, las tarjetas de vídeo MDA y CGA tenían sus propias ROM de caracteres con los 256 símbolos. En modos gráficos se utilizaba una tabla de patrones bit a bit alojada dentro de la ROM de la BIOS para los primeros 128 códigos. Los caracteres de control estándar (0‑31) se aprovecharon como símbolos gráficos visibles, como las caritas, flechas y bloques que muchos programas DOS usaron para sus interfaces.

¿Y el mapa de memoria? El procesador 8088 podía direccionar hasta 1 MiB (20 bits). IBM reservó la parte alta, desde A0000h hasta FFFFFh, para ROM y memoria de vídeo, dejando los primeros 640 KiB (00000h‑9FFFFh) para RAM utilizable por DOS y aplicaciones. Dentro de ese primer megabyte, la zona F6000h‑FDFFFh se destinó al BASIC en ROM, y FE000h‑FFFFFh al BIOS. Este diseño marcaría, durante años, la famosa barrera de 640 KB de la PC.

Ese espacio superior reservado para ROM y memoria de adaptadores se convirtió pronto en terreno compartido para nuevas tarjetas de vídeo (Hercules, EGA, etc.), ROM de expansión (por ejemplo, controladoras de disco duro) y, más tarde, para los mecanismos de memoria expandida EMS, que conmutaban “ventanas” de memoria adicional en esos huecos del mapa de direcciones para sortear las limitaciones de DOS en modo real.

IBM, la transparencia técnica y el error que abrió la puerta a los clones

IBM no solo lanzó el PC en 1981, sino que acompañó el hardware con una documentación técnica extremadamente detallada. En los Technical Reference del IBM 5150 y modelos posteriores se incluían esquemas electrónicos completos y una descripción minuciosa de cada circuito, mapas de memoria. Y, lo más delicado, el listado desensamblado y comentado del ROM BIOS.

Esta transparencia tuvo un doble filo. Por un lado, facilitó que desarrolladores de hardware creasen, en cuestión de semanas, tarjetas de expansión plenamente compatibles. Por otro, hacía muy tentador el copiado directo del código de BIOS o de su estructura interna. IBM confiaba en su ejército de abogados para frenar cualquier clon “demasiado parecido”. Durante un tiempo, el miedo a una guerra legal frenó a muchos candidatos.

No obstante, el interés por ofrecer máquinas compatibles con el IBM PC no paraba de crecer. En 1982 apareció el Columbia Data Products MPC 1600, considerado por muchos el primer PC completamente compatible con la BIOS de IBM. En 1983 se anunciaba el Compaq Portable, que se convertiría en el clónico más famoso de la primera generación. Paralelamente, proyectos como el MPX‑16 de Steve Ciarcia mostraban cómo construir ordenadores de 16 bits con ranuras compatibles con PC a título casi educativo.

Estos primeros fabricantes se enfrentaban a un reto delicado. Necesitaban reproducir con exactitud el comportamiento de la BIOS, pero no podían copiar ni una línea de su código por motivos legales. Muchos que intentaron hacerlo de forma directa se toparon con demandas de IBM que les obligaron a retirar sus productos o a rediseñar por completo el firmware.

La técnica de la “Habitación Limpia” y la clonación legal de la BIOS

Ante este panorama, algunas empresas recurrieron a una estrategia jurídica y técnica muy específica: el “diseño en habitación limpia” (Clean‑room Design). La idea básica era sencilla pero exigente. Consistía en separar por completo al equipo que analizaba la BIOS de IBM del equipo que reescribía el firmware compatible.

En la práctica, un primer grupo de ingenieros, que sí podía estudiar a fondo el código de IBM y su comportamiento, se dedicaba a documentar qué hacía cada interrupción, qué valores devolvía, cómo reaccionaba en casos límite, etc. A partir de ahí, generaban una especificación neutra de requisitos funcionales, totalmente limpia de fragmentos de código, nombres internos o estructuras idénticas.

Un segundo equipo, que legalmente no podía haber tenido contacto con el código ni con los Technical Reference de IBM, se encargaba, a partir de esa especificación, de escribir una BIOS nueva, con otro diseño interno pero con el mismo “comportamiento externo”. Cuando el resultado era lo suficientemente compatible, se consideraba un clon “limpio” desde el punto de vista legal.

Este enfoque, relativamente novel entonces, se popularizó a raíz de casos como el de Compaq, cuyo Compaq Portable se lanzó en 1983 como el primer PC completamente compatible que no llevaba BIOS de IBM. Aunque existen debates sobre si Columbia Data Products logró antes una clonación legal completa, lo cierto es que Compaq se convirtió en el gran rival de IBM en la propia arena del PC. Demostrando así que la arquitectura podía replicarse sin pagar licencias.

IBM, Microsoft y el efecto dominó de la apertura de la BIOS

Mientras el control de IBM sobre la BIOS se resquebrajaba, otra empresa salía tremendamente reforzada: Microsoft. Desde el principio, IBM había llegado a un acuerdo con Bill Gates por el que el sistema operativo usado en el PC, el PC‑DOS, se licenciaba bajo ciertas condiciones. Eso permitía a Microsoft vender una versión prácticamente idéntica (MS‑DOS) a otros fabricantes de compatibles.

El origen de ese DOS también tiene su intrahistoria. Microsoft compró a bajo precio un sistema operativo llamado QDOS/86‑DOS, desarrollado por Seattle Computer Products e inspirado en la API de CP/M de Digital Research. Tras adaptar y mejorar ese código con la ayuda de su propio autor, Tim Paterson, Microsoft lo rebautizó como MS‑DOS. Después ofreció a IBM la variante PC‑DOS. A la vez, se guardó el derecho de licenciar MS‑DOS a cualquier otro fabricante que lo solicitase.

Cuando Compaq, Columbia, los fabricantes asiáticos y tantos otros empezaron a disponer de una BIOS legalmente compatible, la combinación natural era esa BIOS más MS‑DOS. De este modo IBM perdió el monopolio de la arquitectura PC. Al mismo tiempo, Microsoft se convertía en el auténtico dueño del “suelo” de software sobre el que se asentaban casi todos los fabricantes.

El auge masivo de los ordenadores compatibiles, la bajada de precios, la proliferación de clones y la facilidad para copiar software… Todo eso hizo que el PC se extendiera por oficinas y hogares de todo el mundo. El resultado fue consolidar lo que se conocería como la pareja “Wintel” (Windows + Intel). Con Microsoft y los fabricantes de x86 dominando durante décadas el mercado del escritorio.

IBM, mientras tanto, trató de recuperar el control introduciendo en su línea PS/2 el nuevo bus MCA (Micro Channel Architecture). Este sí requería licencias. Sin embargo, la industria optó mayoritariamente por seguir con el bus ISA heredado del PC/XT y del AT. El intento de volver a una arquitectura cerrada fracasó. Así, el estándar de facto siguió siendo aquel que había nacido abierto en 1981.

De la BIOS clásica a la era moderna: herencia técnica y cultural

Aunque hoy hablamos más de UEFI que de BIOS, buena parte de los conceptos introducidos con el IBM PC siguen presentes. La idea de un firmware residente que inicializa el hardware, realiza un POST, establece una interfaz estándar de servicios y cede el control a un cargador de sistema operativo continúa vigente. De hecho, es la base del arranque de cualquier PC actual.

Del mismo modo, el legado de las interrupciones de BIOS, del mapa de memoria bajo el primer megabyte, de los puertos de E/S históricos (COM1, LPT1, etc.) y de muchas convenciones de la arquitectura x86 se ha mantenido durante décadas por razones de compatibilidad hacia atrás. Incluso hoy, muchas BIOS/UEFI ofrecen capas de compatibilidad “legacy” que emulan comportamientos heredados del 5150 para que sistemas operativos antiguos o determinados instaladores funcionen sin problemas.

Por el lado económico y cultural, la historia de la BIOS de IBM y de su clonación mediante habitación limpia es, probablemente, uno de los episodios que más han favorecido la apertura y estandarización del mercado del PC. Sin esa ruptura legalmente limpia del control de IBM, hoy el panorama de la informática personal sería mucho más fragmentado y propietario. Es decir, con cada gran fabricante manteniendo su propia plataforma cerrada.

Mirando hacia atrás, la BIOS del IBM PC fue mucho más que un simple firmware de arranque. Fue la llave técnica y jurídica que definió el estándar del ordenador personal compatible. Una cadena de decisiones técnicas y contractuales explica por qué hoy hablamos de “PC” casi como sinónimo de ordenador personal. Y por qué cientos de fabricantes han podido construir, sobre esa base abierta, un ecosistema enorme que sigue evolucionando.

gpu gaming
Artículo relacionado:
De los coprocesadores a la IA: la evolución de las GPU en Windows y juegos