← ST-Computer 03 / 1989

Accessory-Zugriff in GFA-BASIC

Programmierpraxis

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

  1. Das Listing ACC-EDIT.LST wird am besten an den Schluß des Programms geladen (mit MERGE), das gerade bearbeitet wird.
  2. 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.
  3. Der Ausgabebildschirm ent hĂ€lt dann die MenĂŒleiste mit den Accessories. Diese wer den wie gewohnt aufgerufen.
  4. Mit dem MenĂŒeintrag “Ende" gelangt man in den Editormodus zurĂŒck. Dabei darf kein Accessory aktiv sein. Der Ausgabebildschirm wird vorher restauriert.
  5. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. RESTORE acc_marke, acc_marke sind notwendig, da die Accessories hÀufiger aufgerufen werden, und im Grundprogramm ebenfalls DATA-Anweisungen stehen können.
  6. Das Feld acc_menu$() könnte man auch durch einzelne Zuweisungen fĂŒllen. Die hier verwendete Methode ist aber kĂŒrzer.
  7. 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

Klaus Ackermann