
Luego le echo un vistazo al binario con un editor hexadecimal en busca de cualquier cosa interesante: los strings en ASCII con los mensajes de operación del aparato, copyrights, mensajes ocultos, chuchadas del programador contra su jefe...
![Malvado ]-)](./images/smilies/malvado.gif)
Últimamente he estado trasteando con un clon de PC Turbo XT, sapeando la BIOS y la ROM de caracteres de la tarjeta de vídeo, así que era cosa de tiempo de que me acordara del Twinhead PC-100, ese peculiar computador XT con MS-DOS 3.22 y clon de Famicom integrado, así que hoy lo saqué y extraje la BIOS ROM.
Por lo del MS-DOS integrado me esperaba una EPROM grande, y efectivamente ocupa 128 KB, cuando una BIOS de XT ocupa 8 o a lo más 16 KB (recordemos que no traen programa de CMOS SETUP - la configuración es a través de dip switches).
Aquí la tienen para descargar:
Twinhead PC-100 BIOS versión 2.16S
Habiendo sapeado otra BIOS de PC XT previamente no esperaba encontrar mucho, sin embargo resultó toda una cajita de sorpresas:
Para empezar, he aquí el mapa de uso de la memoria:
Código: Seleccionar todo
00000h ~ 0FFFFh = DOS 3.22 COMMAND.COM? (64 KB) (~61 KB usados)
10000h ~ 17FFFh = ??? (32 KB) (~28 KB usados)
18000h ~ 19FFFh = Seagate ST05 BIOS (8 KB)
1A000h ~ 1AFFFh = Vacío (4 KB)
1B000h ~ 1FFFFh = Twinhead BIOS (20 KB)

Menú de arranque en un Twinhead PC-100? Disco duro?

Todos los strings posibles que puede mostrar la BIOS durante el POST:

El Ctrl+Alt+Esc en particular jamás lo había visto en mi Twinhead, ni es mencionado en el manual ni en ninguna otra parte, se supone que los XT no traen CMOS SETUP. Resulta que apretar Ctrl+Alt+Esc al finalizar el conteo de memoria invoca el menú de arranque encontrado anteriormente. La opción de arrancar por disco duro no hace nada, regresa inmediatamente al menú y las otras opciones no parecen tener mucho efecto, todas terminan arrancando el disquete o el MS-DOS en ROM en su ausencia.
Pero eso no es todo, en el segmento correspondiente a la BIOS me encuentro... una pantalla de SETUP?!


Esta no tengo idea si será accesible de alguna manera, mi manejo de assembly de x86 es muy básico, puedo hacer tonteritas simples en DEBUG pero me mareo con el direccionamiento relativo y esas cosas.

El segmento que marqué como "???" no tengo la más mínima idea de qué pueda ser. No hay ni un sólo string en ASCII ni nada que yo pueda reconocer. Sospecho que puede ser parte del MS-DOS, pero la verdad no cacho una.
Extrañamente está incluida la BIOS de una controladora IDE XT Seagate ST05, siendo que dicho hardware no existe en el Twinhead:

Acaso habrán habido planes de lanzar un modelo con disco duro que nunca vio la luz?

Tengo entendido que es de esas BIOS que traían las tarjetas controladoras MFM/RLL/IDE XT con rutinas de formateo a bajo nivel en la dirección C800:5, sin embargo esa dirección y las otras comunes están vacías en el Twinhead. El código lo encontré mapeado en el segmento F800:0000, sin embargo tratar de ejecutarlo con DEBUG (offset 3 y 5) causa que el equipo se cuelgue.
Sería la raja que alguien más 1337 que yo le pueda echar una mirada al binario para tratar de descifrar los misterios faltantes, como la oculta pantalla de SETUP o los 32 KB desconocidos. Tampoco he podido encontrar el MS-DOS 3.22 como para hacer comparaciones, así que si alguien lo tiene por ahí, por favor avise!

Si lo necesitan puedo hacer pruebas en el mismo Twinhead, cuento con MS-DOS 6.22 y DEBUG.EXE

EDIT: Olvidé mencionar que sólo los segmentos de MS-DOS (00000h) y el de la controladora Seagate (18000h) empiezan con el 55h AAh necesario para arrancar como Option ROM. La fecha de la BIOS es 04/09/90.