Klawiatura Atari to typowa klawiatura matrycowa (nie licząc klawiszy "funkcyjnych"). Odczyt jest realizowany przez układ POKEy z pomocą 2 multiplekserów analogowych CD4051.
POKEy za pomocą linii K3...K5 wybiera wiersz matrycy klawiatury, na który podaje masę (przez rezystor 100R), natomiast za pomocą linii K0...K2 wybiera kolumnę, której stan odczytuje przez wejście KR1 (podciągnięte do Vcc przez rezystor 47kR). Nieco inaczej są odczytywane klawisze Break, Control i Shift. Używane jest do tego wejście KR2 (również podciągnięte do Vcc przez rezystor 47kR), które jest podłączone na stałe do kolumny klawiatury, w której są te klawisze.
Teraz pora na pytanie - jak rozwiązano komunikację PICa z POKEYem w AKI? Podłączone są tam jedynie linie KR1, KR2 oraz K0 i K5. Jak sądzę, wewnętrznie generowane są opóźnienia, wyzwalane początkiem skanowania wierszy/kolumn i na ich podstawie wystawiane są odpowiednie stany na KR1 i KR2. Dlaczego to jest aż tak przekombinowane. PIC przecież ma dość pinów GPIO, aby mógł "widzieć" wszystkie 6 linii Kn i nie byłoby problemu z timingami.
Przygotowałem "znormalizowaną" (po adresach) mapę klawiszy: