GFA-BASIC FAQ, Stand 30.12.94

(Hoffentlich das letzte Mal in diesem Format, falls ich die Zeit finde,
gibt es demnchst eine bersichtlichere Aufteilung.)

Neue/genderte Eintrge sind mit '*' gekennzeichnet.
--------------------------------------------------------------------------
F: Welche GFA-BASIC Version ist die aktuelle, wo bekomme ich ein Update
   her und was ist mit der neuen Version 4.0?

A: Die aktuelle BASIC-Version trgt die Nummer 3.6TT. Die angekndigte
   Version 4.0 ist nicht in Sicht. Updates etc. gibt es nach wie vor
   bei GFA (Tel. 02161/43866) oder bei Richter Distributor, Gevelsberg.
--------------------------------------------------------------------------
F: Man hrt immer, LINE-A sollte nicht verwendet werden. Warum eigentlich?

A: LINE-A gehrt zu einer niederen Schicht des Betriebssystems, die von
   neueren Versionen und Grafik-Treibern nicht mehr untersttzt werden
   wird. Daher sollte man _keine_ LINE-A-Befehle verwenden. Leider ver-
   wendet GFA-BASIC intern permanent LINE-A Aufrufe, wodurch die Lauf-
   fhigkeit Ihrer Programme eingeschrnkt wird. Es gibt aber die Mg-
   lichkeit, Interpreter u. Compiler LINE-A frei zu patchen. 
   brigens sollte man zwischen LINE-A-Befehlen und -Variablen unter-
   scheiden. Letztere sind zwar auch zu vermeiden, Ihr Vorhandensein
   ist aber von Atari garantiert.
--------------------------------------------------------------------------
F: Was mu ich tun, um mein GFA-BASIC von LINE-A zu befreien? Gibt es
   eine Mglichkeit, vorhandene Fehler zu beheben?

A: Es gibt seit geraumer Zeit ein Patch-Programm, mit dem Fehler und
   Unzulnglichkeiten des GFA-BASIC Interpreters, Compilers und
   Library behoben werden knnen. Es nennt sich GFA_PTCH und liegt
   in der neuesten Version immer in der Maus DO.
--------------------------------------------------------------------------
F: Was mu ich beachten, wenn meine GFA-Programme auch unter MultiTOS
   laufen sollen?

A: Der Speicher mu mit der Compileroption '$m' begrenzt werden, RESERVE
   sollte nicht benutzt werden. Die Compileroptionen $I,$U und $B drfen
   nicht gesetzt sein.
--------------------------------------------------------------------------
F: Interpreter und Compiler strzen unter MultiTOS immer ab.
   Kann man da irgendwas dran machen?

A: GFABASIC.PRG, GFA_BCOM.PRG u. GL.PRG mssen mit dem Memory-Protection-
   Flag SUPER versehen werden. Dem Interpreter sollte mit einem geeigneten
   Programm (PS_CONTROL) die hchste Prioritt (20) gegeben werden.
--------------------------------------------------------------------------
F: Der Compiler strzt unter MagiC ab.

A: Ein Fehler, der mit GFA_PTCH behoben werden kann.
--------------------------------------------------------------------------
F: LPRINT und OPEN "",#n,"PRN:" funktioniert nicht auf dem Falcon!

A: Das ist ein Fehler im Betriebssystem des Falcon. Stattdessen
   OPEN "",#n,"LST:" benutzen. "LPRINT a$" wird so zu:
   OPEN "",#1,"LST:"
   PRINT #1,a$
   CLOSE #1
--------------------------------------------------------------------------
F: Welche Interpreter-Version mu ich auf dem Falcon verwenden?

A: Man sollte den GFA-Interpreter 3.6TT auf dem Falcon verwenden.
   Er luft ohne weitere Patches unter beliebig groen Auflsungen mit
   bis zu 16 Farben. Ab 256 Farben stimmt die Interpreterdarstellung
   nicht mehr. Die Version 3.5 hat schon bei 16 Farben erhebliche
   Darstellungsprobleme. Auch beim Abfangen von Bomben-Fehlern gibt es 
   Probleme. Sie kann nicht empfohlen werden.
   Wer 32768 Farben (High-Color) beim Programmieren verwenden will, 
   kann das Programm 'A la Card' benutzen.
