SIO2BSD
From Atariki
Wersja z dnia 15:34, 14 wrz 2009 KMK (Dyskusja | wkład) (kat. ++) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) (red.) |
||
Linia 1: | Linia 1: | ||
- | 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]]. | + | 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]]. |
== Emulacja stacji dysków == | == Emulacja stacji dysków == | ||
- | Obecna wersja pozwala na uzyskanie stabilnych zapisów i odczytów z prędkością 38400 bps przy zastosowaniu protokołu [[UltraSpeed]] (standardowe 19200 oczywiście również jest obsługiwane), co wypraktykowano na następującym zestawie: | + | |
+ | Obecna wersja pozwala na otwieranie plików [[ATR]] oraz uzyskanie stabilnych zapisów i odczytów z prędkością do 126 kbps 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 | * notebook Toshiba Satellite, 1200 MHz | ||
- | * konwerter COM2USB marki Prolific | + | * konwerter COM2USB z układem FTDI |
- | * FreeBSD 6.1 | + | * FreeBSD 8.2 oraz Linux Ubuntu 10.04 (lucid) |
- | Uwaga: jeśli sa problemy ze stabilnością transmisji, to (pomijając przekalibrowanie programu) pomóc może podniesienie częstotliwości głównego zegara schedulera FreeBSD (kern_hz, u autora ma wartość 1600 Hz). | + | Wykorzystano dostępną we FreeBSD i Linuksie dokładną 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. |
- | Bez pośrednictwa przejściówki COM2USB powinno być możliwe uzyskanie 57600 bps (acz wymaga to przekompilowania programu). | + | 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 na FreeBSD może pomóc podniesienie częstotliwości głównego zegara schedulera. W tym celu należy zmienić ustawienie sysctl kern.hz (u autora ma wartość 1600 Hz). Natomiast 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). | ||
== Emulacja drukarki == | == Emulacja drukarki == | ||
Linia 16: | Linia 19: | ||
== Odczyt czasu i daty == | == Odczyt czasu i daty == | ||
- | Obsługiwany jest też protokół odczytu czasu z [[APE]] - program APETIME.COM powinien działać bez problemu. W archiwum SIO2BSD znajdują się programy BSDTIME.SYS i 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]]). | + | 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 [[SpartaDOS X Toolkit|Toolkicie]]) w katalogu >DRIVERS>PCLINK. | ||
== Inne == | == Inne == | ||
- | Dodatkowo program, uruchomiony jako ''mkatr'', potrafi tworzyć pliki ATR o zadanych parametrach (w tym też w gęstości [[DD 512]]). | + | |
+ | 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: | ||
+ | |||
+ | <table BORDER="1" cellpadding="5" cellspacing="0"> | ||
+ | |||
+ | <tr> | ||
+ | <td>-d</td> | ||
+ | <td>-t</td> | ||
+ | <td>-s</td> | ||
+ | <td>-h</td> | ||
+ | <td>-b</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>90k lub ss/sd</td> | ||
+ | <td>40</td> | ||
+ | <td>18</td> | ||
+ | <td>1</td> | ||
+ | <td>128</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>130k lub ss/ed</td> | ||
+ | <td>40</td> | ||
+ | <td>26</td> | ||
+ | <td>1</td> | ||
+ | <td>128</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>180k lub ss/dd</td> | ||
+ | <td>40</td> | ||
+ | <td>18</td> | ||
+ | <td>1</td> | ||
+ | <td>256</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>360k lub ds/dd</td> | ||
+ | <td>40</td> | ||
+ | <td>18</td> | ||
+ | <td>2</td> | ||
+ | <td>256</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>720k lub ds/qd</td> | ||
+ | <td>80</td> | ||
+ | <td>18</td> | ||
+ | <td>2</td> | ||
+ | <td>256</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>1440k lub ds/hd</td> | ||
+ | <td>80</td> | ||
+ | <td>36</td> | ||
+ | <td>2</td> | ||
+ | <td>256</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>16m</td> | ||
+ | <td>1</td> | ||
+ | <td>65534</td> | ||
+ | <td>1</td> | ||
+ | <td>256</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>32m</td> | ||
+ | <td>1</td> | ||
+ | <td>65534</td> | ||
+ | <td>1</td> | ||
+ | <td>512</td> | ||
+ | </tr> | ||
+ | |||
+ | </table> | ||
+ | |||
+ | == Instalacja == | ||
+ | |||
+ | Po rozpakowaniu programu w ustronnym miejscu należy wykonać <code>cd</code> do katalogu z rozpakowanymi plikami, a następnie wydać komendę <code>gmake install</code> z poziomu konta administratora. Gotowy plik binarny zostanie wkopiowany do katalogu <code>/usr/local/bin</code> | ||
+ | |||
+ | == 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#Szybkość transmisji|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 [[POKEY#Szybkość transmisji|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 == | == Download == | ||
- | * [http://drac030.krap.pl/sio2bsd.tar.gz SIO2BSD] | + | * [http://drac030.krap.pl/pl-inne-pliki.php bieżąca wersja] na stronie autora |
- | {{stub}} | ||
[[Kategoria: Emulacja]] | [[Kategoria: Emulacja]] | ||
[[Kategoria: Polskie programy]] | [[Kategoria: Polskie programy]] |
Aktualna wersja
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
Obecna wersja pozwala na otwieranie plików ATR oraz uzyskanie stabilnych zapisów i odczytów z prędkością do 126 kbps 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 8.2 oraz Linux Ubuntu 10.04 (lucid)
Wykorzystano dostępną we FreeBSD i Linuksie dokładną 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.
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 na FreeBSD może pomóc podniesienie częstotliwości głównego zegara schedulera. W tym celu należy zmienić ustawienie sysctl kern.hz (u autora ma wartość 1600 Hz). Natomiast 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).
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