Accessory-Zugriff in GFA-BASIC

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
'
' Möglichkeit von Accessories im GFA-Basic-Editor 
PROCEDURE acc ! Accessory-Start
    acc__fre%=FRE (0) ! Größe des belegten Speichers 
    RESERVE 255+32000 ! Speicher für Acc. 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 TO 12
        READ acc_menu$(i%) 
    NEXT i%
    MENU acc_menu$()    !Menü 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 ein 
    RESERVE acc_fre%-255 !Speicher an Basic zurück 
    END
RETURN
' Ende der Accessory-Prozeduren ******************


Klaus Ackermann



Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]