🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.sys.atari
2 messages
2 total messages Started by Filip Ozimek Fri, 12 Dec 1997 18:12
sterowanie
#782
Author: Filip Ozimek
Date: Fri, 12 Dec 1997 18:12
9 lines
1048 bytes

Jak male atari steruje stacja dyskow? Chodzi mi o wykozystanie linii COMMAND i
DATA IN oraz przeprowadanie podstawowych operacji (zapis/odczyt sektora,
formatowanie sciezki).:)


BTW: Jaki jest przeplot na dysku atari SD, 90 kB?
                                                  Filip
Re: sterowanie
#783
Author: Konrad Kokoszkiewicz
Date: Mon, 15 Dec 1997 12:53
107 lines
4829 bytes
> Jak male atari steruje stacja dyskow? Chodzi mi o wykozystanie linii COMMAND i
> DATA IN oraz przeprowadanie podstawowych operacji (zapis/odczyt sektora,
> formatowanie sciezki).:)

To jest proste jak konstrukcja cepa. :) Linia COMMAND sygnalizuje, ze
komputer za moment bedzie wysylal do stacji pakiet, tzw. Command Frame,
zawierajacy komende. Takowy pakiet sklada sie z czterech bajtow
wyposazanych na droge dodatkowo w sume kontrolna (czyli razem piec
bajtow). Cztery zasadnicze to:

CDEVIC - kod urzadzenia, $31 stacja numer 1, $32 stacja numer 2 itede.
CCMND - komenda
CAUX1 - mlodszy bajt numeru sektora
CAUX2 - starszy bajt numeru sektora

CAUX1/2 jest wazne tylko dla komend odczytu i zapisu sektora, dla reszty
jest ignorowane.

CCMND - komendy takie jak sie ustawia w DCMND dla SIO, czyli:

! - formatowanie zgodnie z ostatnimi ustawieniami rozkazem "O"
" - formatowanie w sredniej gestosci
N - odczyt bloku PERCOM ze stacji
O - zapis bloku PERCOM do stacji
P - zapis sektora na dyskietke
R - odczyt sektora z dyskietki
S - odczyt statusu
W - zapis sektora z weryfikacja (zasadniczo to samo co P)

Poza tym jest jeszcze pare innych komend, ale nie sa zbyt istotne.

Teraz tak: kazda z komend powoduje transfer okreslonej porcji danych ze
stacji lub do stacji. Dlugosc tej "porcji" jest zalezna od komendy. I tak:

formatowanie   - 128 bajtow ze stacji do komputera
odczyt PERCOM  - 12 bajtow ze stacji do komputera
zapis PERCOM   - 12 bajtow z komputera do stacji
odczyt statusu - 4 bajty ze stacji do komputera
odczyt sektora - 128 albo 256 bajtow ze stacji do komputera
zapis sektora  - 128 albo 256 bajtow z komputera do stacji

Kazdy z tych blokow danych, tak samo jak Command Frame, ma dodatkowo sume
kontrolna (1 bajt).

Komendy zapisu/odczytu sektora przesylaja 128 albo 256 bajtow w zaleznosci
od gestosci i numeru sektora. To jest:
sektory 1-3 maja zawsze po 128 bajtow dlugosci (tj. DLA KOMPUTERA, bo na
dyskietce to one maja po 256 bajtow w DD, ale dzialaja tak, jakby mialy
128). Reszta sektorow ma 128 bajtow w gestosci pojedynczej i sredniej oraz
256 bajtow w podwojnej.

Wartosci bajtow bloku statusu sa nieistotne (prawie nic ich nie sprawdza).
Mozna dac $30,$FF,$E0,$00 i bedzie OK. :)

Blok PERCOM sluzy do ustawiania gestosci glownie. Wartosci sa nastepujace:

0 - liczba sciezek
1 - seek rate, mozna olac
2 - starszy (!!big endian!!) bajt liczby sektorow na sciezke
3 - mlodszy jak wyzej
4 - liczba stron dyskietki minus jeden (zero dla jednostronnej)
5 - flaga FM/MFM, nie pamietam dokladnie, ale chyba $04 = MFM
6 - starszy bajt dlugosci sektora w bajtach ($01 dla podwojnej gestosci)
7 - mlodszy jak wyzej
8 - wartosc $FF, moze byc inna, i tak niewazne
9 - zero
10 - zero
11 - zero

Formatowanie przysyla 128 bajtow z numerami zepsutych sektorow. Prawie
zadna stacja tego nie uzywa, wiekszosc przysyla $00,$00,$FF,$FF (tj.
poczatek listy i koniec listy, bez numerow sektorow).

Dobra, transmisja wyglada tak:

1) komputer wysyla Command Frame ustawiwszy uprzednio linie COMMAND
2) i czeka
3) stacja przysyla jednobajtowa odpowiedz (bez sumy kontrolnej):
   A = Acknowledge, stacja rozpoznala komende i mozna jechac dalej
   N = Negative Acknowledge, nie ma takiej komendy (to jest error 139)
4) komputer kasuje linie COMMAND
5) komputer i stacja przeprowadzaja transfer bloku danych
6) na koniec stacja przysyla jednobajtowe potrwierdzenie (bez sumy
   kontrolnej):
   C = Complete, wszystko OK.
   E = Error, operacja sie udala, pacjent zmarl (error 144).

Parametry transmisji szeregowej wygladaja tak: 1 bit startu, 8 bitow
danych, 1 bit stopu, brak kontroli parzystosci, 19200 bitow na sekunde.

> BTW: Jaki jest przeplot na dysku atari SD, 90 kB?

Taki sam jak na kazdym innym, czyli dowolny. Poza tym SD rozni sie od MD i
DD tym, ze jest to FM, a reszta to MFM.

Pozdrawiam

Konrad M.Kokoszkiewicz
mail:draco@mi.com.pl
http://www.orient.uw.edu.pl/~conradus

** Ea natura multitudinis est,
** aut servit humiliter, aut superbe dominatur (Liv. XXIV, 25)
**************************************************************
** U pospolstwa normalne jest, ze albo sluzy ono unizenie,
** albo bezczelnie sie panoszy.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads