Aktualności Forum Graffiti Publicystyka Teleport
  • Amigowe dyskietki, Drawbridge i Linux

03.04.2025 10:40, autor artykułu: Waldemar Konik
odsłon: 227, powiększ obrazki, wersja do wydruku,

Czy zastanawialiście się kiedyś w jaki sposób odczytać dyskietki Amigi na współczesnym komputerze pod systemem Ubuntu Linux za pomocą interfejsu DrawBridge oraz klasycznej stacji dysków z PC? Nieważne jakiej udzielicie odpowiedzi na tak postawione pytanie, z całą pewnością poniższy poradnik będzie dla Was przydatny - czy to z chęci spróbowania, czy też ze zwykłej ciekawości.

Ponieważ niektórzy nie lubią iść na łatwiznę, a niektórym po prostu jedyny słuszny system od Billa jest obcy ideowo (jak autorowi), pojawiła się potrzeba okiełznania interfejsu DrawBridge pod systemem Linux, a konkretnie - Ubuntu 24.04.2 LTS. Poradnik powinien działać ze wszystkimi z rodziny debianowej i pewnie też z innymi po odpowiedniej modyfikacji komend instalujących pakiety. Zaznaczę, że jest to rozwiązanie mocno niszowe i dlatego wymaga niestandardowych działań w systemie. Zaletą opisanego rozwiązania jest możliwość podłączenia interfejsu np. do Raspberry.

Tyle tytułem wstępu. Pora przygotować suchy prowiant, coś do picia oraz środki na uspokojenie. Potem szable w dłoń i działamy!

0. O DrawBridge słów kilka.

DrawBridge to jeden z interfejsów, które pozwalają na podłączenie klasycznej stacji dysków z PC do portu USB współczesnego komputera i odczytywanie/zapisywanie dysków amigowych. Jego zaletą jest w pełni otwarta konstrukcja oraz niska cena. Można kupić gotowca lub zbudować samemu. Do budowy (w wersji minimum) potrzebne są:

  • stacja dysków FDD 1,44 3,5"
  • Arduino UNO / Pro Mini / Nano, jeśli z wbudowanym interfejsem szeregowym, to koniecznie FT232RL/FTDI a nie CH340,
  • jeśli Arduino interfejsu nie posiada to: adapter USB koniecznie na układzie FT232RL FTDI i koniecznie z wyprowadzonym sygnałem CTS,
  • wiązka przewodów o wdzięcznej nazwie Dupont FtoF (2 x żeński).
  • zasilanie +5V do stacji dysków, które w większości przypadków można pociągnąć z USB lub dowolnej ładowarki na USB.

Można oczywiście to wszystko zrobić porządnie na płytce drukowanej z gniazdem FDD i taśmą do napędu, jeśli się ma cierpliwość. Autorowi jej zabrakło :-).

I tu uwaga: wbrew pozorom opcja Arduino + zewnętrzny interfejs USB jest prostsze (i tańsze o $1 :-D) niż Arduino z wbudowanym interfejsem. Ta druga opcja wymaga lutowania do baaardzo cienkiej nóżki układu FT232. Autor oczywiście poszedł tą ambitną ścieżką, czego później żałował :-).

Przykładowe koszty elementów w I kwartale 2025 (ceny w $ są od "majfrendów"):

  • stacja dysków FDD 1,44 3,5": można wypruć z cudem ocalonego starego PC lub nabyć w drodze kupna na znanym portalu aukcyjnym za około 50 zł
  • Nano V3.0 3.0 z FT232 Chip ATmega328: $5.41
  • Pro Mini 5V 16 MHz ATMEGA328 ATMEGA328P-AU Development board: $3.31
  • FT232RL FTDI USB 3.3V 5.5V to TTL Serial Adapter Module for Arduino: $0.84
  • wiązka Dupont FtoF: $0.99

Instrukcje jak tę całą menażerię złożyć "do kupy" i zaprogramować są dość dobrze opisane na stronie autora projektu DrawBridge. Polecam wykonać połączenia w wersji "Plus".

Całość po nieudolnym złożeniu wygląda tak:

1. Podłączamy DrawBridge do komputera.

Jeśli kupiliśmy gotowca albo skleciliśmy interfejs samemu (i, po złożeniu w ofierze w tej intencji odpowiedniej liczby dziewic, zadziałał), możemy go wbić do portu USB. Po podłączeniu powinien napaskudzić w logu systemowym i zameldować się jako urządzenie ttyUSB w katalogu /dev/, co podstępnie zweryfikujemy komendą:

$ sudo dmesg | grep ttyUSB
[ 4062.226207] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0

Widać, że urządzenie otrzymało nazwę ttyUSB0 i będzie widoczne jako /dev/ttyUSB0. W dalszej części będę się posługiwał tą ścieżką.

Sprawdzamy jeszcze czy nasz użytkownik jest w grupie "dialout" i tym samym będzie miał uprawnienia do ww. urządzenia:

$ groups

Jeśli w wyniku nie ma grupy "dialout", należy się do niej bezczelnie dodać poleceniem:

$ sudo usermod  -a -G dialout $(whoami)

oraz przelogować się w systemie (najpewniej zrobić restart).

2. Instalujemy oprogramowanie do odczytu/zapisu dyskietek.

Autor projektu DrawBridge daje trzy możliwości, jeśli chodzi o dobranie się do interfejsu pod Linuksem:

Ustalamy w zmiennej nazwę katalogu, gdzie umieścimy nasz program:

$ soft_dir=~/"DrawBridge"
$ mkdir -p "${soft_dir}"
$ cd "${soft_dir}"

Pobieramy repozytorium:

$ git clone https://github.com/RobSmithDev/ArduinoFloppyDiskReader

...i kompilujemy:

