Von der 5¼-Zoll-Diskette zur SD-Karte

SD2IEC-Speichergerät

Das Original-C64-Diskettenlaufwerk VC-1541 ist zwar kultig, aber seine großen Abmessungen und das relativ hohe Gewicht sind berühmt-berüchtigt. Das Laufwerk stammt zweifellos aus der Computer-Steinzeit. Daher machte ich mich auf die Suche nach Alternativen. Eine sehr schöne Lösung ist die Speicherung der C64-Daten auf einer SD-Karte. Selbst der Inhalt mehrerer hundert beidseitig beschriebener 5¼-Zoll-Disketten, passt heute locker auf jede SD-Karte. Die SD-Karten-Speichergeräte für den C64 bzw. C64 DTV lassen sich anhand ihrer Geschwindigkeit und Kompatibilität zum Original-Laufwerk miteinander vergleichen. Nahezu hundertprozentige Kompatibilität bietet das Steckmodul 1541 Ultimate. Es handelt sich hierbei um eine vollständige Emulation des 1541-Diskettenlaufwerks. Aus Kostengründen entschied ich mich jedoch für das weniger kompatible SD-Karten-Speichergerät SD2IEC, das mir freundlicherweise Shadowolf als Bausatz besorgt hat. Zum Zeitpunkt der Bastelarbeiten waren Nachlade-Programme und Schnelllader mit dem SD2IEC-Speichergerät meist nicht kompatibel. Dennoch ließen sich zahlreiche Programme von einer SD-Karte in den Speicher des C64 DTV laden. Nachdem ich alle Bauteile zusammengetragen hatte, machte ich mich also wieder ans Werk. Das Verlöten von SMD-Bauteilen gehört sicherlich nicht zu meinen Lieblingsbeschäftigungen, aber was macht man nicht alles...

SD2IEC-Schaltplan

Vorab möchte ich anmerken, dass Shadowolf einen "SD2IEC Aufbau-Thread" ins Forum 64 eingestellt hat. Dort sind ein Schaltplan und Bestückungspläne zu finden. Ansonsten können Sie auch die nachfolgende Grafik verwenden. Dargestellt ist die Oberseite der Platine, die gemäß der Zeichnung auszurichten ist. Oben links befindet sich die X3-Stiftleiste in waagerechter Position, unten links der X1-Anschluss für Strom und IEC-Diskettenlaufwerk in senkrechter Position. Der Einschub für die SD-Karte ist nicht abgebildet. Er befindet sich bei korrekter Ausrichtung der Platine auf der rechten Seite.

 

Pinbelegung des SD2IEC-Speichergeräts

X3: Stiftleiste X1: IEC-Diskettenlaufwerk/Strom
1 = Disk-Change 1 = +5 Volt
2 = Masse (GND) 2 = IEC Data
3 = Reserve 3 = IEC CLK
4 = LED 1 4 = IEC ATN
5 = Masse (GND) 5 = Masse (GND)
6 = LED 2 6 = Reserve
7 = Masse (GND)  
8 = IEC 8/9  
9 = Masse (GND)  
10 = IEC 10/11  

Legende:
A1 = Anode 1; K1 = Kathode 1
A2 = Anode 2; K2 = Kathode 2

LEDs
Die Leuchtdioden bereiteten mir einiges Kopfzerbrechen. Die Verlötung der winzigen SMD-Leuchtdioden war schwierig. Zu allem Übel hatte ich die Polung komplett vertauscht, da mir nur lückenhafte Informationen vorlagen. Glücklicherweise führte dies zu keinerlei Schäden an der Hardware. Nachdem ich die SMD-LEDs andersherum angelötet hatte, funktionierten sie einwandfrei. Die Ausrichtung der SMD-LEDs können Sie der Grafik entnehmen. Wenn ich mich richtig entsinne, dann kennzeichnet der senkrechte Strich auf der Unterseite der SMD-LEDs die rechte Seite des Dreiecks (Anode) und nicht dessen nach Links zeigende Spitze (Kathode). Das ist zwar widersinnig, aber nur so hat es bei mir funktioniert.
 
