Powrót do spisu treści

WPROWADZENIE

    Komputery 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.
Zientara Wojciech: Mapa pamięci Atari XL/XE. Procedury wejścia-wyjścia, SOETO, Warszawa, 1988.