Multi-Cartridge für den Commodore C64 Expansion-Port Modul-Steckplatz

Inzwischen habe ich ja wieder eine Tastatur, sogar eine WLAN-Tastatur für meinen C64. Aber an Datasette oder 1541 Floppy hapert es immer noch. Ich könnte jetzt zwar Listings eintippen lassen, aber schöner sind doch richtige Programme, zum Beispiele Spiele, für die der C64 so berühmt ist.

Außer Wizard of War und Lazarian (und Simon Basic) habe ich aber keine Module da. Aber warum nicht selbst Module brennen. Cartridge-Images sind ja im Internet zu finden und wenn man sich da bedient, sagen wir mal von einer inzwischen pleite gegangenen Firma und für den ausschließlich privaten Bereich... wer soll sich da schon groß beschweren?

EPROMs hätte ich ja eigentlich noch genug als 2732 (4 KB), 2764 (8 KB) und sogar 27128 (16 KB). Das Problem ist nur, dass diese nach 35 Jahren nur noch teilweise funktionieren, evtl. sind die Beinchen schon zu korrodiert? Oder vielleicht habe ich sie auch mal mit der falschen Programmierspannung gebrutzelt? Ich weiß es nicht mehr.

Der Rest der lesbaren EPROMs ist natürlich beschrieben und müsste erst mit einem EPROM-Löschgerät gelöscht werden, oder wochenlang hinter der Fensterscheibe Sonnenschein abbekommen. In Ermangelung und angesichts des Preises für so ein Teil nehme ich da doch lieber eine modernere Technologie.



Es befinden sich nämlich auch drei Atmel AT28C256 EEPROMs, also Flash-Chips in meinem Fundus. Die kann ich ganz einfach mit meinem Eprommer überschreiben, ohne UV-Licht oder dergleichen.

Naja, das heißt, die beiden die noch beschreibbar sind. Der "freundliche" Händler aus Fernost hat mir nämlich Gebrauchtware statt Neuware untergejubelt und so befinden sich auf den EEPROMs Firmware von irgendwelche SCSI-Controllern und einer ist eben schon hin. Bleiben aber immer noch zwei.



Außerdem habe ich ein paar EPROM-Karten in meiner EPROM-Ramschkiste gefunden, wovon aber eigentlich nur noch eine auf beiden Plätzen richtig funktioniert. Diese ist für zwei 8KB-EPROMs (2764) vorgesehen, wobei man mit einem Schalter zwischen beiden umschalten kann, während der C64 ausgeschaltet ist.

Die Orientierung der 2764-EPROMs ist mit der Kerbe nach unten, dort ist also Pin 1.Außerdem habe ich noch eine unbestückte Duo-EPROM-karte von Dela (84846):



2764 EPROMs haben 28 Pins. Und auch meine AT28C256 Flash haben 28 Pins. Passt doch wie die Faust aufs Auge: ich habe genau noch zwei 28C256 für die zwei Plätze auf der Karte. Eigentlich ist die Pin-Belegung der beiden sehr ähnlich:

Aber eben nicht zu 100%. Die Adressleitungen A13 und A14 gibt es beim 2764 natürlich nicht, weil 13 Adressleitungen (A0...A12) ausreichen, um die die 8192 213 Bytes zu adressieren. Und die sind dort anders belegt.

Außerdem will ich A13 und A14 an Schalter anschließen und so auf High (+5V) oder Low (GND) setzen, um den Speicherbereich manuell auszuwählen, aus dem vom Flash gelesen wird. So kann ich vier mal 8 KB in dem 32 KB Flash unterbrinen, das mal 2 Chips bringt (virtuelle) 8 EPROM-Plätze für die Karte.

Dazu muss ich allerding ein paar kleine Modifikationen an der Platine vornehmen:

Statt die ursprünglichen Schalterplätze bei A/B, AUS/EIN und RESET zu besetzen, habe ich lieber eine kleien Lochrasterplatine angeflanscht, auf der ich alle Schalter und Taster unterbringen.



Dabei haben die Schalter folgende Bedeutung: Man kann jeweils ein Lieblings-ROM auf A und B einstellen und dann mit A/B zwischen diesen umschalten. Der rote Taster ist natürlich dazu da, einen Reset für den Commodore 64 auszulösen. Und die Schalter legen die Adressleitungen entweder auf High oder Low, indem sie mit +5V oder Ground verbunden werden. Umschalten sollte man besser bei ausgeschaltetem C64, denn ich weiß nicht genau, ob durch den mechanischen Aufbau nicht doch einen Zustand gibt, bei dem beide Seiten geschlossen sind, und dass würde +5V und GND verbinden, was dem C64 bestimmt nicht gut tut.

Im Internet sind Cartridges vornehmlich als .CRT und nur manchmal als .BIN-Files zu finden, was ROM-Images sind. Diese sind in 8 KB, 16 KB oder noch größer zu finden. CRT-Files sind für den C64-Emulator VICE, den es für viele Betreibssysteme (natürlich auch Windows) gibt.

Was wir allerdings brauchen, sind die genau 8 KB (also 8192 Bytes) großen .BIN-Dateien. Freundlicherweise liefert VICE gleich ein Konvertierungsprogramm mit, um .CRT-Dateien zu .BIN-Dateien zu machen. Das Tool heißt cartconv.exeVerzeichnis von c:\Tools\WinVICE\WinVICE-2.2-x64 01.12.2009 23:42 341.504 c1541.exe 01.12.2009 23:41 98.816 cartconv.exe 01.12.2009 23:41 188.928 petcat.exe 01.12.2009 23:42 2.586.624 vice64.exe 01.12.2009 23:42 2.788.352 x128.exe 01.12.2009 23:42 2.586.624 x64.exe 01.12.2009 23:42 2.212.352 x64dtv.exe 01.12.2009 23:42 2.293.760 xcbm2.exe 01.12.2009 23:42 2.241.024 xpet.exe 01.12.2009 23:42 2.283.520 xplus4.exe 01.12.2009 23:42 2.260.480 xvic.exe 11 Datei(en), 19.881.984 Bytes Mit .CRT-Files werden wir schon eher fündig. Allerdings sind die 8KB großen wieder eher selten und scheinen nur Anfang der Achtziger benutzt worden zu sein, als Speicher noch sehr teuer war.Spätere Spiele haben eigentlich immer mindestens 16 KB. Aber es gibt auch ein einige Anwendungsprogramme, die mit 8KB auskommen.

Viele davon sind SpeedDOS oder TurboTape-Module. Sehr praktisch, wenn man Floppy oder Datasette hat. Habe ich aber nicht. Und auch "nur" eine WLAN-Tastatur, für die ich immer PC bemühen oder Smartphone rauskramen müsste.

Was ich suche, ist etwas, wofür man weder Speichermedium noch Tastatur braucht. Die ROMs sollen allein mit dem Joystick klarkommen. Dummerweise muss man bei vielen Spielen erst einmal F1 für einen Spieler drücken. Dumm gelaufen, die scheiden aus.

