Partner WFG, 2FG, 1FG – CELOVIT OPIS STROJNE OPREME

9. SERIJSKA VRATA (Z80 SIO)

===========================

Partner vsebuje dva čipa Zilog Z80 SIO (Serial Input/Output), vsak z dvema neodvisnima serijnima kanaloma. SIO 1 na priključkih 0xD8–0xDB obsluguje tipkovnico (kanal A) in tiskalnik (kanal B). SIO 2 na priključkih 0xE0–0xE3 skrbi za komunikacijo z gostiteljem oziroma sistemom VAX (kanal A) in pomožno serijsko linijo (kanal B). Bit 0 naslova izbira med podatkovnim in nadzornim registrom; bit 1 izbira med kanaloma A in B.

9.1   SIO 1: tipkovnica in tiskalnik (0xD8–0xDB)

PriključekDecOpisSmerOpomba
0xD8216Podatki – kanal AV/ITipkovnica
0xD9217Nadzor – kanal AV/IStanje in konfiguracija tipkovnice
0xDA218Podatki – kanal BV/ITiskalnik
0xDB219Nadzor – kanal BV/IStanje in konfiguracija tiskalnika

9.2   SIO 2: gostitelj / VAX (0xE0–0xE3)

PriključekDecOpisSmerOpomba
0xE0224Podatki – kanal AV/IGostitelj / VAX
0xE1225Nadzor – kanal AV/IStanje in konfiguracija
0xE2226Podatki – kanal BV/IPomožna serijska linija
0xE3227Nadzor – kanal BV/IStanje in konfiguracija
0xE4228Vzporedni naslov podatkov AVhodAlias za 0xE0 v tej razporeditvi

9.3   Najpomembnejši biti stanja (RR0)

BitImeOpis
0RX_AVAILSprejeti znak na voljo za branje
2TX_EMPTYOddajni vmesnik prazen, pripravljen za pošiljanje
3DCDZaznana prisotnost nosilca (Data Carrier Detect)
5CTSJasno za pošiljanje (Clear to Send)
Partner WFG, 2FG, 1FG – CELOVIT OPIS STROJNE OPREME

9.4   Primer: pošiljanje znaka prek SIO 2 kanal A

Primer: Inicializacija SIO 2 kanal A in pošiljanje znaka
init_sio2:
        ; --- WR0: Ponastavi kanal A ---
        ld      a, #0x18            ; Ukaz: ponastavi kanal
        out     (#0xE1), a

        ; --- WR4: Nastavitev enote (x16 takt, 1 stop bit, brez paritete) ---
        ld      a, #0x04            ; Izberi WR4
        out     (#0xE1), a
        ld      a, #0x44            ; x16 takt, 1 stop bit, brez paritete
        out     (#0xE1), a

        ; --- WR3: Omogoči sprejemnik (8 bitov / znak) ---
        ld      a, #0x03            ; Izberi WR3
        out     (#0xE1), a
        ld      a, #0xC1            ; 8 bitov, sprejemnik omogočen
        out     (#0xE1), a

        ; --- WR5: Omogoči oddajnik (8 bitov / znak) ---
        ld      a, #0x05            ; Izberi WR5
        out     (#0xE1), a
        ld      a, #0xEA            ; DTR, 8 bitov, oddajnik omogočen, RTS
        out     (#0xE1), a

        ret

pošlji_znak:
        ; Počakaj, da je oddajni vmesnik prazen
.cakaj:
        in      a, (#0xE1)          ; Preberi RR0
        bit     2, a                 ; TX_EMPTY (bit 2)
        jr      z, .cakaj            ; Čakaj, če ne prazen

        ; Pošlji znak v registru C
        ld      a, c
        out     (#0xE0), a          ; Zapiši na podatkovni register

        ret