E' un discorso un po' lungo.
Una normale cartucccia contiene da 8 a 16 kb, che vanno da $8000 a $9fff (8kb) o da $8000 a $bfff (16kb)
Una cartuccia di per se' e' fatta da 2 puntatori a 16bit, agli indirizzi $8000 e $8002 e una signature composta dai 5 caratteri "CBM" in reverse e "80", che indicano al kernal che e' presente una cartuccia e, durante un reset, verra' effettuato un salto indiretto all'indirizzo puntato da $8000 con una JMP ($8000).
8000 09 80 12 80 C3 C2 CD 38 30 xx xx xx xx
|___| |___| |____________|
1 2 3
1) Puntatore per il reset: questo punta a $8009, e significa che ad ogni reset
il kernal effettuera' un JMP $8009
2) Puntatore per il restore: questo punta a $8012, e significa che ad ogni
pressione di Restore il kernal effettuera' un JMP $8012
3) Signature CBM80
Il resto (da $8009 in poi) e' codice normalmente eseguibile, con la particolarita' che NON si tratta della RAM del C64 ma della ROM nella cartuccia vista a quell'indirizzo.
Per fare una crt di un QUALSIASI programma (be', non proprio) si puo' scrivere una piccola routine di trasferimento che porta il contenuto della ROM da $8000 all'indirizzo originale del programma.
Rimane il problema che la memoria da $8000 in poi e' ROM e quindi non utilizzabile.
Per Contiki ho usato mcart di Markus Brenner per fare delle immagini CRT che permettessero il bank switching e, soprattutto, la disabilitazione della ROM. Ogni cartuccia ha un modo diverso di settare i banchi di ROM visibili, ad esempio mettendo il numero di banco a $de00, oppure $00 o $80 se si vuole disabilitare la ROM del tutto e ripristinare la memoria a $8000.
Quella che mi sembrava piu' utilizzabile era la Magic Desk da 32k. Non ho trovato nei dox di Brenner una cartuccia da 16kb che permettesse sia bankswitch che disabilitazione ROM.
Anche per Prophet64 sembra la piu' utilizzabile, perche' il programma espanso necessita di vedere la RAM da $8000 a $9fff, mentre il programma compresso occupa 16kb o meno.
Dopo una mattinata da tentativi, nonostante ti avessi anticipato in chat che credevo non si potesse fare, sono giunto a questo risultato:
http://iancoog.altervista.org/hid/Prophet64_CRT.rarpero' mi funzionano solo con Vice.
C'e' da stabilire come vada realizzata una vera cartuccia di tipo Magicdesk/HES, ma questo lo sanno solo Markus Brenner, Nicolas Coplin e pochi altri esperti di hardware.
A tal proposito qua ci sono gli schemi su come realizzare queste cartucce, vedi un po' se ci capisci tu qualcosa
http://www.64hdd.com/download/rom-crts.zip