Was es ist
Das D64 GoDrive lässt den 6502 Programme von einem .d64-
Disk-Image laden. Diese Images liegen auf einer zweiten SD-Karte
(dem sd2_*-Datenträger, FAT32-formatiert); die erste Karte mit dem
ROM-Loader bleibt unberührt. Der Clou: Die gesamte FAT32- und D64-Auswertung passiert in
der FPGA-Logik. Der 6502 sieht nur einfache 256-Byte-Sektoren und muss nie
FAT32 parsen.
Was es macht
Aus EhBASIC heraus bedient sich das Laufwerk mit vertrauten Befehlen:
| Befehl | Wirkung |
|---|---|
| LOAD "!" | Interaktives Auswahlmenü aller .d64-Images per Pfeiltasten |
| LOAD "$" | Verzeichnis des gemounteten Images anzeigen |
| LOAD "NAME" | Programm laden (gibt die CALL-Adresse aus) |
| CALL <addr> | Geladenes Programm starten |
Aufbau in Logik
Vier RTL-Schichten unter rtl/core/peripherals/ arbeiten zusammen:
- d64_sector_map.vhd — kombinatorische Umrechnung D64-Track/Sektor → linearer Index.
- d64_drive.vhd — Read-only-Sektor-Engine: Mount-Metadaten, T/S→LBA, 512→256-Halbsektor- Erfassung, 256-Byte-Puffer.
- fat32_reader.vhd — erkennt MBR oder Superfloppy automatisch, parst den BPB, durchsucht
das Root-Verzeichnis nach dem ersten
.D64und prüft die FAT-Ketten- Kontiguität. - d64_subsystem.vhd — die 6502-Registerschnittstelle bei
$8824, die beide Engines kapselt und den einzelnen SD-Lesekanal arbitriert.
Robust gegenüber echten SD-Karten
Windows-formatierte SD-Karten sind oft Superfloppy (ohne MBR, BPB bei LBA 0)
mit großer Geometrie und enthalten Einträge wie System Volume Information,
Langnamen-Einträge oder eine gelöschte .D64 vor der gewünschten Datei.
Der Reader behandelt all diese Fälle. Verifiziert auf einer realen 32-GB-Karte: Image mounten,
BAM lesen, Verzeichnis listen und ein Programm in den korrekten Adressbereich laden.
Werkzeuge
Unter tools/d64/ liegen Python-Werkzeuge, die dieselbe Sektor-Abbildung
wie die Hardware verwenden: Images erzeugen (create_test_d64.py),
auflisten, Programme extrahieren und FAT32-Kartenabbilder für Simulationen bauen.