Keyboard Interface Adapter (KIA)
The KIA provides a dedicated PS/2 input controller. It provides a 16-deep FIFO (of which up to 15 bytes can be queued at any given time).
Register Map
Byte Offset | Name | R/W | Purpose |
---|---|---|---|
0 | STAT | R | 8-bit status register |
2 | DATA | R | 8-bit data input port |
2 | POP | W | Strobe to pop the FIFO. |
NOTE. Attempting to access the KIA registers with 16-bit or wider accesses will yield unpredictable results. Always use 8-bit loads when accessing the KIA core.
STAT
Register
Bit | Name | Purpose |
---|---|---|
7-2 |
unassigned | |
1 |
QF |
0 if the KIA input queue is not yet full; 1 if no further data can be accepted. |
0 |
QE |
0 if the KIA input queue is not empty; 1 if the queue is empty. |
DATA
Register
Bit | Name | Purpose |
---|---|---|
7-0 |
DATA |
The head of the PS/2 scancode FIFO. |
NOTE. Multiple reads of this port will return the same byte value. Once a keyboard driver reads a byte from the FIFO, it must "pop the queue" by writing a value to POP
.
POP
Strobe
This write-only register ignores all 8 bits written to it. Its sole purpose is to pop the FIFO, thus revealing the next available byte, if any.