VC 20
Tastaturpieps

Tastaturpieps

Bei einem Besuch in einer Bank sah ich dort einige größere Computer, die jeden Tastendruck des Bedieners mit einem Piepston quittierten. Dies wollte ich auch beim C 64 nachvollziehen.

Dies sollte unabhängig von einem anderen Programm sein. Daher meine Idee, die Interruptroutine des C 64 zu verändern, da diese 60mal in der Sekunde angesprochen wird, um die Tastatur abzufragen. Dies konnte natürlich nur in Maschinensprache geschehen, da Basic zu langsam wäre. Es ist auch möglich, schon vorhandene Programme damit zu erweitern. Denkbar sind zum Beispiel Textprogramme, Spiele, Programme zum Erlernen des Schreibmaschinenschreibens oder auch nur zur Simulation einer echten Schreibmaschine, die ja auch nicht gerade geräuschlos arbeitet.

Zu Beginn des Programms ($033C-$0348) wird der Interruptvektor verbogen. Er zeigt jetzt auf unsere Routine ($0349-$039E). Da der Computer alle 1/60-Sekunde die Tastatur abfragt, und dazu einen Interrupt auslöst, wird unsere Routine ebenfalls so häufig angesprochen. In dieser Routine wird zuerst überprüft ob überhaupt eine Taste betätigt wurde. Dazu wird der Wert der Speicherstelle $CB in den Akkumulator geladen. Enthält diese den Wert $40, so wurde keine Taste gedrückt und es wird zur normalen Interruptroutine des C 64 gesprungen. Der Wert der Speicherstelle $CB wird zwischengespeichert. Man kann damit bei einem 2. Durchlauf dieser Routine feststellen, ob eine Taste nicht kurz zuvor (t <1/60 sec.) schon einmal betätigt wurde. Dies dient dazu, daß bei Tasten mit Dauerfunktion nicht unaufhörlich der Pieps ertönt. Denn dies ist erstens entnervend und zweitens verzögert dies den Ablauf der Dauerfunktion so, daß man dabei einschlafen kann. Danach werden die verschiedenen Toneinstellungen vorgenommen. Der Verzögerungsteil ($037F-$0387) dient dazu, den Ton höher zu machen. Ansonsten wäre nur ein Knacken zu hören. Sie können also selbst damit experimentieren und einen für Sie angenehmen Ton einstellen. Das Programm läßt sich durch Drücken der Run/Stop- und der Restore-Taste unterbrechen und mit SYS 49152 reaktivieren.

(Wolfgang Roth / rg)
1 data120,162,13,160,192,142,20,3,140,21,3,88,96,165,203,201,64,208,8,169
2 data203,141,0,193,76,49,234,165,203,205,0,193,208,3,76,49,234,169,15
3 data141,24,212,169,3,141,5,212,169,242,141,6,212,169,26,141,1,212,169
4 data5,141,0,212,169,33,141,4,212,160,69,162,255,202,208,253,136,208,248
5 data169,0,141,4,212,141,5,212,141,6,212,165,203,141,0,193,76,49,234,0
6 data0,0
10 fora=1to99
20 read b : s=s+b :poke 49151+a,b
30 next a
40 if s <> 12111 then print chr$(147) : print"fehler in datas !" : end
50 print chr$(147) : print"ok !" : sys49152
60 print"{down}dies ist die version,welche ab $c000":print"{down}gespeichert wird !";
70 print" unterbrochen wird":print"{down}sie mit run/stop & restore tastendruck !"
80 print"{down}restart mit sys49152 !"
90 end
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →