Nascom Journal

  

März/April 1982 · Ausgabe 3/4

Schnelle
Tastatur-Abfrage

von Josef Zeller

1)Problemstellung

Die Tastaturabfrage und die Ermittlung des Zeichens ist beim Nascom System der CPU uebertragen. Damit wird die CPU mit „Verwaltungsaufgaben belastet, die viel Zeit benoetigen. Diese Zeitbelastung fuer die CPU faellt natuerlich nicht weiter auf, wenn der Rechner darauf wartet, bis der Benutzer eine Taste drueckt. Bei Programmen, die waehrend der Laufzeit die Tastatur abfragen, um z.B. das Auflisten zu stoppen oder das Programm abzubrechen, nimmt die Zeit fuer die Tastaturabfrage einen relativ grossen Teil der Programmlaufzeit in Anspruch. Im folgenden soll eine Moeglichkeit gezeigt werden, wie die Abfrage, ob eine Taste gedrueckt ist, rapide verkuerzt werden kann.

2)Tastaturhardware – Prinzip

Die Tasten beim Nascom 1 sind in einer 8mal6 Matrix (8 Spalten und 6 Zeilen) angeordnet. Am Anfang der Tastaturroutine setzt die CPU ueber „KBD Counter Reset“ die Zaehler auf der Tastaturplatine zurueck. Danach werden ueber „KBD Counter Clock“ die 8 Spalten der Matrix jeweils einmal durch die CPU gepulst, d.h. die Leitungen (D0-D7 siehe Originalschaltbild) werden jeweils einmal auf low gesetzt. Nachdem eine Spalte getaktet wurde, fragt die CPU den Port 00 ab. In diesem Port ist der Zustand der 6 Spalten angegeben. Wird z.B. die Taste „B“ gedrueckt, so wird beim Takten von Spalte D1 die Zeile S3 auf low gesetzt. Ist eines der Bits 0-5 auf low, erkennt die CPU, dass eine Taste gedrueckt wurde, und ermittelt daraus das ASCII-Zeichen. Nur um zu ermitteln, ob ueberhaupt eine Taste gedrueckt wurde, benoetigt die CPU ca. 940 Taktzyklen.

3)Ergebnis

Es wurde also eine Moeglichkeit gesucht, diese Abfrage erheblich zu verkuerzen. Die dazu benoetigte Hardwareaenderung ist minimal. Das Programm benoetigt nur noch 124 Taktzyklen und ist damit ueber 7 mal schneller als das Original. Der Assembler uebersetzt z.B. eine Quelle mit 4,5 Bytes Quelltext statt in 32 sec. in 18 sec.

4)Hardware

Benoetigt wird dazu ein CTC, durch den die Spalten gepulst werden, und ein OR-Gatter, damit entweder der CTC oder die CPU den „KBD Counter Clock“ takten kann.

5)Programm

Das Programm EXTKBD wird anstatt der Nascom Monitorroutine aufgerufen. Der CTC wird initialisiert und gibt alle 16 Takte einen Impuls aus. Die CPU fragt den Zustand von Port 00 ab und kehrt, wenn keine Taste gedrueckt wurde, ins Aufruferprogramm zurueck. Wurde eine Taste gedrueckt, wird die Monitorroutine KBD aufgerufen und das Zeichen ermittelt.

6)Weiterentwicklung

Eine interruptgesteuerte KBD-Routine ist bei mir ebenfalls im Einsatz. Sie ist vom Programmaufwand etwas umfangreicher. Leider ist das Programm noch nicht so ausgereift, um es zu veroeffentlichen. Sobald es aber zuverlaessig funktioniert, wird es nachgeliefert.



Seite 24 von 52