Tutorial: Die C64 8k Multi-Cartridge (Teil 1)

Cartridges bzw. Module für den Commodore 64 stellen eine praktische Lösung dar. Nach dem Einstecken in den Modul-Port startet das gewünschte Programm ohne Wartezeit. Dabei kann es sich um Spiele oder Programme wie beispielsweise Fastloader handeln. In dieser Anleitung erstellen wir ein Modul mit bis zu acht Programmen. Auf das hier gezeigte Modul können nur Programme kopiert werden, deren Größe 8 KB nicht überschreitet. Für größere Programme oder Spiele ist dieses Modul nicht geeignet. 


Bevor es losgeht, noch ein paar Hinweise (Wichtig!):
  • Das Ein- bzw. Ausstecken einer Cartridge oder eines (E)EPROMs darf nur bei ausgeschaltetem C64 erfolgen.
  • Die Jumper dürfen nur bei ausgeschaltetem C64 gesetzt werden.
  • Achte auf die korrekte Ausrichtung der Kerbe des (E)EPROMs. Ein falsch herum aufgestecktes ROM kann zerstört werden.
  • Die Cartridge muss mit der bestückten Seite nach oben in den Modul-Port gesteckt werden (siehe entsprechende Bilder).
  • Es wird empfohlen, statische Ladungen durch Tragen eines antistatischen Armbands zu vermeiden.

Welche Module können erstellt werden?

Viele Cartridges verfügen neben dem eigentlichen ROM über zusätzliche ICs oder andere Komponenten. Dies lässt sich mit einem 8 KB EPROM nicht abbilden. Die Cartridge Images (CRT), die im Internet verfügbar sind, enthalten die benötigten Zusatzinformationen bereits und können daher im Emulator verwendet werden. Die Binärdatei, die auf unserem EPROM gespeichert wird, enthält lediglich das reine ROM. Wir können jedoch normale Programme mit bis zu 8 KB Speicher verwenden. Um uns das individuelle Brennen und Testen der EPROMs zu ersparen, laden wir diese zunächst in den Emulator. Die genaue Vorgehensweise wird im zweiten Teil dieser Anleitung unter „Cartridge Images mit VICE testen“ beschrieben.

Die Komponenten

Auf der Website thefuturewas8bit.com finden wir die benötigte Platine.


Hinweis: Die unbestückte Platine von tfw8b.com wurde zwischenzeitlich aktualisiert. Taster und SMD-Bauteile sind bereits aufgelötet. Diese Anleitung bezieht sich auf die Vorgängerversion, jedoch bleiben Aufbau und Funktion unverändert.

Die Platine ist teilweise unbestückt. Folgende Komponenten werden benötigt:
- Jumper (5 Stück)
- Optional: 3x Mini-Schiebeschalter 2,54mm Raster (Gerade). Diese ersetzen drei der benötigten Jumper und ersparen somit das mehrfache Umstecken.

Abschließend benötigen wir noch ein (E)EPROM. Zur Auswahl stehen die Typen 2764 (8 KB), 2864 (8 KB), 27128 (16 KB), 27256 (32 KB), 28256 (32 KB) und 27512 (64 KB). Mit zunehmender Speichergröße steigt die Anzahl der Programme, die darauf gespeichert werden können.

Die Platine bestücken

Die einzelnen Komponenten können nun, wie in der nachfolgenden Abbildung dargestellt, gelötet werden.


Alternativ können Schiebeschalter verwendet werden.


Die Kerbe am Sockel muss in die gleiche Richtung zeigen wie die Kerbe auf der Platine. Dies soll einen versehentlichen, falschen Einbau des (E)EPROMs verhindern.

Das ROM-Image erstellen

Dieser Abschnitt ist nur durchzuführen, wenn zwei oder mehr Programme auf das EPROM kopiert werden sollen. Soll lediglich ein Image gespeichert werden (2764/2864 EPROM), kann dieser Schritt übersprungen werden.

Da wir bis zu acht Programme (64 KB) auf einem Modul speichern können, ist es zunächst erforderlich, das Abbild für das EPROM zu erstellen. In diesem Beispiel wird ein 32 KB EPROM 27256 verwendet, sodass bis zu vier Programme gespeichert werden können. Die Vorgehensweise ist identisch, unabhängig davon, ob zwei Programme (27128-EPROM) oder acht Programme (27512-EPROM) kopiert werden sollen. Diese BIN-Dateien werden alle im gleichen Verzeichnis abgelegt. Folgende Dateien werden verwendet:

Omega Race (C64614_Omega_Race-8000.bin)
Jupiter Lander (C64601_Jupiter_Lander-e000.bin)

Die genannten Images sind nun zu einem einzigen Image zusammenzuführen. Windows stellt hierfür bereits das notwendige Werkzeug bereit. In der Eingabeaufforderung von Windows (CMD) wechseln wir in das Verzeichnis, in dem sich die Images befinden, und geben folgenden Befehl ein.

Copy /b [Image1.bin]+[Image2.bin]+[Image3.bin]+[Image4.bin] Zieldatei.bin

