Lista komend SIO według funkcji

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:42, 5 gru 2013
KMK (Dyskusja | wkład)
(Stacje dysków Atari 1450XLD)
← Previous diff
Wersja z dnia 08:37, 9 lip 2015
Trub (Dyskusja | wkład)
(komendy 850 wg dokumentacji)
Next diff →
Linia 199: Linia 199:
<tr><td><b>Kod</b></td><td><b>Nazwa</b></td><td><b>Urządzenie</b></td><td><b>R/W</b></td><td><b>Ilość danych</b></td><td><b>Opis</b></td></tr> <tr><td><b>Kod</b></td><td><b>Nazwa</b></td><td><b>Urządzenie</b></td><td><b>R/W</b></td><td><b>Ilość danych</b></td><td><b>Opis</b></td></tr>
-<tr><td>$41 (A)</td><td>???</td><td rowspan = 3>$50</td><td rowspan = 2>-</td><td rowspan = 2>0 bajtów</td>+<tr><td>$41 (A)</td><td>CONTROL</td><td rowspan = 3>$50</td><td rowspan = 2>-</td><td rowspan = 2>0 bajtów</td>
<td><p>Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,"Rn:", przy czym parametry ''x'' i ''y'' wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.</p></td></tr> <td><p>Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,"Rn:", przy czym parametry ''x'' i ''y'' wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.</p></td></tr>
-<tr><td>$42 (B)</td><td>???</td>+<tr><td>$42 (B)</td><td>CONFIGURE</td>
<td><p>Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,"Rn:", przy czym parametry ''x'' i ''y'' wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.</p></td></tr> <td><p>Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,"Rn:", przy czym parametry ''x'' i ''y'' wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.</p></td></tr>
-<tr><td>$58 (X)</td><td>???</td> <td>R</td><td>9 bajtów</td>+<tr><td>$58 (X)</td><td>STREAM</td> <td>R</td><td>9 bajtów</td>
-<td><p>Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.</p></td></tr>+<td><p>Komenda uruchamia tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Handler urządzenia "R:" ustawia według niej [[Rejestry_POKEY-a|rejestry układu POKEY]], tj. kolejno AUDF,AUDC 1-4 oraz AUDCTL.</p></td></tr>
<tr><td colspan = 6> <tr><td colspan = 6>

Wersja z dnia 08:37, 9 lip 2015

Główny artykuł: SIO

Spis treści

Podstawowy zestaw komend

Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.

KodNazwaUrządzenieR/WIlość danychOpis
$21 (!)FORMAT DISK$31RRówna wielkości sektora danych na dysku

Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w pojedynczej gęstości (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...

Kontroler KMK/JŻ IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i "formatowania" dysku służy oddzielny program).

$50 (P)PUT SECTOR$31 i $60WZależna od urządzenia i trybu pracy.Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.
$52 (R)READ SECTOR R Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.
$53 (S)READ STATUSWszystkie oprócz magnetofonuRZależna od urządzeniaOdczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.
$57 (W)WRITE SECTORWszystkieWZależna od urządzenia i trybu pracy.To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.
W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:
  • $4E (N) drukowanie normalne
  • $53 (S) druk obrócony o 90 stopni
  • $44 (D) druk normalny z podwójną szerokością znaków
Dla interfejsu Atari 850 wielkość bufora wynosi 64 bajty.

Komendy dodatkowe

Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.

KodNazwaUrządzenieR/WIlość danychOpis
$22 (")FORMAT MEDIUM$31R128 bajtówAnalogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w gęstości średniej (130k). Komenda wprowadzona razem ze stacją 1050.

Kontroler KMK/JŻ IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i "formatowania" dysku służy oddzielny program).

$23 (#)FORMAT DSDD 256 bajtówAnalogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w gęstości podwójnej dwustronnej (360k). Komenda wprowadzona razem ze stacją Atari XF-551.

Kontroler KMK/JŻ IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i "formatowania" dysku służy oddzielny program).

Komendy PERCOM

Komendy PERCOM noszą nazwę od stacji dysków firmy PERCOM, w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem Atari XF-551), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.

KodNazwaUrządzenieR/WIlość danychOpis
$4E (N)READ PERCOM$31R12 bajtów (Blok PERCOM)Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.
$4F (O)WRITE PERCOM W

Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.

Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje kodem błędu nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są "najbliższe", nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji Top Drive 1050 spowoduje jej ustawienie się w DD (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.

Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.

Kontroler KMK/JŻ IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).

