Powrót do spisu treści |
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. |