C64 Software vom PC auf eine echte Floppy-Disk übertragen

Im Internet gibt es ja genug Spiele und Anwendungsprogramme für den C64 zum Download. Man muss nur ein wenig danach suchen. Und mit dem VICE64 Emulator lassen sich solche .d64 Dateien auch bequem ausprobieren. Aber mal ehrlich: So richtiges Retro-Feeling kommt dabei doch nicht auf! Da fehlt nämlich noch die ganze Haptik, der 80er Jahre Hardware … Das Gefühl eine 5,25″ Floppydisk in der Hand zu halten, sie in den Schlitz der 1541 einzulegen und den Riegel zu verschließen. Dann das Gefühl, den berühmten Load-Befehl auf einer originalen C64-Tastatur einzugeben und dem Surren und Knattern des Diskettenlaufwerks zu lauschen. Ohne das alles macht es irgendwie keinen richtigen Spaß! Seht ihr das auch so? Na dann zeig ich euch heute, wie man C64-Programme aus dem Internet vom PC auf eine richtige 5,25″ Floppy überträgt.

Glücklicherweise gibt es dafür das OpenCBM Projekt. Das ist eine Treiber- und Tool-Sammlung für Windows, Linux und Mac, die es ermöglicht Commodore Image Dateien (.d64) vom PC mit einem geeigneten Adapterkabel über den sog. CBM IEC-Bus auf eine originale Commodore Floppy zu übertragen. Mittlerweile gibt es verschiedene Adapterkabel auf dem Markt, die von OpenCBM unterstützt werden, wie z.B. XA1541/XM1541, XU1541/XUM1541, oder die Zoom-Floppy-Platine. Ich empfehle auf jeden Fall die USB-Varianten, oder gleich die Zoom-Floppy, da diese sich auch mit moderner PC Hardware verwenden lässt.

Was brauchen wir dazu?

Manchmal ist so ein alter Laptop Gold wert ..
mein einziges Gerät mit parallelem LPT Interface
  • Natürlich ein Commodore Diskettenlaufwerk wie z.B die Modelle 1541, 1570, 1571
  • Ein Übertragungskabel zwischen PC und Floppy namens XA1541, XM1541, XUM1541 (einfach mal danach googeln).
  • 5,25″ Diskette(n) für die Programme
  • und die Software OpenCBM für Windows, Linux oder Mac

Leider hat nur mein Uralt-Laptop HP 386 hat noch einen Parallel-Port, um das XM1541-Kabel anzuschließen. Und weil auf so alter Hardware höchstens noch Linux ordentlich läuft – was ohnehin das beste Betriebssystem ist – beschreibe ich hier die Installation und den Betrieb unter Linux mit einem parallelen Kabel.

Vorbereitungen

Die komplette Referenz-Dokumentation von OpenCBM und die Software findet ihr übrigens hier: https://github.com/OpenCBM/OpenCBM

Zuerst bringen wir aber die ganzen Abhängigkeiten an den Start. Ich beschreibe die Installation unter Fedora bzw. CentOS. Für ein Debian basiertes Linux, wie z.B. Ubuntu, könnten die Paketnamen etwas anders heißen.

Für CentOS wird  dasEPEL-Repo benötigt: sudo yum install epel-release

$ sudo dnf install libusb libusb-devel libtranslate libtranslate-devel
$ sudo dnf install @development-tools (oder für CentOS: yum group install "Development Tools")
$ sudo dnf install ncurses-devel
$ sudo dnf install kernel-headers
$ sudo dnf install git

cc65 CrossAssembler

Laut Entwickler ist die Installation des CrossAssembler cc65 ab der Version cbm4linux 0.2.3 angeblich nicht mehr notwendig. Bei mir hat jedoch der Buildprozess von OpenCBM nicht funktioniert, wenn die Binary cl65 nicht verfügbar war. Da man cc65 bei Fedora/CentOS nicht aus dem Repository installieren kann, bleibt doch wieder nur der Weg über das Selbstkompilieren.

Unter Debian reicht einfach die Paketinstallation:

sudo apt install cc65 cc65-doc

Folgendes ist nur für RPM based Linux Distributionen nötig, wie z.B. Fedora:

git clone https://github.com/cc65/cc65.git
cd cc65/

