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,
'
' (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
Aus: ST-Computer 03 / 1989, Seite 86

Links

Copyright-Bestimmungen: siehe Über diese Seite