Das sieht in meinem Beispiel so aus:


Das Ergebnis ist eine Datei mit einer Größe von 32 KB, die alle vier Abbilder enthält. Das letzte Programm im zusammengesetzten ROM wird später das erste in Speicherblock 1 sein.

Das EPROM brennen

Nachdem wir das Image erstellt haben, müssen wir es nun auf das EPROM kopieren. Wie zuvor beschrieben, verwenden wir in diesem Beispiel ein 27256 EPROM (4 x 8 KB). Selbstverständlich muss für die entsprechende Anzahl an Programmen das passende EPROM verwendet werden. In dieser Anleitung wird der Mini Pro TL866C verwendet. Dieser ist bereits für unter 50 € erhältlich und unterstützt alle benötigten EPROMs.


Im Anschluss an die Installation von Treiber und Programm starten wir die Software und wählen das entsprechende (E)EPROM aus der IC-Datenbank aus. Für die grobe Suche geben wir eine der folgenden (E)EPROM-Bezeichnungen ein, abhängig von der verwendeten Variante: 2764, 2864, 7128, 27256, 28256 oder 27512. Im nächsten Schritt wählen wir den exakten Typ des verwendeten ICs.


Das EPROM muss korrekt in den Sockel eingesetzt werden. Die korrekte Positionierung des EPROM wird nach Betätigung der Schaltfläche „Information“ angezeigt. Beachte hierbei die Kerbe und Pin 1.


Bei Verwendung eines EPROMs (nicht EEPROM) sind folgende Punkte zu beachten: Stelle sicher, dass das EPROM leer ist. Ein „Blank Check“ gibt darüber Auskunft. Ein nicht leeres EPROM muss vorab gelöscht werden. Weitere Informationen hierzu sind unter „Löschen von EPROMs“ im zweiten Teil der Anleitung zu finden. EEPROMs können direkt überschrieben werden.


Anschließend öffnen wir die Image-Datei (BIN-Format) und bestätigen mit „OK“.


Abschließend wird das Image auf das (E)EPROM gebrannt. Klicke hierfür auf die Schaltfläche „P“ und bestätige mit „Program“. Das EPROM wird nun beschrieben.


Um einen Datenverlust im EPROM zu vermeiden, wird empfohlen, die Glasscheibe mit einem undurchsichtigen Klebeband abzudecken. Bei einem EEPROM besteht diese Gefahr nicht, sodass auf das Klebeband verzichtet werden kann.


Das (E)EPROM ist nun einsatzbereit und kann auf den Sockel der Cartridge gesteckt werden. Beachte die korrekte Ausrichtung der Kerbe auf dem EPROM. Diese muss mit der Kerbe des Moduls und der Kerbe des Sockels übereinstimmen.

EXROM, GAME und die Memory-Banks

Dem C64 muss mitgeteilt werden, in welchem Speicherbereich sich das Programm befindet. Hierfür befinden sich auf der Modulplatine folgende Jumper-Einstellungen: EXROM/GAME bzw. ROM_HI/ROM_LOW. Die meisten Programme müssen im Speicherbereich $8000 bis $9FFF liegen. Um dies zu ermöglichen, müssen die Jumper wie folgt gesetzt werden: EXROM, ROM_LOW.

Einige Programme, wie beispielsweise die „Dead Test Cartridge“ oder Commodore MAX Programme, müssen im Speicherbereich des Kernels liegen. Dieser Bereich erstreckt sich von $E000 bis $FFFF. Dies ist der sogenannte Ultimax-Modus, der durch die folgende Jumper-Einstellung aktiviert wird: GAME, ROM_HIGH.


Die Speicheradresse ist programmspezifisch. Bei einigen im Netz verfügbaren Images ist die Speicheradresse im Dateinamen zu finden. Dies gilt für zwei unserer Testprogramme, die in diesem Beispiel verwendet werden.

C64614_Omega_Race-8000.bin
C64601_Jupiter_Lander-e000.bin

Im Folgenden wird die Auswahl der Speicherblöcke des EPROMs erläutert. Abhängig von der Größe des verwendeten EPROMs ist eine Umschaltung zwischen den einzelnen Blöcken möglich. Die Position der Blöcke hängt von der Speichergröße und dem Typ des (E)EPROMs ab. Die Jumper A13, A14 und A15 sind gemäß der nachstehenden Tabelle zu setzen.


Der C64 muss vor dem Umstecken der Jumper ausgeschaltet werden. Die Belegung der Speicherblöcke sowie die EXROM/Game-Einstellung sind bei unserem Modul wie folgt definiert:

Der Funktionstest

Nach dem Bestücken der Platine, dem Brennen des EPROMs und dem Setzen der Jumper kann das Modul getestet werden. Es ist zu beachten, dass das Modul nur bei ausgeschaltetem C64 gesteckt und gezogen werden darf. Das EPROM muss sich auf der Oberseite der Platine befinden.


Das ausgewählte Programm sollte unmittelbar nach dem Einschalten des C64 geladen werden.