Stand: 26.04.1998 (A.Bertram) ATARI-Tastaturcodes (Matrixcodes): ---------------------------------- Zweite Matrix: (KR2) 00-07: CTRL 10-17: SHIFT 30-37: CTRL Erste Matrix: (KR1) 00: L 20: , 01: J 21: 02: ; 22: . 03: ??? 23: N 04: ??? 24: ??? 05: K 25: M 06: + 26: / 07: * 27: 08: O 28: R 09: ??? 29: ??? 0A: P 2A: E 0B: U 2B: Y 0C: 2C: 0D: I 2D: T 0E: - 2E: W 0F: = 2F: Q 10: V 30: 9 11: 31: ??? 12: C 32: 0 13: ??? 33: 7 14: ??? 34: 15: B 35: 8 16: X 36: < 17: Z 37: > 18: 4 38: F 19: ??? 39: H 1A: 3 3A: D 1B: 6 3B: ??? 1C: 3C: 1D: 5 3D: G 1E: 2 3E: S 1F: 1 3F: A Beachte: Für die Hardwareauszählung der Matrix ist der Zählerstand zu invertieren da dieser offensichtlich rückwärts zählt (dekrementiert wird). POKEY-Register in Sachen Tastatur: ---------------------------------- $D209: 76543210 ..xxxxxx Scancode (s.o.) der beim Matrixabtasten eingelesen wurde .1...... SHIFT ist gedrückt 1....... CTRL ist gedrückt $D20E: 0....... BREAK Taste löst INT im BESY aus. $D20F: ....1... SHIFT ist gedrückt .....1.. letzte Taste ist weiterhin gedrückt ATARI-BESY-Register: -------------------- $02D9: Anzahl der VBIs mit gleichem Tastendruck bei dem REPEAT-MODE gestartet wird $02DA: Wiederholfrequenz des REPEAT-MODE (VBI-Anzahl) Arbeitsweise der ATARI-Tastatur: -------------------------------- Die Tasten START, SELECT und OPTION sind direkte Eingaenge des GTIA Chips. Fuer jede dieser Tasten existiert eine Leitung die ein TTL Signal, L bei gedrückter Taste, liefert. Diese Tasten arbeiten unabhängig von der Tastaturmatrix und sind deshalb jederzeit über das entsprechende Register im GTIA abrufbar. Die RESET Taste wirkt bei den XL-Rechnern direkt auf den Prozessor. Ein L-Pegel auf dieser Leitung bringt die CPU zum Stillstand, nach dem Loslassen zum Neuanlauf. Diese Taste ist sogesehen durch ein Programm nicht abfragbar. Vorsicht bei XE Rechnern! Die RESET-Taste wirkt hier nur auf einen 555 - Timerschaltkreis der einen RESET-Impuls automatisch generiert. D.h. bei laengerem druecken der RESET-Taste wird automatisch ein loslassen nach ein paar ms simuliert. Dies stellt meiner Meinung nach fuer bestimmte Anwendungen einen Nachteil dar, da man den Prozessor nicht per Tastendruck im RESET halten kann. Die Tasten BREAK, SHIFT und CONTROL muessen unabhaengig von bzw. gleichzeitig mit allen anderen Tasten abfragbar sein, deshalb ist für diese Tasten ein spezieller Abfragemechanismus des POKEY zuständig, siehe spaeter zu Matrix 2. Alle uebrigen Tasten, auch die HELP-Taste, sind in der ATARI-Tastaturmatrix (Matrix1) vereint. Der Vorteil einer Matrix besteht in der Anzahl der Leitungen. Normalerweise waeren fuer nahezu 64 Tasten auch 64 Leitungen notwendig. Wenn man aber die Tasten sehr schnell nacheinander abfragt, kann man die Anzahl der notwendigen Leitungen stark reduzieren. Dies macht der POKEY-Chip im ATARI. Es werden alle 64 moeglichen Tasten sehr schnell (im 32 Mikrosekundentakt) abgefragt, dadurch laesst sich die Anzahl der notwendigen Leitungen auf 8 reduzieren. Die o.g. Tasten sind in Zeilen und Spalten organisiert, d.h. jeder Taste in der Matrix ist eine definierte Zeilen-, und eine definierte Spaltennummer zugeordnet. Die Abfrage einer Matrixtastatur geschieht nun folgendermassen. Es wird die Zeile 1 aktiviert. In dieser Zeile befinden sich 8 Spalten (Tasten). Der Reihe nach werden nun alle 8 Spalten abgefragt, falls eine dieser Tasten gedrueckt ist wird dies vermerkt. Anschliessend wird mit der Zeile 2, nach Zeile 3.... bis 8 fortgefahren. Zum aktivieren der Zeilennummern 1..8 braucht der POKEY (binaer codiert) nur 3 Ausgaenge. Ebenfalls 3 zum Abtasten der Spaltennummer 1..8, d.h. 6 Ausgaenge sind nötig um 64 Tasten in Zeilen und Spalten abzufragen. Falls eine Taste gedrueckt wurde, so weiss der POKEY nun die Zeilen und die Spaltennummer der Taste. Diese beiden Nummern werden binaer codiert, so das es möglich ist der Taste eine Nummer zwischen 1.. 64 eindeutig zuzuordnen. Diese Nummer wird Matrixcode oder Scancode genannt. (Da ich den Ausdruck Scancode für die PC-Tastatur verwende, fuer den ATARI nun der Ausdruck Matrixcode um Verwechslungen vorzubeugen). Der POKEY sendet also beim Abfragen der Tastatur die Scancodes 1..64 in schneller Wiederholung. Immer wenn eine Taste gedrueckt ist gibt diese in dem Moment indem der entsprechende Matrixcode ausgegeben wurde einen Impuls an den POKEY zurueck. Somit weiss der POKEY welche Taste gerade gedrückt ist. Werden mehrere Tasten gleichzeitig gedrückt so ist immer die letzte in der Matrix gültig. Da man die SHIFT. CONTROL und BREAK Taste gleichzeitig mit anderen Tasten zusammen drücken kann, werden diese drei Sondertasten über eine zweite Matrix abgefragt. Aufgabe von AKI ist es nun diese Signale korrekt, je nach gedrueckter PC-Taste zu simulieren, d.h. je nach ausgegebener Nummer im richtigen Moment zu reagieren und einen Impuls an den POKEY zu senden. Da wie schon oben erwähnt nur 32 Mikrosekunden zur Verfügung stehen, muss der Prozessor auf der AKI Platine (ab jetzt PIC genannt) sehr schnell reagieren. Dies ist kein Problem, da die PIC Prozessoren sehr schnell sind (ca. 10-25 Mikrosekunden). Diese 10-25 Mikrosekunden schwanken sehr stark, da unter Umständen das von der PC-Tastatur hereinkommende Signal ebenfalls gleichzeitig abgetastet werden muss. Dem POKEY hat die Reaktionszeit des AKIs bis jetzt aber immer gereicht. Um Verbindungen zum POKEY zu sparen, fragt AKI aber nur das niedrigste und das hoechstwertige bit dieses Zaehlers ab. Alle anderen kann der PIC selbst generieren. Es sind also fuer die komplette 2 Matrix-Emulation nur 4 Leitungen notwendig, 2 Ausgaenge vom POKEY (Zaehlerausgaenge) und 2 Eingaenge (je eine Rückmeldung von einer Matrix). Weiterhin sind 4 Leitungen für das Aus- geben von START, SELECT, OPTION und RESET notwendig. AKI verfügt weiterhin über einen Ramdisk-Ausgang. Dieser PIN wird waehrend des RESET-Zustandes gesetzt oder rueckgesetzt (F8 oder SHIFT-F8) es laesst sich dadurch eine Ramdisk absturzfrei um- schalten. Man kann also sehr bequem zwischen den 'beiden Rechnern' hin und herschalten.