WPROWADZENIEKomputery Atari XL/XE posiadają bardzo rozbudowany podsystem wejścia/wyjścia, który umożliwia proste rozszerzanie systemu oraz łatwą ingerencję programisty w komunikację z urządzeniami peryferyjnymi. Jego podstawową częścią są centralne procedury wejścia/wyjścia (CIO - Central Input/Output routines). Sterują one komunikacją ze wszystkimi urządzeniami peryferyjnymi poprzez szczegółowe procedury obsługi (sterowniki) tych urządzeń.Dostęp CIO do poszczególnych sterowników umożliwiają tabele ich adresów (HATABS - HAndler TABleS). Umieszczenie ich w pamięci RAM pozwala na łatwą ingerencję w przebieg komunikacji oraz proste dołączanie następnych urządzeń. System operacyjny Atari zawiera jedynie procedury obsługi klawiatury, ekranu, drukarki i magnetofonu - pozostałe muszą zostać zainstalowane przed wykorzystaniem. Sterowniki urządzeń komunikujących się z komputerem za pośrednictwem złącza szeregowego korzystają z kolei z procedur transmisji szeregowej (SIO - Serial Input/Output). Złącze szeregowe jest także wykorzystywane przez rezydujący sterownik stacji dysków (DSKINT - Disk INTerface), nie związany z CIO i dostępny bezpośrednio z poziomu języka maszynowego. Prawidłowa praca wyżej wymienionych procedur wymaga przechowywania i przekazywania między nimi wielu różnych danych. Do tego celu służą wyodrębnione obszary pamięci RAM zwane blokami kontroli. CIO korzysta z ośmiu bloków IOCB (Input/Output Control Block) umieszczonych na trzeciej stronie pamięci oraz jednego na stronie zerowej (ZIOCB - Zeropage IOCB). SIO i sterownik dyskowy używają bloku DCB (Device Control Block), który znajduje się także na stronie trzeciej. Poza tym liczne rejestry RAM są wykorzystywane przez sterowniki poszczególnych urządzeń. Obsługa komunikacji z urządzeniami dołączonymi do szyny równoległej odbywa się poprzez procedury umieszczone w pamięci ROM tych urządzeń. Są one również wywoływane poprzez CIO.
++---------------------++
|| program użytkownika ||
++---------------------++
|
v
==========
# IOCB #
==========
|
v
++-------------------------++
|| centralna procedura I/O ||
++-------------------------++
|
v
===========
# ZIOCB #
===========
|
v
++-------------------++ ++-------------++
|| procedura obsługi || || program ||
|| urządzenia || || użytkownika ||
++-------------------++ ++-------------++
| |
v |
+--------------+-----------------+ |
| | | |
v v v v
++-------------++ ++------------++ =======
|| urządzenia || || edytor || # DCB #
|| na szynie || || klawiatura || =======
|| równoległej || || ekran || | |
++-------------++ ++------------++ +------+ +-+
| |
v v
++-----++ ++-----------++
|| SIO || || sterownik ||
++-----++ || dyskowy ||
++-----------++
Rys.1. Struktura podsystemu wejścia/wyjścia.
|