# Externes Zubehör / Adapter

# USB -> Floppy Drive Adapter

### Beschreibung

Möchte man 3,5" Zoll Disketten lesen und schreiben am heutigen Computer. Wird die Auswhl eng.  
Während es für 1,44 MB Disketten USB Laufwerke gibt sieht es bei 5,25" Zoll schlecht aus.  
Aber es gibt Adapter um ein C64 Floppy Drive anzuschließen.

### Vorraustzungen

C64 Laufwerk mit DIN Anschluss

[![commodore-diskettenlaufwerk-1541.jpg](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/gDAoEBHoZsSHARsj-commodore-diskettenlaufwerk-1541.jpg)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/gDAoEBHoZsSHARsj-commodore-diskettenlaufwerk-1541.jpg)

Din Anschluss Anschlusskabel :

[![s-l1600.jpg](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/MI9YyZv70AfpVwJn-s-l1600.jpg)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/MI9YyZv70AfpVwJn-s-l1600.jpg)

USB Adapter

[![s-l1600.jpg](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/Fhsgv9q4NoeqgvlR-s-l1600.jpg)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/Fhsgv9q4NoeqgvlR-s-l1600.jpg)

Zu kaufen bei : [https://www.ebay.de/itm/164239154127](https://www.ebay.de/itm/164239154127)

### Installation unter Linux

#### Abbhängigkeiten installieren

```
sudo apt-get install libusb-dev build-essential linux-headers-generic git libncurses-dev
```

#### Die eigentlichen Programme installieren

```
cd ~
git clone https://github.com/cc65/cc65.git
cd cc65
make

Ausgabe:
gcc -O3 -Wall -Wextra -Wno-char-subscripts  -o ataricvt ataricvt.c
gcc -O3 -Wall -Wextra -Wno-char-subscripts  -o gamate-fixcart gamate-fixcart.c
make[2]: Für das Ziel „zlib“ ist nichts zu tun.
make[1]: Für das Ziel „all“ ist nichts zu tun.
Diese Ausgabe ist okay

sudo PREFIX=/usr make install
```

Nun das CBM Paket downloaden.

[https://sourceforge.net/projects/opencbm/files/opencbm/opencbm-0.4.99.99/opencbm-0.4.99.99.tar.bz2/download](https://sourceforge.net/projects/opencbm/files/opencbm/opencbm-0.4.99.99/opencbm-0.4.99.99.tar.bz2/download)

Nun ins Downloadverzeichnis gehen

```
cd ~/Downloads
tar -xf opencbm-0.4.99.99.tar.bz2

#ggf falls versionsnummer abändern
cd ~/opencbm-0.4.99.99
make -f LINUX/Makefile opencbm plugin-xum1541
sudo make -f LINUX/Makefile install install-plugin-xum1541
sudo ln -s /usr/local/lib/libopencbm.so.0 /usr/lib/libopencbm.so.0

```

### Testen

Mit dem Befehl testen wir die Verbindung

```
sudo cbmctrl detect

```

Ausgabe, die Nummer ist die Laufwerksnummer mit der wir das Laufwerk ansprechen:

```
8: SpeedDOS 1541 
```

### Bedienung

```
Parameter

sudo cbmctrl <Befehl> <Laufwerksnummer>

Befehle
dir       output the directory of the disk in the specified drive
change    wait for a disk to be changed in the specified drive
detect    detect all drives on the IEC bus


Eine Disk kopieren
d64copy <quelle> <ziel>

Eine Reale Disk auf den Computer (8 ist die ID des Laufwerks, herauszubekommen mit 
sudo cbmctrl detect

d64copy 8 mein64image.img

Ein Disk image auf eine reale Disk kopieren
d64copy mein64image.img 8

Ein Programm von einer Disk kopieren
Dateien anzeigen
sudo cbmctrl dir 8
Ausgabe:
0 ."SPIELE2         " fp 2a
1    ","                seq  
65   "boulderdash"      prg   
66   "boulder dash ii"  prg   
64   "montezuma"        prg   
34   "clowns"           prg   
67   "olympic skier"    prg   
345 blocks free.             
00, ok,00,00


Wir wollen als beispiel boulderdash.prg downloaden

Befehl:
sudo cbmread 8 boulderdash
Ausgabe
[Info] reading BOULDERDASH -> boulderdash.prg
[Info] identified a SpeedDOS 1541 drive
.................\[Info] 00, OK,00,00


Ein Programm auf eine Disk kopieren
Falls die Dateienung .prg noch dran  ist diese entfernen. Denn diese wir beim upload wieder angefügt
mv boulderdash.prg boulderdash
sudo cbmwrite 8 boulderdash
Ausgabe
Info] writing boulderdash -> BOULDERDASH.PRG,P,W
[Info] identified a SpeedDOS 1541 drive
.................|
[Info] 00, OK,00,00






```

GUI-Tool

Download GUI tool von [https://c64.mvgrafx.net/qtcbm/LinuxQtCBM.zip](https://c64.mvgrafx.net/qtcbm/LinuxQtCBM.zip)

Entpacken , ausführbar machen, starten

```
unzip LinuxQtCBM.zip
chmod +x QtCBM 

Starten mit
sudo ./QtCBM 

```

Nachdem das Programm gestartet ist unter

Edit -&gt; Preferences gehen

[![Auswahl_043.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/RSgLMKiWm88UNwJ0-auswahl-043.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/RSgLMKiWm88UNwJ0-auswahl-043.png)

[![Menü_005.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/7DbG1l0npeM8d2kx-menu-005.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/7DbG1l0npeM8d2kx-menu-005.png)

Nun diese Pfade eintragen:

```
cbmctrl : /usr/local/bin/cbmctrl
cbmforng : /usr/local/bin/cbmforng
d64copy : /usr/local/bin/d64copy
cbmcopy : /usr/local/bin/cbmcopy

Haken bei Preview cbm command

und auf Save drücken

```

[![Auswahl_045.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/btch1TAqnngJkPHj-auswahl-045.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/btch1TAqnngJkPHj-auswahl-045.png)

Nun mit Dir das Verzeichnis auflisten

[![Auswahl_046.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/FgrLu6mjzldPfmhg-auswahl-046.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/FgrLu6mjzldPfmhg-auswahl-046.png)

Mit Yes bestätigen

[![Auswahl_047.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/pgUcRGmwnQfJ3wpS-auswahl-047.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/pgUcRGmwnQfJ3wpS-auswahl-047.png)

Die Auflistung, nun können wir eine Datei umbenennen, dazu die Datei anklicken und auf rename klciken

[![Auswahl_048.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/ljq9sDT3TUazHUkB-auswahl-048.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/ljq9sDT3TUazHUkB-auswahl-048.png)

Neuen namen eingeben und OK klicken

[![Auswahl_049.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/5hTXvOpCXIZTCzdh-auswahl-049.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/5hTXvOpCXIZTCzdh-auswahl-049.png)

Nun die Frage wiede mit yes beantworten

[![Auswahl_050.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/scaled-1680-/PuU6FrmafqrHsZw8-auswahl-050.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-04/PuU6FrmafqrHsZw8-auswahl-050.png)

### Kleines Schellscripte dei das Leben vereinfachen sollen  


#### Script um alle Prgramme von einem Laufwerk in einem Zielverzeichnis zu speichern

```
#!/bin/bash
kopiereSpiele() {
    local OUTPUT="$1"
    local ZIELVERZEICHNIS="$2"
    #Ausgabe der Dateiliste auf den Monitor
    echo "$OUTPUT"
    # Überprüfen, ob der Diskettenname vorhanden ist
    if echo "$OUTPUT" | grep -q "2a"; then
        # Den Namen der Diskette aus der ersten Zeile extrahieren
        DISKETTENNAME=$(echo "$OUTPUT" | awk -F'"' 'NR==1 {print $2}' | tr -d ' ')
    else
        # Wenn kein Diskettenname vorhanden ist, einen Zeitstempel verwenden
        DISKETTENNAME=$(date +"%Y-%m-%d_%H-%M-%S")
    fi

    # Überprüfen, ob das Verzeichnis bereits existiert und ggf. einen Suffix hinzufügen
    SUFFIX=0
    ORIGINAL_DISKETTENNAME="$DISKETTENNAME"
    while [[ -d "$ZIELVERZEICHNIS/$DISKETTENNAME" ]]; do
        SUFFIX=$((SUFFIX+1))
        DISKETTENNAME="${ORIGINAL_DISKETTENNAME}-${SUFFIX}"
    done

    # Den Namen des Diskette ausgeben
    echo "Kopiere Diskette: $DISKETTENNAME"
    # Ein Verzeichnis für die Diskette anlegen
    mkdir -p "$ZIELVERZEICHNIS/$DISKETTENNAME"

    # Jede Zeile des Outputs durchgehen
    echo "$OUTPUT" | while IFS= read -r line; do
        # Überprüfen, ob die Zeile ein PRG enthält
        if echo "$line" | grep -q "prg"; then
            # Den Programmnamen extrahieren
            ORIGINAL_PROGRAMMNAME=$(echo "$line" | awk -F'"' '{print $2}')
            SAFE_PROGRAMMNAME=$(echo "$ORIGINAL_PROGRAMMNAME" | tr '/\\' '--')

            # In das Zielverzeichnis wechseln
            pushd "$ZIELVERZEICHNIS/$DISKETTENNAME" > /dev/null

            # Das Programm mit cbmread speichern
            cbmread 8 "$ORIGINAL_PROGRAMMNAME" > "$SAFE_PROGRAMMNAME.prg"

            # Zurück zum ursprünglichen Verzeichnis
            popd > /dev/null
        fi
    done
}


# Überprüfen, ob die notwendigen Parameter angegeben wurden
if [ -z "$1" ] || [ -z "$2" ]; then
    echo "Usage: $0 -l <laufwerksnummer> -d <zielverzeichnis>"
    exit 1
fi
#reset bus
cbmctrl reset

while getopts ":l:d:" opt; do
    case $opt in
        l) LAUFWERKSNUMMER="$OPTARG";;
        d) ZIELVERZEICHNIS="$OPTARG";;
        \?) echo "Invalid option -$OPTARG" >&2; exit 1;;
        :) echo "Option -$OPTARG requires an argument." >&2; exit 1;;
    esac
done

# Endlosschleife
while true; do
    # Dateiliste von cbmctrl abrufen
    OUTPUT=$(cbmctrl dir $LAUFWERKSNUMMER)

    # Spiele kopieren
    kopiereSpiele "$OUTPUT" "$ZIELVERZEICHNIS"
    
    # Den Benutzer fragen, ob er weitermachen oder beenden möchte
    echo "1. Nächste Diskette drücken Sie 1"
    echo "2. Beenden drücken Sie 2"
    read -p "Wählen Sie eine Option: " OPTION

    if [ "$OPTION" == "2" ]; then
        break
    fi
    if [ "$OPTION" == "1" ]; then
        cbmctrl change $LAUFWERKSNUMMER
    fi
   
    
done

cbmctrl reset
echo "Script beendet."

```

### Fehlerbehebung:  


#### Drive not Ready

Sollte das Drive den Fehler bei folgendem Befehl schmeißen:  
74,drive not Ready,00,00

SoOftware Fehler : Laufwerk wurde nicht geschlossen. Sollte Diskette gewechsel werden change Befehl benutzen.  
Sollte Fehler bestehen bleiben, nochmals versuchen.

```
Befehl für Reset: 
cbmctrl reset
Befehl für change : 
cbmctrl change laufwerknummer 
Laufwerknummer in der Regel 
cbmctrl change 8
```

###   
Floppy Image converter  


Unter : [https://style64.org/release/dirmaster-v3.1.5-style](https://style64.org/release/dirmaster-v3.1.5-style) gibt es einen Manager der dank Winde auch ungter Linux funktioniert.  
Damit kann man prg aus T64 Files exportieren und noch viel mehr.

[![Auswahl_259.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-10/scaled-1680-/3agGBMmAwuOO6qc0-auswahl-259.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-10/3agGBMmAwuOO6qc0-auswahl-259.png)