Tutorial: 8K und 16K Cartridges für den VIC-20 erstellen

Cartridges haben einige Vorteile gegenüber magnetischen Datenträger. Sie benötigen keine Laufwerke und Ladezeiten gibt es so gut wie keine. Dazu ist es möglich mehrere Programme/Spiele auf einem EPROM zu speichern. Es gibt bereits leere Cartridge-Platinen, die nur noch mit einigen Komponenten bestückt werden müssen. Allerdings ist so manches zu beachten, damit die Cartridge am Ende auch so funktioniert wie sie soll.


Auf der Webseite thefuturewas8bit.com gab es zum Zeitpunkt der Erstellung dieser Anleitung leere PCB's zu kaufen die für 8 sowie 16 KB Cartridge-ROMs geeignet sind. Eine davon wird hier verwendet.


Bevor es losgeht, noch ein paar Hinweise (Wichtig!):
- Niemals eine Cartridge oder ein (E)EPROM ein-/ausstecken, wenn der VIC-20 eingeschaltet ist.
- Setze die Jumper nur mit ausgeschalteten VIC-20.
- Achte auf die Ausrichtung der Kerbe des (E)EPROMs. Ein falsch rum aufgestecktes ROM kann die Cartridge sowie VIC-20 beschädigen.
- Stecke die Cartridge in den Modulport mit der bestückten Seite nach oben. (Siehe entsprechendes Bild weiter unten).
- Vermeide statische Ladungen durch das Berühren eines geerdeten Objektes, wie beispielsweise einen Heizkörper. Oder verwende ein antistatisches Armband.
- Ich übernehme keine Verantwortung für Schäden, die direkt oder indirekt durch diese Anleitung entstanden sind.

Das ROM-Image

Wir benötigen Images der Programme/Spiele, die auf dem EPROM bzw. EEPROM kopiert werden sollen. Davon gibt es jede Menge im Netz, beispielsweise hier: zimmers.net. Dabei ist zuerst mal darauf zu achten, ob eine Lade-Adresse vorhanden ist, denn für unsere Cartridge darf diese nicht vorhanden sein. Die Lade-Adresse ist in den ersten zwei Bytes des ROM's gespeichert. Das kann man an der Speichergröße der Dateien erkennen.

8K ROM ohne Lade-Adresse: 8192 Bytes
8K ROM mit Lade-Adresse: 8194 Bytes

Die Lade-Adresse entfernen

Im Netz finden wir ROMs mit und ohne Lade-Adresse. Wenn wir das Image auf das EPROM speichern möchten, brauchen wir ein Image ohne Lade-Adresse. Wenn uns aber nur ein Image mit Lade-Adresse zur Verfügung steht, dann müssen die ersten zwei Bytes entfernt werden. Dazu öffnen wir das Image mit einem HEX-Editor, beispielsweise mit HXD.

Dann erstellen wir ein neues leeres Image und kopieren kompletten Inhalt des ROM-Images ohne die ersten zwei Bytes in das leere Image.


Jetzt kann das neue Image gespeichert werden.

Die 8 KB Cartridge

Das weiter oben beschriebene PCB muss mit einigen Komponenten bestückt werden. Für die 8K-Variante werden folgende Teile benötigt:

EPROM/Flash-ROM

Je nachdem wie viele 8K-Images auf dem EPROM/Flash-ROM Platz finden sollen, brauchen wir den entsprechenden Speicher. Folgende ROMs stehen uns zur Verfügung:

2764 / 8K / 1 Programm
2864 / 8K / 1 Programm
27128 / 16K / 2 Programme
27256 / 32K / 4 Programme
28256 / 32K / 4 Programme
27512 / 64K / 8 Programme

Die Platine sollte anschließend so bestückt werden, wie im folgenden Bild zu sehen ist. Wie die Jumper gesetzt werden müssen, sehen wir später.

Das ROM-Image erstellen

Dieser Abschnitt ist nur durchzuführen, wenn zwei oder mehrere Programme auf das EPROM kopiert werden sollen. Wenn nur ein einzelnes Image gespeichert werden soll (2764/2864 EPROM), dann kann dieser Schritt übersprungen werden.

Da wir bis zu acht Programme (64 KB) auf eine Cartridge speichern können, müssen wir das Image für das EPROM zuerst vorbereiten. In diesem Beispiel verwenden ich ein 32 KB EPROM 27256, also können bis zu vier Programme gespeichert werden. Der Weg ist immer der selbe, auch wenn nur zwei Programme (27128 EPROM) oder acht (27512 EPROM) Programme kopiert werden sollen. Diese Images legen wir alle in denselben Ordner. Folgende Dateien werden für dieses Beispiel verwendet die von zimmers.net runtergeladen werden können:

Galaxian
Frogger
Omega Race
Pac-Man

Beachte, dass die Lade-Adresse (die ersten 2 Bytes) von jedem ROM, wie weiter oben beschrieben, entfernt werden muss (8192 Bytes), bevor diese gebrannt werden.

Diese Images müssen nun zu einem einzigen zusammengefügt werden. Windows bietet bereits das Werkzeug, das wir brauchen. In der Eingabeaufforderung von Windows (CMD) wechseln wir zum Ordner, in dem sich unsere Images befinden und geben folgenden Befehl ein.

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

Das sieht in meinem Beispiel so aus:


Das Resultat ist eine 32 KB große Datei, die alle vier Images enthält. Wie dieses nun auf das EPROM gebrannt wird, werden wir später sehen.

Die 16 KB Cartridge

Das weiter oben beschriebene PCB muss mit einigen Komponenten bestückt werden. Für die 16K-Variante werden folgende Teile benötigt:

100N x2

EPROM/Flash-ROM

Je nachdem wieviele 16K-Images (2x8 KB) auf dem EPROM/EEROM Plartz finden sollen, brauchen wir den entsprechenden Speicher. Folgende ROMs stehen uns zur Verfügung:

27128 / 16K / 1 Programm
27256 / 32K / 2 Programme
28256 / 32K / 2 Programme
27512 / 64K / 4 Programme

Die Platine sollte anschließend so bestückt werden, wie im folgenden Bild zu sehen ist. Wichtig! Achte auf die Ausrichtung der Kerbe des 74LS00. Sie muss mit der Kerbe auf den Modul-PCB übereinstimmen. Wie die Jumper gesetzt werden müssen, sehen wir später.

Das ROM-Image erstellen

Da wir bis zu vier Programme (4x16 KB = 64 KB) auf eine Cartridge speichern können, müssen wir das Image für das EPROM zuerst vorbereiten. In diesem Beispiel verwende ich ein 32 KB EPROM 27256, also können bis zu zwei Programme gespeichert werden. Der Weg ist immer derselbe, auch wenn vier Programme (27512 EPROM) kopiert werden sollen. 16 KB Cartridges bestehen aus zwei 8 KB ROMs. Üblicherweise ist ein ROM für den Speicher-Slot A000 und das andere für den Speicher-Slot 6000 bestimmt. Beide ROMs müssen zu ein gemeinsames zusammengefügt werden. Dabei ist darauf zu achten, dass das ROM mit der Adresse 6000 vorne liegt.

Die Images legen wir in denselben Ordner. Folgende Dateien werden für dieses Beispiel verwendet die alle von zimmers.net runtergeladen werden können:

Moon Patrol
Lode Runner

Beachte, dass die Lade-Adresse (die ersten 2 Bytes) von jedem ROM, wie weiter oben beschrieben, entfernt werden muss (8192 Bytes), bevor diese gebrannt werden.

Diese Images müssen nun zu einem einzigen zusammengefügt werden. Windows bietet bereits das Werkzeug, das wir brauchen. In der Eingabeaufforderung von Windows (CMD) wechseln wir zum Ordner, in den sich unsere Images befinden und geben folgenden Befehl ein.

Copy /b [Image1_6000]+[Image2_A000]+[Image3_6000]+[Image4_A000] Zieldatei

Das sieht in meinem Beispiel so aus:


Das Resultat ist eine 32 KB große Datei, die alle vier 8 KB-Images bzw. beide Spiele enthält.

Das Image brennen

Jetzt wo wir das Image haben, müssen wir dieses auf das EPROM kopieren. Wie weiter oben beschrieben, verwende ich für dieses Beispiel ein 27256 EPROM (4 x 8 KB). Natürlich muss hier das geeignete EPROM für die entsprechende Anzahl an Programmen verwendet werden. Es gibt zahlreiche Programmiergeräte/EPROMmer. In dieser Anleitung kommt der Mini Pro TL866C zum Einsatz. Dieser ist bereits unter 50€ zu bekommen und unterstützt alle EPROMs die wir benötigen.


Wenn der Treiber und das Programm für den Programmer installiert sind, starten wir das Programm und suchen aus der IC-Datenbank das geeignete (E)EPROM. In unserem Fall geben wir für die grobe Suche einen der folgenden (E)EPROM-Bezeichnungen ein, je nachdem was wir verwenden: 2764, 2864, 7128, 27256, 28256 oder 27512. Dann sollten wir aus den gefundenen ICs genau den Typ wählen, den wir verwenden.


Das (E)EPROM muss korrekt im Sockel eingesetzt werden. Ein Klick auf den Button "Information" zeigt, wie dieses positioniert werden muss. Achte auf die Kerbe und auf Pin 1.


Wenn ein EPROM (nicht EEPROM) verwendet wird, muss auf folgendes geachtet werden: Versichere dich, dass das EPROM leer ist. Ein "Blank Check" gibt darüber Auskunft. Ein nicht leeres EPROM muss zuerst gelöscht werden. Siehe bei "EPROMs löschen". EEPROMs hingegen können einfach überschrieben werden.

Dann öffnen wir das Cartridge-Image...


...und bestätigen mit OK


Und schlussendlich brennen wir das Image auf das (E)EPROM. Klicke dazu auf den Button "P" und bestätige mit "Program". Das (E)EPROM wird nun beschrieben.


Damit das EPROM seine Daten nicht verliert, sollte die Glasscheibe mit einem undurchsichtigen Klebeband zugeklebt werden. Ein EEPROM hat dieses Fenster nicht und es besteht auch keine Gefahr, dass die Daten verloren gehen.

Das (E)EPROM ist nun einsatzbereit und kann auf den Sockel der Cartridge gesteckt werden. Wichtig! Achte auf die Ausrichtung der Kerbe des EPROMs. Sie muss mit der Kerbe auf den Modul-PCB übereinstimmen.

Die Jumper setzen

Mit den zahlreichen Jumper wird bestimmt, welches ROM geladen werden soll und wie dieses im VIC-20 Speicher adressiert wird. Außerdem müssen wir unterscheiden zwischen der 8K- und der 16K-Cartridge.

Jumper für die 8K Cartridge

Je nach EPROM/EEPROM haben wir ein oder mehrere ROM-Images gespeichert. Mit den Jumper A13, A14 und A15 können wir wählen, welches ROM eingebunden werden soll.


Der Jumper neben "8K/Upper" bestimmt hingegen, wo das Programm im Speicher des VIC-20 eingebunden wird. Üblicherweise ist das A000 also Block 5. Im Dateinamen des Images, das wir heruntergeladen haben, ist meistens die Adresse enthalten, damit wissen wir, unter welcher Adresse das Image adressiert werden muss.

Block 1: 2000
Block 2: 4000
Block 3: 6000
Block 5: A000

Und zu gu­ter Letzt muss der Jumper "8K/16K" auf 8K gesetzt werden. Die 8K Cartridge ist somit abgeschlossen und betriebsbereit.

Jumper für die 16K Cartridge

Je nach EPROM/EEPROM haben wir mindestens ein Programm bzw. zwei 8K ROM-Images gespeichert. Mit den Jumper A14 und A15 können wir wählen, welches Rom eingebunden werden soll. Jumper A13 wird nicht benötigt und kann somit auf 16K positioniert werden.


Der Jumper neben "8K/Upper" bestimmt hingegen, wo das Programm im Speicher des VIC-20 eingebunden wird. Üblicherweise ist das A000 also Block 5. Im Dateinamen des Images, das wir heruntergeladen haben, ist meistens die Adresse enthalten, damit wissen wir, unter welcher Adresse das Image adressiert werden muss.

Das zweite ROM (meistens mit der Adresse 6000) wird mit dem Jumper neben "lower" selektiert.
Block 1: 2000
Block 2: 4000
Block 3: 6000
Block 5: A000

Und zu gu­ter Letzt muss der Jumper "8K/16K" auf 16K gesetzt werden. Die 16K Cartridge ist somit abgeschlossen und betriebsbereit.

Die Cartridge testen

Endlich kann das Modul nach all der Arbeit getestet werden. Schalte den VIC-20 aus und stecke die Cartridge in den Modulport mit der bestückten Seite nach oben.


Wenn der VIC-20 eingeschaltet wird, sollte das gewählte Programm starten. Wenn nur das gewohnte VIC-20 Startbild angezeigt wird, dann könnte einer der folgenden Fehler daran Schuld sein:

- Die ersten zwei Bytes wurden nicht entfernt bzw. das ROM-Image hat eine Größe von 8194 Bytes.
- Die Jumper neben upper/lower wurden falsch gesetzt.
- Das Image mit der Adresse des Speicherslots 6000 wurde nach dem Image mit der Adresse A000 angehängt.

Wer ein etwas ansprechenderes Modul besitzen möchte, kann sich ein thefuturewas8bit.com Gehäuse besorgen.

EPROMs löschen

EPROMs können im Gegensatz zu EEPROMS (Electrically Erasable Programmable Read-only Memory) nicht mit neuen Daten überschrieben werden, sondern müssen mit einem EPROM-Löschgerät gelöscht werden. Dieses sendet Ultraviolettstrahlung in das EPROM. Dadurch wird der Speicher gelöscht und kann anschließend neu beschrieben werden. Es gibt verschiedene Löschgeräte. Vom normalen "langsamen" Ultraviolett-Löschgerät bis zum schnellen Blitzgerät. Für meinen Bedarf reicht dieser günstige EPROM-Löscher vollkommen. Man darf in der Verarbeitung kein Meisterwerk erwarten und der Stecker muss getauscht werden, da er für europäische Steckdosen ungeeignet ist, aber er funktioniert. Und es können gleichzeitig mehrere EPROMS gelöscht werden.


Der Löschvorgang dürfte in den meisten Fällen 10-15 Minuten dauern, dabei muss eine eventuell vorhandene UV-Abdeckung des EPROMs entfernt werden. Danach kann das EPROM wieder beschrieben werden.