Über die Stiftleiste X3 habe ich dann zwei zusätzliche 3-Millimeter-LEDs zum Einbau ins Gehäuse angelötet. Bei 5-Millimeter-LEDs kann es vorkommen, dass sie zu lichtschwach sind, wenn vier LEDs gleichzeitig angeschlossen sind. Dies ist jedoch bei 3-Millimeter-LEDs nicht der Fall, so dass die SMD-LEDs auf der Platine nicht unbedingt entfernt werden müssen. Normalerweise ist die Anode (Pluspol) einer LED durch das längere Beinchen gekennzeichnet, während die Kathode (Minuspol) am kürzeren Beinchen zu finden ist. Sind die Beinchen bereits gekürzt worden, dann muss man in die Diode hineinschauen. Das kleinere Metallstück in der Diode ist normalerweise die Anode und das größere Metallstück die Kathode.
 
Anschluss der 3-Millimeter-LEDs an die 10-polige X3-Stiftleiste:
Rote LED: A1 an Pin 4 (LED 1)
Grüne LED: A2 an Pin 6 (LED 2)
K1 und K2 zusammen an Pin 5 (GND)
 
Stromversorgung
Da ich das SD2IEC-Speichergerät nicht in meinen C64 DTV einbauen wollte, schloss ich es über ein selbstgebautes Y-Kabel ans Netzteil an. Theoretisch hätte man auch einen freien Pin des DIN-Steckers als Pluspol verwenden können, doch spätestens beim Anschluss eines Original-1541-Laufwerks an den C64 DTV hätte es gefunkt... Übrigens sollte man darauf achten, dass das Netzteil bestimmte Mindestanforderungen erfüllt. Andernfalls kann es passieren, dass die Geräte zwar alle eingeschaltet sind, aber das SD2IEC nicht angesteuert werden kann. Ich habe ein stabilisiertes Universal-Netzgerät der Firma Skymaster (Art. 3463) verwendet. Es liefert am Ausgang zwischen 1,5 und 12 Volt Gleichspannung bei 500 mA (6 VA max.).

 

DIN-Stecker

Für den Betrieb am C64 DTV reichen drei Leitungen aus: IEC Data, IEC CLK und IEC ATN. Möchte man das SD2IEC-Speichergerät an einem normalen C64 betreiben, dann ist zusätzlich eine Masseleitung erforderlich. Diese ist am SD2IEC-Speichergerät bei X1 von Pin 5 (Masse) auf Pin 2 (Masse) des DIN-Steckers zu führen.

 

Diskettenwechsel-Taster
Auch die Diskettenwechsel-Taster werden an die Stiftleiste X3 angelötet. Die entsprechenden Pins lauten "Disk-Change", "Reserve" und "GND". Schalter 1 kommt an "Disk-Change", Schalter 2 an "Reserve" und die verbleibenden Kontakte der Schalter an die gemeinsame Masse (GND). Damit die Diskettenwechsel-Schalter funktionieren, muss im Hauptverzeichnis der SD-Karte die Datei "AUTOSWAP.LST" abgelegt sein. Lesen Sie hierzu weiter unten mehr.
 
Stecker für 6-adriges Flachbandkabel
Man kann einfach sechs Leitungen auf einmal von einem handelsüblichen Flachbandkabel abtrennen und sie in den Stecker einlegen. Dann presst man den Stecker mit einer richtig eingestellten Rohrzange vorsichtig zusammen. Es gibt auch Spezialzangen, aber ich hatte kein besseres Werkzeug zur Hand.
 
Befestigung der Platine
Zur Befestigung der kleinen Platine im Gehäuse verwendete ich eine Lüsterklemme. Ich schnitt einfach den oberen Teil der Klemme ab, klebte sie mit Heißkleber an die richtige Stelle im Gehäuse und schraubte dann die Platine daran fest. Man muss lediglich eine Lüsterklemme mit dem korrekten Lochabstand finden. Die Löcher in der Platine kann man übrigens durchaus erweitern, sofern man lediglich einen halben Millimeter nachbohrt. Hier ist jedoch Vorsicht angebracht.

SD2IEC-Firmware und Inbetriebnahme

