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 ********************
ACC_EDIT.BAS