Die frühen Heimcomputer besaßen auf der Tastatur in der Regel noch keinen abgetrennten Ziffernblock. Für die schnelle Eingabe von Zahlenkolonnen in einer Tabellenkalkulation oder Buchhaltungssoftware erwies sich ein solcher Ziffernblock mit Tasten in Taschenrechner-Anordnung aber als überaus komfortabel. Atari lieferte für seine Heimcomputer ab 1981 daher eine separate, numerische Tastatur nach, die sich an den üblichen Controller-Port anschließen ließ. Neben den Ziffern 0 bis 9 gab es ein Dezimaltrennzeichen, eine Minus-Taste, eine Enter-Taste und vier Funktionstasten.
Kernelement der numerischen Tastatur ist der Encoder MM74C923. An die Ausgänge X und Eingänge Y können insgesamt 20 Tasten in 4×5-Matrix-Anordnung angeschlossen werden. Eine Seite jedes Tasters hängt an einem X-Ausgang, die andere Seite an einem Y-Eingang. Der Encoder legt nun nacheinander einen der Ausgänge X auf Masse. Die Geschwindkeit, in der dies passiert, wird durch den Kondensator C3 an Pin 6 (OSC) beeinflusst. Die Eingänge Y sind normalerweise HIGH
. Sollte einer der Eingänge auf LOW
wechseln, kann der Encoder aus dem Ausgang, der gerade auf Masse gezogen wurde, und dem Eingang der gerade auf LOW
liegt, schlussfolgern, welche der 20 Tasten gedrückt wird.
Diese Information wird in eine 5-stellige Bitmaske codiert und an den Ausgängen A bis E ausgegeben. Gleichzeitig wird über ein HIGH
-Signal am Ausgang DA (Pin 13) signalisiert, dass eine Taste gedrückt wurde und die codierte Tasteninformation jetzt ausgelesen werden kann. Anschließend laufen die Ausgänge A bis E und DA jeweils durch einen Inverter, welcher die HIGH
-LOW
-Signale umkehrt.
Der an Pin 7 (KBM) angeschlossene Kondensator C2 hat die Aufgabe die Tastenanschläge zu entprellen, da es sonst vorkommen könnte, dass ein Tastenanschlag mehrfach registriert wird.
Signalweg | Bitmaske (EDCBA) | Taste | nach Invertierung (EDCBA) |
---|---|---|---|
X1→Y1 | 00000 | - | 11111 |
X2→Y1 | 00001 | Enter | 11110 |
X3→Y1 | 00010 | . | 11101 |
X4→Y1 | 00011 | 0 | 11100 |
X1→Y2 | 00100 | 3 | 11011 |
X2→Y2 | 00101 | 2 | 11010 |
X3→Y2 | 00110 | 1 | 11001 |
X4→Y2 | 00111 | Yes | 11000 |
X1→Y3 | 01000 | 9 | 10111 |
X2→Y3 | 01001 | 8 | 10110 |
X3→Y3 | 01010 | 7 | 10101 |
X4→Y3 | 01011 | No | 10100 |
X1→Y4 | 01100 | 6 | 10011 |
X2→Y4 | 01101 | 5 | 10010 |
X3→Y4 | 01110 | 4 | 10001 |
X4→Y4 | 01111 | Delete | 10000 |
X1→Y5 | 10000 | nicht definiert | |
X2→Y5 | 10001 | nicht definiert | |
X3→Y5 | 10010 | nicht definiert | |
X4→Y5 | 10011 | Escape | 01100 |