Dumpare le cartucce con il Commodore 64
Articolo di hiryu, pubblicato il 15-10-2003Il software commerciale per il Commodore 64 è stato distribuito in tre tipi di formato: floppy disk da 5'1/4, cassette e cartucce.Mentre la conversione di vecchi floppy disk in un file .D64 è ormai molto comune, e il formato .TAP, per archiviare le suddette cassette, sta diventando sempre più popolare, i file .CRT, i dump delle classiche cartucce, sono più rari e dificili da reperire. Questo documento prova a dare alcune dritte su come dumpare il contenuto di una cartuccia, e trasferirlo in un file binario (DOS o UNIX) usando tool molto comuni come lo Star Commander e l'utility mcart (scaricabile direttamente da questa pagina), e infine, convertire la ROM standard contenuta nella cartuccia in un file .CRT usabile da un qualsiasi emulatore di C64.
Tutte le informazioni date in questo documento sono da prendersi "così com'è" e non mi riterrò responsabile per alcun tipo di danno arrecato alla tua macchina. La porta di espansione (quella dove si inseriscono le cartucce) è connessa direttamente al bus del C64 e si può seriamente danneggiare il computer manipolando la suddetta porta. Per ogni tipo di problema, o successo, che hai avuto leggendo questo testo, puoi scrivere direttamente all'autore, Markus@brenner.de oppure alle persone che si sono prese la briga di tradurre questo testo, hiryu@email.it
http://markus.brenner.de/cartridge/.
Per un dump efficace devi scaricare il tool MDUMP.
(Trovi il link per scaricare questo ed altri tools in fondo a questa pagina)
1. Un pò di teoria
Estratto da: "Commodore 64 Programmer's Reference Guide":
Caricamento automatico delle cartucce
Il sitema provvede al caricamento automatico del programma contenuto nella cartuccia. Il programma viene eseguito solo se i primi 9 bytes della ROM della cartuccia alla locazione di memoria 32768 ($8000) contengono dei dati ben specifici. I primi due bytes devono contenere il vettore per il "Cold Start" usato da qualsiasi programma in cartuccia. I due bytes successivi, alla locazione 32770 ($8002) devono essere il vettore per il "Warm start" usato dal programma. I successivi tre bytes devono contenere le lettere "CBM" con il bit 7 settato in ogni lettera. Gli ultimi due bytes devo invece contenere il numero "80" nello standard PET ASCII.
NOTA: Il caricamento automatico funziona differentemente nelle cartucce Ultimax poichè queste hanno il ROMH al di sopra di $E000-$FFFF, possono semplicemente sovrascrivere i vettori hardware a $FFFA-$FFFF per puntare al codice di inizializzazione.
Mappa della memoria del Commodore 64
La seguente tabella mostra le varie configurazioni di memoria disponibili sul Commodore 64, lo stato delle linee di controllo che selezionano ogni mappa, e l'uso di ognuna di esse. La colonna di estrema sinistra della tabella contiene gli indirizzi in notazione esadecimale. La prima riga invece indica tutte le configurazioni di memoria possibili. La configurazione di default è sulla sinistra, mentre la più rara configurazione usata nelle cartucce gioco Ultimax, è a destra. Ogni colonna delle configurazioni ha un numero binario di quattro cifre come titolo. I bits, da sinistra a destra, rappresentano rispettivamente gli stati delle linee /LORAM, /HIRAM, /GAME e /EXROM. I bits il cui stato non interessa sono segnati con una "X". Ad esempio, quando la configurazione Ultimax videogame è attiva (linea /GAME a 0, linea /EXROM a 1) le lineee /LORAM e /HIRAM non hanno nessun effetto.

Come si può vedere dalla tabella la configurazione con ROML o ROMH (o entrambe) abilitate insieme alle linee /GAME e /EXROM, può essere controllata dalla porta espansione. Si possono avere tre casi:
Cartuccia Normale 8kb a $8000 (ROML): GAME = 1, EXROM = 0
Cartuccia Normale 16kb a $8000/$A000 (ROML,ROMH): GAME = 0, EXROM = 0
Cartuccia Ultimax 16kb a $8000/$E000 (ROML,ROMH): GAME = 0, EXROM = 1
La modalità Ultimax presenta un altro problema se si usa lo switch per cambiare tra le modalità "cartuccia abilitata/disabilitata": per una frazione di secondo, quando lo switch cambia stato, non ci sono le linee /EXROM e /GAME definite. Questo porta ad avere la configurazione Ultimax abilitata per quel pò di tempo, che non è sicuro se il computer non è nello stato di salvataggio.
2. Switch della porta di espansione
Questo capitolo descrive come installare uno switch che permette di abilitare/disabilitare le linee /EXROM e /GAME della cartuccia, mappando l'area della ROM su quella della RAM in operazioni normali. Per una massima flessibilità usare uno switch a 3 vie e 2 poli (ON-OFF-ON).

Staccare il C64 dall'alimentatore, rimuovere il cover superiore svitando le viti da quello inferiore. L'interno del Commodore 64 si presenterà tipo questo:
Guardando il dietro del C64, la porta dove si inseriscono le cartucce apparirà tipo l'immagine qui sotto:

I piedini che ci interessano sono:

- Posizione 1 (ON) dell'interruttore collega normalmente la porta e la scheda madre del computer. E' la modalità che si aveva prima dell'installazione dell'interruttore.
- Posizione 2 (OFF) lascia i piedini scollegati, come se nessuna cartuccia fosse inserita.
- 1) Spegnere il C64, inserire la cartuccia e riaccendere la macchina. La cartuccia dovrebbe autocaricarsi. Se non fosse così, ovvero se si presenta il normale schermo blu, cambiare posizione all'interruttore e resettare il computer. Se la cartuccia continua a non avviarsi, vuol dire che qualcosa è andato storto durante l'installazione dello switch.
- 2) Settare l'interruttore nella posizione "aperto" e accendere la maccina, si dovrebbe presentare il classico schermo blu.
- 3) Caricare il programma MDUMP dal disco su cui si desidera scrivere il dump della cartuccia. Lanciare il programma che chiederà di inserire il nome del file che dovrà contenere il dump della cartuccia. A questo punto verrà chiesto di chiudere l'interruttore e premere SPAZIO.
- 4) Chiudere l'interruttore e premere SPAZIO, lo schermo comincerà a lampeggiare. Un ciclo che disabilita gli interrupts eviterà che il computer vada in crash durante l'operazione.
- 5) Verrà chiesto di inserire il disco su cui salvare il dump; l'area di memoria $8000-$BFFF verrà salvata sul disco.
Le cartucce Ultimax richiedono un trattamento leggermente diverso.
Per capire se una cartuccia usa la modalità Ultimax settare l'interruttore in modalità "Ultimax" e resettale la macchina, se il gioco non si autoavvia allora è una cartuccia Ultimax!
Per dumpare questo tipo di cartucce si deve procedere normalmente fino al passo 3 di quelli descritti sopra, ma, al quearto punto, invece di settare l'interruttore nella modalità "normale", settarlo in quella "Ultimax".
3. Modulo di espansione Multi-Cartridge
Questo modulo di espansione generalmente ha un interruttore che abilita i differenti alloggiamenti senza dover rimuovere le cartucce per cambiare tra una e l'altra. Si può usare questo modulo per dumpare le cartucce nel seguente modo.
IMPORTANTE: Questo metodo non funziona con le cartucce Ultimax!
- 1) Spegnere il C64. Inserire una cartuccia nello primo alloggiamento. Lasciare il seocondo alloggiamento vuoto. Accendere la macchina e far avviare la cartuccia scegliendo il giusto alloggiamento.
- 2) Cambiare l'interruttore su un alloggiamento vuoto e resettare. Ci si trova davanti al normale schermo blu del C64.
- 3) Caricare il programma MDUMP dal disco su cui si desidera scrivere il dump della cartuccia. Lanciare il programma che chiederà di inserire il nome del file che dovrà contenere il dump della cartuccia. A questo punto verrà chiesto di chiudere l'interruttore e premere SPAZIO.
- 4) Cambiare l'interruttore sull'alloggiamento dove è inserita la cartuccia e premere SPAZIO, lo schermo comincerà a lampeggiare. Un ciclo che disabilita gli interrupts eviterà che il computer vada in crash durante l'operazione.
- 5) Verrà chiesto di inserire il disco su cui salvare il dump; l'area di memoria $8000-$BFFF verrà salvata sul disco.
4. Kernal alternativo
Un kernal modificato consente di bypassare la routine standard di reset e sopprimere così l'autocaricamento di una carduccia CBM80. Nel seguente paragrafo è spiegato come dumpare cartucce con Speeddos, ma il procedimento si può adattare ad altri kernal in base alle funzioni apposite.
IMPORTANTE: Questo metodo non funziona con le cartucce Ultimax!
Lo Speeddos è un kenal che sostituisce la rom standard con una contenente una versione alternativa delle routines $E000-$FFFF. Se si è in possesso di un programmatore di eprom, si può scaricare la rom dello Speeddos da internet e rimpiazzare il kernal originale con un adattatore.
Speeddos ha delle funzioni molto utili che possono essere usate per dumpare cartucce: se si tiene premuto il tasto C= e si resetta la macchina, il C64 si riavvia e appare un monitor (incluso nella rom). Tutto quello che va fatto ora è salvare la regione di memoria che usa la cartuccia ed è fatta!
- 1) Spegnere il C64. Inserire la cartuccia. Riaccendere la macchina. La cartuccia si autoavvierà.
- 2) Tenere premuto il tasto C= mentre si resetta la macchina. Il C64 si riavvierà in con un programma monitor e mostrerà la pagina di memoria $0801.
- 3) Cambiare la schermata in lettere minuscole e inserire il comando M8000. Alla posizione $8004 si può leggere CBM80 in ASCII. Ora inserire il comando MA000; se i primi bytes sono $94 $E3 $7B $E3 e si legge CBMBASIC nella visualizazione ASCII il raggio d'azione della cartuccia è $8000-$A000. Se l'area $A000 è differente i raggio d'azione sarà $8000-$C000.
- 4) Inserire il disco di salvataggio, e inserire il comando: S 8000 A000 per salvare il contenuto della cartuccia sul disco. Se invece il raggio d'azione è $8000-$C000 inserire il comando: S 8000 A000.
APPENDICE A: Installare un pulsante di reset
Si può installare un pulsante di reset sia sulla user port che sulla porta seriale (quest'ultima funziona solo sul modello "marrone" - n.d.T). Si possono saldare i fili da collegare al pulsante direttamente sulla scheda madre o su un connettore che verra collegato alla user port o alla porta seriale (anche sul drive 1541).
Per l'installazione sulla user port i fili dell'interruttore devono essere saldati sui piedini 1 e 3:

Per l'installazione sulla porta seriale invece bisogna usare i piedini 2 e 6:

Connettore seriale visto da dietro.
Appendice D: Tools
- mcart, per convertire dump delle cartucce in CRT file per gli emulatori.
- mdump, per cartucce normali. (C64 tool)
- ardump, per Action Replay and Action Cartridge. (C64 tool). Funziona?
- dpow, per cartucce "Power Play" e"Fun Play". (C64 tool)
- dmagic, per cartuccia Commodore's Magic Desk. (C64 tool)
- docean, per cartucce Ocean. (C64 tool)
- dgs per cartucce Commodore "C64GS" Game System e System 3 (Last Ninja Remix, Myth). (C64 tool)
- dsg, per cartuccia Commodore "SUPER GAMES" . (C64 tool)
- epyxdump, per cartuccia Epyx Fast Load. (C64 tool, switch non necessario)
- fc1dump, per Final Cartridge I. (C64 tool). Funziona?
- fc3dump, per Final Cartridge III. (C64 tool, instruzioni accluse: dfc3.txt)
- dzaxxon, per Zaxxon e Super Zaxxon by SEGA (C64 tool).
Appendice Z
(Questa appendice non fa parte del documento originale ma è stata realizzata da Gianluca)
Ancora nessun commento inserito, puoi essere il primo :-)




