SIO

From Atariki

Revision as of 23:02, 8 gru 2004; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

SIO - Serial Input/Output. W założeniach jest to rezydujący w ROM-ie podsystem niskopoziomowych procedur blokowego dostępu do urządzeń szeregowych.

W serii XL do podsystemu SIO dodano także niskopoziomową (blokową) obsługę urządzeń podłączanych do szyny równoległej (PBI), czyli tak zwanych nowych urządzeń.

Interfejs SIO znajdujący się w ROM-ie rozpoznaje cztery predefiniowane urządzenia:

  • $30: dyskową pamięć masową (stację dysków, twardy dysk)
  • $40: drukarkę
  • $50: interfejs RS-232
  • $60: magnetofon kasetowy

przy czym identyfikator urządzenia to górne 4 bity podanego kodu, dolne natomiast 4 bity stanowi indywidualny numer urządzenia (np. $31 - stacja dysków nr 1, $32 - stacja dysków nr 2 itd.).

Żądaną operację definiuje się ustawiwszy przedtem odpowiednie zmienne w bloku DCB (Device Control Block, $0300), a nastepnie wywołuje skokiem JSR pod JSIOINT $E459, co jest punktem wejściowym interfejsu szeregowo-równoległego. Przy powrocie rejestr Y zawiera wartość 1 w przypadku powodzenia, bądź ujemny kod błędu.

Struktura DCB:

AdresEtykietaWielkośćZnaczenie
$0300DDEVICbajtIdentyfikator urządzenia. W przypadku stacji dysków trzeba podać identyfikator zwiększony o 1!
$0301DUNITbajtNumer urządzenia; w przypadku stacji dysków numer napędu
$0302DCMNDbajtKomenda dla urządzenia
$0303DSTATSbajtPrzed wywołaniem SIO należy ustawić tu rodzaj operacji ($40 odczyt, $80 zapis). Po powrocie z systemu znajduje się tu status operacji (kod błędu
$0304DBUFADwa bajtyAdres bufora
$0306DTIMLOBajtCzas oczekiwania na pozytywną odpowiedź urządzenia
$0307DUNUSEBajtBajt nieużywany, zarezerwowany do przyszłych zastosowań
$0308DBYTDwa bajtyWielkość bufora; musi być zgodna z wielkością transmitowanego bloku danych
$030ADAUX1BajtPierwszy bajt pomocniczy. W operacjach dyskowych młodszy bajt numeru sektora
$030BDAUX2BajtDrugi bajt pomocniczy. W operacjach dyskowych starszy bajt numeru sektora
Personal tools