Eine Window-Routine für den
"AC1"
A. FLÄMIG
In vielen Fällen der Bildschirmgestaltung, insbesondere im
Zusammenhang mit der Menüprogrammierung, ist die
Verfügbarkeit einer Window-Routine sehr vorteilhaft. Die
Fenstertechnik ist ein moderner und nutzerfreundlicher
Teil der Bedienoherfläche guter Software. Ich habe eine
Window-Funktion für den AC1 realisiert, das Programm ist
ab 1900H im sRAM plaziert. Es gestaltet die RST 10-Routine neu (neuer
Sprungvektor auf 1806/1807). Aus der
Kommandoroutine des Monitors heraus ist die Funktion mit
w arg1,arg2,arg3.arg4 (CR)
aufzurufen. Dabei bedeuten:
arg1: erste Zeile, 0 bis 30;
arg2: letzte Zeile. 1 bis 31;
dabei gilt: arg1 < arg2
arg3: erste Spalte, 0 bis 61;
arg4: letzte Spalte. 1 bis 63;
dabei gilt: arg3 < arg4.
Aus den vier Argumenten berechnet das Programm Fensteranfang (Spalte,
Zeile: 1B90, 1B91) und Fenstergröße (Anzahl Spalten, Anzahl
Zeilen: 1B92, 1B93) und speichert diese. Anschließend wird
der Fenstervektor aufgehaut (RAM-Zellen 1B94 bis 1BD5). Nach der
Plazierung des Kursors in der linken oberen
Fensterecke springt die Routine in die Kommandoschleife des Monitors
zurück. Folgende Steuerzeichen werden von der
WindowRoutine berücksichtigt;
02 - Bild ab Kursor löschen;
07 - Akustisches Signal;
08 - Kursor nach links;
09 - Kursor nach rechts;
0A - Kursor nach unten;
0B - Kursor nach oben;
0C - Bildschirm löschen, Kursor links oben;
0D - Kursor an den Beginn der neuen Zeile.
Soll die Routine in einem übergeordneten Programm benutzt werden,
so sind die RAM-Zellen für den Fensteranfang und
die Fenstergröße mit den entsprechenden Werten zu laden und
anschließend das Unterprogramm auf Adresse 1959
aufzurufen. Für das 8-K-BASIC sieht dies folgendermaßen aus:
1000 POKE 1056,5:REM 1. Spalte
1005 POKE 1051,5:REM 1. Zeile
1010 POKE 1058,50:REM Anzahl Spalten
1015 POKE 1059,20:REM Anzahl Zeilen
1020 CALL 6489;REM UP-Aufruf
1025 RETURN
Nach der Betätigung der RESET(NMI)-Taste wird das
ursprüngliche Initialisierungsprogramm des Monitors durchlaufen.
Danach ist die Window-Routine mit dem w-Kommando erneut aufzurufen.
|
92 KByte |
Listing |