Zilog Z80 PIO (Parallel Input/Output) je krmilnik vzporednih vrat z dvema neodvisnima 8-bitnima priključkoma (A in B). Na računalniku Partner skrbi za vzporedno komunikacijo z zunanjimi napravami. Podpira štiri načine delovanja: izhod, vhod, dvosmernost in bitni nadzor. Priključki so na naslovih 0xD0–0xD3.
| Priključek | Dec | Opis | Smer | Opomba |
|---|---|---|---|---|
0xD0 | 208 | Podatki – vrata A | V/I | 8-bitni podatkovni register |
0xD1 | 209 | Nadzor – vrata A | V/I | Nadzorni in vektorski registri |
0xD2 | 210 | Podatki – vrata B | V/I | 8-bitni podatkovni register |
0xD3 | 211 | Nadzor – vrata B | V/I | Nadzorni in vektorski registri |
Način delovanja za vsaka vrata se nastavi z ukazom 0x0F v nadzorni register. Zgornja dva bita besede določata način (M1, M0):
| M1 | M0 | Način | Opis |
|---|---|---|---|
| 0 | 0 | Izhod | CPU piše na vrata |
| 0 | 1 | Vhod | CPU bere iz vrat |
| 1 | 0 | Dvosmerni | Samo vrata A; B je vhod za odziv |
| 1 | 1 | Bitni nadzor | Vsak bit nastavljiv posebej |
init_pio:
; Nastavi vrata A v izhodni način (M1=0, M0=0 → 0x0F)
ld a, #0x0F ; Ukaz: nastavi način
out (#0xD1), a ; Pošlji na nadzorni register A
; Onemogoči prekinitve za vrata A
ld a, #0x03 ; Ukaz: nadzor prekinitev (EI=0)
out (#0xD1), a
; Zapiši bajt na vrata A
ld a, #0xAA ; Podatek (vzorec 10101010)
out (#0xD0), a ; Zapiši na podatkovni register A
ret