Das SD2IEC-Speichergerät funktioniert erst, nachdem eine passende Firmware über den sogenannten Bootloader aufgespielt worden ist. Den Bootloader hatte Shadowolf freundlicherweise bereits auf meinem Gerät installiert. Also brauchte ich nur noch die Firmware aufzuspielen. Unter http://www.sd2iec.de sind verschiedene Firmware-Versionen verfügbar. In meinem SD2IEC-Speichergerät (Version 1.2) ist ein ATMEL ATMEGA 644P verbaut. Eine funktionierende Firmware hierfür ist die Version 0.7.3 sw2 m644p für Shadowolfs SD2IEC-Platinen der Versionen v1.x. Zur Installation der Firmware auf dem SD2IEC-Speichergerät muss man die Datei "sd2iec.bin" mit einem SD/MMC-Kartenlesegerät ins Hauptverzeichnis einer mit FAT 16 formatierten SD-Karte kopieren. Danach kann man die Karte ins SD2IEC-Speichergerät einlegen. Das Gerät vergleicht die Firmware auf der SD-Karte mit der aktuellen Firmware im Gerät. Wenn es Unterschiede gibt oder keine Firmware installiert ist, dann wird die Firmware auf dem Speichergerät installiert. Die LEDs beginnen zu blinken und nach kurzer Zeit sollte die Firmware installiert sein. Erst jetzt kann man die auf der SD-Karte abgespeicherten Programme mit dem SD2IEC-Speichergerät in den Speicher des C64 DTV laden.
 
Für spätere Firmware-Updates kann es erforderlich sein, die SD-Karte erneut zu formatieren. Die Datei "sd2iec.bin" sollte die einzige auf der Karte vorhandene Datei sein. FAT 16 erlaubt eine maximale Speicherkapazität von 2 GB auf der SD-Karte. Man kann zwar auch Speicherkarten mit mehr als 2 GB verwenden, jedoch stehen nach der Formatierung mit FAT 16 maximal 2 GB zur Verfügung. In manchen Betriebssystemen wird FAT 16 nicht ausdrücklich genannt, sondern nur als FAT bezeichnet.

 

Wenn die aufzuspielende Firmware nicht erkannt wird, dann muss zuerst die vorhandene Firmware entfernt werden. Formatieren Sie hierfür die SD-Karte und kopieren Sie die Datei "downgrader-sw2.bin" ins Hauptverzeichnis der SD-Karte. Dann schalten Sie das SD2IEC-Speichergerät ein.

 

Sie können übrigens die Firmware-Version mit folgendem Basic-Programm auslesen:

10 OPEN15,8,15:INPUT#15,A$,B$,C$,D$
20 CLOSE15
30 PRINT A$,B$,C$,D$

RUN

Disketten-Befehle (Floppy-Befehle)

Wenn Sie es sich einfach machen wollen, dann können Sie auf die Dateibrowser "sd2brwse" und "FIBR" zurückgreifen (siehe unten). Des Weiteren sind einige Diskettenbefehle über Funktionstastenbelegungen im "TRSI Kernal V1.0" bereits integriert. Bei Verwendung des SD2IEC-Speichergeräts müssen Sie allerdings den Schnelllader im "TRSI Kernal V1.0" abschalten. Rufen Sie hierzu das Menü mit der Taste F8 auf.

 

Das SD2IEC-Speichergerät liest u.a. D64- und M2I-Dateien. Es handelt sich hierbei sozusagen um virtuelle Disketten. Aus irgendeinem Grund funktionieren bei mir die D64-Dateien nur unzuverlässig. Daher habe ich mich dazu entschlossen, die Dateien ins ältere M2I-Format zu konvertieren. Wenn Sie das auch tun möchten, dann laden Sie sich den "D64 to M2I Converter" im Forum 64 herunter (.NET Framework 2.0 muss installiert sein).

 

Nehmen wir an, Sie hätten auf der SD-Karte ein Verzeichnis namens "VER" angelegt, in dem sich D64-Dateien befinden. Ihre D64-Datei heißt "TEST.D64". Das Programm, dass Sie innerhalb der D64-Datei laden möchten, heißt "TESTPRG".
 
Sie können folgende Befehle verwenden:

  • Inhaltsverzeichnis eines Verzeichnisses anzeigen:
    LOAD"$",8
    LIST
  • Verzeichnis wechseln:
    OPEN1,8,15,"CD:VER":CLOSE1
    OPEN1,8,15,"CD:TEST.D64":CLOSE1
  • Datei laden und ausführen:
    LOAD"TESTPRG",8
    RUN

