Transfer danych między stacją 1541 a Linuksem

Damian 'Daper' Pietras
daper@daper.dhs.org

Wstęp

Możliwość transferu danych z dyskietek C64 na PC i odwrotnie to wspaniała rzecz. Niestety wszystkie znane programy, które to umożliwiają działają albo pod kontrolą DOSa, albo Windowsa. Co mają więc zrobić użytkownicy Linuksa? Star Commander nie działa na emulatorze Dosemu, ale mamy bardzo wygodne narzędzie: cbm4linux (dzięki aze, za pokazanie mi tego :).

Pakiet ten składa się z 2 części: modułu do jądra i zestawu programów pozwalających na jego użycie. Właściwie należy się małe wyjaśnienie, pakiet nazywa się cbm4linux, a nie np. 15414linux ponieważ umożliwia podłączenie każdego urządzenia z Commodore podpinanego do portu serial np. stacji 1571 czy drukarki.

Co będzie potrzebne?

Po pierwsze sam pakiet cbm4linux, można go pobrać stąd. Druga rzecz to kabel XM1541 (lub XP1571, XA1541, XP1541), niech ta nazwa Cię nie zmyli, kabel ten jest prosty do zrobienia, dokładny opis dla osób nie znających się na elektronice znajdziesz tutaj, a jeśli masz już kabel XE1541, wystarczy zamienić 2 przewody, pokazane jest to na tej stronie. Kabel ten jest obsługiwany przez Star Commandera, więc niczego nie tracisz, a nawet zyskujesz lepszą obsługę stacji w systemie Windows (M w nazwie to skrót od Multitasking, czyli praca w systemach wielozadaniowych). Jeśli zupełnie nie znasz się na elektronice, możesz zlecić zrobienie go komuś innemu, jednak ja (zupełnie zielony) zrobiłem go w ok 1,5h (!) i zadziałał za pierwszym razem, więc warto spróbować. Pamiętaj, że możesz uszkodzić stację dysków lub swojego PC! Jeżeli tak się stanie, nie mów, że Cię nie ostrzegałem.

Co do systemu, potrzeba może być umiejętność przekompilowania jądra, i podstawowe informacje o konfiguracji.

Zaczynamy!

Zakładam, że prawidłowo podłączyłeś stacje (pamiętaj, że musisz to zrobić przy wyłączonym komputerze!), uruchomiłeś Linuksa i ściągnąłeś omawiany pakiet. Pierwsza rzecz to instalacja, przejdź do katalogu z plikiem *.tar.gz i rozpakuj go:

$ tar xzf cbm4linux-0.3.0

Oczywiście nazwa może być inna w zależności od wersji. Teraz przejdź do rozpakowanego katalogu i wpisz:

$ make
# make dev (jako root!)
# make install (jako root!)

Jeżeli nie pojawiły się błędy, możemy przejść dalej. Pora na załadowanie modułu:

# insmod cbm (jako root!)

Klapa? Myślę, że w 90% przypadków polecenie nie powiedzie się komunikatem typu:

/lib/modules/2.4.18/misc/cbm.o: init_module: Device or
resource busy
/lib/modules/2.4.18/misc/cbm.o: Hint: insmod errors can
be caused by incorrect module parameters, including
invalid IO or IRQ parameters

Przyczyny mogą być 2. Pierwsza to zajęty port drukarki przez inny moduł lub samo jądro, cbm.o nie może w ten sposób pracować, więc jeżeli masz obsługę drukarki skompilowaną jako moduł, upewnij się, że moduł ten nie jest załadowany:

# rmmod lp (jako root!)

Jeżeli nie masz takiego modułu, możliwe, że obsługa drukarki jest wkompilowana w jądro na stałe, przekompiluj ją jako moduł.

Ciągle nie działa? Drugi powód, to brak przypisanego przerwania do portu LPT, można to sprawdzić poleceniem:

# cat /proc/interrupts

W wyniku powinieneś otrzymać min. taką linijkę:

7:          0          XT-PIC  parport0

Jeśli jej nie ma, najprościej będzie, jeżeli masz skompilowaną obsługę LPT jako moduły, wtedy do pliku /etc/modules.conf dopisz:

alias parport_lowlevel parport_pc
options parport_pc io=0x378 irq=7

I załaduj ponownie parport i parport_pc (muszą być skompilowane jako moduły). Teraz polecenie insmod cbm powinno działać. Można to przetestować włączając stację dysków i wpisując:

$ cbmctrl status 8

Działa? Jeśli nie, poczytaj plik README lub napisz do mnie, postaram się pomóc. Co my tu mamy...

cbm4linux w akcji W pakiecie dostępnych jest kilka programów, o których zastosowaniu i opcjach można uzyskać wpisując NAZWA_POLECENIA -h. Omówię je krótko:

cbmctrl - umożliwia wysyłanie komand bezpośrednio do stacji, najbardziej przydatna rzecz to chyba cbmctrl dir 8 - wyświetli zawartość dyskietki lub cbmctrl command 8 POLECENIE - wyśle do stacji polecenie CBM DOS.

cbmformat - formatuje dyskietkę np. cbmformat 8 nazwa,id.

cbmcopy - kopiowanie pojedynczych plików np cbmcopy -r 8 plik.prg - skopiuje plik.prg na nasz dysk twardy.

d64copy - to co nas najbardziej interesuje, kopiowanie obrazów dyskietek np. d64copy 8 dysk.d64 stworzy obraz dyskietki na dysku.

Jak może zauważyłeś, kopiowanie pliku przebiega bardzo wolno (polecenia cbmcopy, d64copy), dzieje się tak, ponieważ domyślnie używany jest najwolniejszy tryb. Aby to zmienić, obydwa polecenia przyjmują parametry -t i -w, poczytaj o nich. U mnie (i pewnie w większości przypadków przy XM1541) najlepsze efekty daje połączenie d64copy -t s2 -w ....

Na zakończenie

Mam nadzieję, że ten artykuł komuś się przyda i że jest jasny. Jeżeli będziesz miał jakieś problemy, możesz o nich napisać na Forum Dyskusyjnym, lub do mnie (adres poniżej). Pamiętaj też o zachowaniu ostrożności przy podłączaniu stacji.

 © 1999-2020 Wszystkie prawa zastrzeżone
 Webmaster: Mariusz "Flooder" Młynek