Vale, lo he conseguido... He decodificado la ROM de Vortex VDOS 2.11-X

Hola a todos:

Un seguimiento de este nuevo hilo:

Por fin he terminado el proyecto.

Ya he decodificado, desensamblado y comentado por completo la ROM del controlador de disquetera Vortex F1-X/M1-X.

La historia está en el hilo de arriba. No es nada fácil de desensamblar, ya que está codificada y requiere cierta lógica para poder rastrearla realmente.

¿Cómo lo hice finalmente?

  1. Creé (con Claude) un emulador de Z80 que pasa el test ACID a nivel de software (no con precisión a nivel de hardware).
  2. Creé un CPC mínimo a su alrededor que puedo iniciar, detener, trazar (tanto CPU como bus) y hacer un montón de cosas más que necesitaba para la ejecución del código de la ROM. Esto incluyó un renderizador de pantalla que lee los registros del CRTC, un Gate Array (GA) mínimo capaz de generar interrupciones (no muestra nada), pero todos los registros de color están ahí y se leen. Y un FDC que reacciona correctamente a los IN/OUT de la CPU y los traduce en lecturas/escrituras de disco. El emulador puede leer y escribir archivos dsk estándar, tanto en formato Schneider de 3" como en formato Vortex.
  3. Diseñé todo para contar con múltiples interfaces (GUI, API, MCP).

Eso se hizo en unas pocas horas (unas 8 o así). Y a partir de ahí pude empezar a ejecutar todo el código de la ROM, detectar los ciclos M1, mantener una versión decodificada en memoria y ser capaz de hacer un seguimiento de cualquier dato que nunca llegara a ejecutarse.

Luego utilicé Claude para recorrer cada parte del código. Para el código que nunca se alcanzaba, le pedí que redactara escenarios y casos de prueba específicos, tanto para respuestas del hardware emulado (simplemente respuestas incorrectas) como para código real que fallaba.

Dado que la ROM incluye un módulo CP/M además del reemplazo habitual de AMSDOS, esos fueron dos modos.

Lo más destacado es un monitor completo para el CPC, así como un monitor de disco para examinar sectores en bruto directamente.

Así que aquí lo tenéis: el binario decodificado y el código fuente, totalmente documentado.

Por cierto:
Claude encontró unos 15 fallos en la ROM :wink: El siguiente paso será corregirlos. Algunos son cambios de un solo byte.
Por cierto

9 Me gusta