Od strony ULI, bo to są wejścia.
Klawiatura działa tak, że ROM (czy inny program) wykonuje operacje IN z adresowaniem 16-bitowym, przy czym niższy bajt to jest 254 (adres ULA), a wyższy - z tylko jednym bitem równym zero (pozostałe bity w stanie wysokim).
Logiczne zero podane na jednej linii (spośród A8..A15) "wchodzi" na matrycę klawiatury, przecinając się z pięcioma liniami danych (ale nie D0..D4 procesora, tylko wejść KB0..KB4 układu ULA). Normalnie te 5 linii jest w stanie wysokim (rezystory pull-up do plusa zasilania), zatem wciśnięcie klawisza zmieni stan odpowiadającej linii KBx z wysokiego na niski (bo jest zwierane do linii adresowej Ax ze stanem niskim). Stan wejść KB0..KB4 ULA "wystawia" na linie danych procesora (D0..D4), dostawiając jeszcze stan wejścia magnetofonowego na którejś z linii D5..D7.
Wszystko dzieje się w ciągu jednej instrukcji procesora IN x, (n) - wystawienie 16-bitowego adresu, /IORQ w dół, /RD w dół - i wtedy pojawiają się na szynie D0..D4 dane odpowiadające wciśnięciom na danej linii matrycy klawiatury. Odczyt całej klawiatury to sekwencja ośmiu instrukcji IN.