C 64
Basic auf Tastendruck

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.

0 poke53280,0:poke53281,0:print"{clr}"
1 print"***************************
2 print"**                       **
3 print"**     basic-befehle     **
4 print"**    auf tastendruck    **
5 print"**  +12 funktionstasten  **
6 print"**                       **
7 print"**      k. russell       **
8 print"**      luisenstr.28     **
9 print"**      5100 aachen      **
10 print"**                       **
11 print"***************************
20 :
30 a=49152:e=49659:print:print
40 print"bitte etwas geduld: ich lese daten!
60 fori=atoe:readx:s=s+x:pokei,x:next
70 ifs<>60722thenprint"data error":end
80 fori=49660to49771:pokei,0:next
90 sys49152 : rem initialisierung
100 print"{clr}die funktionstasten sind jetzt 3-fach   belegbar mit:
110 print"{down}      !key #,"chr$(34)"kommando"chr$(34)
120 print"{down}ein anschliessendes return ist mit "chr$(34)"\"chr$(34)
130 print"als letztem zeichen des kommandos zu er-reichen.
140 print"{down}das kommando darf maximal 9 zeichen um- fassen.
150 print"{down}!display zeigt die belegung der f-tastenan.
160 print"{down}die meisten basic-befehle sind mit      <ctrl> + anfangsbuchstabe ";
170 print"des befehls   abrufbar.
190 :
200 data169,20,141,8,3,162,192,142,9,3,232,142,144,2,169,29,141,143,2,96
201 data32,115,0,201,33,240,6,32,121,0,76,231,167,162,0,32,115,0,201,75,240
202 data7,201,68,240,121,76,8,175,32,115,0,221,237,193,208,245,232,224,2
203 data208,243,32,115,0,32,158,183,224,0,208,5,162,14,108,0,3,224,13,16
204 data247,189,239,193,133,251,169,194,133,252,234,234,234,32,253,174,201
205 data34,240,5,162,22,108,0,3,160,255,200,192,9,16,29,32,115,0,201,34,240
206 data39,201,39,240,11,201,92,208,9,169,13,145,251,76,141,192,169,34,145
207 data251,76,107,192,32,115,0,201,34,240,5,162,23,108,0,3,192,8,16,5,200
208 data169,0,145,251,162,128,108,0,3,32,115,0,221,226,193,208,136,232,224
209 data6,208,243,169,223,160,193,32,30,171,169,1,72,169,235,160,193,32,30
210 data171,104,170,201,10,48,9,169,49,32,210,255,138,56,233,10,24,105,48
211 data32,210,255,169,44,32,210,255,169,34,32,210,255,189,239,193,24,105
212 data0,133,251,169,0,168,105,194,133,252,177,251,240,20,201,34,208,2,169
213 data39,201,13,208,2,169,92,32,210,255,200,192,9,208,232,169,34,32,210
214 data255,169,13,32,210,255,232,138,201,13,208,162,240,133,173,141,2,201
215 data4,240,79,162,3,228,203,240,8,232,224,7,208,247,76,72,235,228,197
216 data240,249,134,197,201,3,16,52,201,0,240,12,232,232,232,232,201,1,240
217 data4,232,232,232,232,216,169,0,224,3,240,8,24,105,9,202,224,3,208,248
218 data170,160,0,200,189,0,194,153,118,2,201,0,240,5,232,192,9,48,240,132
219 data198,76,66,235,162,2,228,203,240,7,232,224,51,208,247,240,175,189
220 data171,193,240,170,228,197,240,166,134,197,170,160,255,202,240,8,200
221 data185,158,160,16,250,48,245,200,185,158,160,48,6,157,119,2,232,208
222 data244,56,233,128,76,60,235,255,255,27,21,11,28,20,62,0,19,55,0,14,42
223 data1,0,0,15,4,0,33,2,37,67,0,31,10,0,13,40,56,70,0,6,8,0,75,74,32,3
224 data64,24,73,63,39,54,27,36,65,59,61,255,147,33,68,73,83,80,76,65,89
225 data13,13,0,33,75,69,89,0,9,45,18,54,27,63,0,36,81,90,99,72
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →