Sindicador de canales de noticias
Mejoras de la infraestructura en el tramo Ferrol-Viveiro
Convocatorias de empleo público de Adif, con 267 plazas de personal operativo
FGC y la UAB impulsan la tercera edición del Vagón de la Ciencia, dedicado este año a la diversidad
La Línea 6 de Metro de Madrid se reabrirá en su totalidad el 20 de diciembre
Nuevo modelo de control de gestión en Metro de Madrid
Licitadas las mejoras de la seguridad del tráfico en la línea Valencia Nord-La Boella, en Tarragona
Adif renueva dieciocho pasos a nivel en Huelva y Badajoz
Renovadas las dos primeras escaleras mecánicas de la estación de Plaça de Catalunya de Rodalies
Recuperada la circulación de trenes entre Mollet y Granollers (Barcelona) por vía única
La ingeniería inversa del 6502 y su programación con máximo detalle
Si pidiera que levantaran las manos todos los lectores que programaron con el 6502 en su día estoy seguro de que no serían multitud, pero unos cuantos habría. Esta vieja charla de Michael Steil en el 27º encuentro del Chaos Communication del CCC es una de esas joyas que no se pueden dejar de ver: 50 minutos de detalladas explicaciones sobre cómo funcionaba el chip MOS 6502. Esta era la CPU del Commodore 64 y el Apple II, pero también estaba en algunas variantes dentro de los chips de la videoconsola NES de Nintendo o la Atari 2600.
Los datos obtenidos sobre los 3.510 transistores que componían esta maravillosa CPU de 1975 los extrajeron mediante fotografías de alta resolución de los propios chips, meticulosamente examinadas y en las que se trazaron todos los circuitos uno por uno. Un trabajo de infinita paciencia y amor al arte.
El resultado es que gracias a ello se puede explicar hoy en día cómo funcionaba la CPU tanto a nivel de programación, con sus instrucciones en código máquina (LDA, STA, INC, JMP, JSR, NOP…) como a nivel electrónico, examinando los voltajes de entrada y salida de cada uno de los pines y a nivel de arquitectura (duración de las instrucciones, direccionamiento…)
Las explicaciones te retrotraen al mundo en el que existía la página cero de memoria, las instrucciones no documentadas, los bugs e incluso algún sorprendente huevo de pascua.
Steil incluso afirma que Bill Gates programó en persona cierta parte del código del Commodore Basic (que originalmente era «Microsoft Basic», pero al que quitaron toda referencia a Microsoft) porque entonces en Microsoft eran solo tres personas y él era el único que sabía programar en ensamblador. El código, no visible e ingeniosamente ocultado, lo delata.
Otro dato interesante es que el 6502 se describe completamente con unos 7 kilobytes de datos («entropía»), lo cual da para abarcar los 3.510 transistores, sus nodos y conexiones. Menos de lo que ocupa un icono hoy en día.
A todo esto no hay que olvidar que esta labor de ingeniería inversa es la única forma de conseguir documentar completamente el 6502. No existe la documentación original completa. Cuando se diseñó, entre 1974 y 1975, no se usaban ordenadores para ello, de modo que era un trabajo completamente manual en el que se usaban cintas y máscaras recortadas a mano para crear las imágenes que luego se reducían para fabricar las obleas de los chips. No había simuladores lógicos, ni programas de CAD ni sistemas de verificación, todo se hacía a manubrio. Gran mérito para los ingenieros de la época.
En Visual6502.org se puede ver una simulación visual a nivel de transistores del 6502 en JavaScript así como fotografías del chip, en alguna versiones a muy alta resolución. Es lenta pero fiable.
Hay que recordar que, como se explica en la charla y se aprecia en las fotografías, el MOS 6502 tenía 3 capas (transistores, puertas, conexiones y buses) junto con algunas capas auxiliares, a diferencia de los chips actuales que pueden tener entre 10 y 15 capas.
Definitivamente, una historia narrada con gran pericia para disfrutarla como quien ve un apasionante documental en la televisión.
Bonus: Una entrevista en IEEE Spectrum con Bill Mensch, co-creador del procesador 6502.
Relacionado:





