Nikolaus Heusler Archiv

Erschienen in 64'er Magazin, Ausgabe unbekannt · Originaldatei: QUICK.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.

Quick Save - Programme speichern auf Tastendruck

Der C 64 wird immer komfortabler! Das Utility »Quick Save« speichert Ihr Programm mit nur zwei Tastendrücken auf Diskette. Die Eingabe umständlicher SAVE-Befehle entfällt. Das Besondere: Das Speichern erfolgt im Interrupt, Sie können also weiterprogrammieren, während der Computer das File auf Diskette ablegt. Nur drei Blocks - mehr muß dieser Komfort nicht kosten!

Nikolaus M. Heusler

Wie oft schon haben Sie Ihr Programm während der Arbeit am Computer wegen einer Unterbrechung verloren? Vielleicht klingelt das Telefon. Sie gehen hin, und als Sie an den Rechner zurückkehren, sitzt da jemend anderes und hat Ihr Programm gelöscht. Oder es gibt einen Stromausfall, vielleicht sind Sie über ein Kabel gestolpert. Vor allem Abstürze sind oft schuld daran, wenn stundenlange Programmierarbeit wegen eines falschen SYS-Befehl buchstäblich den »Bach hinab« geht. Die Probleme ließen sich vermeiden, wenn einfach das Programm zwischendurch öfters abgespeichert wird. Aber Sie kennen das ja: Da muß man dann mitten in einer Phase höchster Kreativität meterlange SAVE-Befehle eingeben, und darf dann warten, bis das langsame Laufwerk fertig ist. Oft denkt man sich, »nur diese Routine noch, dann speichere ich«, und schon ist es passiert. »Quick Save« bietet eine Lösung an: Es wurde entwickelt, um das Speichern möglichst schnell, einfach und »unbürokratisch« zu machen.
Obwohl das kurze Utility aus Gründen der Geschwindigkeit und des Komforts vollständig in Maschinensprache verfaßt wurde, benötigen Sie zur Anwendung keinerlei Assemblerkenntnisse. Laden Sie das Tool mit dem Befehl

LOAD "QUICK SAVE",8

Dies sollte vor Beginn der Programmier-Session geschehen, da beim Laden von Quick Save ggf. das im Speicher befindliche Basicprogramm überschrieben wird. Der Start erfolgt ganz normal mit RUN. Auf dem Bildschirm erscheint eine Einschaltmeldung.
Immer wenn Sie jetzt Ihr Basicprogramm speicher möchten, bewegen Sie den Cursor auf eine leere Bildschirmzeile, geben dort ein Ausrufezeichen (SHIFT 1) ein und drücken RETURN. So einfach ist das. Quick Save speichert das Programm jetzt unter dem Namen »DATEI XXX«, der auch angezeigt wird. Hierbei steht XXX für eine dreistellige Nummer von 000 bis 255, die die Versionsnummer Ihres Programms anzeigt und bei jedem Speichern von Quick Save automatisch erhöht wird. Das erste Programm, das nach dem Laden von Quick Save mit »!« gespeichert wird, hat den Namen »DATEI 001«. Wird erneut gespeichert, lautet der Name »DATEI 002«, und so weiter. Hat der Zähler den Wert 255 überschritten, stellt er sich auf Null zurück.
Der Zähler kann aber auch manuell durch eine Nummer hinter dem Ausrufezeichen beeinflußt werden. Soll das Programm etwa als Versionsnummer die 26 erhalten, geben Sie ein

!26

Jetzt wird eine »DATEI 026« erzeugt, danach ginge es mit 027 weiter.
Das Speichern des Programms mit Quick Save erfolgt im Hintergrund, es erscheint also schon bald nach der Anzeige von »SAVING DATEI XXX« wieder READY., und Sie können weiterarbeiten. Daß das Speichern noch läuft, merken Sie nur daran, daß das Laufwerk periodisch anläuft, und die rote LED leuchtet. Während des Speicherns darf verständlicherweise kein Zugriff auf die Diskettenstation erfolgen, Befehle wie OPEN, CLOSE, LOAD und SAVE, aber auch ein erneutes Ausrufezeichen werden mit einer neuen Fehlermeldung:

?SPOOLING ERROR