--------------------------------------------------------------------------
F: Ich arbeite in meinen Programm sehr viel mit Strings. Dabei kommt
   es im Compilat immer hufiger zu nicht reproduzierbaren Abstrzen.

A: Leider ist die Garbage-Collection des GFA-BASIC im Compilat sehr
   unzuverlssig und kann sogar zum Absturz fhren, wenn der Speicher
   sehr knapp wird. Daher kann es sinnvoll sein, an 'gefhrlichen'
   Programmstellen z.B. folgende Prozedur aufzurufen:
   PROCEDURE garbage_collection
     IF FRE()<300
       ~FRE(0)          ! Garbage-Collection ausfhren
     ENDIF
   RETURN
--------------------------------------------------------------------------
F: Wie ist das mit der Funktion 'TT?' Sollte man die benutzen?

A: Der Aufruf dieser Funktion auf einem TT mit mathemat. Koprozessor
   (FPU) bringt bei den Funktionen SIN, COS, TAN, EXP, LOG und LOG10
   einen merklichen Geschwindigkeitsgewinn. Trotzdem ist von dem Einsatz
   dieses Befehls abzuraten. Er arbeitet fehlerhaft und kann sogar zum
   Absturz fhren. Die Erkennung des Maschinentyps und einer vorhandenen
   FPU funktioniert nicht korrekt (z.B. FALCON). Auerdem wird ggf. der
   Programmcode zur Laufzeit gepatcht, ein hchst schmutziges Verhalten.
   Besser ist es, die Unterscheidung der Maschine ber den Cookie-Jar zu
   machen.
--------------------------------------------------------------------------
F: Wie sieht es mit RESERVE aus, sollte man es verwenden?

A: RESERVE funktioniert auf dem TT nur einmal, auch sonst ist seine
   Funktionsfhigkeit umstritten. Die Vorgehensweise beim Vergrern
   des Speicherbereiches ist z.B. Schmutz. Unter MTOS fhrt der Aufruf
   von RESERVE daher auch meistens zum Absturz. Auf diesem Grund sollte
   der Speicher, wenn berhaupt, nur einmal am Anfang des Programms
   eingeschrnkt werden. Besser ist es aber, nur die Compileroption
   '$m' zu verwenden!
--------------------------------------------------------------------------
F: Wie kann ich den Befehl SETMOUSE ersetzen, wenn ich keine
   LINE-A-Aufrufe machen mchte?

A: Sauber geht das nur ber die AES-Routine APPL_TPLAY:
   PROCEDURE setmouse(x&,y&)
   LOCAL a%,a$
     '
     a%=OR(y&,SHL(x&,16))   !X/Y-Pos. des Mauszeigers
     a$=MKL$(2)+MKL$(a%)    !Ereignis
     '
     GINTIN(0)=1            !Anzahl Ereignisse
     GINTIN(1)=100          !Geschwindigkeit in %
     ADDRIN(0)=V:a$         !Adresse der Ereignisse
     GEMSYS 14              !APPL_TPLAY()
     '
   RETURN
--------------------------------------------------------------------------
F: Des fteren sehe ich Programme ohne RSC-File, im Programm selber
   werden aber trotzdem Dialogboxen benutzt. Wie geht denn das?

A: Die RSC-Datei wird in einem INLINE direkt im Programmcode abgelegt
   und dann mit einer Routine behandelt, die das normale RSRC_LOAD()
   ersetzt. Diese ist z.B. in der ST-Computer 9/91 zu finden oder
   auch in der GFA_FLY4 fr registrierte Benutzer (siehe Anhang).
--------------------------------------------------------------------------
F: Wie kann ich feststellen, ob mein Programm compiliert ist
   oder im Interpreter luft?

A: Die Funktion
     DEFFN comp=BYTE{ADD(BASEPAGE,256)}<>96
   liefert TRUE, wenn das Programm compiliert ist.
--------------------------------------------------------------------------
F: Wie kann ich feststellen, ob mein Programm als ACC gestartet wurde?

