Ça y est, j'ai réussi… J'ai décodé la ROM du Vortex VDOS 2.11-X

Salut à tous,

une suite à ce tout nouveau fil de discussion :

J’ai enfin terminé le projet.

J’ai désormais entièrement décodé, désassemblé et commenté la ROM du contrôleur de lecteur Vortex F1-X/M1-X.

L’historique se trouve dans le fil ci-dessus. Ce n’est pas facile de la désassembler, car elle est encodée et nécessite une certaine logique pour la tracer concrètement.

Alors, comment m’y suis-je pris au final ?

  1. J’ai créé (avec Claude) un émulateur Z80 qui passe le test ACID au niveau logiciel (pas exact au cycle matériel près).
  2. J’ai créé un CPC minimal autour, que je peux démarrer, arrêter, tracer (à la fois le CPU et le bus) et faire plein d’autres choses dont j’avais besoin pour l’exécution du code de la ROM. Cela incluait un moteur de rendu d’écran qui lit les registres du CRTC, un Gate Array minimal capable de générer des interruptions (il n’affiche rien), mais tous les registres de couleur y sont présents et lus. Et un FDC qui réagit correctement aux IN/OUT du CPU et les traduit en lectures/écritures sur disque. L’émulateur peut lire et écrire des fichiers dsk standards, aussi bien au format Schneider 3" qu’au format Vortex.
  3. J’ai conçu le tout pour disposer de plusieurs interfaces (GUI, API, MCP).

Tout cela a été fait en quelques heures (environ 8). Et ensuite, j’ai pu commencer à exécuter tout le code de la ROM, détecter les cycles M1, garder une version décodée en mémoire et pouvoir suivre toutes les données qui n’avaient jamais été exécutées.

J’ai ensuite utilisé Claude pour analyser chaque partie du code. Pour le code qui n’était jamais atteint, je lui ai fait écrire des scénarios et des cas de test spécifiques, que ce soit sur des retours de matériel émulé (simplement des retours erronés) ou sur du vrai code s’exécutant de travers.

Comme la ROM intègre un module CP/M en plus du remplacement normal de l’AMSDOS, il y avait deux modes.

Le point fort est la présence d’un moniteur complet pour le CPC ainsi que d’un moniteur de disque pour examiner directement les secteurs bruts.

Voilà donc pour vous. Le binaire décodé et le code source — entièrement documenté.

Au fait :
Claude a trouvé une quinzaine de bugs dans la ROM :wink: La prochaine étape consistera à les corriger. Certains ne demandent que la modification d’un seul octet.
Au fait

9 « J'aime »