Weitere Befehle finden Sie im C64-Wiki.

Diskettenwechsel-Datei "AUTOSWAP.LST"

Damit die Diskettenwechsel-Taster funktionieren, muss im Hauptverzeichnis der SD-Karte die Datei "AUTOSWAP.LST" oder "autoswap.lst" abgelegt sein. Sie können eine einfache Textdatei erzeugen und die Dateiendung "TXT" in "LST" ändern. Die Datei "AUTOSWAP.LST" muss die Namen aller Verzeichnisse bzw. Dateien enthalten, zwischen denen hin- und hergeschaltet werden soll (pro Zeile ein Name). Innerhalb der Datei habe ich Großbuchstaben verwendet, während die realen Verzeichnisse und Dateien auf der SD-Karte kleingeschrieben waren.
 
Der Inhalt der Datei "AUTOSWAP.LST" kann folgendermaßen aussehen:
//PROGRAMME/NR01S1/:NR01S1.D64
//PROGRAMME/NR01S2/:NR01S2.D64
//PROGRAMME/NR02S1/:NR02S1.D64
//PROGRAMME/NR02S2/:NR02S2.D64
//PROGRAMME/NR03S1/:NR03S1.D64
//PROGRAMME/NR03S2/:NR03S2.D64
[...]

Die Gliederung am Beispiel der ersten Zeile:
PROGRAMME = erstes Unterverzeichnis
NR01S1 = zweites Unterverzeichnis
NR01S1.D64 = D64-Diskettendatei

C64-Dateibrowser

Da die Eingabe von Diskettenbefehlen mühselig ist, übertrug ich den Dateibrowser "sd2brwse" in den Flash-ROM des C64 DTV. Dieser Dateibrowser erkennt das SD2IEC-Speichergerät direkt, so dass man sehr schnell auf die gewünschten Dateien zugreifen kann. In Verbindung mit dem SD2IEC-Speichergerät scheint "sd2brwse" jedoch Probleme mit der Groß- bzw. Kleinschreibung und der Dateisortierung zu haben. Dies kann natürlich auch am Speichergerät selbst oder dessen Firmware liegen. Daher speicherte ich zusätzlich den Dateibrowser "FIBR" im Hauptverzeichnis meiner SD-Karte ab. FIBR funktioniert zwar reibungslos, erkennt aber das Laufwerk nicht, wenn er vom Flash-ROM des C64 DTV aus gestartet wird. Insofern muss man ihn stets von der SD-Karte laden. Das macht aber nichts, denn man kann ihn ganz einfach mit "sd2brwse" laden.

Reset-Schalter für SD2IEC

Die nachfolgende Modifikation habe ich nicht vorgenommen und folglich auch nicht überprüft:
Laut Bestückungsplan des SD2IEC-Speichergerätes ist am Anschluss X4 ein Reset-Lötpunkt (Pin 5) vorhanden. Er hat Verbindung zu einem der Pads auf der Unterseite, die für nicht bestückte Bauteile vorgesehen sind. Dort befinden sich die Bauteile R100 und R101. Es handelt sich dabei um Platzhalter für einen Reset-Schalter, der den Reset-Lötpunkt des Atmel AVR mit Masse verbindet. Ein Verbinden mit der IEC-Reset-Leitung (Pin 6) des DIN-Steckers ist nicht vorgesehen, da diese 5 Volt führt. Der AVR hingegen wird im Normalzustand (= kein Reset) mit nur 3 Volt betrieben. Man kann jedoch zum Schutz eine Standard-Diode zwischen den Reset-Lötpunkt des AVR und die IEC-Reset-Leitung schalten. Die Kathode der Diode muss zum DIN-Stecker, d.h. zur IEC-Reset-Leitung zeigen. Damit kein unbeabsichtigter Reset ausgelöst wird, sollte die Schaltung stabilisiert werden. Hierfür kann man R100 mit einem 100nF-Kondensator und R101 mit ca. 3,3k bestücken. Der Reset-Taster kommt dann zwischen die Teile und Masse.