A: 100%tig geht das in GFA-BASIC nur, wenn mit GFA_PTCH (s. Anhang) der
   Startup-Code der BASIC-Programme gendert wird. Eine 99%tige Sicher-
   heit bietet aber die Funktion
     DEFFN acc=({ADD(BASEPAGE,36)}=0)
   die den Zeiger auf die Basepage des aufrufenden Prozesses auswertet.
--------------------------------------------------------------------------
F: Wie stelle ich fest, aus welchem Pfad und unter welchem Namen
   mein Programm gestartet wurde?

A: Mit der Funktion
     pfad$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\"
   wird das aktuelle Verzeichnis ermittelt. Dieses ist im allgemeinen mit
   dem Heimatpfad eines Programms identisch.
   Der Dateiname lt sich nicht ohne weiteres feststellen. Wenn einem
   Programm allerdings Parameter unter Verwendung des ARGV-Verfahrens
   bergeben wurden, so enthlt der erste Wert den Namen.
--------------------------------------------------------------------------
F: Gibt es eine Mglichkeit, die Adresse des vom GFA-BASIC VDI-Parameter-
   blocks zu ermitteln oder mu ich immer einen eigenen anlegen?

A: Der VDI-Parameterblock beginnt in allen bisherigen BASIC-Versionen an
   GB+24. Diese Eigenschaft ist allerdings undokumentiert.
--------------------------------------------------------------------------
F: Gibt es einen Patch oder eine andere Mglichkeit, beim Editor den
   Menpunkt 'Neue Namen' vorzubelegen, damit diese Funktion beim Start
   schon voreingestellt ist?

A: Ja, geht ebenfalls mit GFA_PTCH.
--------------------------------------------------------------------------
F: Spricht irgendetwas gegen die Benutzung von FILESELECT?               *

A: Nur, wenn Sie einen gepatchten Interpreter/Compiler verwenden. In
   diesem Fall erzeugt der Befehl leider kleine Mausflecken, da er intern
   LINE-A benutzt. In diesem Fall geht leider kein Weg an einer eigenen
   FILESELECT-Routine vorbei.
--------------------------------------------------------------------------
Anhang:

Ntzliche Routinen und Programme rund um GFA-BASIC
--------------------------------------------------

ALA_CARD : Macht den Interpreter auf Farbgrafikkarten mit 256/32768/
           24 Mio und dem Falcon mit 32768 Farben lauffhig; Shareware,
           @WI2, v1.0

DELITE   : GFA-BASIC-Shell; Kommerziell, MAXON Sonderdisk

ERGO_PRO : Entwicklungsumgebung fr GFA-BASIC mit Shell, Tokenprozessor
           zur Quellcode-Analyse und Prprozessor; Kommerziell,
           Columbus Soft, Darmstadt, v1.03

ERGOTOOLS: 2 Disketten mit ntzlichen Routinen fr jeden Zweck, vorwie-  *
           gend fr Nicht-DFler interessant. Ebenfalls bei Columbus
           Soft erhltlich.

FLYDEMO  : Routinen fr fliegende Dialoge; Shareware, @PB2

GFASHELL : ltere GFA-BASIC-Shell; Freeware, @DO, v1.05

GFA_FLY4 : Routinen fr fliegende u. Fenster-Dialoge; Shareware, @DO,
           v4.9

GFA_GEM  : GEM-Einfhrung mit Beispiellisting; Freeware, @WI2

GFA_PTCH : Patchen von Interpreter/Compiler/Library; Freeware, @DO,      *
           v1.07

GFA_VIEW : Beispiel-Programm fr die Fensterprogrammierung inkl.         *
           Kurzeinfhrung; Freeware, @DO

Zeitschriftenartikel zum Thema GFA-BASIC
----------------------------------------

- ST-Computer 9/91: Einbinden von Resource-Dateien mittels INLINE

--------------------------------------------------------------------------
Dank an Michael Ebsen, Richard Jelinek und David Reitter fr ihre
Beitrge.

Das FAQ wird jeweils zu Beginn des Monats in der Gruppe GFABASIC des Maus-
netzes gepostet. Alle Angaben ohne Gewhr! Vorschlge oder Ergnzungen
werden jederzeit gerne entgegengenommen: Gregor_Duchalski@do.maus.ruhr.de