Zum Schluss bleibt eine kleine Auswahl für meine acht virtuellen Modulplätze: Die entsprechenden CRT-Files habe ich mit dem cartconv.exe nach folgendem Beispiel konvertiert. c:\Tools\WinVICE\WinVICE-2.2-x64 >> cartconv.exe -i D:\retro\C64\Cartridges\Cartridges\pac-man.crt -o "d:\r etro\C64\Cartridges\8 TO BURN\pacman.bin" Input file : D:\retro\C64\Cartridges\Cartridges\pac-man.crt Output file : d:\retro\C64\Cartridges\8 TO BURN\pacman.bin Conversion from Generic Cartridge .crt to binary format successful. Und dann habe ich in einer Windows-Eingabeaufforderung jeweils vier Dateien von 8192 Bytes zu einem ROM-Image mit 32768 Bytes für die AT28C256 zusammenkopiert: d:\retro\C64\Cartridges\8 TO BURN >> copy /B C-64_Diagnostic.bin+galaxian.bin+LaserZone.bin+mr_tnt.bin rom2 .bin C-64_Diagnostic.bin galaxian.bin LaserZone.bin mr_tnt.bin 1 Datei(en) kopiert.d:\retro\C64\Cartridges\8 TO BURN >> copy /B avenger.bin+amc.bin+pacman.bin+jupiterl.bin rom1.bin avenger.bin amc.bin pacman.bin jupiterl.bin 1 Datei(en) kopiert.d:\retro\C64\Cartridges\8 TO BURN >> dir Datenträger in Laufwerk D: ist X10_DATEN1_(D)_INTERN Volumeseriennummer: 1451-7B29 Verzeichnis von d:\retro\C64\Cartridges\8 TO BURN 27.10.2020 14:20 <DIR> . 27.10.2020 14:20 <DIR> .. 27.10.2020 13:26 8.192 amc.bin 27.10.2020 14:12 8.192 avenger.bin 27.10.2020 12:05 8.192 C-64_Diagnostic.bin 27.10.2020 13:20 8.192 galaxian.bin 27.10.2020 14:08 8.192 jupiterl.bin 27.10.2020 12:15 8.192 LaserZone.bin 27.10.2020 13:59 8.192 mr_tnt.bin 27.10.2020 13:16 8.192 pacman.bin 27.10.2020 14:16 32.768 rom1.bin 27.10.2020 14:20 32.768 rom2.bin 10 Datei(en), 131.072 Bytes Die beiden 32 KB ROM-Files habe ich dann auf jeweils einen 28C256 geflasht mit meinem Eprommer



Beim Testen ist mir dann aufgefallen, dass Avenger und LunarLander nicht automatisch starten. Das liegt wohl daran, dass Commodore hier die Ultimax Kodierung benutzt hat, die das Modul-Image beim Ladevorgang nicht wie gewöhnlich bei $8000, sondern bei $E000 in den Speicher des C64 hineinlädt. Wenn wir das Modul jetzt normal bei $8000 hineinladen, passen die im Image abgelegten Speichervektoren nicht mehr und es wird nichts gestartet.

Um das wieder geradezurücken, müssten wir ausschließlich Ultimax-Cartridges benutzen und die Leitungen an Pin 8 und 9 des Expansionsport entsprechend kodieren: Type Size Game EXRom Low Bank High Bank in K Line Line (ROML) (ROMH) ------------------------------------------------- Normal 8k hi lo $8000 ----Normal 16k lo lo $8000 $A000 Ultimax 8k lo hi $E000 ---- Das ist mir zuviel Aufwand. Außerdem ist mir beim Einsetzen eines dieser gebrauchten chinesischen Flash-Chips ein Pin abgebrochen und war dann nicht mehr zu gebrauchen. Den Pin wacklig wieder anzulöten, darauf hatte ich keine Lust und habe jetzt nur noch den anderen (auch wackligen - die haben die Chips beim Auslöten echt gefoltert!) Chip alleine drin. Dann hab ich halt nur 4 ROM-Bänke.

Mit den bei diesem Projekt gemachten Erfahrungen würde ich jetzt auf mindestens 16 KB große Bänke setzen, denn da ist die Auswahl an Spielen viel größer. Und dann würde ich auch gleich eine eigene Platine entwerfen, in die ein aktueller Flash-Chip mit ein paar MegaByte hineinpasst. Mit einem 8-DIP-Schalter lassen sich dann auch 256 unterschiedliche Module auswählen und starten. Dafür würde ein 4 MB-Flash-Chip ausreichen (16 KB * 256 = 4096 KB).

Aber es ging in diesem Projekt ja auch eher darum, den alten Schrott wieder einem sinnvollen Gebrauch zuzuführen und etwas über den Expansions-Port des C64 zu lernen. Mit meinem C64-Mini (Vorstellung hier) kann ich auch ganz komfortabel Spiele vom USB-Stick laden .