Basic auf Tastendruck
Beim Programm KEYS handelt es sich um ein Maschinenprogramm, das den Bereich $C000 - $C26B benötigt. Es erweitert das Basic um die beiden Befehle »KEY« und »DISPLAY«, mit denen die Funktionstasten belegt werden können beziehungsweise diese Belegung angezeigt werden kann. Zusätzlich können die wichtigsten Basic-Befehle durch gleichzeitiges Drücken von CTRL und einer Buchstabentaste »auf Knopfdruck« auf den Bildschirm geschrieben werden, was die Programmierarbeit doch sehr vereinfachen kann.
Bei der Initialisierung mit SYS 49152, die der Basic-Lader automatisch vornimmt, werden die Vektoren auf die Routine »Basic-Statement ausführen« und die Tastaturabfrage auf $C014 beziehungsweise $C11D verbogen.
Die beiden neuen Befehle werden an einem vorangestellten »!« erkannt, anschließend prüft das Programm auf die Anfangsbuchstaben K und D ($C014 - $C02D). Folgt keiner dieser Buchstaben, so wird ein »SYNTAX ERROR« ausgegeben ($C02E). Andernfalls verzweigt es nach $C031 (KEY) beziehungsweise $C0A7 (DISPLAY).
Der »KEY«-Befehl hat das Format !KEY N, »Befehl«. Hierbei muß N zwischen eins und zwölf liegen, der Befehl darf maximal neun Zeichen umfassen, wobei Anführungszeichen durch das Hochkomma zu ersetzen sind. Ein anschließendes RETURN erreicht man durch Eingabe von »£« als letztes Zeichen.
Die Funktionstasten F1 bis F8 werden wie üblich, die Tasten F9 bis F12 durch gleichzeitiges Drücken von »C=« und einer F-Taste erreicht.
Beispielsweise bewirkt !KEY 9, »RUN£«, daß nach gleichzeitigem Drücken von »C=« und »F1« ein Basic-Programm gestartet wird.
Der »DISPLAY«-Befehl hat das Format !DISPLAY und läßt sich ebenfalls auf eine Funktionstaste legen. Er bewirkt ein Löschen des Bildschirms und die Anzeige der Belegung der 12 Funktionstasten.
Die neue Tastaturabfrageroutine prüft zunächst, ob die Control-Taste gedrückt ist. Ist dies der Fall und ist die gleichzeitig gedrückte Taste belegt, so wird aus einer Tabelle ($C1A8-$C1DE) das Token des Befehls minus $7F geladen und mit dessen Hilfe der ASCII-Code der Buchstaben des Befehls aus der Tabelle der Basic-Befehlsworte geholt. Die einzelnen Buchstaben werden in den Tastaturpuffer geschrieben und ausgegeben.
Ist die Control-Taste nicht gedrückt, so wird geprüft, ob eine Funktionstaste gedrückt ist. Wenn ja, wird mit Hilfe des Tasten-Codes die Adresse der Belegung berechnet und die einzelnen Zeichen in den Tastaturpuffer geschrieben und ausgegeben.
(Klaus Russell / rg)Gliederung des Programms:
$C000-$C013 | Initialisierung |
$C014-$C020 | Prüfen auf »!« |
$C021-$C02D | Prüfen auf »K« oder »D« |
$C02E | Ausgabe »SYNTAX ERROR« |
$C031-$C0A6 | »KEY«-Befehl |
$C0A7-$C11C | »DISPLAY«-Befehl |
$C11D-$C1AA | Tastaturabfrage |
$C1AB-$C1DE | Tokens - $7F |
$C1DF-$C1EA | [CLR/HOME] »!DISPLAY« 2*Carriage Return |
$C1EB-$C1EF | »!KEY« |
$C1F0-$C1FB | Hilfswerte zur Berechnung der Adressen der F-Tasten-Belegung |
$C200-$C26C | Belegung F-Tasten |
Benutzte Routinen:
$A7E7 | Basic-Statement ausführen |
$AB1E | String ausgeben |
$AEFD | Prüft auf Komma |
$AF08 | »SYNTAX ERROR« ausgeben |
$B79E | Holt Byte-Wert nach X |
$EB3C | $EB42, alte Tastaturabfrage |
$EB48 | Prüft auf SHIFT, CTRL, C= |
$FFD2 | Ausgabe eines Zeichens |
$0073 | Holt nächstes Zeichen |
Belegung der Tastatur (mit Control):
Taste | Code (PEEK(203)) | Befehl |
+ | 40 | SIN |
- | 43 | COS |
£ | 48 | TAN |
F1 | 4 | RUN |
F3 | 5 | LIST |
F5 | 6 | LOAD |
F7 | 3 | SAVE |
W | 9 | WAIT |
E | 14 | END |
R | 17 | RETURN |
T | 22 | TO |
Y | 25 | SYS |
U | 30 | USR |
I | 33 | INPUT |
0 | 38 | OPEN |
P | 41 | POKE |
@ | 46 | CONT |
* | 49 | SQR |
↑ | 54 | --- |
A | 10 | ABS |
S | 13 | STEP |
D | 18 | DATA |
F | 21 | FOR |
G | 26 | GOTO |
H | 29 | THEN |
J | 34 | READ |
K | 37 | RIGHT$ |
L | 42 | LEFT$ |
: | 45 | INT |
; | 50 | LOG |
Z | 12 | GOSUB |
X | 23 | PEEK |
C | 20 | CLOSE |
V | 31 | VAL |
B | 28 | RESTORE |
N | 39 | NEXT |
M | 36 | MID$ |
, | 47 | TAB( |
. | 44 | SPC( |
CRSR↕ | 7 | EXP |
CRSR↔ | 2 | CONT |
Die Belegung läßt sich folgendermaßen ändern: Man sucht den Code der Taste, deren Belegung man ändern will, aus obiger Tabelle und addiert 49579 dazu. Nun subtrahiert man vom Token des gewünschten Befehls 127 und POKEt diesen Wert in die zuerst errechnete Adresse. Will man zum Beispiel die F1-Taste mit »VERIFY« belegen, so sieht das wie folgt aus: F1 hat den Code 4 (siehe Tabelle). Das Token für VERIFY ist 149.
Nun gibt man ein: POKE 49579 + 4,(149-127)
Danach ergibt <CTRL> zusammen mit F1 die Ausgabe von »VERIFY« auf dem Bildschirm. Die so geänderte Belegung läßt sich dann mit einem Monitorprogramm abspeichern. Sollen auch die Belegungen der mit !KEY belegbaren F-Tasten gespeichert werden, so muß der Bereich $C000 bis $C26B geSAVEt werden.