Zařízení G - ukázka implementace zařízení CIO na 8bit Atari

Ovladač výukového zařízení G:. Do tabulky HATABS zavede nové zařízení G:, které zobrazuje svá data pomocí sprajtů na obrazovce. Tak můžeme vidět aktuální stav každého zařízení G:. Ovladač podporuje až 4 zařízení G: najednou (G1 - G4), přiřadí je postupně jednotlivým sprajtům (tzv. hráčům). Zařízení lze otevřít pro čtení i zápis, poloha kurzorů není graficky vyvedená.

Jednoduché použití ukázkového disku

Ke stažení: Ukázkový disk

Nabootujeme Atari z tohoto disku, se zapnutým BASIC. V emulátoru např. takto:

atari800 -basic g_device.atr

Automaticky se nahraje ovladač zařízení G a spustí se demo.

Toto automatické spuštění všeho potřebného vyvoláme kdykoli tzv. studeným startem počítače. V emulátoru atari800 např. klávesou Shift-F5. Naopak po stisku klávesy RESET (tzv. teplý start) zůstáváme v BASIC a můžeme vše zkoušet a upravovat ručně. Je pak ale také nutné si ručně hlídat spuštění inicializace ovladače po každém RESET. Viz níže.

Popis funkce:

Jednoduchá ukázka zařízení, typicky pro použití v BASIC, i když to není podmínkou. Po otevření zařízení (volba G1 - G4) se toto vizuálně objeví na obrazovce. Následně podle módu otevření (čtení/zápis) lze provádět běžné I/O příkazy BASIC a data vidět na obrazovce. Při otevření pro čtení i zápis lze číst i zapisovat ve stejném kanálu, ale samozřejmě nesmí čtení předběhnout zápis.

Zařízení podporuje módy:

Příklad:

    ? USR(39204)               : REM Initializace G systému
    OPEN #2, 12, 0, "G4:"      : REM otevři G4: pro čtení i zápis
    PRINT #2; "ABCDEF"         : REM zapiš data - středník zamezuje přidaným mezerám (vlastnost BASIC)

    DIM A$(100)
    INPUT #2, A$               : REM přečti data z G4: a vytiskni je na obrazovku ("ABCDEF")
    PRINT A$

    CLOSE #2

Technický popis:

Inicializační rutina zavede zařízení do HATABS, inicializuje GTIA a označí pro BASIC naše místo v RAM za nedostupné pro něj.

Při každém otevření zařízení:

Čtení znaku:

Při úspěšném čtení vrátí v akumulátoru bajt dat a posune čtecí kurzor.
Při pokusu číst za poslední zapsaná data (zapisovací kurzor) vyhlásí chybu END_OF_FILE.

Zápis znaku nebo řetězce:

Uloží obsah akumulátoru na pozici v paměti zařízení/sprajtu a posune čtecí kurzor.
Při pokusu zapsat mimo rozsah zařízení (celkem $60 bajtů) vrátí chybu END_OF_FILE.

Zavření kanálu

Smaže data zařízení a vizuálně ho odebere z obrazovky.

Poznámky:

  1. Ovladač nezobrazuje vizuálně kurzory, to přenecháváme čtenáři jako cvičení. Nabízí se např. využít střely v PMG.
  2. Ovladač má mnohá omezení, jakožto jednoduchý výukový příklad: