home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / GFABAS36.LZH / READ.ME < prev    next >
Text File  |  1991-04-19  |  6KB  |  130 lines

  1. READ.ME zum GFA-BASIC Compiler 3.6 TT               Düsseldorf, den 18.4.91
  2.  
  3. Das Programm MENU.PRG ist noch durch einige neue Menupunkte erweitert
  4. worden.
  5.  
  6. Erweiterungen der Menus:
  7.  
  8. File: RCS       ^R : Über diesen Menupunkt kann das RCS2 aufgerufen werden,
  9.                      Name des Programms in gfarcs$.
  10.  
  11.       Execute   ^X : Hiermit können beliebige Programme ausgeführt werden,
  12.                      Auswahl mittels Fileselector.
  13.  
  14. Sets: PRG=GFA   F2 : Mit F2 kann ein Modus eingeschaltet werden, in dem der
  15.                      Name des Compilats sich automatisch aus dem GFA-File
  16.                      ergibt (statt TEST.PRG). Nach Drücken von F2 (oder auch
  17.                      Vorbesetzen von auto& in MENUX.GFA mit 1) kann so ein
  18.                      GFA-File durch F1-Fileselect-F10 sehr schnell ausge-
  19.                      wählt und compiliert werden.
  20.  
  21.       C-Objects C :  Hier können die Namen der O-Files eingegeben werden,
  22.                      die zum Compilat hinzugelinkt werden sollen.
  23.                      (also Turbo-C, DR-C oder Assembler).
  24.  
  25. Option: TT-RAM  T:  Bei eingeschalteter Funktion wird das Byte 25 des
  26.                      erzeugten Programmes auf Wert 7 gesetzt. Dadurch wird
  27.                      das Programm, wenn möglich, in den TT-RAM geladen.
  28.                      
  29. Au₧erdem wird nach jedem Programmaufruf der Returnwert des entsprechenden
  30. Programmes ausgegeben. Dabei bedeutet 0 "OK", negative Zahlen stehen für
  31. Fehler (wie Datei nicht gefunden), positive Zahlen für andere Fehler.
  32. So gibt der Compiler die Anzahl der nicht compilierten Befehle zurück, der
  33. Linker die Anzahl undefinierter Symbole und der Offsetüberschreitungen.
  34.  
  35. Der Linker GL gibt ein paar sehr knappe Fehlermeldungen aus:
  36.  ?xxxxxxx hei₧t unbekanntes Symbol xxxxxxxx
  37.  +xxxxxxx hei₧t Symbol Redifinition.
  38.  >xxxxxxx hei₧t 16 Bit-Offset zu gro₧
  39. Diese Meldungen sollten in GFA-BASIC-Programmen ohne $X nie auftauchen.
  40.  
  41.  
  42. C: CALL 
  43.  
  44. Im Handbuch zum GFA-BASIC steht leider nur zwischen den Zeilen, das diese
  45. Routinen, wie für C-Routinen auf 68000er Computern allgemein üblich, die
  46. Register A3 bis A6 und A7 nicht verändern dürfen, obwohl dies im Interpreter
  47. in der Regel ohne Folgen bleibt. Au₧erdem steht bei C: fast nie ein Parameter
  48. in D0, eine zufällige Eigenschaft des Interpreters.
  49.  
  50. Um auch Assemblerroutinen verwenden zu können, die diese Konvention nicht
  51. einhalten, gibt es jetzt die Compileroption $C+ und $C-. Durch $C+ werden
  52. vor den C: bzw. CALL-Aufruf die Register A3-A6 auf dem Stapel gerettet und
  53. danach wieder vom Stapel geholt. 
  54.  
  55.  
  56. UNPACK.GFA
  57.  
  58. Dieses Programm wandelt das gepackt abgespeicherte TEST.O des Compilers
  59. in ein Standard DR-Format TESTX.O.
  60.  
  61.  
  62. Ein Satz, der im Handbuch fehlt ist:
  63.  
  64. Compilierte GFA-BASIC-Programme dürfen ohne Lizenzgebühren an die GFA
  65. vertrieben werden. Im Programm, auf der Diskette oder im Handbuch mu₧
  66. GFA-BASIC 3.0/3.5/3.6 erwähnt werden.
  67.  
  68. Bekannte Fehler:
  69.  
  70. x=-3.5
  71. x&=10
  72. a&=x+x&
  73. b&=x&+x
  74.  
  75. a&= TRUNC( -3.5 + 10 ) = TRUNC( 6.5 ) = 6
  76. b&= 10 + TRUNC( -3.5 ) = 10 + -3      = 7
  77.  
  78. Also: Bei gemischter Addition von Flie₧kommavariablen und Integervariablen
  79.       mit Integer-Ergebnis wird häufig, je nach Reihenfolge der Summanden,
  80.       nur der ganzzahlige Anteil der Flei₧kommazahl verwendet. Dies kann bei
  81.       ungleichen Vorzeichen zu Abweichungen vom Interpreterergebnis führen.
  82.       
  83. a&= x + x& ist für den Compiler gleichbedeutend zu a&=ADD(x,x&)
  84.  
  85.       Das Interpreterergebnis kann man durch CFLOAT erzwingen, also
  86.  
  87. a&= CFLOAT( x + x& )
  88.  
  89. Anmerkung: Ich hatte (leider) damals, Anfang 1986, nicht alle Folgen bedacht,
  90.            als ich die Konvertierung von Flie₧kommawerten nach Integer die
  91.            Nachkommastellen abschneiden lie₧, was z.B. für Zufallszahlen bis
  92.            zu einer Obergrenze sehr nützlich ist. So ergibt in GFA-BASIC
  93.            x%=RND*640 eine Zahl zwischen 0 und 639, bei Rundung ergäbe sich
  94.            eine Zahl zwischen 0 und 640 (x%=639.5 wäre 640).
  95.            Andererseits wollte ich weder eine andere Rundungsmethode für den
  96.            Compiler einführen, noch, wie im 2.0 Compiler, in jedem Fall die,
  97.            erheblich langsamere, Flie₧kommaadditionsroutine aufrufen.
  98.            Für den Fall, da₧ ein Programm an vielen Stellen durch diesen
  99.            Fehler betroffen wäre, und so erheblichen Testaufwand verursachen
  100.            würde, habe ich eine neue Compileroption eingeführt:
  101. $%6        wenn der Wert nach $% die 6 erreicht, so wird die entsprechende
  102.            Optimierung abgeschaltet. Dies bedeutet in der Regel ein erheblich
  103.            längeres und auch langsameres Programm. Deshalb bitte nur im Notfall
  104.            verwenden und möglichst auch dann auf den problematischen
  105.            Programmteil beschränken. ($%6 .... $%0).
  106.  
  107.  
  108.            FOR-NEXT Schleifen mit ganzzahligen Variablen werden bei
  109.            Überschreiten des Höchstwertes für den betreffenden Variablentyp     
  110.            nicht abgebrochen. FOR i|=0 to 255 ergibt also eine Endlosschleife,
  111.            da zuerst i| incrementiert wird (BYTE(255+1(=0!), und somit der
  112.            Vergleich (<=255) immer erfüllt bleibt. Dafür gibt es jetzt eine
  113.            neue Compileroption:
  114.  
  115.                         $N+
  116.            Hier wird eine zusätzliche Überlaufprüfung zum NEXT hinzugefügt,
  117.            dies bewirkt allerdings zwei zusätzliche Programmbytes und etwa
  118.            1 µs an Laufzeitverlust. Deshalb ist diese Option über
  119.  
  120.                         $N-
  121.            wieder ausschaltbar.
  122.  
  123. Auf der Diskette befindet sich auch noch das Prgramm MAKE_NDX.PRG. Mit 
  124. diesem Programm kann das Index-File einer Library erzeugt werden. Das
  125. Programm MAKE_NDX.PRG sucht voreingestellt immer nach der Library
  126. 'GFA3BLIB'. Ein anderer Libraryname kann über den Command-String übergeben
  127. werden. Lesen Sie dazu auch Compilerhandbuch Kapitel 3.2.2 'Einbindung
  128. unter Benutzung der C-Bibliotheken'.
  129.  
  130.