Verwendung von OpenCBM unter Linux inkl. Kabelbau
Mit OpenCBM kann man Commodore-Disk-Images .d64 oder Programmdateien .prg vom PC auf die Commodore VC-1541 oder kompatible Laufwerke und deren Disketten übertragen. Hier eine funktionierende Kurz-Anleitung mit XM1541-Kabel. Man braucht einen älteren PC mit einem echten Parallelport oder eine Parallelport-Steckkarte.
Kabel bauen: XM1541 oder XA1541
- nur diese Kabel gehen bei Multi-Tasking-Betriebssystemen
- 4-mal jeweils eine Diode 1N5819 oder BAT85 (Schottky), vielleicht habe ich auch BAT42 verwendet? Es geht um schnelle Schaltzyklen.
- Dioden 1N4007 oder 1N4148 funktionieren mit vielen Motherboards nicht
Das XM1541-Kabel
CBM drive serial port PC parallel port
2 Gnd --------------- 18-25 Ground
3 Atn --------+--------- 13 SelectIn
+--->|---- 1 Strobe
4 Clk --------+--------- 12 PaperEnd
+--->|---- 14 AutoFeed
5 Data -------+--------- 10 Ack
+--->|---- 16 Init
6 Reset ------+--------- 11 Busy
+--->|---- 17 SelectIn
- ein XA1541-Kabel (Aktiv-Kabel) kann man auch verwenden, dort werden statt Dioden Transistoren verwendet
Hardware verbinden: 1541 mit OpenCBM am Parallelport anschließen
Installieren von OpenCBM
- Voraussetzung: einen geeigneten PC mit einem aktuellen Linux
- ich verwende einen separaten Test-Rechner mit Linux Mint
root@usedom:/home/chrissie# date
Sa 4. Jan 14:29:27 CET 2025
root@usedom:/home/chrissie# cat /etc/issue
Linux Mint 22 Wilma \n \l
root@usedom:/home/chrissie# uname -a
Linux usedom 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC
- kontrollieren, ob der Parallelport ansich erkannt wurde und funktionieren würde
- wenn das nicht geht, BIOS kontrollieren usw - der Parallelport mus erkannt werden!
root@usedom:/home/chrissie# lsmod|grep lp
[...]
lp 28672 0
parport 73728 3 parport_pc,lp,ppdev
- benötigte Zusatz-Software zum kompilieren von OpenCBM installieren
apt-get install build-essentials
apt-get install git
apt-get install libusb-dev
apt-get install cc65
apt-get install libncurses-dev
- OpenCBM von github clonen, Linux-Version kompilieren
root@usedom:/home/chrissie# git clone https://github.com/OpenCBM/OpenCBM
root@usedom:/home/chrissie# cd OpenCBM
root@usedom:/home/chrissie/OpenCBM# make -f LINUX/Makefile
[...]
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
You are using: gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
[...]
make[2]: Verzeichnis usr/src/linux-headers-6.8.0-51-generic wird verlassen
make[1]: Verzeichnis /home/chrissie/OpenCBM/opencbm/sys/linux wird verlassen
root@usedom:/home/chrissie/OpenCBM# make -f LINUX/Makefile install
[...]
root@usedom:/home/chrissie/OpenCBM# ldconfig
- Kernel-Modul laden. Geht nicht, weil lp und ppdev blockieren
- lp und ppdev müssen zuerst entladen werden
- man kann sich dafür ein Shell-Skript schreiben oder Kernel-Module lp und ppdev blacklisten
root@usedom:/home/chrissie/OpenCBM# insmod opencbm/sys/linux/cbm.ko
insmod: ERROR: could not insert module opencbm/sys/linux/cbm.ko: Device or resource busy
root@usedom:/home/chrissie/OpenCBM# rmmod lp ppdev
root@usedom:/home/chrissie/OpenCBM# insmod opencbm/sys/linux/cbm.ko
root@usedom:/home/chrissie/OpenCBM# lsmod|grep cbm
cbm 24576 0
parport 73728 2 parport_pc,cbm
- die VC-1541 oder das verwendete Commodore-Diskettenlaufwerk erst jetzt einschalten!
- davor wird es durch die Pegel am Parallelport im Dauerreset hängen bleiben - das ist nicht schön.
Test, ob das Laufwerk erkannt wird
root@usedom:/home/chrissie/OpenCBM# cbmctrl detect
An error occurred opening OpenCBM, aborting...
- Leider erhält man keinen Hinweis, welcher Fehler aufgetreten ist
- man muss die Datei /etc/opencbm.conf editieren, sein Kabel und das Shared Object eintragen
- Hinweis: XM1541 = XA1541
- für ersten Test erst mal direkt diese Datei editieren
- vi /etc/opencbm.conf
;
; This is a GENERATED FILE! - DO NOT EDIT!
; Modify the files in /etc/opencbm.conf.d/ instead,
; and execute 'opencbm_plugin_helper_tools rebuild'...
[plugins]
default=xa1541
[xa1541]
location=/home/chrissie/OpenCBM/opencbm/lib/plugin/xa1541/libopencbm-xa1541.so
- neuer Versuch
root@usedom:/home/chrissie# cbmctrl detect
8: 1540 or 1541
root@usedom:/home/chrissie# cbmctrl status 8
73,cbm dos v2.6 1541,00,00
-
Yeeha!
-
Nun kann install-all gemacht werden, lp und ppdev geblacklistet werden, die richtige Config-Datei geändert werden:
cd /home/chrissie/OpenCBM
make -f LINUX/Makefile install-all
vi /etc/modprobe.d/blacklist.conf
# by chrissie because of opencbm
blacklist lp
blacklist ppdev
#end opencbm
cd /etc/opencbm.conf.d
root@usedom:/etc/opencbm.conf.d# vi 00opencbm.conf
[plugins]
#default=xum1541
default=xa1541
root@usedom:# opencbm_plugin_helper_tools rebuild
root@usedom:# reboot
- Alles sollte jetzt korrekt eingerichtet sein. Um OpenCBM zu nutzen, muss man nun nur noch
root@usedom:~# modprobe cbm
durchführen. Alles andere sollte jetzt passen, sonst leider weiter debuggen :)
- eine Diskette inlegen, Inhaltsverzeichnis anzeigen
root@usedom:/home/chrissie# cbmctrl dir 8
0 ."97865 " bn 1
31 "makro" prg
633 blocks free.
00, ok,00,00
- Formatieren einer Diskette
root@usedom:/home/chrissie# cbmctrl command 8 "N0:disk,id"
root@usedom:/home/chrissie# cbmctrl status 8
21,read error,00,00
root@usedom:/home/chrissie# cbmctrl command 8 "N0:disk,id"
root@usedom:/home/chrissie# cbmctrl status 8
00, ok,00,00
- alles verhält sich wie früher am Commodore 64 - Disketten, die schlecht sind, sind auch weiterhin schlecht :)
- kurzes Demo-Video :)
Disk-Image umkopieren
- Tony Disk-Image auf Laufwerk 8 kopieren
- Achtung - zuerst Quelle (.d64), dann Ziel (Laufwerk 8)
root@usedom:/home/chrissie# d64copy tony-disk-A.d64 8
1: *********************
2: *********************
3: *********************
4: *********************
5: *********************
6: *********************
7: *********************
8: *********************
9: *********************
10: *********************
11: *********************
12: *********************
13: **-**-**-**-**-**-**- 38% 266/683
[...]
35: ***************** 100% 683/683
683 blocks copied.
- Kontrolle
root@usedom:/home/chrissie# cbmctrl dir 8
cbmctrl dir 8
0 ."tony side a " 20 1
18 "tony" prg
30 "00" prg
20 "01" prg
104 "02" prg
[...]
14 "32" prg
118 blocks free.
00, ok,00,00
- Test am C-64
Links
https://opencbm.trikaliotis.net/
https://github.com/OpenCBM/OpenCBM
https://www.c64-wiki.de/wiki/OpenCBM
https://www.c64-wiki.de/wiki/OpenCBM_f%C3%BCr_Linux_kompilieren
Artikel erstellt am: 04 January 2025 , aktualisiert am 06 January 2025