Erschienen in 64'er Magazin, Ausgabe unbekannt · Originaldatei: HISTORY.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.
Der C 64 schreibt Geschichte
»History« ist ein einmaliges Tool für den C 64. Einmal installiert, speichert es sämtliche Eingaben. Alle Befehle können dann mit wenigen Tastendrücken beliebig oft ggf. auch verändert wieder abgerufen werden. Zwei Ausrufezeichen genügen beispielsweise, um das zuletzt gegebene Kommando zu wiederholen. Das von Großrechenanlagen bekannte Feature bietet unter anderem auch eine Liste aller bisher eingegebenen Befehle. Dank stark optimierter Maschinensprache ist History nicht nur sehr schnell, sondern arbeitet auch äußerst zuverlässig, ohne dabei auch nur ein Byte des Basic-Speichers zu belegen.
Nikolaus M. Heusler
»History« erlaubt es Ihnen, Teile zuvor eingegebener Kommandos in dem Befehl zu verwenden, den Sie gerade eingeben. Dies erleichtert Korrekturen und die Wiederholung komplizierter Befehle oder Argumente.
Obwohl das Programm aus Gründen des Komforts und der Geschwindigkeit vollständig in Maschinensprache geschrieben ist, brauchen Sie zur Anwendung keinerlei Assemblerkenntnisse. History kann wie normales Basic geladen und gestartet werden. Um das Tool in Betrieb zu nehmen, muß es zunächst im Speicher installiert werden. Dazu geben Sie ein:
LOAD "HISTORY",8
Der Start erfolgt wie gewohnt mit RUN. Bitte beachten Sie, daß dabei ein ggf. im Speicher befindliches Basicprogramm verlorengeht. History sollte daher stets zu Beginn einer Programmier-Session installiert werden. Nach dem Start erscheint eine Einschaltmeldung, die auch die wichtigsten Steuerbefehle aufführt.
Ab jetzt werden alle Eingaben, die Sie im Direktmodus tätigen, vor der Ausführung in einem Spezialspeicher, »Cache« genannt, erfaßt. Der Cache umfaßt 8 KByte, genügend Platz für über 800 Befehle. Wird der Speicher überschritten, so löscht der C 64 einfach die ältesten Befehle (»Ringspeicher«). Die aktuellsten Befehle bleiben in jedem Fall erhalten. Die History-Substition beginnt immer mit einem Ausrufezeichen »!« am Zeilenanfang. Im einzelnen stehen folgende Möglichkeiten zur Verfügung:
!! wiederholt den letzten Befehl
!xxx wiederholt die jüngsten Befehlszeile, die mit xxx begann
!n wiederholt den Befehl Nr. n seit Installation
!-n wiederholt den n.-letzten Befehl. !-0 wirkt wie !!,
!-1 wiederholt den vorletzen Befehl usw.
Geben Sie beispielsweise !1 RETURN ein, so führt der C 64 den ersten Befehl nach der Installation des Tools nochmals aus (falls sich dieser noch im Cache befindet). Eine Liste aller im Cache gespeicherten Befehlszeilen mit Nummer gibt der /-Befehl (Schrägstrich) aus, Informationen dazu folgen später.
Hinter die Ausrufezeichen-Befehle (außer !xxx) können beliebige weitere Zeichen gesetzt werden, die der Computer dann an die neue Programmzeile anhängt. Beispiel: Sie haben folgende Befehszeile eingegeben:
LOAD "TEST_177/14.X",8
bemerken aber erst jetzt, daß dieses File eigentlich absolut (,8,1) geladen werden müßte. Anstatt den komplizierten Dateinamen nochmals komplett einzugeben, tippen Sie einfach
!!,1
was so wirkt wie
LOAD "TEST_177/14.X",8,1
Bevor der Computer den neuen Befehl ausführt, gibt er erst nochmals die komplette Kommandozeile aus, so wie sie generiert wurde. Bitte beachten Sie, daß beim Ersetzungsmechanismus mit !xxx Basic-Befehlswörter stets voll ausgeschrieben (oder wie gewohnt abgekürzt) werden müssen. Beispiel: Vorher hatten Sie den Befehl
N=4:PRINT"TEXT"
eingegeben, den Sie jetzt wieder abrufen möchten. Folgende Möglichkeiten arbeiten einwandfrei:
!!N
!!N=4:PRINT
!!N=4:PRINT"TE
!!N=4:?
jedoch findet
!!N=4:PR
die Kommandozeile nicht, da PRINT nicht mit PR abgekürzt werden darf. Es wird außerdem darauf hingewiesen, daß Programmzeilen (die mit einer Ziffer beginnen) nicht im Cache gespeichert werden.
Sie können den Inhalt des Zeilenspeichers auch ausgeben lassen. Dazu dienen Befehle, die mit einem Schrägstrich beginnen. Folgende Möglichkeiten bestehen:
/ listet den gesamten Cache-Inhalt
/n listet nur die n aktuellsten Befehle
/3 listet die letzten drei Befehle, die Sie eingegeben haben
Die Nummer, die Sie vor jedem ausgegebenen Befehl sehen, kann direkt hinter dem Ausrufezeichen angegeben werden.
Gewöhnlich wird eine eingegebene Programmzeile nur einmal gespeichert und dann ausgeführt. Es gibt jedoch auch die Möglichkeit, diesen Filter abzuschalten. Dazu dienen Befehle, die mit einem Stern beginnen:
*1 schaltet den Filter ein (Normalzustand)
*0 schaltet den Filter aus
* zeigt den aktuellen Zustand des Filters
Ist der Filter abgeschaltet (*0), und wird die folgende Kommandozeile eingegeben:
PRINT "TEST":A=A+1:INPUT Z
so werden im Cache folgende drei Einträge angelegt:
1 PRINT "TEST":A=A+1:INPUT Z
2 A=A+1:INPUT Z
3 INPUT Z
während bei aktiviertem Filter nur der erste Eintrag zustandegekommen wäre. Insbesondere bei größeren FOR..NEXT-Schleifen kommen so schnell einige Einträge zusammen. Das Filter wird man daher im Allgemeinen stets eingeschaltet lassen. Es ist nur dann sinnvoll, wenn wie oben gezeigt Befehlszeilen zerlegt werden sollen: Mit !3 könnte man jetzt z.B. den Input-Befehl »solo« abrufen.
Geben Sie nur das Ausrufezeichen ohne Parameter ein, wird ein Statusreport in Form folgender Zeile ausgegeben:
STAT=$aaaa-bbbb cccc dddd ee-ff g
wobei die Paramter folgende Bedeutung haben:
aaaa hexadezimale Startadresse des Cache (gewöhnlich $A000)
bbbb hexadezimale Endadresse plus 1 des Cache (gewöhnlich $C000)
cccc Position des ersten Eintrags im Cache (hex)
dddd Position des Schreibzeigers in den Cache (hex)
ee dezimale Nummer des ersten gespeicherten Befehles
ff dezimale Nummer des jüngsten Befehles
g Filter-Status (1 oder 0)
Befinden sich noch keine Kommandos im Speicher, erscheint statt ee-ff der Text »EMPTY«. Ist der Wert von cccc ungleich dem von aaaa, so wurden mangels Speicherplatz bereits Befehle aus dem Cache gelöscht. ee hat dann nicht den Wert 1. Der !-Befehl ändert nichts am Cache, es erfolgt kein Eintrag.
Bei der Anwendung können folgende Fehlermeldungen auftreten:
?SYNTAX ERROR
Die hinter dem Ausrufezeichen oder hinter dem Schrägstrich angegebene Befehlsnummer war größer als 63999
?DIRECT MODE ONLY ERROR
Die !-Ersetzungen dürfen nur im Direktmodus, nicht innerhalb von Programmen angewendet werden
?NO EVENT ERROR
Der Cache ist leer, oder es gibt keinen Befehl mit der gewünschten Nummer
?NO MATCH ERROR
Bei !xxx wurde kein Befehl gefunden, der mit dem Suchtext beginnt