Funkamateur 06/89

 

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