SIO2BSD
From Atariki
Program umożliwiający wykorzystanie PC jako wirtualnych stacji dysków do Atari, działający na platformach unixopodobnych (BSD, Linux). Napisany zasadniczo dla FreeBSD. Korzysta z kabla SIO2PC. Autorem jest KMK, przy programie współpracowali lub współpracują również Mikey i Mono.
Spis treści |
Emulacja stacji dysków
FreeBSD
Obecna wersja pozwala na otwieranie plików ATR oraz uzyskanie stabilnych zapisów i odczytów z prędkością 57600 bps przy zastosowaniu protokołu UltraSpeed (standardowe 19200 oczywiście również jest obsługiwane), co wypraktykowano na następującym zestawie:
- notebook Toshiba Satellite, 1200 MHz
- konwerter COM2USB z układem FTDI
- FreeBSD 6.1, 6.2, 6.4 oraz 7.4
Maksymalna szybkość transmisji może być uzależniona od marki (czyli jakości) konwertera COM2USB. Na przykład konwertery Prolific nie pozwalają uzyskać transmisji szybszej niż 38400 bps.
Uwaga: jeśli są problemy ze stabilnością transmisji, to pomóc może podniesienie częstotliwości głównego zegara schedulera. Dla FreeBSD należy zmienić ustawienie sysctl kern.hz (u autora ma wartość 1600 Hz).
Linux
Linux pozwala na dokładniejszą kontrolę parametrów transmisji po stronie PC, w szczególności jest możliwe ustawienie dowolnej szybkości przesyłania danych, a tym samym dostrojenie jej do aktualnego HS Index układu POKEY. W ten sposób można na SIO2BSD uzyskać transfery do 126 kbps (przy HS Index równym 0). Autorem odpowiednich modyfikacji w kodzie SIO2BSD jest Mono.
Uwaga: jeśli są problemy ze stabilnością transmisji, to pomóc może, jak powyżej, podniesienie częstotliwości głównego zegara schedulera. W Linuxie trzeba przekompilować jądro z ustawieniami CONFIG_HZ_1000=y oraz CONFIG_HZ=1000 (opcja "Timer frequency" w menu "Processor type and features" podczas konfiguracji w menuconfig).
Testowano z Ubuntu 10.04 (lucid).
Emulacja drukarki
Program opcjonalnie emuluje też drukarkę (tzn. urządzenie "P:" CIO) pozwalając przesłać dane, wysłane przez Atari na drukarkę, do wskazanego pliku (lub urządzenia), z translacją ATASCII->ASCII lub bez.
Odczyt czasu i daty
Obsługiwany jest też protokół odczytu czasu APE Time - program APETIME.COM powinien działać bez problemu. W archiwum SIO2BSD znajduje się program APETIME.SYS przeznaczone dla SpartaDOS X, umożliwiające ustawienie bieżącego czasu i daty przy starcie systemu, jeśli brak jest sprzętowego zegarka (np. R-Time 8).
Serwer plików
Od wersji 1.06 program może działać jako serwer plików dla Atari. Wykorzystuje do tego protokół DOS2DOS. Sterownik dla Atari (konkretnie dla SpartaDOS X 4.4) jest dostępny w dystrybucji SpartaDOS X od wersji 4.43 (w Toolkicie) w katalogu >DRIVERS>PCLINK.
Inne
Dodatkowo program uruchomiony jako mkatr, potrafi tworzyć pliki ATR o zadanych parametrach.
Sposób wywołania programu:
mkatr [opcje] filename.atr
Za pomocą opcji -d można podać typowy rozmiar obrazu:
- 90k lub ss/sd,
- 130k lub ss/ed,
- 180k lub ss/dd,
- 360k lub ds/dd,
- 720k lub ds/qd,
- 1440k lub ds/hd,
- 16m,
- 32m,
natomiast opcjami:
- -t tracks,
- -s sectors_per_track,
- -h heads,
- -b bytes_per_sector
zdefiniować konkretną geometrię dysku dla tworzonego obrazu przez podanie odpowiednio ilości ścieżek na stronę (-t), ilości sektorów na ścieżce (-s), ilości głowic (stron dysku -h), ilości bajtów w sektorze (-b).
Opcja -f pozwala na utworzenie obrazu z 256-bajtowymi sektorami, gdzie sektory 1..3 mają pełny rozmiar (a nie 128 bajtów, jak jest domyślnie).
Predefiniowane gęstości i odpowiednie parametry geometrii dysku:
-d | -t | -s | -h | -b |
90k lub ss/sd | 40 | 18 | 1 | 128 |
130k lub ss/ed | 40 | 26 | 1 | 128 |
180k lub ss/dd | 40 | 18 | 1 | 256 |
360k lub ds/dd | 40 | 18 | 2 | 256 |
720k lub ds/qd | 80 | 18 | 2 | 256 |
1440k lub ds/hd | 80 | 36 | 2 | 256 |
16m | 1 | 65534 | 1 | 256 |
32m | 1 | 65534 | 1 | 512 |
Instalacja
Po rozpakowaniu programu w ustronnym miejscu należy wykonać cd
do katalogu z rozpakowanymi plikami, a następnie wydać komendę gmake install
z poziomu konta administratora. Gotowy plik binarny zostanie wkopiowany do katalogu /usr/local/bin
Obsługa
SIO2BSD jest programem przeznaczonym do uruchomienia z konsoli. Parametry pracy użytkownik przekazuje w linii poleceń, np.
sio2bsd siala.atr baba.atr mak.atr
spowoduje przypisanie podanych plików ATR do napędów D1-D3. Gdy zachodzi potrzeba pominięcia napędu, należy zamiast nazwy pliku ATR podać znak "-" (minus), np.:
sio2bsd siala.atr - baba.atr mak.atr
Teraz pierwszy plik zostanie przypisany do D1, dwa ostatnie do D3 i D4, a D2 pozostanie wolne.
Żeby uaktywnić serwer plików, należy mu podać specyfikację katalogu:
sio2bsd siala.atr baba.atr mak
W tym przykładzie pliki ATR zostaną, jak wyżej, przypisane do D1 i D2, natomiast katalog mak - do pierwszego urządzenia plikowego (pod SpartaDOS X będzie to "PCL1:").
Ponadto dostępne są następujące opcje:
- -l - włącza dodatkowe komunikaty wyświetlane na konsoli (przydatne przy debugowaniu programu)
- -s nazwa - podaje nazwę pliku portu szeregowego inną niż domyślna (np. /dev/ttyS0)
- -b n - ustawia prędkość transmisji na 19200*n. Dopuszczalne wartości 'n': 1, 2, 3, 4 (tylko FreeBSD), 6. Wartość 0 pozwala na dokładniejsze ustawienie prędkości transmisji za pomocą przełącznika -i, -q oraz -c.
- -p nazwa - podaje nazwę pliku, do którego mają zostać przekierowane dane zapisywane przez Atari na drukarkę
- -t - włącza translację ATASCII->ASCII dla drukarki
- -u - serwer plików będzie "widział" tylko pliki z nazwami zapisanymi dużymi literami (od ang. uppercase)
Poniższe opcje pozwalają na ustawienie prędkości transmisji zgodnie z ustawieniami POKEY-a:
- -i n - ustawia HS Index na wartość 'n'. Uaktywnienie tej opcji wymaga też podania "-b 0"
- -q hz - częstotliwość zegara wejściowego do obliczenia szybkości transmisji. Dopuszczalne wartości:
- pal - wybiera 1773447 Hz
- ntsc - wybiera 1789790 Hz
- ntscf - wybiera 1789772.5 Hz
Brak opcji -q powoduje przyjęcie uśrednionej częstotliwości PAL i NTSC stosowanej w maszynach z układem FREDDIE, czyli 1781610 Hz. Można też podać konkretną częstotliwość taktowania układu POKEY np. -q 1789772.5.
- -c const - ustawia stałą korygującą nieliniowo prędkość transmisji liczoną wg wzoru:
F = q / (2 * (n + c))
gdzie F to prędkość transmisji wyrażona w bitach/s, q to częstotliwość taktowania POKEY-a, n to wartość dzielnika częstotliwości tzw. HS Index a c to właśnie stała const.
Domyślnie ustalona jest ona na 7.1861, co pozwala na bezproblemową komunikację z n=0. Dokumentacja firmy ATARI ustala c=7, co pozwala na poprawne obliczenie prędkości transmisji dla większości wartości n. Odchylenia od zakładanej prędkości związane są z obciążeniem i ilością urządzeń na magistrali SIO, oraz obecnością dodatkowych elementów pojemnościowych w niektórych modelach Atari.
Download
- bieżąca wersja na stronie autora