abgelehnt. Diese Meldung erscheint außerdem bei Eingabe von Basic-Zeilen. Das ist verständlich, denn das Programm darf während des Speicherns nicht verändert werden. Besitzer geänderter Betriebssysteme sollten während dieser Zeit auch nicht versuchen, etwa mit einer Funktionstaste den Fehlerkanal abzurufen oder ein Directory anzufordern. Solche Aktionen können den Computer unter Umständen zum Absturz bringen. Bei Verwendung einer Exos-Betriebssystemversion werden während des Speicherns durch Setzen von Bit 7 in Speicherzelle 0 die Funktionstasten außer Betrieb gesetzt. Nach Beendigung des Speicherns werden die Sonderfunktionen (Editieren von Programmen, ggf. Funktionstasten, Peripheriebefehle) wieder freigegeben.
Um es möglichst kurz zu halten, sind in Quick Save keine weiteren Fehlerabfragen enthalten. Vor dem Speichern mit »!«, das übrigens etwas langsamer als bei Verwendung des SAVE-Befehles läuft, darf keine Datei mit der Nummer 92 geöffnet sein. Es ist zum Beispiel auch nicht erlaubt, während des Speicherns die RUN STOP/RESTORE-Tasten zu drücken. Wird versucht, auf eine nicht vorhandene Diskette zu speichern, ist die Floppy schreibgeschützt oder gibt es schon ein File mit gleichem Namen, so wird dies nicht bemerkt, das Speichern läuft ganz normal. In diesen Fällen sollte Sie das Blinken der roten LED an der Floppy auf den Fehler aufmerksam machen. Das Hintergrund-Speichern kann dann durch Eingabe eines weiteren neuen Befehles, des Pfeils nach links, abgebrochen werden. Es erscheint die Meldung

DATEI XXX ABORTED AT YYYY

XXX ist wieder die Nummer des zuletzt gespeicherten Programms, YYYY die Adresse, bis zu der gespeichert wurde. Die Datei wird zunächst aber noch ordnungsgemäß geschlossen. Der Pfeil-nach-links-Befehl kann selbstverständlich auch erfolgen, um ein bisher einwandfrei laufendes Speichern zu beenden.
Nach dem Start mit RUN wird Quick Save in seinen Arbeitsspeicher-Bereich von 51000 bis 51517 ($C738-$C93D) verschoben, wo es zum Beispiel nach einem Reset mit

SYS 51000

wieder aktiviert werden kann. Der Zähler für die Versionen steht in Speicherzelle 51138 ($C7C2). In 51279 ($C84F) kann ggf. die Laufwerks-Geräteadresse 8 geändert werden. In den Zeropage-Adressen 247 bis 250 finden sich zwei Zähler, die die momentan gespeicherte Adresse und das Programmende angeben. Während des Speicherns kann also mit folgender Befehlszeile der aktuelle Stand abgefragt werden:

FOR I=1 TO 100000 : PRINT PEEK(247)+PEEK(248)*256 : PRINT PEEK(249)+PEEK(250)*256 : NEXT

Hat die linke Zahlenreihe den Wert der rechten erreicht, ist der Computer fertig. Die Auflisting kann dann mit STOP abgebrochen werden.
Kurz zur Funktionsweise: Zum Erkennen der beiden neuen Befehle »!« und »<-« wird der Vektor zur Ausführung eines Basicbefehles verändert. Die neue Routine beginnt ab $C7CF. Soll gespeichert werden, öffnet der Computer erst eine PRG-Datei mit dem gewünschten Namen und schreibt die beiden Bytes der Startadresse hinein. Danach wird eine neue Interrupt-Routine ab $C8C7 installiert, die pro Interrupt (also alle 1/60 Sekunde) ein Byte des Programms speichert. Nach Beendigung klemmt sich die Interrupt-Routine selbst wieder ab. Basic-Zeilen-Eingaben werden in einer neuen Eingaberoutine ab $C91D erkannt und ggf. abgelehnt. Um Peripheriebefehle zu desaktivieren, wurden die Vektoren für OPEN, CLOSE, LOAD, SAVE, CHKIN und CHKOUT auf die Fehlermeldung, die bei $C900 erzeugt wird, verbogen.