En Halt and Catch Fire, ¿por qué era importante realizar ingeniería inversa en el BIOS si no podían usarlo?

No puedo hablar sobre las acciones de la serie (que no está en mi lista de “vigilancia”), pero puedo hablar sobre los eventos reales en torno a la fundación de Compaq. He escrito brevemente sobre esto en otra parte (la respuesta de Stan Hanks a ¿Cuál es la diferencia entre BIOS y kernel?). Es razonablemente importante leer esa respuesta antes de leer el resto de esta.

Los muchachos de IBM en Boca Ratón habían puesto el mundo en su cabeza al crear una NUEVA FORMA de hacer que el sistema operativo interactúe con el hardware, en lugar de proporcionar un sistema operativo con una plantilla en la que tenía que insertar manualmente el código para hablar con su específico chips en direcciones específicas y en vectores de interrupción específicos (como lo hizo Gary Kildall en CP / M), proporcionaron, en ROM, las rutinas para interactuar con el hardware ya a bordo, al que se podía acceder saltando a ubicaciones de direcciones específicas con cosas específicas en la pila

Fue genial. Significaba que la parte que más no querías jodida, el manejo del hardware real, ahora se abstraía del código del sistema operativo y efectivamente formaba parte del hardware.

Rod Canion también tuvo una idea genial similar, ya que todas las “cosas complicadas” están en la ROM del BIOS, si pudieras construir una computadora que se comportara error por error compatible con la PC de IBM, podrías ejecutar el SO de la PC de IBM y todo el software disponible sin hacer nada más.

En lugar de inventar una computadora completamente nueva, donde tendrías que salir y discutir todo el universo de proveedores de software para escribir software para TU computadora, ¡en lugar de aprovechar la compañía de computadoras más poderosa del mundo para hacer eso por ti!

Entonces la banda de hombres felices de Rod se dispuso a hacer eso. Y debido a la naturaleza altamente litigiosa de tratar asuntos como este, tuvieron que hacerlo con mucho cuidado. Nadie trabajando en el proyecto podría haber visto el BIOS de IBM. No podrían haber visto el código fuente impreso, no podrían haber desmontado las ROM reales, nada. Trabajaron a partir de la documentación escrita para escribir su propia versión, y luego probaron y QA lo probarían contra las PC IBM reales.

Ahí es donde se volvió realmente complicado: había verificablemente “errores” en la ROM de BIOS de IBM, y las llamadas no funcionaban exactamente de la manera en que se documentaron. A veces hubo efectos secundarios, como la llamada dejaría un valor no documentado en una ubicación de memoria, de la que podría depender otro código, por ejemplo.

Fue un gran negocio. Un trato mucho más grande de lo que piensas. En la medida en que Compaq trató de contratar estudiantes graduados en ciencias de la computación en la Universidad de Rice para demostrar matemáticamente que los dos eran equivalentes. (Me contrataron, luego casi inmediatamente me despidieron, porque llevaba un año metido en el código de IBM).

Como un punto dramático en la serie, puedo imaginar fácilmente que esta es una forma masiva de generar tensión.

Halt and Catch Fire es una telenovela, y tiene tanta semejanza con la vida real en la era tecnológica temprana como Bonanza con el verdadero salvaje oeste, es decir, la ropa y ciertos eventos contemporáneos son correctos. Sin embargo, hay una explicación de la vida real para este tipo particular de actividad.

Cuando IBM presentó la PC original, publicaron una lista de todo el BIOS en el manual del usuario. Paradójicamente, esto se hizo para protegerlo . Para fabricar un clon de PC, tenía que tener un código de BIOS, pero si usaba algo similar a IBM, podrían demandarlo por infracción de derechos de autor y afirmar que debe haberlo obtenido de su lista impresa. Por lo tanto, se hizo un esfuerzo para producir un clon utilizando personas que nunca habían visto la lista de IBM y estaban trabajando a ciegas para reproducir su funcionalidad a partir de sus especificaciones. Esto se conoce como desarrollo de “sala limpia”. Estrictamente hablando, esto no era ingeniería inversa, era un desarrollo paralelo, pero no esperaría que los escritores de Halt y Catch Fire entendieran la distinción.

Los chicos principales necesitaban persuadir a Cardiff Electric para que siguiera adelante y hiciera un clon de IBM. Sin embargo, la gerencia de Cardiff Electric nunca haría esto ya que temerían los litigios de IBM. La única forma de obligar a sus gerentes a seguir adelante con el clon era provocar a los abogados de IBM y enviarlos con éxito, esto es lo único que demostraría a la gerencia de Cardiff Electric que podrían proceder con tal clonación sin ser demandados. Por lo tanto, aplicar ingeniería inversa al chip e informar a IBM que lo habían hecho fue una finta para que IBM jugara su mano y le demostrara a Cardiff Electric que no tenía nada de qué preocuparse de parte de los abogados de IBM, siempre y cuando su implementación no fuera copiada. Una vez que Cardiff Electric provocó a los abogados de IBM y sobrevivió, tuvo sentido comercial para ellos ingresar al mercado de clones de IBM, ya que no tenían nada que perder. Entonces, en realidad, el BIOS de ingeniería inversa no era necesario para fines técnicos, solo se usó como una estratagema para “forzar la mano” de Cardiff Electric … es mi suposición.

No soy un programador, pero, según tengo entendido del programa, parece que hicieron un clon de la situación de IBM y luego diseñaron el BIOS en reversa como una maniobra legal para que no fuera el BIOS de IBM. Creo que fue como copiarlo y luego cambiar partes inteligentes para que sea tuyo. Algo así como probar un ritmo y publicarlo como un nuevo registro. Como dije, no codifico, pero eso es lo que obtuve.