No puedo responder cómo se escribió el primer BIOS para una placa base de PC, pero puedo decirte cómo se hizo la tercera legal (puede haber algunas otras, legales o no, antes de 1984), y por extracción, cómo se hicieron todos. ( En realidad, los no legales probablemente solo se copiaron de IBM, con quizás algunos pequeños cambios, por lo que no fue idéntico y luego se volvieron a ensamblar. Así que supongo que eso no se está realmente “escribiendo” )
Escribí el BIOS original de Phoenix Technologies (en ese momento Phoenix Software) para PC, XT y AT ROM a partir de mayo de 1984, y los completé en mayo de 1985. Consulte Creación del BIOS de Phoenix para obtener más detalles.
Las BIOS de IBM, Compaq y Phoenix se escribieron en lenguaje ensamblador x86, aunque algunas legales escritas después de Phoenix BIOS pueden haberse escrito en C.
- Cómo restaurar una computadora portátil Toshiba
- Cómo conectar mi computadora portátil a un televisor antiguo como un Samsung Hetron que no tiene un puerto HDMI
- ¿Con qué disco duro externo debo ir, portátil o con fuente de alimentación? Mi principal preocupación es la seguridad y el rendimiento de los datos.
- Cómo guardar una copia de seguridad de todo en mi computadora portátil en Windows 7
- ¿La gente usa Facebook y Twitter en sus computadoras hoy en día?
BIOS de IBM
Para IBM, comenzaron creando una lista de funciones necesarias. Estos pueden ser leer una tecla, escribir un carácter en la pantalla, obtener la entrada del controlador de juegos analógicos, leer / escribir un sector desde un disquete o disco duro, etc. Luego trataron de generalizar algunas cosas con tablas (como la fuente de 128 caracteres ASCII superior) ), puntos de entrada de función, etc. Después de hacer eso, comenzaron a codificar. El ensamblador utilizado probablemente era un ensamblador cruzado o uno de un sistema de desarrollo Intel x86.
BIOS de Compaq y Phoenix
Para las BIOS Compaq y Phoenix, cada compañía necesitaba que un equipo analizara el código de la BIOS de IBM y escribiera una especificación completa de funciones, con ubicaciones específicas para algunas de ellas (debido a que los malos programadores saltan directamente a esas ubicaciones para sus programas en lugar de extraer esas ubicaciones de vectores de interrupción o punteros). Luego, un programador que nunca había visto el código del BIOS ROM de IBM comienza a escribirlo, una función a la vez (para mí, comencé con las funciones más simples y trabajé con las más complicadas).
La legalidad de la copia y el concepto de propiedad intelectual (PI) se discuten en el libro Invisible Edge .
Compaq probablemente usó el MASM de Microsoft para escribir su BIOS. Su copia funcional no debe haber sido perfecta, ya que muchos programas de aplicación debían verificar el BIOS de Compaq y cambiar ligeramente su funcionamiento. Siendo el segundo BIOS compatible con PC (incluida la PC de IBM), los programadores de aplicaciones estaban dispuestos a hacer un ajuste (¡en lugar de hacerlo de la manera correcta!).
La diferencia del BIOS Phoenix
Phoenix BIOS fue escrito como un BIOS de terceros para ser vendido a muchos fabricantes de placas base. Fue escrito en MASM y vinculado con PLINK-86 de Phoenix, un enlazador avanzado. El código se escribió en muchos archivos separados (generalmente correspondientes a cada función del BIOS o código distinto, por ejemplo, prueba de memoria).
Lo escribí para tolerar todos los programas que usaban referencias extrañas al BIOS (mucho más que Compaq). Como diseñador de hardware y programador, haría muchas preguntas al equipo de especificaciones de Phoenix que nunca concibieron. Por ejemplo, ¿quedan valores no aleatorios en un registro después de una función de BIOS que algún programador podría usar, y cualquier otro uso extraño de una función de BIOS que pudiera concebir (incluso si aún no lo hubiera utilizado un programador)? programa existente)? Además, tenía programas de prueba que ejecutaban varias llamadas de función y verificaban los resultados, además de medir su tiempo para aumentar la velocidad.
Los fabricantes de placas base a menudo usaban partes ligeramente diferentes que la PC de IBM para ahorrar dinero. Como ingeniero de hardware, escribiría el código para ser tolerante con el hardware que podría actuar ligeramente diferente. Lo hice usando técnicas limpias para acceder al hardware, o probando las diferencias de hardware antes de usarlas.
Creo que, basándose en ver el código binario de otras BIOS en la depuración de placas base con BIOS que no son de Phoenix (antes de que Phoenix adquiriera algunas de ellas) como AMI, Award y MRBIOS, estas otras BIOS fueron escritas por personas que eran estrictamente programadores (y no código más limpio: podría ser una mala programación o el uso de un compilador de C). No tenían una comprensión real de cómo funciona la electrónica (según su código) y, por lo tanto, eran menos compatibles y menos adaptables que el BIOS Phoenix.
Apéndice:
En respuesta a la pregunta comentario
“No podemos programar nada si nunca hubiéramos tenido un sistema operativo en la máquina, ¿cómo se escribió el primer BIOS?”
Las primeras aplicaciones informáticas programables originales (que podrían ser un programa de arranque, BIOS o sistema operativo) se escribieron en código ensamblado a mano. Se escribiría un ensamblador muy simple de una pasada (también ensamblado a mano) y luego se recrearía en el mismo ensamblador para un ensamblador mejor y más capaz.
Después de eso, algunas veces se puede hacer un mini-OS, en cuyo punto se pueden hacer versiones más extensas. Un BIOS es esencialmente un mini OS sin un sistema de archivos, por lo que un sistema de archivos no necesita ser mucho más. De hecho, el DOS original era solo un contenedor para muchas de las funciones del BIOS, con un sistema de archivos que usaba las primitivas de E / S de disco del BIOS.
En tiempos más modernos, los ensambladores cruzados y los compiladores cruzados están hechos para nuevas computadoras objetivo. Estos se ejecutan en los sistemas informáticos existentes para crear software para una computadora de destino (por ejemplo, una PC). Así es como Bill Gates escribió el primer lenguaje informático popular para el hogar, MITS Altair Basic, en 1975.
Y una vez que tenga un sistema operativo simple como MS-DOS ejecutándose en computadoras basadas en x86 (no necesariamente una PC), puede usar ensambladores y compiladores nativos para crear código nuevo. Así fue como se escribieron los BIOS Phoenix originales. Después de eso, el código se emuló en la computadora en la que se ensambló, o se creó una ROM y se colocó en una PC IBM o clonada y se probó allí.
Referencias
- La legalidad de la copia y el concepto de propiedad intelectual (IP) y la copia del BIOS de IBM se discuten en el libro The Invisible Edge: Llevando su estrategia al siguiente nivel .
- Para ver una discusión sobre mi trabajo en la creación del BIOS Phoenix, vea
¿Qué es lo mejor que has creado solo como programador? - Esto explica una breve descripción del historial de PC temprano
¿Subieron las ventas de computadoras después de la invención de los videojuegos? - Esto explica por qué los únicos sistemas que quedan son PC, Apple Macintosh y procesadores ARM.
¿Por qué falló Digital Equipment Corporation (DEC)? - Esto describe las primeras necesidades de un botón “turbo”, mi diseño de la placa base AST 286 Premium (computadora PC más rápida de 1987), y por qué la persona promedio se preocupa por el tiempo de memoria para su PC
Historia de la informática: ¿Qué hizo el botón “turbo” en las PC de principios de los 90?