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 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: 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 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. letzten Befehl mit abrufen Wollen Sie den letzten Befehl noch einmal ausführen, drücken Sie auch , aber mit . Der Unterschied zum alleinigen Druck auf ist, daß am Ende des Befehles automatisch die 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. »Hot Keys« Während und nur jeweils den letzten Befehl ausgeben, erscheint nach dem Druck auf 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 und 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 . Soll der Befehl auch gleich ausgeführt werden, drücken Sie . Der Bildschirminhalt unter dem Fenster wird nun wieder zurückgeholt, und der Befehl erscheint auf dem Schirm. Wenn Sie die Taste nur versehentlich gedrückt haben, können Sie mit 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. 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 Taste bewegen. Mit können Sie im ersten und fünften Menüpunkt die Einstellungen verändern, mit die drei verbleibenden Funktionen aufrufen. Mit 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 , suchen die Programmzeilen des ersten Programmes und übernehmen sie mit . 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 angezeigt wird, kann von 1 bis 37 Zeichen stufenlos verändert werden (mit der Taste ). 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 ) 0006 Flag: Ausgabe in Tastaturpuffer angemeldet 0092 Flag: 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«