Erschienen in 64'er Magazin, Ausgabe Sonderheft 33 · Originaldatei: HOT_KEYS.TXT
Hinweis: Dies ist das an die Redaktion eingereichte Manuskript, nicht der gedruckte Endtext. Layout, Bildunterschriften, Korrekturen und Kürzungen der Redaktion können in der veröffentlichten Fassung abweichen.
Anleitung zu »Hot Keys 1.2«: Tastatur mit Gedächtnis
Nervt es Sie, wenn Sie den selben Befehl oft mehrmals hintereinander eingeben müssen? Mit unserem Hilfsprogramm ist damit endlich Schluß: »Hot Keys« hält die letzen 500 bis 600 Eingaben auf Tastendruck jederzeit abrufbereit. Außerdem können Sie nun zwei Basicprogramme zugleich im Speicher unterbringen.
Nikolaus M. Heusler
Etwas, das auf größeren Rechnern wie dem Amiga, Atari ST, auf PCs oder gar Großrechneranlagen eine Selbstverständlichkeit ist, war auf dem C 64 bisher nur begrenzt möglich: Eine »Hot Keys« Funktion, die sich alle seit dem Einschalten der Funktion eingegebenen Befehle merkt und sie auf Tastendruck wieder ausgibt. So kann man bestimmte Befehle, die man in Verlauf des Programmierens öfters braucht, ohne umständliches Tippen abrufen. Hat man sich versehentlich einmal vertippt und bereits RETURN gedrückt, kann man den letzten eingegebenen Befehl durch Druck auf eine einzige Taste wieder abrufen und so leicht korrigieren.
Mit dem 8 Blocks kurzen Utility »Hot Keys 1.2« wird so etwas nun auch auf dem C 64/C 128 möglich. Dieses Maschinenprogramm speichert in einem 8 KByte großen Bereich sämtliche Befehle, die der Benutzer eingibt. Läuft der Bereich über (nach ca. 550 Befehlen durchschnittlicher Länge!), wird der allererste Befehl gelöscht und der Puffer aufgerückt. So haben Sie immer die letzten 500 bis 600 Befehle auf Tastendruck abrufbar. Das Programm wird über Fenstertechnik (Windows) und Menüs gesteuert, so daß auch Einsteiger einfach damit umgehen können. In einem Optionsmenü können verschiedene Parameter eingestellt und kontrolliert werden.
In gewissen Grenzen kann man damit sogar viele Basicprogramme gleichzeitig im Speicher halten und wieder abrufen.
Obwohl dieses Tool aus Gründen der Geschwindigkeit und des Komforts vollständig in Maschinensprache geschrieben ist, brauchen Sie keine Assemblerkenntnisse, um damit arbeiten zu können. Es kann wie ein Basicprogramm geladen, gestartet und ggf. kopiert werden.
Laden Sie das Programm mit
LOAD "HOT KEYS 1.2",8
und starten mit RUN. Der Maschinencode wird nun an die dafür vorgesehene Stelle im $C-Bereich kopiert und gestartet. Eine Einschaltmeldung erscheint.
Nun ist das Programm aktiv. Jedesmal, wenn Sie nun im Direktmodus einen Befehl eingeben, wird dieser in einem Puffer unter dem Basic-ROM gespeichert. Sollte der Befehl nicht mehr hineinpassen, so wird der Puffer um die Länge des ersten enthaltenen Befehles, der dabei natürlich verlorengeht, nach vorne gerückt, um Platz zu schaffen. Über vier Funktionstasten, auf die das Programm auch nur im Direktmodus reagiert und nur dann, wenn der Puffer schon Befehle enthält, wird das Utility gesteuert:
<f7> letzten Befehl abrufen
Falls Sie nach dem Start der Routine bereits Befehle eingegeben haben, wird nun der zuletzt eingegebene Befehl wieder ausgegeben (aber noch nicht ausgeführt). Dies wirkt, als ob Sie die entsprechenden Tasten noch einmal drücken. Den Befehl können Sie nun ganz normal mit dem Bildschirmeditor des C64 behandeln, etwas ergänzen oder löschen. Mit RETURN senden Sie den Befehl wie gewohnt ab. Natürlich wird dann auch der neue Befehl wieder gespeichert.
Die f7-Taste zeigt ebenso wie alle anderen Steuertasten keine Reaktion, wenn Sie noch keinen Befehl eingegeben haben.
<f8> letzten Befehl mit RETURN abrufen
Wollen Sie den letzten Befehl noch einmal ausführen, drücken Sie auch <f7>, aber mit SHIFT. Der Unterschied zum alleinigen Druck auf <f7> ist, daß am Ende des Befehles automatisch die RETURN Taste betätigt wird. Diese Funktion sollten Sie also nur anwenden, wenn der letzte eingegebene Befehl korrekt war und erneut ausgeführt werden soll. So können Sie beispielsweise einen PRINT#4 Befehl so oft abschicken, bis das Papier am Drucker die richtige Position erreicht hat. Falls Sie ein Programm mehrmals unter dem gleichen Namen auf verschiedene Disketten speichern wollen, rufen Sie den letzten SAVE "NAME",8 Befehl mehrmals ab. Die Anzahl der Anwendungsmöglichkeiten ist praktisch unbegrenzt.
<f1> »Hot Keys«
Während <f7> und <f8> nur jeweils den letzten Befehl ausgeben, erscheint nach dem Druck auf <f1> ein Fenster auf der Mattscheibe in der aktuellen Cursorfarbe, das eine Liste aller bisher eingegebener Befehle in chronologischer Reihenfolge enthält. Auf dem ersten Befehl sehen Sie einen flimmernden Cursor. Er kann mit den Tasten CRSR UP und CRSR DOWN auf- und abbewegt werden. Paßt die Liste nicht komplett auf den Bildschirm, wird sie nach oben und unten gescrollt, wenn der Cursor das obere oder untere Ende erreicht. Er wird automatisch schneller, wenn Sie ihn längere Zeit bewegen. So können einzelne Befehle exakt angewählt und schnell durch die ganze Liste, die ja theoretisch weit über 500 Zeilen lang sein kann, gescrollt werden. Haben Sie mit dem Cursor den Befehl gefunden, den Sie noch einmal ausgeben lassen wollen, drücken Sie RETURN. Soll der Befehl auch gleich ausgeführt werden, drücken Sie SHIFT RETURN. Der Bildschirminhalt unter dem Fenster wird nun wieder zurückgeholt, und der Befehl erscheint auf dem Schirm.
Wenn Sie die <f1> Taste nur versehentlich gedrückt haben, können Sie mit RUN-STOP die Funktion problemlos wieder verlassen.
Befehle, die zu lang sind, um in das Fenster zu passen, werden entsprechend abgeschnitten, sind aber natürlich noch in voller Länge im Speicher enthalten. Die Breite des Fensters kann im »Optionsmenü« wie folgt eingestellt werden.
<f3> Options - Menü
Nach Druck auf diese Taste erscheint links oben ein Fenster, das »Optionsmenü«. In den unteren Zeilen gibt es Auskunft über den Speicher, in dem die »hot keys« gespeichert werden: Die Positionen im RAM, an denen er beginnt und endet, und wie viele Bytes ungefähr noch frei sind. Da das Ende des Puffers nicht genau festgesetzt ist (es hängt von der Länge des letzten vor dem Überlauf eingegebenen Befehles ab), kann der freie Platz nur abgeschätzt werden. Abweichungen bis 50 Bytes sind möglich. Programmtechnisch sind Fehler in der Abschätzung natürlich ausgeschlossen, es kann nicht passieren, daß der Puffer, dessen Ende etwa bei $BFFF liegt, in den $C-Bereich hineinragt und das Maschinenprogramm zerstört.
Außerdem zeigt das Optionsmenü auch noch an, wie viele Befehle der Puffer momentan enthält.
Die oberen fünf Zeilen stellen das eigentliche Menü dar. Sie sehen wieder einen Cursor, den Sie mit der CRSR UP/DOWN Taste bewegen. Mit CRSR LEFT/RIGHT können Sie im ersten und fünften Menüpunkt die Einstellungen verändern, mit RETURN die drei verbleibenden Funktionen aufrufen.
Mit RUN-STOP wird das Optionsmenü verlassen.
Die Menüpunkte im Einzelnen:
1. TAKE PROGRAM LINES {J/N}
Gewöhnlich werden Basic-Programmzeilen, also Kommandozeilen, die mit einer Ziffer beginnen, nicht gespeichert, da »hot keys« davon ausgeht, daß Sie diese später nicht mehr benötigen bzw. mit LIST abrufen können. Setzen Sie in diesem Menüpunkt den Parameter auf »j«, werden auch Programmzeilen gespeichert. So können Sie zwei Basicprogramm gleichzeitig im Speicher halten: Sie schalten die Option ein und geben das erste Programm ein. Es wird nicht nur im Basic-RAM gespeichert, sondern auch im »hot keys« Speicher. Nun können Sie dieses Programm mit NEW löschen und das zweite eingeben, das wiederum doppelt gespeichert wird. Brauchen Sie nun wieder das erste Programm, so löschen Sie den Basic-Speicher, drücken <f1>, suchen die Programmzeilen des ersten Programmes und übernehmen sie mit SHIFT RETURN.
2. RESET
Da der C 64 serienmäßig keinen Reset-Taster eingebaut hat, wurde diese Funktion, die einen Reset (ohne Sicherheitsabfrage auslöst), in das Optionsmenü eingebaut. Nach dem Reset kann »hot keys« mit SYS 49152 wieder gestartet werden, wobei allerdings der Puffer für die Befehle gelöscht wird.
3. QUIT
Diese Funktion schaltet »hot keys« ab. Dies ist beispielsweise notwendig, wenn ein Programm geladen und gestartet werden soll, das den vom Utility belegten Bereich (siehe Speicherbelegung) benötigt oder den IRQ bzw. IGET Vektor für eigene Zwecke verändert, denn auch »hot keys« arbeitet nach dieser Technik. Es kann übrigens parallel zu einem anderen Utility betrieben werden, das auch den IRQ-Vektor verbiegt, wenn dieses andere vor »hot keys« gestartet wird und nicht den von diesem belegten Bereich benötigt.
Nach dem Beenden mit »QUIT« (Basic-Daten gehen nicht verloren) kann »hot keys« mit SYS 49152 neu gestartet werden, sofern das Maschinenprogramm noch im Speicher ist. Die Funktion »QUIT« kann auch mit SYS 49155 erfolgen.
4. CLEAR MEMORY
Diese Funktion wirkt wie SYS 49152: Der gesamte Befehlsspeicher wird gelöscht. Das Optionsmenü wird jedoch nicht verlassen. Vorsicht: Es erfolgt keine Sicherheitsabfrage!
5. FENSTERBREITE
Die Breite des Fensters, das mit <f1> angezeigt wird, kann von 1 bis 37 Zeichen stufenlos verändert werden (mit der Taste CRSR LEFT/RIGHT). Nach dem Start von »hot keys« ist der Wert 33 Zeichen eingestellt. Der momentane Wert wird neben dem Menüpunkt angezeigt.
Aus technischen Gründen kann es in Ausnahmefällen mit einigen Versionen des Computers vorkommen, daß sich die Funktion »take program lines« (Programmzeilen übernehmen) nicht mehr abschalten läßt. In diesem Fall genügt POKE 164,0, und alles läuft wieder einwandfrei.
Soviel zur Bedienung des Programmes. Sie werden überrascht sein, wie oft Sie die Funktionen des Tools bei der täglichen Programmier-Arbeit benötigen werden. Für Interessierte nun noch die Speicherbelegung der Version 1.2 (hexadezimal):
0002-0003 Schreibhauptzeiger in Befehlsspeicher
0004-0005 letzte Stellung des vorigen (für <f7>)
0006 Flag: Ausgabe in Tastaturpuffer angemeldet
0092 Flag: RETURN am Ende des Befehles
0096 aktuelle Cursorzeile
009b Speicher für Y-Register
009e Flag: Befehl zur Ausgabe beendet
009f Länge des gerade ausgegebenen Befehles
00a4 Flag: Programmzeilen übernehmen
00a5 Cursorzeile im Fenster
00a6-00a7 Zeiger auf Farbram
00a8-00a9 temporär
00aa letzte Taste für allgemeine Tastenabfrage
00ab Anzahl Befehle im Speicher
00b0 Verzögerungsstartwert
00b1 letzte Taste für Fenster
00b2-00b3 Verzögerungszähler für Tasten
00b4 Nummer des gewählten Befehles im Speicher
00b5-00b6 Zeiger für Scrollen
00be Nummer des Menüpunktes unter »Options«
00f7-00fe temporär
0200-0257 Basic Eingabepuffer
029f-02a0 letzter IRQ-Vektor
0313 Breite des Fensters
a000-bfff Speicher für Befehle (Trennzeichen: Nullbyte)
c000-c73b Maschinenprogramm »hot keys 1.2«