Tutorial: Pi1541 + 35KB Speicher für den VIC-20

Das Pi1541 ist eine moderne Alternative zu Commodore-Diskettenlaufwerken. Es liest Daten von einer SD-Karte, ist kostengünstig und sehr kompatibel. Diese Eigenschaften machen das Pi1541 zu einer hervorragenden Wahl für Besitzer von Commodore-Rechnern wie der C64, C16 und VIC-20 (VC20). Der VIC-20 verfügt über einen begrenzten Speicher von nur 5 KB, was die Softwareentwicklung einschränkt. Daher setzen viele Programme und Spiele eine Speichererweiterung voraus, die zum Zeitpunkt der Veröffentlichung des Rechners sehr teuer war. Die Erweiterung „Pi1541 + 35KB“ kombiniert ein Pi1541-Laufwerk mit einer Speichererweiterung auf einer einzigen Platine. Der Speicher kann von 3 bis 35 KB eingestellt werden.



Was wird benötigt?
  • Commodore VIC-20
  • El. Komponenten (Siehe Komponentenliste)
  • USB-MicroSD Kartenlesegerät
  • Einige VIC-20 Programme für den Funktionstest (bereits in der Firmware enthalten)
Bevor es losgeht, noch ein paar Hinweise (Wichtig!)
  • Achte beim Auflöten der Komponenten auf Kurzschlüsse, da diese den Rechner beschädigen können.
  • Stelle sicher, dass alle Komponenten (mit Ausnahme der Buchsenleisten) auf der beschrifteten Seite der Platine aufgelötet sind.
  • Um einen Kurzschluss zu vermeiden, muss die Unterseite des Displays isoliert werden.
  • Achte auf die Ausrichtung bzw. die Polarität der Komponenten.
  • Stecke niemals eine Stromversorgung an den Raspberry Pi an, während die Cartridge im VIC-20 steckt.
  • Verwende den HDMI-Port nicht, wenn der Raspberry Pi mit der Pi1541 + 35KB Erweiterung verbunden ist.
  • Überprüfe, ob im Formatier-Tool das richtige Laufwerk ausgewählt ist.
  • Verwende ein antistatisches Armband, um statische Ladungen zu vermeiden.
  • Ich übernehme keine Verantwortung für Schäden, die direkt oder indirekt durch diese Anleitung entstehen.

Die Komponenten

Für unser Projekt benötigen wir einige Komponenten welche in der folgenden Liste zu finden sind:

Die unbestückte Platine




- MicroSD Karte (4Gb sind mehr als ausreichend)
- 62256 DIP28 32KB STATIC RAM
- 6264 DIP28 8KB STATIC RAM (Alternativ kann ein 62256 DIP28 verwendet werden)
- 74LS21 DIP14
- DIP28 Sockel x2
- DIP14 Sockel
- 8P DIP-Schalter
- 10 KΩ Widerstand x8
- 470Ω Widerstand
- 100nF Keramik Kondensator x3
- 220 μF 16V Elektrolytkondensator
- Kurzhubtaster 90 Grad x6
- Level Converter 3,3V/5V 4 Kanäle
- DIN-Stecker, 6-polig
- Litze 6 x. 30cm beliebige Farben
- OLED-Display 0.96
- Buchsenleisten 2,54 mm, 2X20
- Stiftleiste 2x20-pol (Wird nur benötigt wenn dieser nicht zusammen mit den Raspberry Pi Zero geliefert wird)
- Stiftleisten 2,54 mm, 1x2
- Jumper
- LED Rot

Der Aufbau

Die Platine ist vorbildlich beschriftet, sodass keine wesentlichen Schwierigkeiten zu erwarten sind. Es ist jedoch wichtig, dass der 2x20-Pin-Header vor der Installation des OLED-Displays aufgelötet werden wird, da andernfalls der Zugang zu einigen Lötpunkten nicht mehr gewährleistet ist.


Um einen Kurzschluss mit den darunterliegenden Lötpunkten zu vermeiden, sollte die Unterseite des Displays isoliert werden.


Achte auf die korrekte Ausrichtung des Level-Konverters. Die Bezeichnung muss mit der auf der Platine übereinstimmen. Ebenso wichtig ist die korrekte Ausrichtung des Elektrolyt-Kondensators, des Sockels und der Leuchtdiode, da diese eine Polarität besitzen. 

Das IEC Kabel

Um den VIC-20 mit dem Pi1541 zu verbinden, benötigen wir ein IEC-Kabel, das den IEC-Port mit unserer Cartridge verbindet. Die genaue Verdrahtung dieser Verbindung finden wir in der beigefügten Abbildung.

Die letzten Schritte

Bevor die Cartridge getestet werden kann, müssen noch einige Vorbereitungen getroffen werden. Stecke die ICs in die entsprechenden Sockel und achte dabei auf die korrekte Ausrichtung.


Verbinde die korrekten Kontakte auf der Rückseite der Platine, wo sich der Level Converter befindet. Die benötigten Kontakte hängen vom verbauten Display ab. Überprüfe die Pin-Reihenfolge des Displays und löte die entsprechenden Kontakte zusammen.

VCC-GND-SCL-SDA = Verbinde die Kontakte VCC und VCC
GND-VCC-SCL-SDA = Verbinde die Kontakte GND und GND

In meinem Beispiel sieht das so aus



Als Nächstes stecken wir den Jumper auf JP1, um die Speichererweiterung / Pi1541 mit Spannung vom VIC-20 zu versorgen.


Stecke den Raspberry Pi in den Header. Achtung auf die Ausrichtung! Siehe folgendes Bild.


Die Hardware ist nun fertiggestellt. Im nächsten Abschnitt widmen wir uns der Software für die Pi1541-Erweiterung.

Die SD-Karte für das Pi1541-Laufwerk

Die SD-Karte muss im FAT32-Format formatiert werden, was mit jedem Betriebssystem möglich ist. Alternativ können wir das Tool SD Card Formatter für Mac und Windows verwenden. ⚠ Stelle sicher, dass die richtige Karte im Formatier-Tool ausgewählt wurde, da die Daten dadurch unwiderruflich gelöscht werden.


Lade die Software für das Pi1541 (pi1541_zero_VIC20_SD.zip) von der Projektseite herunter. Entpacke das Archiv und kopiere den Inhalt direkt in das Stammverzeichnis der SD-Karte. Stelle sicher, dass sich die Dateien nicht in einem Unterordner befinden.


Der Ordner 1541 enthält bereits einige Programme, die wir nutzen können. Sollten weitere Programme oder Spiele hinzugefügt werden, müssen diese ebenfalls in diesem Ordner abgelegt werden.

Der Funktionstest (Speichererweiterung)

Der erste Funktionstest steht nun an. Dafür gehen wir wie folgt vor:
1. Schalte den VIC-20 aus
2. Stecke die Cartridge in den Rechner (mit dem Raspberry Pi auf der Unterseite gerichtet!)
3. Stelle alle DIP-Schalter auf ON
4. Schalte den VIC-20 ein
5. Wenn alles korrekt durchgeführt wurde, sollte auf dem Bildschirm die Meldung “28159 BYTES FREE” angezeigt werden.


Es ist korrekt, dass nicht 35 KB freier Speicher angezeigt werden. Der „fehlende“ Speicher ist zwar nicht als Basic-Speicher verfügbar, aber dennoch vorhanden. Die Speicherkonfiguration kann von 3 bis 35 KB eingestellt werden, indem die DIP-Schalter entsprechend angepasst werden. Die Vorgehensweise wird hier erläutert. Beachte jedoch, dass viele Spiele und Programme eine bestimmte Speicherkonfiguration erfordern. So würde beispielsweise ein Programm, das 3 KB zusätzlichen Speicher benötigt, nicht mit 8 KB funktionieren, da der Speicher an einer anderen Adresse liegt.

Die Speicherkonfiguration

Die DIP-Schalter auf der Cartridge sind dazu da, die verschiedenen Speicherkonfigurationen zu wählen. Von 0 bis 35 KB ist alles möglich. Nur die Schalter von 2 bis 8 wirken sich auf die Speichergröße aus. Aus der folgenden Tabelle kann man die gewünschte Speichergröße entnehmen, die eingestellt werden soll.

Speicher Dip-Schalter
3 KB 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0
8 KB 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0
16 KB 1 - 0 - 0 - 0 - 1 - 1 - 0 - 0
24 KB 1 - 0 - 0 - 0 - 1 - 1 - 1 - 0
32 KB 1 - 0 - 0 - 0 - 1 - 1 - 1 - 1
35 KB 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1

Um die Speichererweiterung auf die Probe zu stellen, wählen wir die 35 KB Speicher-Konfiguration und laden das Spiel Doom (Download). Dieses Spiel benötigt zwingend eine 35 KB Erweiterung, um zu funktionieren.

Der Funktionstest (Pi1541)

Um den Pi1541 zu testen, verbinde das IEC-Kabel mit dem VIC-20.

1. Schalte den VIC-20 aus
2. Stecke die Cartridge in den Rechner (mit dem Raspberry Pi auf der Unterseite gerichtet!)
3. Stecke das IEC-Kabel in den VIC-20
4. Füge die SD-Karte ein, falls nicht schon geschehen
5. Schalte den VIC-20 ein

Das Pi1541 ist so konfiguriert, dass das Disketten-Image „fb.d64“ beim Einschalten automatisch eingebunden wird. Um den Inhalt dieses Images aufzulisten, geben wir die folgenden Befehle ein.

LOAD”$”,8
LIST


Wenn alles fehlerfrei verläuft, dann sollte der Inhalt der Diskette aufgelistet werden.


Das eingebundene Disketten-Image ist ein File-Browser, mit dem sich Ordner bequem durchsuchen und Programme starten lassen.

Die Pi1541 Tasten

Mit den fünf Tasten lässt sich das Pi1541 bedienen. Die Tasten sind wie im folgenden Bild zu sehen ist belegt.


Die Belegung lässt sich, falls gewünscht, in der Config-Datei ändern.

Die Pi1541 Config Datei

Die Datei „options.txt“ enthält, wie der Name vermuten lässt, die Optionen für das Pi1541-Modul. Es wird nicht auf jeden Punkt eingegangen, sondern nur auf einige wenige, die für die Verwendung des Pi1541 relevant sein könnten.

deviceID
Funktion: Wechselt die Geräteadresse des emulierten Laufwerkes.

ROM
Funktion: ROM des emulierten Laufwerkes.
Gib hier den Namen des ROM-Images ein, falls ein bestimmtes ROM, wie beispielsweise Jiffy-DOS, benötigt wird.

StarFileName
Funktion: Das hier angegebene Disketten-Image wird automatisch beim Einschalten des Rechners eingebunden.

Button
Funktion: Ändert die Belegung der Tasten 1-5 des Pi1541.