PROGRAMOVANIE Z80-SIO
                     #######################
                      ADRESOVANIE REGISTROV
    ______________
   | D2 | D1 | D0 |
   |____|____|____|
   | 0  | 0  | 0  | nulové adresovanie
   | 0  | 0  | 1  | register 1
   | 0  | 1  | 0  | register 2
   | 0  | 1  | 1  | register 3
   | 1  | 0  | 0  | register 4
   | 1  | 0  | 1  | register 5
   | 1  | 1  | 0  | register 6
   | 1  | 1  | 1  | register 7
   |____|____|____|
Naprogramovanie riadiacich registrov si vyžaduje dve za sebou
nasledujúce riadiace slová. Prvé riadiace slovo bity D0,D1,D2
obsahujú adresu registra pre nasledujúce riadiace slovo
a nastavenie pre riadiaci register 0. VRO
 ______________ ________________________________________________
| D5 | D4 | D3 |  <-- kanálové príkazy
|____|____|____|________________________________________________
| 0  | 0  | 0  |-Žiadne zmeny; tento príkaz nemá účinok. Slúži
|    |    |    | ako ukazovateľ pre iný register
|____|____|____|________________________________________________
| 0  | 0  | 1  |-Vyvolanie ABORT oznamu v móde SDLC.
|____|____|____|________________________________________________
|    |    |    |-Zablokovanie pre externé a stavové prerušenie
| 0  | 1  | 0  | po externom alebo status interrupte budú
|    |    |    | stavové bity čítacieho registra RRO zabuchnuté
|    |    |    | Tento príkaz pôsobí ako nové uvoľnenie preruš.
|____|____|____|________________________________________________
|    |    |    |-RESET kanálu. Tento príkaz platí pre zvolený
| 0  | 1  | 1  | kanál. Po výstupe tohto príkazu je nutné počkať
|    |    |    | 4 takty, než sa ďaľšie informácie zapíšu do
|    |    |    | kanála. Po prevedení príkazu sa musia všetky
|    |    |    | riadiace registre kanálu znovu zapísať.Zhodenie
|    |    |    | kanálu A spôsobí aj zhodenie logiky prerušenia
|____|____|____|________________________________________________
|    |    |    |-Touto novou správou je možné vyvolať ďaľšie
| 1  | 0  | 0  | prerušenie prijímača pri prvom prijatom znaku
|    |    |    | Po ukončení správy je nutné zhodiť logiku
|    |    |    | prerušenia.
|____|____|____|________________________________________________
|    |    |    |-Vysielač vydá prerušenie, keď je prázdny
| 1  | 0  | 1  | a v móde prerušenie pri každom znaku. Za týmto
|    |    |    | príkazom sa potom nevysielajú žiadne znaky,
|    |    |    | je zamedzené ďaľšie prerušenie vysielača.
|____|____|____|________________________________________________
|    |    |    |-ERROR RESET chyba parity a chyba pretečenia
| 1  | 1  | 0  | budú až do zhodenia v registri RR1 zapämätané
|    |    |    | týmto príkazom.
|____|____|____|________________________________________________
|    |    |    |-RETI (pôsobí ako RETI inštrukcia CPU)
| 1  | 1  | 1  | iba kanál A; Prostredníctvom nej možno nájsť
|    |    |    | internú prioritnu reťaz v systémoch bez
|    |    |    | externej prioritnej reťaze k využitu.
|____|____|____|________________________________________________
 _______________________________________________________________
| D6 | D7 |
|____|____|_____________________________________________________
| 0  | 0  |-Žiadne zmeny. Používa sa ako ukazovateľ na iné reg.
|____|____|_____________________________________________________
| 0  | 1  |-RESET príjimačového CRC posuvného registra
|____|____|_____________________________________________________
| 1  | 0  |-RESET vysielacieho CRC posuvného registra
|____|____|_____________________________________________________
| 1  | 1  |-RESET CRC/SYNC - status pamäti
|____|____|_____________________________________________________
                    RIADIACI REGISTER 1   WR1
Tento register obsahuje riadiace bity pre rozličné módy
prerušení a WAIT/READY.
                                               ___ ___ ____
D0=1 uvoľnenie externého prerušenia (pri zmene DCD,CTS,SYNC)
D1=1 uvoľnenie rerušenia vysielača pri prázdnom registri vysiel.
D2=0 stav interrupt vektora nie je ovplyvňovaný, tekže ten bude
     použitý tak ako bol zapísaný. Bit D2 sa zapisuje iba do
     registra WR1 kanálu B. Mód potom platí pre obidva kanály.
D2=1 doplnenie interrupt vektora o stavovú informáciu
     (iba kanál B);V prípade prerušenia bude prostredníctvom SIO
dodaný interrupt vektor modifikovaný stavovým slovom nasledovne:
 ______________
| V3 | V2 | V1 |
|____|____|____|________________________________________________
| 0  | 0  | 0  | kanál B: register vysielača je prázdny
| 0  | 0  | 1  | kanál B: externé/stavové zmeny
| 0  | 1  | 0  | kanál B: znak prijímača je pohotový
| 0  | 1  | 1  | kanal B: špeciálne podmienky príjmu
| 1  | 0  | 0  | kanál A: register vysielača je prázdny
| 1  | 0  | 1  | kanál A: externé/stavové zmeny
| 1  | 1  | 0  | kanál A: znak prijímača je pohotový
| 1  | 1  | 1  | kanál A: špecialne podmienky príjmu
|____|____|____|________________________________________________
Špecialne podmienky príjmu môžu byť: chyba parity, pretečenie
prijímača, chyba tvaru CRC, koniec formátu (SDLC-módu)
 _______________________________________________________________
| D4 | D3 | špecifikujú interrupt mód prijímača
|____|____|_____________________________________________________
| 0  | 0  |-zablokovanie prerušenia od prijímača
|____|____|_____________________________________________________
|    |    |-uvoľnenie prerušenia prijímača pri prvom prijatom
| 0  | 1  | znaku alebo chybe
|____|____|_____________________________________________________
|    |    |-uvoľnenie prerušenia prijímača pri každom prijatom
| 1  | 0  | znaku (parita ovplyvňuje vektor)
|____|____|_____________________________________________________
|    |    |-uvoľnenie prerušenia prijímača pri každom prijatom
| 1  | 1  | znaku (parita ovplyvňuje vektor)
|____|____|_____________________________________________________
                      __________
D5=1 tvorenie signálu WAIT/READY pri prázdnom registri
  =0               -||-          pri plnom registri
     __________
D6=1 WAIT/READY signál pre DMA riadenie
  =0       -||-        pre CPU riadenie
     (keď bude SIO spojený so vstupom WAIT CPU, bude týmto bitom
      WAIT funkcia obvodu_______
      keď  bude  vodič   W/READY spojený s DMA jednotkou, bude
      používaný ako READY vodič)
     __________
D7=1 WAIT/READY uvoľnenie
     READY funkciu je možné vyvolať v každom čase nezávisle od
     toho,či SIO bol adresovaný, alebo nie. Táto funkcia je
     aktívna v H a je odvodená od nástupnej hrany taktu.
                        __________
D7=0 blokovanie funkcie WAIT/READY ;vodič je v H v READY móde
     alebo vysokoimpedančný v móde WAIT
                    RIADIACI REGISTER 2  WR2
Iba kanál B; obsahuje interrupt vektor pre SIO
Bity V0 a V4-V7 budú vždy dané obvodom SIO a pre bity V1-V3
budú prístupné až potom, ak bit D2 registra WR1 bude 0
                    RIADIACI REGISTER 3  WR3
Obsahuje riadiace bity pre logiku prijímača.
D0=1 uvoľnenie prijímania; prijímač môže začať prijímať.
D1=1 synchronizačné znaky nebudú naplňovať register prijímača.
     (Výpočet CRC nebude prerušený)