$ cd ArduinoFloppyDiskReader/ArduinoFloppyReader/ArduinoFloppyReader
$ make

W bieżącym katalogu powinien pojawić się wynikowy plik wykonywalny "drawbridge". Sprawdzamy aktualne ustawienia interfejsu:

$ ./drawbridge /dev/ttyUSB0 SETTINGS

i konfigurujemy interfejs włączając opcję "Plus":

$ ./drawbridge /dev/ttyUSB0 SETTINGS SET PLUS 1

3. Odczytu dyskietki nadszedł czas.

Wybieramy katalog roboczy, w którym będą powstawać nasze obrazy dysków i przypisujemy do zmiennej:

$ work_dir=/tmp/disk_images
$ mkdir -p "${work_dir}"
$ cd "${work_dir}"

Ustawmy zmienną "disk_name" na nazwę dysku, który będziemy zgrywać:

$ disk_name="WypozyczalniaVideo"

Zgrywamy dyskietkę do formatu SCP, który umożliwi sprawdzenie jaką jakość ma nasz obraz:

$ "${soft_dir}/ArduinoFloppyDiskReader/ArduinoFloppyReader/ArduinoFloppyReader/drawbridge" /dev/ttyUSB0 "${disk_name}.scp" READ

4. Chcemy to zrobić dobrze, czyli jak sprawdzić jakość obrazu.

W tym celu użyjemy narzędzia kryoflux (pod Win działa również). Najpierw jednak musimy przygotować mu dane, czyli pociąć plik SCP na ścieżki w formacie RAW.

Pobieramy z gita narzędzie, które to potrafi:

$ cd "${soft_dir}"
$ git clone https://github.com/jfdelnero/HxCFloppyEmulator

...i kompilujemy:

$ cd "${soft_dir}/HxCFloppyEmulator/libhxcadaptor/build"
$ LANG=en_US make
$ cd "${soft_dir}/HxCFloppyEmulator/libhxcfe/build"
$ LANG=en_US make
$ cd "${soft_dir}/HxCFloppyEmulator/libusbhxcfe/build"
$ LANG=en_US make
$ cd "${soft_dir}HxCFloppyEmulator/HxCFloppyEmulator_cmdline/build"
$ LANG=en_US make

Tworzymy podkatalog roboczy i ustawiamy ścieżki:

$ mkdir -p "${work_dir}/${disk_name}"
$ cd "${work_dir}/${disk_name}"
$ PATH="$PATH:${soft_dir}/HxCFloppyEmulator/build"

Sprawdzamy czy nasze narzędzie potrafi odczytać informacje z pliku SCP:

$ LD_LIBRARY_PATH="${soft_dir}/HxCFloppyEmulator/build" hxcfe -finput:"${work_dir}/${disk_name}.scp" -infos

I wreszcie brutalnie tniemy nasz SCP na ścieżki RAW:

$ LD_LIBRARY_PATH="${soft_dir}/HxCFloppyEmulator/build" hxcfe -finput:"${work_dir}/${disk_name}.scp" -conv:KRYOFLUXSTREAM

Dla chętnych "na szóstkę" można skompilować pozostałe narzędzie pakietu z GUI:

$ cd "${soft_dir}/HxCFloppyEmulator/HxCFloppyEmulator_software/build"
$ LANG=en_US make all

Pora zainstalować właściwe narzędzie do sprawdzania jakości obrazu. Wybieramy katalog, do którego pobierzemy kryoflux:

$ kryoflux_dir="${soft_dir}/kryoflux"
$ mkdir -p "${kryoflux_dir}"

... i pobieramy ze strony autora wersję Linux. Następnie rozpakowujemy w katalogu, w którym pobraliśmy. W momencie pisania tego poradnika najnowszą była wersja 3.5.0.

Instalujemy pakiet:

$ sudo apt install "${kryoflux_dir}/Linux_Release3.50/dtc/arm64/kryoflux-dtc_3.5.0_arm64.deb"

Możemy już przystąpić do tworzenia długo wyczekiwanego pliku ADF:

$ dtc -l15 -f"${work_dir}/${disk_name}.adf" -i5 -m1 -f"${work_dir}/${disk_name}/${disk_name}_scp" -i0 -e83

Obserwujemy komunikaty, które przy każdej ścieżce powiedzą nam czy została poprawnie odczytana.

Jeśli ktoś lubi okienkowe narzędzia i ładne kolory, to może skorzystać z aplikacji w JAVA:

$ java -jar "${kryoflux_dir}/Linux_Release3.50/dtc/kryoflux-ui.jar"

która wygląda tak:

5. Koniec :-)

Gratuluję determinacji, jeśli dotarłeś do końca! :-) Zaznaczę tylko, że większość tych mrożących krew w żyłach męczarni miała na celu stworzenie poprawnego obrazu z pełną kontrolą błędów. Jeśli chcesz tylko podpiąć dysk do UAE i tam bawić się dalej, to wystarczy punkt 1.

To jest wersja 0.9 beta poradnika. Jestem otwarty na konstruktywną krytykę. Gdyby coś nie działało dawajcie znać, mogłem o czymś zapomnieć.

Chciałbym na koniec podziękować koledze rygar997 za zmotywowanie do zrobienia interfejsu i uświadomienie, żeby nie zgrywać dyskietek od razu do formatu ADF, gdyż jest do d.., to znaczy nie nadaje się zbytnio ze względu na brak kontroli nad błędami :-).

PS Podziękowania również dla mojej żony, która poszła "z koleżankami na likierek" i tym samym umożliwiła mi "zmarnowanie" 3 godzin życia na ten poradnik ;-).

 głosów: 6   tagi: Amiga, dyskietki, Drawbridge, Linux
1 komentarzostatni: dzisiaj 16:35
Na stronie SCENA.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem