SIO2BSD

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 13:39, 4 paź 2011
Mono (Dyskusja | wkład)
(Inne)
← Previous diff
Wersja z dnia 20:52, 4 paź 2011
Mono (Dyskusja | wkład)
(Obsługa - -c)
Next diff →
Linia 159: Linia 159:
* -l - włącza dodatkowe komunikaty wyświetlane na konsoli (przydatne przy debugowaniu programu) * -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) * -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 ma specjalne znaczenie i jest dostępna tylko na Linuksie (patrz niżej)+* -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ę * -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 * -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) * -u - serwer plików będzie "widział" tylko pliki z nazwami zapisanymi dużymi literami (od ang. uppercase)
-Opcje dostępne tylko na Linuksie:+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" * -i n - ustawia HS Index na wartość 'n'. Uaktywnienie tej opcji wymaga też podania "-b 0"
Linia 173: Linia 173:
Brak opcji -q powoduje przyjęcie uśrednionej częstotliwości PAL i NTSC stosowanej w maszynach z układem [[FREDDIE]], czyli 1781610 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. 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 ==

Wersja z dnia 20:52, 4 paź 2011

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).

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.

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

Personal tools