Was bedeutet SD2IEC?
Es geht um den Simulation einer C64-Floppy. Zu diesem Zwack werden Abbilder von C64-Disketten, sogenannte Diskimages, auf einer Speicherkarte gespeichert. Diese Diskettenabbilder ließt man dann von der Speicherkarte. Und das mithilfe eienr Schaltung mit einem Mikrocontroller vom C64 aus.
Die gute alte Commodore-Floppy 1541 in den Achtzigern
Als ich in den achtziger Jahren meinen ersten C 64 bekam, konnte ich diesen zunächst nur mit einem Kassettenlaufwerk, der sogenannten Datasette, betreiben. Ein Diskettenlaufwerk wie die Floppy 1541 war für mich für eine lange Zeit unbezahlbar. Diese kostete in den Achtzigern locker mal 1000 DM (später etwas weniger). Es gab damals sogar einige Nachbauten der Commodore Floppy 1541, die etwas preisgünstiger waren. So um 1988 herum kaufte ich mir so ein Modell mit der Bezeichnung OC 118, die damals etwa 300 DM kostete. Auch heute noch besitze ich einen C 64 mit der Original Commodore-Floppy 1541. Es ist allerdings nur eine Frage der Zeit, bis entweder das Diskettenlaufwerk selbst oder die Disketten nicht mehr brauchbar sind. Außerdem möchte man ja das gute Stück so weit wie möglich schonen. Was könnte hier wohl als Ersatz herhalten?
Eine kleine Platine namens SD2IEC mit SD-Karte als Speichermedium
Die Antwort darauf ist die sogenannte SD2IEC-Platine, eine kleine und zeitgemäße Speichermöglichkeit für Programme des alten Commodore C64, welche statt der alten 5 1/4 Zoll-Disketten eine kleine SD-Speicherkarte verwendet. Der Name SD2IEC setzt sich zusammen aus der SD-Speicherkarte und in dem IEC-Bus (IEC –International Electrotechnical Commission), bei dem es sich um einen standardisierten Anschluss für Massenspeicher an Commodore-Computer handelt. Diese auch häufig als 1541 III bezeichnete Platine soll also die Nachfolgerin für die alte Floppy werden. Natürlich könnte ich eine solche Platine fertig kaufen. Für etwa 50 Euro sind schon betriebsfertige Exemplare erhältlich. Alternativ besteht die Möglichkeit, eine solche Platine mit einem Mikrocontroller sowie einem Speicherkartenslot selbst aufzubauen, die dann einen Bruchteil kostet, dafür allerdings auch etwas Arbeit macht.
Der Hardware-Aufbau der Platine für die SD2IEC-Platine
Der SD2IEC-Floppyersatz besteht aus einer Hardware- sowie einer Softwarekomponente. Zunächst ging es einmal darum, die Hardware aufzubauen. Bereits hier stand ich vor der Qual der Wahl. Im Internet kursieren einige verschiedene Schaltpläne, in denen auch verschiedene Mikrocontroller zum Einsatz kommen. Ich entschied mich für die Variante mit einem ATmega32 des Herstellers Atmel. Neben der SD2IEC-Platine gibt es noch eine andere Variante, welche sich MMC2IEC nennt und andere Speicherkarten des Typs MMC verwendet. Da diese jedoch deutlich weniger gängig sind als SD Speicherkarten, entschloss ich mich für die Variante SD2IEC mit dem Mikrocontroller Atmega32, da dieser Mikrocontroller relativ preisgünstig zu haben ist und sich einfach programmieren lässt.
Übrigens habe ich für meine Platine die 40-polige DIL-Version des Mikrocontrollers gewählt, da sich dieses IC ganz einfach mit zugehörigem Sockel auf einer Lochrasterplatine einsetzen lässt. Als Schaltungsvariante wählte ich das sogenannte „LarsP-Layout“, eine Schaltung, die sich problemlos auf der Lochrasterplatine aufbauen lässt. Sie besitzt zwei LEDs als Statusanzeigen sowie zwei Taster zum Wechseln der Diskimages, die ich allerdings für den ersten Versuch noch weggelassen habe. Einen Unterschied zu meiner Schaltung gibt es jedoch: Ich habe statt des Quarzes den internen Taktgeber des Mikrocontrollers verwendet. Das nächste Bild zeigt die Schaltung.
Ohne Software geht es nicht – das Programmierkabel für den ATmega32
Natürlich braucht ein Mikrocontroller auch die passende Firmware, um überhaupt funktionieren zu können. Auch hier hat man die Qual der Wahl zwischen zahlreichen verschiedenen Versionen. Durch die Verwendung des ATmega32 wird die Auswahl jedoch stark eingeschränkt. Die für diese Mikrocontroller verwendbare Software gilt als hoffnungslos veraltet, was allerdings nicht heißt, dass sie nicht funktioniert. Der Atmega32 besitzt nur einen recht kleinen Speicher. Deshalb passt auch nur noch die Firmware bis zur Version v0.7.0 in diesen Speicher hinein. Ich habe mich deshalb für die Version v0.6.5 der Firmware entschieden.
Diese musste ich nur noch irgendwie in den Chip hinein bekommen. Der einfachste Weg zum Einspielen der Software in den Mikrocontroller bestand darin, mithilfe eines Adapterkabels für den parallelen Port des Rechners und einem entsprechenden Anschluss auf der Platine des SD2IEC den Chip zu bespielen. Der Anschluss auf der Platine wird als ISP-Anschluss (ISP – In-System-Programmierung) bezeichnet. Mithilfe einiger einzelner Leitungen kann der Mikrocontroller in der Schaltung programmiert (mit der entsprechenden Firmware versehen) werden, ohne dafür aus der Schaltung herausgenommen werden zu müssen. Es gibt tatsächlich einen Standard für solche Anschlüsse. Für meine Platine habe ich allerdings eine einfache fünfpolige Steckverbindung aus vorhandenen Bastelbeständen gewählt, welche diesen Zweck ebenso gut erfüllt. Die Programmieranschlüsse werden auf der einen Seite mit einem 25-poligen Sub-D-Stecker für den Parallelport verbunden. Auf der anderen Seite stehen die folgenden fünf Anschlüsse zur Verfügung, die zum Programmieren des Mikrocontrollers dienen:
- GND – Masse
- Reset – Reset-Anschluss Pin 9 des Mikrocontrollers
- SCK – Anschluss PB7 Pin 8 am Mikrocontroller
- MISO – Anschluss PB6 Pin 7 am Mikrocontroller
- MOSI – Anschluss PB5 Pin 6 am Mikrocontroller
Den Mikrocontroller programmieren
Zum Programmieren des Mikrocontrollers habe ich die kostenlose Software PonyProg2000 verwendet. Als Programmieradapter muss unter PonyProg2000 der Parallelport ausgewählt werden. Als Adapter wählt man die Option DT-006 I/O aus. Damit der Mikrocontroller innerhalb der Schaltung nachher einwandfrei arbeitet, müssen vor dem Aufspielen der eigentlichen Firmware die sogenannten „Configuration and Security Bits“ korrekt gesetzt werden (siehe Bild). Diese Einstellungen sind unter PonyProg2000 im Menupunkt „Command“ zu finden und dienen dazu, verschiedene Grundeinstellungen vorzunehmen. Unter anderem wird hier bestimmt, ob der Mikrocontroller ATmega32 mit einem externen Quarz als Taktgeber betrieben wird oder mit dem internen Takt arbeitet.
Das Dateiformat für die eigentliche Firmware ist übrigens das Hex-Dateiformat, in dem auch die eigentliche Firmware für den Mikrocontroller vorliegen muss. Es handelt sich hierbei um einen Maschinencode, den der Mikrocontroller benötigt, um später seine Aufgabe korrekt erfüllen zu können. Die Firmware selbst habe ich unter der Adresse http://www.sd2iec.de heruntergeladen. Für den ATmega32 verwendete ich die Firmware Version 0.6.7a. Hier handelt es sich um die letzte Version, welche für diesen Mikrocontrollertyp erschienen ist. Die heruntergeladene Datei musste zunächst in den Maschinencode (Hex-Dateiformat) umgewandelt (kompiliert) werden. Dies geschieht mit der ebenfalls kostenlosen Software „WinAVR“ und dem Befehl: „make CONFIG=config-larsp“.
Der erste Test der SD2IEC-Schaltung am C64
Nach einigen Sekunden war dann der Maschinencode erzeugt, welcher auf den Mikrocontroller gespielt wird. Dies geschieht wieder mit der Software PonyProg2000 und dauert nur wenige Augenblicke. Nun konnte ich endlich die Schaltung an den C64 anschließen und erstmalig in Betrieb nehmen. Zumindest dachte ich das. Zwar sprach die Schaltung an, erzeugt jedoch nur ein Blinken der roten LED sowie einen „File not found Error“, und das, obwohl eine Speicherkarte mit entsprechenden Programmen eingelegt war. Nach einer Weile fand ich heraus, dass der Kartenleser nicht vernünftig funktionierte und somit die Dateien von der Karte nicht gelesen werden konnten. Nachdem dieses Problem behoben war, funktionierte die Schaltung endlich, wie im folgenden Bild zu sehen ist.
Nach dem Laden des Directorys konnte ich nun endlich das erste C64-Programm von der SD-Karte in den Speicher des C64 laden, was auch einwandfrei funktionierte.
SD2IEC zweite (kleinere) Version
Der erste Versuch war somit geschafft. Da die Platine mir allerdings etwas zu groß war, entschloss ich mich, noch ein kleineres Exemplar auf einer Lochrasterplatine aufzubauen. Als Gehäuse verwendete ich ein kleines Kunststoffgehäuse, auf dessen Innenmaß ich die Lochrasterplatine vor den Bestücken zurecht schnitt. Die folgenden Bilder zeigen den Aufbau der Schaltung sowie den Einbau ins Gehäuse. Diese Schaltung funktionierte übrigens auf Anhieb einwandfrei.
Es ist schon erstaunlich, dass man heute in der Lage ist, eine Technik in ein so kleines Gehäuse einzubauen, welche vor rund 30 Jahren in einem Riesen-Diskettenlaufwerk steckte. Ebenfalls erstaunlich ist es, dass der Inhalt so vieler Disketten auf so eine kleine Speicherkarte passt. Verwendet man eine Speicherkarte mit mehreren Gigabyte Speicherkapazität, könnte auf einer einzigen Speicherkarte sämtliche Spiele abspeichern, die für den Computer jemals erhältlich waren. Für die Stromversorgung der Schaltung habe ich übrigens ein externes Steckernetzteil verwendet. Natürlich ist es auch möglich, die Schaltung über den Kassettenanschluss des C64 mit Strom zu versorgen, sodass eine extra Stromversorgung für die SD2IEC-Schaltung nicht mehr notwendig ist.