D2=1 adresa bloku v mode SDLC. V SDLC móde nastavenie tohto bitu
     znamená, že správa s adresou, ktorá nieje v súhlase s pro-
     gramovanou, alebo globálnou adresou (FFH) bude potlačená.
     To znamená,že v riadnom vysielaní prerušenie nenastane skôr
     kým nenastane zhoda adries.
D3=1 uvoľnenie pre spočítanie CRC prijímača. Výpočet CRC začne
     pri štarte posledného znaku, ktorý z registra prijímača bol
     prenesený do bufra, nezávisle na počte znakov v bufri.
D4=1 prechod (znovu) do vyhľadávacieho režimu pri chybe synchro-
     nizácie.(Synchronizačné znaky môžu byť znovu dosiahnuté)
D5=1 AUTO ENABLE (externé riadenie prenosu dát s CTS a DCD)
     Týmto budú signály na vstupoch,CTS a DCD odpovedajúce
     uvoľneniu prijímača a vysielača.
D5=0 Vstupy DCD a CTS sú iba vstupy odpovedajúce bitom čítacieho
     registra RR0
 _______________________________________________________________
| D7 | D6 | Počet prijatých bitov, ktoré patria jednému znaku
|____|____|_____________________________________________________
| 0  | 0  | 5
| 0  | 1  | 6
| 1  | 0  | 7
| 1  | 1  | 8
|____|____|_____________________________________________________
Pokiaľ bude počet bitov menší ako naprogramovaná dľžka znaku,
možno v každom čase dľžku znaku zmeniť.
                    RIADIACI REGISTER 4  WR4
D0=1 prídavná pozícia bitu pre označenie parity
D1=1 parita: párna bude vyslaná a prijatý znak na ňu preskúšaný
D1=0 parita: nepárna
 _______________________________________________________________
| D3 | D2 | stop bity
|____|____|_____________________________________________________
| 0  | 0  | synchrónny prenos
| 0  | 1  | 1 stop bit
| 1  | 0  | 1 1/2 stop bit
| 1  | 1  | 2 stop bit
|____|____|_____________________________________________________
Určujú počet stop bitov každom vyslanom asynchrónnom znaku.
Prijímač iba preskúša, či aspoň jeden stop bit je k dispozícii.
 _______________________________________________________________
| D5 | D4 | synchronizačný modus
|____|____|_____________________________________________________
| 0  | 0  | 8 bitový synchron. znak
| 0  | 1  | 16 bitový synchron. znak
| 1  | 0  | SDLC mode
| 1  | 1  | externá synchronizácia
|____|____|_____________________________________________________
 _______________________________________________________________
| D7 | D6 | taktovanie - deliteľ
|____|____|_____________________________________________________
| 0  | 0  | 1
| 0  | 1  | 16
| 1  | 0  | 32
| 1  | 1  | 64
|____|____|_____________________________________________________
Určeujú násoiteľ prenosovej rýchlosti ku taktovacej frekfencii.
Pri synchrónej prevádzke musí byť násobiteľ rovný 1.
Pre prijímač i vysielač musí platiť ten istý násobiteľ.
V mode x1 musí byť bitová externá synchronizácia,pričom môžu byť
programované 1 1/2 stop bity. Vo všetkých modoch móže byť
prenosová rýchlosť nanajvýš   systémová frekfencia/4,5.
                    RIADIACI REGISTER 5  WR5
D0=1 uvoľnenie pre spočítanie CRC vysielača. Týmto bude vypočí-
     tané CRC od práve vyslaného znaku. CRC bude vyslané potom,
     keď bude tento bit nastavený.
     ___
D1=1 RTS výstup=0, RTS bit nastavený.
D1=0 RTS bit (požiadavka na vysielanie) zosadený. S týmto vývod
     RTS je v H, avšak v asynchrónnej prevádzke až potom, len čo
     vsetky bity znaku boli vyslané a register vysielača je
     prázdny. V synchrónnej prevádzke odpovedá úroveň vývodu RTS
     stavu bitu.
D2=1 CRC kód  x^16+x^15+x^2+1  (CRC-16) ; voľba CRC 16-polynómu.
     Keď nebol zvolený v móde SDLC, budú CRC generátor a skúšač
     vo všetkých bitoch nastavené na jednotku.
D2=0 CRC kód x^16+x^12+x^5+1   (SDLC) ;vľba SDLC polynómu, platí
     pre vysielač aj prijímač. SDLC-CRC polynóm musí byť zvolený
     keď je potrebný SDLC mód. CRC generátor a skúšač budú vo
     všetký bitoch nastavené na jednotku.
D3=1 uvoľnenie vysielania; skôr než je tento bit nastavený,
     nemôžu byt vyslané žiadne data.
D3=0 keď bude vysielač po začatí vysielania zablokovaný, budú
     práve vysielané data alebo synchronizačne znaky vyslané
     úplne.Ak bude vysielač zablokovaný počas prenosu CRC znaku,
     nasleduje vyslanie synchronizačných znakov alebo flagov.
D4=1 BREAK-podmienka; nastavením tohto bitu bude datový výstup
     vysielača ihneď zapojený na pauzu.
 _______________________________________________________________
| D6 | D5 | počet bitov vyslaných z každého znaku
|____|____|_____________________________________________________
| 0  | 0  | =< 5   počet bitov umiestnených
| 0  | 1  |    7   od najnižších miest
| 1  | 0  |    6
| 1  | 1  |    8
|____|____|_____________________________________________________
                          ||
                          \/
 _______________________________________
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |  dľžka znaku
|____|____|____|____|____|____|____|____|
| 1  | 1  | 1  | 1  | 0  | 0  | 0  | D  | 1 datový bit
| 1  | 1  | 1  | 0  | 0  | 0  | D  | D  | 2 datové bity
| 1  | 1  | 0  | 0  | 0  | D  | D  | D  | 3 datové bity
| 1  | 0  | 0  | 0  | D  | D  | D  | D  | 4 datové bity
| 0  | 0  | 0  | D  | D  | D  | D  | D  | 5 datových bitov
|____|____|____|____|____|____|____|____|
     ___
D7=1 DTR výstup=0  (aktívny)
     ___
D7=0 DTR výstup=1  (neaktívny)
                    RIADIACI REGISTER 6  WR6
obsahuje:
v MONO SYNCHR. MODE - synchronizačný znak vysielača
v BI-SYNC MODE      - spodnú časť 16-bitového synchron. znaku
v SDLC MODE         - adresa bloku dát, s ktorou sa porovnáva
                      obsah adresy SDLC-kanálu.
                    RIADIACI REGISTER 7  WR7
obsahuje:
v BI-SYNC MODE      - hornú časť 16-bitového synchron. znaku
v SDLC MODE         - kódovanie 7EH flagový znak
v MONO SYNCHR. MODE - synchronizačný znak prijímača
                               ***
Prístup ku stavovému registru vyžaduje najprv výstup riadiaceho
slova s adresou registra ako pri zápise do riadiaceho registra.
Potom možno stavový register prečítať. Riadiace vstupné a výstup
pné slovo bude odlíšené od dat. vstupov a výstupov cez pripojený
C/D vstup s adres. bitom ako pri PIO
Každý kanál SIO obvodu  obsahuje  dva, prípadne  tri čítacie
registre,ktoré obsahujú stavovú informáciu.Jeden takýto register
slúži k čítaniu interrupt vektora. Slúži obom kanálom, no je
priradený kanálu B.Adresovanie čítacích registrov je rovnaké ako
u zápisových registrov, rozdiel je iba v prevedení inštrukcie
IN namiesto OUT. Čítanie registra RR2 vyžaduje zápis do WR0,
nasledujúci po prečítaní RR2 CPU.