home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
GFABAS36.LZH
/
READ.ME
< prev
next >
Wrap
Text File
|
1991-04-19
|
6KB
|
130 lines
READ.ME zum GFA-BASIC Compiler 3.6 TT Düsseldorf, den 18.4.91
Das Programm MENU.PRG ist noch durch einige neue Menupunkte erweitert
worden.
Erweiterungen der Menus:
File: RCS ^R : Über diesen Menupunkt kann das RCS2 aufgerufen werden,
Name des Programms in gfarcs$.
Execute ^X : Hiermit können beliebige Programme ausgeführt werden,
Auswahl mittels Fileselector.
Sets: PRG=GFA F2 : Mit F2 kann ein Modus eingeschaltet werden, in dem der
Name des Compilats sich automatisch aus dem GFA-File
ergibt (statt TEST.PRG). Nach Drücken von F2 (oder auch
Vorbesetzen von auto& in MENUX.GFA mit 1) kann so ein
GFA-File durch F1-Fileselect-F10 sehr schnell ausge-
wählt und compiliert werden.
C-Objects C : Hier können die Namen der O-Files eingegeben werden,
die zum Compilat hinzugelinkt werden sollen.
(also Turbo-C, DR-C oder Assembler).
Option: TT-RAM T: Bei eingeschalteter Funktion wird das Byte 25 des
erzeugten Programmes auf Wert 7 gesetzt. Dadurch wird
das Programm, wenn möglich, in den TT-RAM geladen.
Au₧erdem wird nach jedem Programmaufruf der Returnwert des entsprechenden
Programmes ausgegeben. Dabei bedeutet 0 "OK", negative Zahlen stehen für
Fehler (wie Datei nicht gefunden), positive Zahlen für andere Fehler.
So gibt der Compiler die Anzahl der nicht compilierten Befehle zurück, der
Linker die Anzahl undefinierter Symbole und der Offsetüberschreitungen.
Der Linker GL gibt ein paar sehr knappe Fehlermeldungen aus:
?xxxxxxx hei₧t unbekanntes Symbol xxxxxxxx
+xxxxxxx hei₧t Symbol Redifinition.
>xxxxxxx hei₧t 16 Bit-Offset zu gro₧
Diese Meldungen sollten in GFA-BASIC-Programmen ohne $X nie auftauchen.
C: CALL
Im Handbuch zum GFA-BASIC steht leider nur zwischen den Zeilen, das diese
Routinen, wie für C-Routinen auf 68000er Computern allgemein üblich, die
Register A3 bis A6 und A7 nicht verändern dürfen, obwohl dies im Interpreter
in der Regel ohne Folgen bleibt. Au₧erdem steht bei C: fast nie ein Parameter
in D0, eine zufällige Eigenschaft des Interpreters.
Um auch Assemblerroutinen verwenden zu können, die diese Konvention nicht
einhalten, gibt es jetzt die Compileroption $C+ und $C-. Durch $C+ werden
vor den C: bzw. CALL-Aufruf die Register A3-A6 auf dem Stapel gerettet und
danach wieder vom Stapel geholt.
UNPACK.GFA
Dieses Programm wandelt das gepackt abgespeicherte TEST.O des Compilers
in ein Standard DR-Format TESTX.O.
Ein Satz, der im Handbuch fehlt ist:
Compilierte GFA-BASIC-Programme dürfen ohne Lizenzgebühren an die GFA
vertrieben werden. Im Programm, auf der Diskette oder im Handbuch mu₧
GFA-BASIC 3.0/3.5/3.6 erwähnt werden.
Bekannte Fehler:
x=-3.5
x&=10
a&=x+x&
b&=x&+x
a&= TRUNC( -3.5 + 10 ) = TRUNC( 6.5 ) = 6
b&= 10 + TRUNC( -3.5 ) = 10 + -3 = 7
Also: Bei gemischter Addition von Flie₧kommavariablen und Integervariablen
mit Integer-Ergebnis wird häufig, je nach Reihenfolge der Summanden,
nur der ganzzahlige Anteil der Flei₧kommazahl verwendet. Dies kann bei
ungleichen Vorzeichen zu Abweichungen vom Interpreterergebnis führen.
a&= x + x& ist für den Compiler gleichbedeutend zu a&=ADD(x,x&)
Das Interpreterergebnis kann man durch CFLOAT erzwingen, also
a&= CFLOAT( x + x& )
Anmerkung: Ich hatte (leider) damals, Anfang 1986, nicht alle Folgen bedacht,
als ich die Konvertierung von Flie₧kommawerten nach Integer die
Nachkommastellen abschneiden lie₧, was z.B. für Zufallszahlen bis
zu einer Obergrenze sehr nützlich ist. So ergibt in GFA-BASIC
x%=RND*640 eine Zahl zwischen 0 und 639, bei Rundung ergäbe sich
eine Zahl zwischen 0 und 640 (x%=639.5 wäre 640).
Andererseits wollte ich weder eine andere Rundungsmethode für den
Compiler einführen, noch, wie im 2.0 Compiler, in jedem Fall die,
erheblich langsamere, Flie₧kommaadditionsroutine aufrufen.
Für den Fall, da₧ ein Programm an vielen Stellen durch diesen
Fehler betroffen wäre, und so erheblichen Testaufwand verursachen
würde, habe ich eine neue Compileroption eingeführt:
$%6 wenn der Wert nach $% die 6 erreicht, so wird die entsprechende
Optimierung abgeschaltet. Dies bedeutet in der Regel ein erheblich
längeres und auch langsameres Programm. Deshalb bitte nur im Notfall
verwenden und möglichst auch dann auf den problematischen
Programmteil beschränken. ($%6 .... $%0).
FOR-NEXT Schleifen mit ganzzahligen Variablen werden bei
Überschreiten des Höchstwertes für den betreffenden Variablentyp
nicht abgebrochen. FOR i|=0 to 255 ergibt also eine Endlosschleife,
da zuerst i| incrementiert wird (BYTE(255+1(=0!), und somit der
Vergleich (<=255) immer erfüllt bleibt. Dafür gibt es jetzt eine
neue Compileroption:
$N+
Hier wird eine zusätzliche Überlaufprüfung zum NEXT hinzugefügt,
dies bewirkt allerdings zwei zusätzliche Programmbytes und etwa
1 µs an Laufzeitverlust. Deshalb ist diese Option über
$N-
wieder ausschaltbar.
Auf der Diskette befindet sich auch noch das Prgramm MAKE_NDX.PRG. Mit
diesem Programm kann das Index-File einer Library erzeugt werden. Das
Programm MAKE_NDX.PRG sucht voreingestellt immer nach der Library
'GFA3BLIB'. Ein anderer Libraryname kann über den Command-String übergeben
werden. Lesen Sie dazu auch Compilerhandbuch Kapitel 3.2.2 'Einbindung
unter Benutzung der C-Bibliotheken'.