make
export PREFIX="all"
make install
sudo cp ~/cc65/bin/* /usr/local/bin/

OpenCBM Installation

Die Referenz Dokumentation zur Installation von OpenCBM unter Linux findet ihr hier: https://opencbm.trikaliotis.net/opencbm-10.html

Hier haben es Debian User auch wieder leichter, da es von Suse ein Repository mit vorkompilierten Paketen gibt. Unter dieser URL https://software.opensuse.org/download.html?project=home%3Astrik&package=opencbm findet ihr die Anleitung zur Einrichtung des Repositories, abhängig von der Debian Version.
Hier das Beispiel für Debian 10:

echo 'deb http://download.opensuse.org/repositories/home:/strik/Debian_10/ /' | sudo tee /etc/apt/sources.list.d/home:strik.list

curl -fsSL https://download.opensuse.org/repositories/home:strik/Debian_10/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_strik.gpg > /dev/null

sudo apt update
sudo apt install opencbm

Zusätzlich notwendig, wenn ein xa1541 Kabel verwendet wird:

sudo apt install opencbm-xa1541

Folgendes ist wieder nur notwendig, wenn keine vorkompilierten Pakete zur Verfügung stehen, wie das z.B. bei Fedora der Fall ist:

$ git clone https://github.com/OpenCBM/OpenCBM.git
$ cd OpenCBM/

$ make -f LINUX/Makefile opencbm plugin-xa1541

$ sudo make -f LINUX/Makefile dev
mkdir -p -m 755 dirname /dev/cbm
rm -f /dev/cbm
mknod -m 666 /dev/cbm c 10 177

$ sudo make -f LINUX/Makefile install install-plugin-xa1541

$ cat /etc/udev/rules.d/45-opencbm-xa1541.rules
ACTION!="add", GOTO="opencbm_plugin_xa1541_rules_end"
xa1541/xm1541 parallel port driver
KERNEL=="cbm", GROUP="users", MODE="0664"
LABEL="opencbm_plugin_xa1541_rules_end"

Laden der Module

Da ich ein Datenübertragungskabel für den parallel Port verwende (XM1541) benötige ich den Kernel Treiber cbm.o, der bei der Installation von OpenCBM mitkommt. Dieses Modul und das parport Modul müssen nun geladen werden.

$ sudo depmod
$ sudo modprobe parport
$ cat /proc/interrupts | grep parport
7: 0 0 IO-APIC-edge parport0
$ sudo insmod /usr/lib/modules/4.8.6-300.fc25.i686+PAE/extra/cbm.ko lp=0

Der Pfad zum Treiber Modul cbm.ko kann oder wird vermutlich ein anderer sein, wenn ein anderer Kernel verwendet wird.

Bei mir findet er sich unter Debian Linux z.B. unter /usr/lib/modules/4.19.0-14-686-pae/kernel/drivers/char/cbm.ko lp=0

Erste Test-Kommandos mit OpenCBM

Spätestens jetzt ist der richtige Zeitpunkt das Diskettenlaufwerk mit dem PC zu verbinden und erste Test-Kommandos zu schicken.

sudo /usr/local/bin/cbmctrl command 8 IO
sudo /usr/local/bin/cbmctrl status 8
00, ok,00,00

Die komplette Dokumentation der cbmctrl Tools findet ihr hier: https://opencbm.trikaliotis.net/

Kopieren eines D64-Image

Da es mit dem XM-1541 Parallel-Port Kabel bei höheren Übertragungsgeschwindigkeiten öfter Probleme gab, wird der Modus auf „original“ eingestellt. Dieser Modus ist zwar äußerst langsam, aber damit hatte ich zumindest keine Abbrüche oder Fehler bei der Datenübertragung. Nach einigen Experimenten habe ich noch Retry -r 2 und Interleave -i 7 ergänzt.

sudo /usr/local/bin/cbmformat 8 diskname,01

sudo /usr/local/bin/d64copy -v -t original -r 2 -i 7 <<image-name.d64>> 8
[Info] Trying to identify drive type
[Info] drive 08 (1541): 00, OK,00,00
[Info] copying tracks 1-35 (683 sectors)
 1: *****************
 2: *****************
...

Inhaltsverzeichnis der Diskette ansehen:

sudo /usr/local/bin/cbmctrl dir 8

Das wars dann eigentlich auch schon. Die gerade erstellte Diskette sollte sich problemlos mit einem C64 laden lassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert