From: aeg03@rrz.uni-koeln.de (Jan T. Kim)
Subject: Bessere Shell fuer GFA-Basic
Keywords: GFA-Basic
Reply-To: schaerer@isi.ethz.ch
Organization: Regional Computing Center, University of Cologne, F. R. Germany
Date: Thu, 01 Oct 92 18:42:14 GMT

Hi allerseits,

als Echo auf mein posting mit Vorschlaegen zur  Verbesserung  und
Erweiterung  von  GFA-Basic  habe  ich  von  Thomas  Schaerer die
folgende Beschreibung einer alternativen  Shell  fuers  GFA-Basic
bekommen,  mit  der Bitte, diese zu posten. Als Reply-To: Adresse
habe ich daher auch Thomas' Adresse eingetragen.

Greetinx, Jan

 +- Jan Kim -- X.400:    S=kim;OU=vax;O=mpiz-koeln;P=mpg;A=dbp;C=de -+
 |             Internet: kim@vax.mpiz-koeln.mpg.dbp.de               |
 |                                                                   |
 *----=<  hierarchical systems are for files, not for humans  >=-----*


===============================  Schnipp (Hier beginnt es!) ===========

   *****************************************************************
  *                                                                 *
  *  G F A  -  M e n u  -  D e l u x e    ----->   MENUDLX.PRG      *
  *                                                                 *
  *  Ein Public-Domain-Programm: Erschienen im ST-JOURNAL 6/92      *
  *                                                                 *
  *                  D I S K   J 2 6 6   inkl. GFA-Quelltext        *
  *                  -----------------                              *
  *                                                                 *
  *  Hier lesen Sie das zugehoerige Infofile:  MENUDLX.INF          *
  *                                                                 *
  *  Th. Schaerer   Im Lindenhof 6   CH-8307 Effretikon (Schweiz)   *
  *                                                                 *
  *  Mail:  schaerer@isi.ethz.ch                                    *
  *                                                                 *
   *****************************************************************




Motivation.
-----------

Mit  der Auslieferung des originalen Entwicklungspacketes  GFA-3.x-BASIC 
der  Firma GFA-Systemtechnik,  erhaelt man auf der  Diskette  "Compiler" 
ein  in  GFA-3.x-BASIC  geschriebenes  Menuprogramm  als   GFA-Quelltext 
(MENUX.GFA) und als lauffaehiges Programm (MENUX.PRG).  Leider ist  die-
ses  Menu  fuer  die Steuerung des  Interpreters  und  Compilers  derart 
minimal gestaltet,  dass etwas anspruchvollere GFA-3.x-BASIC-Programmie-
rer  genoetigt sind,  dieses Menu den eigenen  Beduerfnissen  anzupassen 
und entsprechend zu erweitern,  was nicht selten viel Zeit  beansprucht, 
die man fuer Produktiveres einsetzen koennte.

Dieser  Mangel   fuehrte dazu,  dass ich dieses MENUX.GFA im  Laufe  von 
etwa  1.5 Jahren stetig etwas weiterentwickelt habe.  Meine Arbeit  soll 
nun dazu dienen,  dass nicht jeder GFA-3.x-BASIC-Programmierer den  Ham-
mer erneut erfinden muss.

Der   neue  Name  dieses  neuen  Menuprogrammes  ist  MENUDLX.GFA   bzw. 
MENUDLX.PRG,  was  eine  Abkuerzung des vollen  Namen  "GFA-MENU-DELUXE" 
ist.  Im  Folgenden  wird  beschrieben was  GFA-MENU-DELUXE  besser  und 
zusaetzlich kann.



Die Gemeinsamkeit von MENUX und GFA-MENU-DELUXE.
------------------------------------------------

Da  GFA-MENU-DELUXE  (MENUDLX)  eine Weiterentwicklung  des  MENUX  ist, 
gelten,  wenn in diesem Readme nicht anders erlaeutert,  die sehr  knapp 
gehaltenen Angaben der README.COM-Datei,  welche dem  GFA-3.x-BASIC-Ent-
wicklungspacket  beiliegt.  Ebenfalls  gelten,  wenn hier  nicht  anders 
erlaeutert,  die  Angaben im Kapitel "Arbeiten mit der Shell"  des  Com-
piler-Begleitbuches "GFA-BASIC 3.0"  von GFA-Systemtechnik GmbH Duessel-
dorf.  Besonders erwaehnenswert ist der Beitrag zum Compiler und  Linker 
im Buch "Das grosse GFA-BASIC-3.5 Buch" von Litzendorf,  vertrieben  von 
DATA-BECKER.



Rechtliche Situation.
---------------------

Da wie oben erwaehnt, mein GFA-MENU-DELUXE (MENUDLX.GFA) eine Weiterent-
wicklung des MENUX.GFA von GFA-Systemtechnik ist,  fragte ich bei dieser 
Firma nach, ob es mir erlaubt ist, mein GFA-MENU-DELUXE zu veroeffentli-
chen.  In einem Brief vom 8.07.91 erhielt ich folgende Antwort:  "Da die 
GFA-Systemtechnik auf keinerlei Programm Copyrightanspruch hat,  die mit 
GFA-BASIC erstellt wurden,  steht einer Weitergabe Ihrer Shell nichts im 
Wege."



Mein Angebot.
-------------

Die  Benutzung  und  Verbreitung meines  GFA-MENU-DELUXE  inklusive  des 
Quelltextes  ist gratis.  Als Gegenleistung wuensche ich mir  Echos  von 
Benutzern des GFA-MENU-DELUXE.  Es interessieren mich Kritik, Anregungen 
und Ideen, auch solche welche von Benutzern implementiert wurden.




V E R B E S S E R U N G E N   u n d    E R W E I T E R U N G E N .
__________________________________________________________________



Darstellung der Oberflaeche.
---------------------------

Im Gegensatz zu MENUX ist die Oberflaeche meines GFA-MENU-DELUXE  aeste-
thisch ansprechender gestaltet.  Alle Textausgaben sind blockweise orga-
nisiert.  Die Blocklaenge richtet sich jeweils nach der laengsten Zeile. 
Das sieht auf einem dunklen Hintergrund schoener aus.  Die untere  Menu-
seite dient als Titel.  Unten rechts bewegen sich Punkte,  welche stetig 
eine  Punktzeile auf- und wieder abbauen.  Diese Spielerei hat  durchaus 
auch  eine  praktische  Bedeutung:  Wenn ein  Programm  gestartet  wird, 
welches  den Monitor nicht benoetigt,  erkennt man am Stillstand  dieser 
Punkte,  dass  dieses  Programm  gerade aktiv  ist.  Wenn  ein  externes 
Programm,  ausser Compiler und Linker gestartet wird, kuendigt sich dies 
durch das Abdunkeln des Hintergrundmusters an.

Beim  Interpreterstart  werden die Pfade fuer den Interpreter  und  fuer 
das  GFA-File  in  zwei getrennten Zeilen  waehrend  des  Startvorganges 
untereinander angezeigt. Das sieht besser aus und ist informativer.

Nach  Rueckkehr  ins  Menu wird  ordnungsgemaess  angezeigt,  wie  lange 
welches  Programm ausgefuehrt wurde.  Im Gegensatz zu MENUX  zeigt  GFA-
MENU-DELUXE alle Zeitwerte in Stunden,  Minuten und Sekunden an, denn es 
ist  z.B  laestig  wenn  angezeigt wird,  dass  man  10861  Sekunden  im 
Interpreter gearbeitet hat. Das sind 3h:01Min:01Sek....



Die File-Auswahl (^A oder F1).
------------------------------

Gemaess  MENUX  waehlt man mit ^A oder F1 das zu  bearbeitende  GFA-File 
aus.  Neu ist,  dass GFA-MENU-DELUXE erkennt,  ob wirklich ein  GFA-File 
gewaehlt wurde. Wenn nicht, wird dies mittels ALERT-Box beanstandet.

Eine wesentliche Erneuerung ist,  dass GFA-MENU-DELUXE der Fileparameter 
der  BASEPAGE  auswertet.  Daher  kann GFA-MENU-DELUXE  auch  von  einem 
Zeilenkommandointerpreter wie GULAM,  mit zu bearbeitendem GFA-File  als 
Parameter  gestartet  werden.  Es werden als  Parameter  absoluter-  und 
relativer  Pfad  in Vorwaertsrichtung  akzeptiert.  Das  bedeutet,  dass 
Eingaben wie ..\..\ falsch verarbeitet werden.

Bevor  man aus einem Zeilenkommandointerpreter GFA-MENU-DELUXE  startet, 
muss  vorher  mittels  "cd" der Pfad eingestellt  werden,  in  dem  sich 
MENUDLX.PRG befindet,  sonst kann die Filesystemdatei MENUDLX.DAT  nicht 
gefunden werden.

Falls Sie im Genuss der GEMINI-Shell sind,  koennen Sie wie gewohnt  ein 
GFA-File  mit  der Maus packen und ueber  GFA-MENU-DELUXE  schieben  und 
schon  startet dieses Menu mit dem GFA-File.  Luxurioeses geht  es  kaum 
noch.



Compiler-, Interpreter-, Linkerstart, Start des RCS und des 'Test'.
-------------------------------------------------------------------

Diese Operationen entsprechen denen des MENUX,  wurden jedoch je um eine 
Fehlererkennung  mittels ALERT-Box erweitert.  Es wird  mitgeteilt  wenn 
das  aufgerufene  Programm  wegen Nichterkennung  des  Pfades  oder  des 
Programmnamens nicht gestartet werden kann.

Beim  Interpreteraufruf  ist der Pfad des  ausgewaehlten  GFA-Files  als 
gueltiger Pfad gesetzt.  Dies hat den Vorteil,  dass auch GFA-Files  mit 
ihren zu lesenden Dateien in einem andern Pfad korrekt mit dem Interpre-
ter  getestet  werden  koennen.  Dies ist in  MENUX  wegen  fehlerhafter 
Programmierung, nicht moeglich!



Das Starten fremder Programme  EXECUTE ^X.
------------------------------------------

Diese  Funktion  gibt es zwar in MENUX,  jedoch  konnte  man  ausserhalb 
dessen  Pfades  keine Programme  starten,  welche  ihrererseits  Dateien 
lesen mussten.  Dieses Problem ist in GFA-MENU-DELUXE geloest: Vor jedem 
fremdem Programmstart wird der richtige Pfad gesetzt.  Bei der Rueckkehr 
ins GFA-MENU-DELUXE wird ebenfalls wieder der korrekte Pfad gesetzt.



Sets: C-Objekt C.
-----------------

Es  gilt was in README.COM steht.  Nur steht dort laengst  nicht  alles, 
was diese Option bereits im MENUX konnte und im GFA-MENU-DELUXE  selbst-
verstaendlich immer noch kann:

  Bei der Eingabe des compilierten C-Files, also eines O-Files, wird die 
  Extension ".O" nicht angegeben, da diese automatisch gesetzt wird.

  Es koennen auch mehrere O-Files eingegeben werden,  welche dann  durch 
  Leerzeichen von einander zu trennen sind.

  Bei der Eingabe der O-Files, muss der korrekte Pfad natuerlich mitein-
  gegeben werden.  Es genuegt jedoch die Eingabe des relativen Pfades in 
  Vorwaerts- und Rueckwaertsrichtung (..\).

Neu ist in GFA-MENU-DELUXE,  dass nach dem Linkvorgang zusaetzlich  mit-
tels  ALERT-Box die Anzahl undefinierter Symbole und  Offsetueberschrei-
tungen angezeigt werden.

Wenn  ein C-File-Name oder dessen Pfad falsch eingeben wurde,  oder  der 
Linker nicht ansprechbar ist,  folgt ebenfalls eine geeignete Fehlermel-
dung mittels ALERT-Box.



Sets: PRG=GFA.
--------------

Der  Ordnung zu liebe,  landen alle compilierten GFA-Programme in  einem 
Ordner namens COMPILAT (TEST.PRG).  Im PRG=GFA-Mode jedoch wie bisher im 
selben  Pfad wo sich das zu bearbeitende  GFA-File  befindet.  Existiert 
beim  Compiler-  oder  Linkerstart bereits der  Name  des  PRG-Files  im 
selben Pfad,  fragt eine ALERT-Box,  ob man wirklich das bestehende PRG-
File ueberschreiben moechte.

Ist die Option PRG=GFA aktiv,  wird dies neuerdings staendig im Menubal-
ken dem Programmierer mitgeteilt.  Dies hat den Vorteil,  dass man diese 
Option nicht immer wieder im Klappmenue nachschauen muss.  Nur wenn  der 
TEST.PRG-Mode (Ordner:  Compilat) aktiv ist,  ist es gestattet, den Pfad 
zu editieren <P>.  Im PRG=GFA-Mode erfolgt beim Editierversuch <P>  eine 
ALERT-Box mit dem Hinweis, dass man sich im Widerspruch befindet.




E x t r a s.
------------

Dies  ist  in GFA-MENU-DELUXE absolut neu!  Mit  Hilfe  dieses  "Extras" 
koennen  zusaetzlich  nuetzliche Programme und  Funktionen  direkt  ohne 
Fileselectorbox  aufgerufen werden,  welche dem Programmierer das  Leben 
zusaetzlich erleitern. Weshalb, erfahren Sie gleich im Detail.



Extras:  Editor ^E.
-------------------

Ein zusaetzlicher Editor aufrufen, wozu?

  Man  kann  zwei LST-Files vergleichen,  oder von  einem  LST-File  ins 
  andere, Bloecke uebertragen.

  Moechte  man  ein zu einem gerade bearbeitendem  GFA-File  gehoerendes 
  Datenfile  editieren,  so erledigt man dies rasch und bequem  mit  dem 
  zusaetzlichen Editoraufruf.
 
  Man kann zum Beispiel ein LST-File und C-File gegenueberstellen.  Dies 
  ist  besonders  interessant im Hinblick auf  die  kommenden  GFA-TO-C-
  CONVERTER...  

  Man kann... , Sie haben vielleicht noch weitere Ideen!



Welcher Editor kommt in Frage?

  Als  Editor eignet sich z.B.  TEMPUS (per Default  in  GFA-MENU-DELUXE 
  MENUDLX.DAT programmiert).  Es muss in jedem Fall ein Editor sein, mit 
  dem man mindestens zwei Files bearbeiten kann. 


Spezielle Funktion beim Editor-Aufruf:
  
  Hat  man  vor  dem Editoraufruf ^E bereits  ein  GFA-File  ausgewaehlt 
  (^A),  jedoch  ein  gleichnamiges LST-File existiert  im  selben  Pfad 
  nicht,  erscheint  eine  ALERT-Box  und meldet,  dass  man  noch  kein 
  gleichnamiges LST-File erzeugt hat.  Man hat nun die Wahl,  weiter zum 
  Editor  "durchzustarten" oder man geht zurueck  ueber  GFA-MENU-DELUXE 
  in den Interpreter um noch das gleichnamige LST-File zu erzeugen.  Bei 
  nochmaligem  Editoraufruf  wird  nun das LST-File  als  Parameter  zum 
  Editor uebertragen.  Danach kann man noch zusaetzliche Files laden, im 
  TEMPUS maximal noch drei.



Extras:  Finder ^F.
-------------------

Dies ist ein komfortabler mausgesteuerter PD-File-Finder.  Welcher  Pro-
grammierer  war nicht auch schon in der Situation,  waehrend der  Arbeit 
irgendwo  nach  einem  GFA-File  oder  LST-File  zum  Mergen  suchen  zu 
muessen?

 

Extras:  GULAM ^G.
------------------

Dies  ist ein UNIX-naher Zeilenkommandointerpreter.  Eine  ausfuehrliche 
Dokumentaion  liegt  bei.  Der Sinn der Integration  in   "Extras"  ist, 
kompilierte  GFA-Programme mit BASEPAGE-Parameteruebernahme  (z.B.  TTP-
Programme) gleich nach dem uebersetzen zu testen.



Extras:  Filesystem.
--------------------

Diese  Funktion gibt dem GFA-Programmierer Auskunft ueber den  gueltigen 
Pfad und darueber wo die veschiedenen Programme zu Hause sind.



Extras: UNDO (Bild).
--------------------

Dies  bewirkt gleich wie die Taste <UNDO>  die  Bildregenaration.  Diese 
Funktion wird vor allem nach Benutzung von Accessories benoetigt.



Das File-System.
----------------

Beim Start des GFA-MENU-DELUXE liest das Programm die Datei  MENUDLX.DAT 
und uebernimmt das dort enthaltene Filesystem.  Die nachfolgende Wieder-
gabe dieses MENUDLX.DAT ist nur ein Beispiel.  Der Benutzer ist frei  in 
der  Gestaltung.  Wichtig ist jedoch,  der Pfad des GFA-MENU-DELUXE  ist 
Referenz.
    
       GFA_3.PRG                   (GFA-BASIC-Interpreter, umbenannt)
       COMPLINK\GFA_BCOM.PRG       (GFA-BASIC-Compiler)
       COMPLINK\GL.PRG             (GFA-BASIC-Linker)
       RCS2.PRG                    (Resource-Constr.-Set von GFA)
       D:\TEMPUS\TEMPUS.PRG        (Zusaetzlicher Editor)
       C:\BIN\QUIKFIND.PRG         (File-Finder)
       C:\BIN\GULAM.PRG            (UNIX-nahe Shell)
       COMPILAT\TEST.O             (Defaultpfad des TEST.O-Files)
       COMPILAT\TEST.PRG           (Defaultpfad des Compilates)
       COMPLINK\GFA3BLIB           (Original-GFA-Bibliothek)

Wichtig:  Kommentare  wie oben im Beispiel duerfen im  MENUDLX.DAT nicht 
          stehen!

Das oben dargestellte Beispiel des MENUDLX.DAT zeigt relative Vorwaerts-
pfade.  Auf  der ersten Ebene muss das GFA-MENU-DELUXE  MENUDLX.PRG  und 
MENUDLX.DAT  platziert  sein.  Dies illustriert als  Beispiel  folgendes 
"File-System":

E:\  GFA_BAS._V3 \ MENUDLX.PRG               (GFA-MENU-DELUXE)
                 \ MENUDLX.DAT

                 \ AT_WORK  \ ...            (GFA-Files in Arbeit)

                 \ COMPILAT \ (TEST.PRG)     (Defaultpfad des Compilates)
                              (TEST.O)       (Defaultpfad von TEST.O)

                 \ COMPLINK \ GFA_BCOM.PRG   (GFA-BASIC-Compiler)
                              GL.PRG         (GFA-BASIC-Linker)
                              GFA3BLIB       (Original-GFA-Bibliothek)
                              GFA3BLIB.NDX

                 \ GFA_3.PRG                 (GFA-BASIC-Interpreter)
                 \ RCS2.PRG                  (GFA-Resource-Constr.-Set)
                 \ RCS2.DFN
                 \ RCS2.RSC

C:\  BIN         \ GULAM.PRG                 (UNIX-nahe Shell)
                 \ GULAM.G                   (braucht GULAM.PRG)
                 \ GULAM.HLP                 (braucht GULAM.PRG)

                 \ QUIKFIND.PRG              (File-Finder)

          
D:\  TEMPUS      \ TEMPUS.PRG                (Zusaetzlicher Editor)


An Stelle der Partition E einer Harddisk,  kann selbstverstaedlich  auch 
eine andere Partition gewaehlt werden. Das selbe gilt fuer den Hauptord-
ner  "GFA_BAS._V3".  Man kann diesen Ordner anders  benennen,  oder  was 
aber  der Ordnung zu liebe,  weniger zu empfehlen ist,  ganz  weglassen. 
Die  Pfade der Programme welche nicht Teil  des  GFA-BASIC-Entwicklungs-
packetes sind,  duerfen auch ganz wo anders installiert und  dementspre-
chend in MENUDLX.DAT vermerkt werden.





Welche Programme und Dateien befinden sich wo auf der Diskette?
---------------------------------------------------------------     


MENUDLX   \ GFA_BAS._V3  \ MENUDLX.PRG  (GFA-MENU-DELUXE)
                           MENUDLX.DAT  (zugehoeriges Filesystem)

          \ BIN          \ GULAM.PRG    (PD-UNIX-nahe Shell.)
                         \ GULAM.G      (Daten, Alias etc.)
                         \ GULAM.HLP    (Help-File fuer GULAM.)
                         \ GULAM.DOC    (Sehr ausfuehrliches Manual.)

                         \ QUIKFIND.PRG (PD-File-Finder)

          \ QUELLTXT     \ MENUDLX.GFA  (GFA-Quelltext)
                         \ MENUDLX.LST  (LST-Quelltext)
                         \ MENUDLX.INL  (Inline-Maschinencode)

          \ DOKUMENT     \ MENUDLX.INF  (Dieses Dokument als ASCII.)
                           MENUDLX.DOC  (Dieses Dokument als Wordplus.)



Wie Sie feststellen,  ist der in GFA-MENU-DELUXE verwendete zusaetzliche 
Editor TEMPUS nicht auf der Diskette.  Der Grund ist,  dass TEMPUS weder 
ein Public-Domain- noch ein Share-Ware-Programm ist.  Es ist aber  jedem 
GFA-3.x-BASIC-Programmierer freigestellt, seinen Liebliongseditor kombi-
niert mit GFA-MENU-DELUXE einzusetzen.  Man darf aber dann nicht verges-
sen, MENUDLX.DAT entsprechend anzupassen.

Die  andern beiliegenden Programme wie GULAM und QUIKFIND  duerfen  frei 
kopiert werden, da diese PDs sind.



Ich  wuensche Ihnen ungetruebte Programmierstunden mit GFA-3.x-BASIC  in 
Symbiose mit meinem GFA-MENU-DELUXE....



                                       Th. Schaerer  01-nov-91

===============================  Schnapp (Hier ist es zu Ende.) =======