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

opencbm-0

  • ein XA1541-Kabel (Aktiv-Kabel) kann man auch verwenden, dort werden statt Dioden Transistoren verwendet


Hardware verbinden: 1541 mit OpenCBM am Parallelport anschließen

opencbm-1 opencbm-2 opencbm-3


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

o_tony-1 o_tony-2 o_tony-3 o_tony-4


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

https://www.cc65.org/

Artikel erstellt am: 04 January 2025 , aktualisiert am 06 January 2025