$ cd ../articles/

Ten artykuł dostępny jest również w języku angielskim (English).

Cel

TrackZero64 to program do zapisu dyskietek Commodore 1541-II przez adapter XUM1541 (ZoomFloppy) USB. Napisany w C99, działa w userspace przez libusb-1.0 — zero sterowników kernela. Działa na NetBSD i Linux. To nie jest emulator — to narzędzie do fizycznego zapisu prawdziwych dyskietek 5.25" na prawdziwym sprzęcie.

Architektura

TrackZero64 implementuje dwa protokoły od zera w C99 w userspace:

  1. Protokół firmware XUM1541 — komunikacja USB z adapterem (VID/PID 0x16d0:0x0504, bulk endpoints 3 IN i 4 OUT)
  2. Protokół magistrali szeregowej IEC — komunikacja ze stacją 1541-II przez port szeregowy CBM

Dzięki implementacji obu warstw w userspace, program nie wymaga żadnego sterownika kernela — tylko libusb-1.0. To działa identycznie na NetBSD i Linux.

Wspierany sprzęt

ElementSzczegóły
AdapterXUM1541 (ZoomFloppy), USB VID/PID 0x16d0:0x0504
StacjaCommodore 1541-II (single-drive system)
Format dyskuD64 — 35 ścieżek, 174,848 bajtów
IdentyfikacjaROM probe przy $FF40 i $FFFE — rozpoznaje 1541-II i pokrewne modele 1541

Funkcje

  • Zapis obrazów D64 na fizyczne dyskietki 5.25"
  • Odczyt dyskietek do obrazów D64
  • ncurses TUI — postęp per-ścieżka w czasie rzeczywistym
  • Przeglądarka katalogów dysku (directory browser)
  • Wizualizacja przebiegu oscyloskopowego podczas zapisu
  • Radialna mapa dysku (track map)
  • Schowek OSC 52 — kopiowanie wyników do terminala
  • Pełne i18n — angielski i polski
  • Wykrywanie modelu stacji przez ROM probe

TUI — perełka projektu

ncurses TUI TrackZero64 to nie jest zwykłe "okienko z postępem". To pełnoprawny interfejs z 62.5 FPS, podziałem na panele, obsługą myszy i F-keys:

  • Oscyloskop (F6) — wizualizacja przebiegu zapisu per-ścieżka, adaptacyjny układ 1/2/3 kolumny, widać amplitudę sygnału w czasie rzeczywistym. Genialne.
  • Radialna mapa dysku (F7) — koncentryczne pierścienie 35 ścieżek, postęp sektor po sektorze. Wygląda jak radar. Genialne.
  • Podział paneli: lewy (status, postęp, LED), prawy (przeglądarka katalogów z panelem stacji 1541-II)
  • Okno logu: 256 linii, timestampy, auto-scroll, kopiowanie OSC 52
  • Wskaźniki LED stylizowane na prawdziwy panel 1541-II
  • Przełączanie języka EN/PL przez klawisz 'l'
  • Motywy OS-aware: Linux (zielony na granatowym), NetBSD (czerwony na szarym)

Jak to działa

Program wysyła komendy do adaptera XUM1541 przez USB. Adapter tłumaczy je na sygnały magistrali IEC i wysyła do stacji 1541-II. Stacja wykonuje fizyczny zapis na dyskietce, ścieżka po ścieżce. Cały proces jest widoczny w czasie rzeczywistym przez ncurses TUI — widać która ścieżka jest aktualnie zapisywana, postęp, ewentualne błędy.

Zapis całej dyskietki (35 ścieżek) trwa ~2-3 minuty na stacji 1541-II z oryginalnym mechanizmem Alps przy 300 RPM.

Kompatybilność

SystemStatus
NetBSDDziała — testowane na T400 (NetBSD 10.1, 11 RC7)
LinuxDziała — testowane na Gentoo (Legion Go, T400)
OpenBSDPowinien działać — libusb-1.0 dostępne
WindowsNie wspierane. Nie planowane.

Kod źródłowy

Repozytorium na SourceHut. Program na licencji BSD-2-Clause.

Ograniczenia (v1.0.0)

  • Tylko Commodore 1541-II — inne stacje (1571, 1581, PET) nie są wspierane
  • Tylko format D64 — brak D71, D81, GCR
  • Formatowanie przez natywne N0: — host nie widzi postępu (2-5 min)
  • Brak weryfikacji po zapisie pliku (usunięta z bety — weryfikuj ręcznie przez xum-read)
  • Brak operacji na plikach REL (wykrywane w katalogu, ale nie odczytywane/zapisywane)
  • Brak zarządzania plikami — nie można rename, copy, scratch
  • Brak operacji batch — każdy xum-read/xum-write to jeden plik
  • Brak trybu daemona — każde narzędzie otwiera/zamyka adapter osobno
  • Problemy z portami USB 3.0 — zalecane USB 2.0
  • Tylko firmware XUM1541 v8 — v7 ma znane błędy z U1/U2/M-R
  • Debug trace tylko compile-time (flagi -DXUM_TRACE, -DDRIVE_DEBUG)

Podsumowanie

TrackZero64 to nie zabawka. To narzędzie napisane od zera w C99, implementujące dwa pełne protokoły komunikacyjne, działające na prawdziwym, 40-letnim sprzęcie. Jeśli masz Commodore 64 i stację 1541-II z adapterem XUM1541 — to jest program, którego potrzebujesz do zapisu dyskietek z poziomu NetBSD lub Linux.

❯ cd ../articles/