Komendy specjalne

Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.

KodNazwaUrządzenieR/WIlość danychOpis
$21 (!)SEND RELOCATOR $50 (RS-232)RWg odpowiedzi na komendę POLL ($3F)

Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.

Komendę SEND RELOCATOR rozpoznaje moduł Atari 850, a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).

$26 (&)SEND HANDLERWg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)RWg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)

Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).

Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.

Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.

Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy "handler" może mieć maximum 32k). Przesyłany strumień danych musi być w specjalnym formacie, który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z kodem błędu INCOMPLETE EXECUTION.

Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:

  • DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.
  • DUNIT - zawsze $01
  • DCMND - $26 - SEND HANDLER
  • DSTATS - $40 - odczyt
  • DTIMLO - 30 sekund
  • DBYT - 128 bajtów
  • DAUX1 - numer kolejny rekordu danych
  • DAUX2 - zawsze 0
$3F (?)POLL$50 (RS-232)R12 bajtów

Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii 400 i 800.

W module Atari 850 odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).

W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.

$40 (@)POLL BUS$4F (bus master)R4 bajty

W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł 1090 działający jako bus master.

Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:

  • TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.
  • TYPE 4 POLL: zobacz niżej.
  • RESET POLL: DAUX1 = $4F i DAUX2 = $4F ("OO")
  • NULL POLL: DAUX1 = $4E i DAUX2 = $4E ("NN")

Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.

Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.

Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.

Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej "nietypowej" komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.

Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że "handler" może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany zamiast DOS-u.

Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia konkretnie wskazanego. Robi to CIO przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).

Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli "C"), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla "C1:" będzie to $01).

Pozostałe komendy

Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.

KodNazwaUrządzenieR/WIlość danychOpis
$20 ( )DOWNLOAD???W (?)???Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.
$23 (#)DIAG1$31R/W128 bajtów

Komenda diagnostyczna stacji Atari 1050. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):

  • $02 - test przejścia głowicy między ścieżkami
  • $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. "Krok" silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).
  • $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.
  • $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie.

UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji Atari XF-551 oraz LDW Super 2000 i CA-2001 z załadowanym Synchromeshem!

$24 ($)DIAG2

Komenda diagnostyczna stacji 1050, służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.

$51 (Q)READ SPIN $31 R (?) ? Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji 810, jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.
$54 (T)READ ADDRESS
$55 (U)MOTOR ON -0 bajtów
$56 (V)VERIFY SECTOR$31-0 bajtów

Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.

Komendy specyficzne dla poszczególnych urządzeń

Stacje dysków Atari 1450XLD
KodNazwaUrządzenieR/WIlość danychOpis
$01 (-)SET LARGE MODE$31-0 bajtów

Komenda aktywująca tzw. large mode. W tym trybie stacja "widzi" dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).

$02 (-)SET SMALL MODE

Komenda aktywująca tzw. small mode. W tym trybie stacja "widzi" dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).

$23 (#)DRIVE DIAGNOSTIC IN$31W128 bajtów

Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.

$24 ($)DRIVE DIAGNOSTIC OUTR

Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.

$B1 (-)???$31??

Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.

$B2 (-)???

Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.

Atari 850
KodNazwaUrządzenieR/WIlość danychOpis
$41 (A)CONTROL$50-0 bajtów

Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu Atari 850. Odpowiada komendzie CIO XIO 34,#i,x,y,"Rn:", przy czym parametry x i y wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.

$42 (B)CONFIGURE

Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu Atari 850. Odpowiada komendzie CIO XIO 36,#i,x,y,"Rn:", przy czym parametry x i y wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.

$58 (X)STREAM R9 bajtów

Komenda uruchamia tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs Atari 850 w odpowiedzi zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Handler urządzenia "R:" ustawia według niej rejestry układu POKEY, tj. kolejno AUDF,AUDC 1-4 oraz AUDCTL.

ATR 8000
KodNazwaUrządzenieR/WIlość danychOpis
$47 (G)GO TO$5A (ATR 8000)-0Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu ATR 8000 (q.v.).
Indus GT/LDW Super 2000/CA-2001
KodNazwaUrządzenieR/WIlość danychOpis
$23 (#)FORMAT SKEWED$31RRówna wielkości sektora danych na dysku

Komenda formatowania z szybkim przeplotem w stacjach Indus GT, LDW Super 2000 oraz CA-2001 z załadowanym Synchromeshem.

Kod operacyjny jest taki sam, jak komendy formatowania w gęstości DSDD dla stacji XF551 oraz jednej z komend diagnostycznych w 1050.

$58 (X)DOWNLOAD/EXECUTE R/WRóżnaKomenda zaimplementowana w stacjach Indus GT, LDW Super 2000 i CA-2001, pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz Programowanie stacji LDW Super 2000 i CA-2001.
Happy Warp
KodNazwaUrządzenieR/WIlość danychOpis
$48 (H)HAPPY CONFIG$31-0 bajtówKonfiguracja stacji z rozszerzeniem Happy Warp. Szczegóły: patrz Happy Warp - Konfiguracja
KMK/JŻ IDE
$ECIDENTIFY DRIVE$31R512 bajtówW KMK/JŻ IDE komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.
Multi I/O
$4D (M)MEDIA CAPACITY INFO$31R8 bajtówNowe wersje firmware Multi I/O (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w tym formacie.
Speedy 1050
KodNazwaUrządzenieR/WIlość danychOpis
$20 ( )AUTOMATIC FORMATTING$31R0 bajtówSpeedy 1050 w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i VTOC zgodne z DOS 2.0 lub (w średniej gęstości) DOS 2.5.
$41 (A)REGISTER COMMAND W3 bajtyW stacjach Speedy 1050 komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:
  • kod komendy
  • młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi
  • starszy bajt tego adresu

Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.

$44 (D)CONFIGURE DISPLAY -0 bajtówKonfiguracja wyświetlacza stacji Speedy 1050. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):
  • bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji
  • bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym
  • bit 5: formatowanie bez weryfikacji
  • bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20
  • bit 3: niewyłączanie silnika po komendzie $51
  • bit 2: nieużywany
  • bit 1: nieużywany
  • bit 0: sygnał dźwiękowy w wypadku błędu
$4B (K)CONFIGURE DRIVE -0 bajtówKonfiguracja stacji Speedy 1050. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):
  • bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)
  • bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)
  • bit 5: nieużywany
  • bit 4: nieużywany
  • bit 3: wyłączenie buforowania ścieżek
  • bit 2: wyłączenie weryfikacji dla komendy $57 (W)
  • bit 1: zapis sektora z pominięciem buforowania
  • bit 0: odczyt sektora z pominięciem buforowania
$4C (L)JUMP, NO ACKNOWLEDGE -0 bajtówW stacjach Speedy 1050 wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.
$4D (M)JUMP WITH ACKNOWLEDGE -0 bajtówW stacjach Speedy 1050 to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.
$51 (Q)FLUSH -0 bajtówW stacjach Speedy 1050 komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).
$60 (`)WRITE TRACK WLiczba sektorów na ścieżce razy liczba bajtów w sektorzeW stacjach Speedy 1050 zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.
$62 (b)READ TRACK RLiczba sektorów na ścieżce razy liczba bajtów w sektorzeW stacjach Speedy 1050 odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.
$68 (h)SIO LEN R2 bajtyW stacjach Speedy 1050 komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69.
$69 (i)SEND SIO RWynik komendy $68W stacjach Speedy 1050 komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).
TOMS Multi Drive
KodNazwaUrządzenieR/WIlość danychOpis
$49 (I)INDEX FORMATTING$31RZależnie od wybranej gęstościW stacjach TOMS Multi Drive komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory.
US Doubler
KodNazwaUrządzenieR/WIlość danychOpis
$3F (?)SEND HIGH SPEED INDEX$31R1 bajtStacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.
$66 (f)CUSTOM FORMAT W128 bajtówKomenda formatowania z zadanym przeplotem zaimplementowana w stacjach US Doubler. Wysyłane 128 bajtów określa:
  • w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM
  • następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.

Przykładowe przeploty podaje hasło Przeplot.

XFD601/602
KodNazwaUrządzenieR/WIlość danychOpis
$42 (B)GET COMMAND BUFFER$31R128 bajtów

Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: DDEVIC, DCMND, DAUX1, DAUX2.

$54 (T)READ ADDRESS R6 bajtów

Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.

Personal tools