Okay, ich hab's geschafft ... Ich habe das Vortex VDOS 2.11-X ROM entschlüsselt

Hallo zusammen,

ein Follow-up zu diesem brandneuen Thread:

Ich habe das Projekt nun endlich abgeschlossen.

Ich habe das ROM des Laufwerkscontrollers Vortex F1-X/M1-X jetzt vollständig dekodiert, disassembliert und kommentiert.

Die Vorgeschichte findet sich im Thread oben. Es ist nicht leicht zu disassemblieren, da es verschlüsselt ist und man etwas Logik braucht, um es tatsächlich nachzuvollziehen.

Wie habe ich es also letztendlich gemacht?

  1. Ich habe (mit Claude) einen Z80-Emulator erstellt, der den ACID-Test auf Softwareebene besteht (nicht hardware-exakt).
  2. Ich habe einen minimalen CPC darum herum gebaut, den ich starten, stoppen und tracen kann (sowohl CPU als auch Bus) und der eine Menge anderer Dinge beherrscht, die ich für die Ausführung des ROM-Codes brauchte. Dazu gehörte ein Screen-Renderer, der die CRTC-Register ausliest, ein minimaler GA, der Interrupts erzeugen kann (zeigt nichts an), aber alle Farbregister sind vorhanden und werden gelesen. Und ein FDC, der korrekt auf IN/OUT von der CPU reagiert und dies in Lese-/Schreibzugriffe auf die Diskette übersetzt. Der Emulator kann standardmäßige DSK-Dateien lesen und schreiben, sowohl im 3″-Schneider-Format als auch im Vortex-Format.
  3. Ich habe das Ganze so entworfen, dass es über mehrere Schnittstellen verfügt (GUI, API, MCP).

Das war in wenigen Stunden erledigt (etwa 8). Danach konnte ich damit beginnen, den gesamten Code im ROM auszuführen, die M1-Zyklen zu erkennen, eine dekodierte Version im Speicher zu halten und alle Daten im Blick zu behalten, die nie ausgeführt wurden.

Anschließend habe ich Claude genutzt, um jeden Teil des Codes durchzugehen. Für Code, der nie erreicht wurde, habe ich spezifische Testszenarien und Testfälle schreiben lassen – sowohl für emulierte Hardware-Rückgaben (einfach fehlerhafte Rückgaben) als auch für tatsächlichen Code, der Fehler verursacht.

Da das ROM sowohl ein CP/M-Modul als auch den normalen AMSDOS-Ersatz enthält, waren das zwei Modi.

Ein Highlight darin ist ein vollständiger Monitor für den CPC sowie ein Disketten-Monitor, um sich Raw-Sektoren direkt anzusehen.

Hier ist es also: Dekodierte Binärdatei und der Quellcode – vollständig dokumentiert.

Übrigens:
Claude hat etwa 15 Bugs im ROM gefunden :wink: Der nächste Schritt wird sein, diese zu beheben. Einige davon sind nur Single-Byte-Änderungen.
BTW

9 „Gefällt mir“