Vor allem bei längerem Arbeiten im Editor vermißt man oft die praktischen Accessories des GEM-Desktops. Diesen Mangel behebt der Programmbaustein ACC-EDTT.LST. Er dürfte für viele GFA-BAS1C-Programmierer, die sich die neue Version 3.0 noch nicht kaufen möchten, von Nutzen sein.
Anleitung und Funktion
Das Listing ACC-EDIT.LST wird am besten an den Schluß des Programms geladen (mit MERGE), das gerade bearbeitet wird.
Um Accessories aufzurufen, geht man in den Direktmodus mit ESC. Darauf wird die Prozedur “acc” durch die Eingabe von “GOSUBacc” oder “@atr” oder (ab Version 2.02) “acc” gestartet.
Der Ausgabebildschirm ent hält dann die Menüleiste mit den Accessories. Diese wer den wie gewohnt aufgerufen.
Mit dem Menüeintrag “Ende" gelangt man in den Editormodus zurück. Dabei darf kein Accessory aktiv sein. Der Ausgabebildschirm wird vorher restauriert.
Da eine Namensgleichheit der Acc-Prozeduren und deren Variablen mit denen des Grundprogramms unwahrscheinlich ist (und leicht beseitigt werden kann), läuft das Grundprogramm im Interpreter und auch compiliert wie gewohnt. Dennoch soll ten aus Platzgründen die Acc-Prozeduren vor dem Compilieren wieder entfernt werden.
Programmbeschreibung
"ACC_EDIT.LST" besteht aus der Startprozedur “acc", der Menüprozedur “acc_menu" und der Endeprozedur “acc_ende”.
Da alle Variablen und Prozeduren mit “acc ” beginnen, werden Namenskollisionen unwahrscheinlich, bzw. ist eine Änderung durch REPLACE” sehr leicht möglich.
Die im Listing mit "*" hinter dem Kommentarausrufezeichen versehenen Zeilen dienen entweder der Programmsicherheit oder einem schöneren Hintergrund; sie können je nach persönlichem Bedarf und Aufbau des Grundprogramms auch weggelassen werden.
SGET acc_screen$, SPUT acc_screen$ und CLR acc_screen$ sichern den Ausgabebildschirm und restaurieren ihn nach dem Ende der Accessories. Mit der Zeile acc screen$=”” gewinnt man 32 kByte wieder für das Grundprogramm zurück. Vor allem bei beschränktem verfügbaren Speicher kann man auf diese drei Zeilen auch verzichten, wenn der Inhalt des Ausgabebildschirms nicht benötigt wird ist.
ON MENU... schaltet evtl. vorhandene GEM-Verzweigungen aus früheren Probeläufen des Grundprogramms ab (Der Interpreter macht dies nicht selbständig!). Die Prozedur “nicht vorhanden" darf natürlich tatsächlich nicht vorhanden sein.
DEFFILL und PBOX ... erzeugen den normalen Hintergrund des GEM-Desktops. Dadurch werden die von vielen Accessories hinterlassenen Löcher vertuscht.
4.OPTION BASE, DIM, FOR... Für "OPTION BASE1” muß die Indizierung für acc_menu() von 1 bis 12 gehen. Bei der Dimensionierung ist dann "12" anstatt “11” zu verwenden. Leider hat sich in der Version 2.02 bei “OPTION BASE” ein Fehler eingeschlichen. Bei dieser Version sollte der Befehl nicht verwendet werden. Da der ST ohnehin genügend Speicherplatz bietet, genügt fast immer die Grundeinstellung, die OPTION BASE 0 entspricht.
ERASE acc_menu$() Dieses Feld würde, falls es bei der Initiierung des Menüs schon besteht, zu einem Fehler führen. Das erste Auftreten von ERASE acc_menu$() ist nur notwendig, falls aus irgendwelchen Gründen die Endeprozedur nicht ausgeführt wurde.
RESTORE acc_marke, acc_marke sind notwendig, da die Accessories häufiger aufgerufen werden, und im Grundprogramm ebenfalls DATA-Anweisungen stehen können.
Das Feld acc_menu$() könnte man auch durch einzelne Zuweisungen füllen. Die hier verwendete Methode ist aber kürzer.
DO, ON MENU, LOOP ist der eigentliche Arbeitsbereich. Von hier aus werden die Accessories aufgerufen.
Vorsicht
Da es nicht möglich ist, die Verträglichkeit aller Accessories mit dieser Routine und dem GFA-BASIC Interpreter zu testen, sollte, wenigstens am Anfang, vor dem Accessory-Aufruf zwischengespeichert werden (am besten auf Diskette, denn auch eine resetfeste RAM-DISK kann ja mal zerstört werden).
'
' Klaus Ackermann,
' Kanalweg 1a, 8048 Haimhausen,
'
' (c) MAXON Computer GmbH 1989
'
' Möglichkeit von Accessories im Gfa-Basic-Editor
PROCEDURE acc !Accessorie-Start
acc_fre%=FRE(0) ! Größe des belegten Speichers
RESERVE 255+32000 ! Speicher für Accessories freigeben
SGET acc_screen$ !* Ausgabebildschirm speichern
ON MENU GOSUB nicht_vorhanden !* Zur Sicherheit
ON MENU KEY GOSUB nicht_vorhanden !* dito
ON MENU MESSAGE GOSUB nicht_vorhanden !* dito
DEFFILL 1,2,4 !*|Nicht notwendig,
PBOX -1,-1,640,400 !*|aber schöner
GOSUB acc_menu
RETURN
PROCEDURE acc_menu
ERASE acc_menu$() !* zur Sicherheit
DIM acc_menu$(11) !bei Option Base 1: (12)
acc_marke: !Beginn der Menü-Daten
DATA GFA-ACC, Ende,---------------------,1,2,3,4,5,6,"","",""
RESTORE acc_marke
FOR i%=0 TO 11 !bei OPTION BASE 1: 1 TO 12
READ acc_menu$(i%)
NEXT i%
MENU acc_menu$() !Menu-initiieren
ON MENU GOSUB acc_ende ! Beenden mit erstem Menü-Eintrag
DO
ON MENU
LOOP
RETURN
PROCEDURE acc_ende
SPUT acc_screen$ !* Ausgabebild wiederherstellen
CLR acc_screen$ !32 kByte zurückgeben
MENU KILL !ON MENU aufheben
ERASE acc_menu$() !Dimensionierung löschen
ON BREAK !Normalen Abbruch einschalten
RESERVE acc_fre%-255 !Speicher an Basic zurück
END
RETURN
' Ende der Accessorie-Prozeduren ********************