Ciao a tutti,
un aggiornamento da questo nuovissimo thread:
Ho finalmente concluso il progetto.
Ora ho decodificato, disassemblato e commentato completamente la ROM del controller per unità disco Vortex F1-X/M1-X.
Tutta la cronologia è nel thread qui sopra. Disassemblarla non è affatto semplice, dato che è codificata e richiede una certa logica per poter essere effettivamente tracciata.
Quindi, come ci sono riuscito alla fine?
- Ho creato (con Claude) un emulatore Z80 che supera il test ACID a livello software (non a livello di precisione hardware ciclo per ciclo).
- Ci ho costruito attorno un CPC minimale che posso avviare, arrestare, tracciare (sia CPU che bus) e che fa un sacco di altre cose necessarie per l’esecuzione del codice della ROM. Questo includeva un renderer per lo schermo che legge i registri CRTC, un Gate Array (GA) minimale capace di generare interrupt (non visualizza nulla, ma tutti i registri colore sono presenti e letti). E un FDC che risponde correttamente alle istruzioni IN/OUT dalla CPU traducendole in letture/scritture su disco. L’emulatore è in grado di leggere e scrivere file dsk standard, sia in formato Schneider da 3" che in formato Vortex.
- Ho progettato il tutto con interfacce multiple (GUI, API, MCP).
Questo è stato fatto in poche ore (circa 8). Dopodiché ho potuto iniziare a eseguire tutto il codice presente nella ROM, rilevare i cicli M1, conservare una versione decodificata in memoria ed essere in grado di tenere traccia di tutti i dati mai eseguiti.
Ho poi usato Claude per analizzare ogni singola porzione di codice. Per le parti di codice mai raggiunte, gli ho fatto scrivere scenari e casi di test specifici, sia per ritorni simulati dall’hardware (semplicemente risposte errate) sia per codice reale che generava errori.
Dato che la ROM contiene un modulo CPM oltre al normale sostituto di AMSDOS, c’erano due modalità distinte.
Il fiore all’occhiello al suo interno è un monitor completo per il CPC, oltre a un monitor per il disco che consente di esaminare direttamente i settori grezzi.
Ed eccolo qui per voi: binario decodificato e codice sorgente interamente documentato.
Tra l’altro:
Claude ha scovato circa 15 bug nella ROM
Il prossimo passo sarà sistemarli. Alcuni richiedono solo la modifica di un singolo byte.
Tra l’altro