home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / useful / reviews / software / programmer / gfabasic < prev    next >
Internet Message Format  |  1992-05-06  |  19KB

  1. From: honp9@menudo.uh.edu (Jason L. Tibbitts III)
  2. Subject: REVIEW: GFA BASIC v3.5
  3. Followup-To: comp.sys.amiga.programmer
  4. Keywords: programming, BASIC, compiler
  5. Organization: Blob Shop Programmers
  6. Reply-To: clcp16@vaxa.strath.ac.uk (Stewart C. Russell)
  7.  
  8. GFA BASIC 3.5 is a fast BASIC interpreter, with advanced commands which
  9. include matrix manipulation and direct access to the Exec, Intuition, Dos,
  10. and Graphics libraries.  The optional compiler generates code which is
  11. comparable in execution speed to a good C compiler.
  12.  
  13.  
  14. *** Statement of Interest ***
  15.         I have no commercial links with any part of the GFA organisation.
  16.         I have written several tutorial articles on GFA BASIC in Jeff
  17.         Walker's Just Amiga Monthly (JAM) magazine, the UK's only non-games
  18.         Amiga magazine.  I have never received any incentive, financial or
  19.         otherwise, to write about GFA BASIC; I paid cash for my GFA system.
  20.  
  21.  
  22. *** Product Preamble ***
  23. Product: GFA BASIC 3.5 Interpreter
  24.          GFA BASIC 3.5 Compiler
  25.  
  26. Supplier:       GFA Data Media (UK) Ltd
  27.                 Box 121
  28.                 Wokingham
  29.                 Berkshire
  30.                 RG11 1FA
  31.                 England
  32.  
  33. Price:          Interpreter #49.95 Sterling
  34.                 Compiler    #29.95    "
  35.  
  36. Those hashes are pound signs, btw; ASCII doesn't support them.  I have
  37. tried to find the suppliers outside the UK, but have received no answers
  38. yet.  The product is advertised in Amiga World, discounted to around $85
  39. (for the Interpreter, I assume) and one of the advertisements suggests that
  40. the US distributor is Antic.
  41.  
  42.  
  43. *** Reviewer Info ***
  44.                         Stewart C. Russell
  45. Paper Mail Address:     140 Capelrig Road
  46.                         Newton Mearns
  47.                         Glasgow G77 6LA
  48.                         Scotland
  49.  
  50. Telephone:              041-639 5372 (in UK)
  51.  
  52. E-Mail:                 clcp16@vaxa.strath.ac.uk
  53.         (This account should be active until July, when I graduate.)
  54.  
  55.                         scruss@cix.compulink.co.uk
  56.         (This is my "professional" account.  I get charged for any
  57.          international mail I receive or send, so use only as a last resort.)
  58.  
  59. [Ed. note:  Mr. Russel has informed me that he can forward any queries to
  60. Les Player, the MD of GFA Data Media (UK) Ltd.  I prefer not to give
  61. Mr. Player's address publicly.]
  62.  
  63.  
  64.  
  65. AmigaBASIC isn't one of the world's marvels of high speed execution.  It
  66. also get bored with the tedium of running your programs sometimes, and
  67. wanders off into oblivion.
  68.  
  69. The first version of GFA BASIC I saw (v3.041) was fast, but was so bug
  70. ridden as to be completely useless.  In a way, it was like the first release
  71. of the Amiga's operating system; it had something special, but the bugs
  72. made it less than useful.  And now the bugs are (mostly) gone, people
  73. remember it as it used to be - unstable.
  74.  
  75. GFA BASIC has been long in development, originally appearing on the Atari
  76. ST around 1986.  There is still the lingering feeling that, although the
  77. authors are clearly excellent programmers, they are still not 100% sure of
  78. the Amiga.
  79.  
  80. What you get
  81. ------------
  82.  
  83. There are at least 300 commands in GFA BASIC, ranging from bit operations
  84. to a file requester.  Most of the inch-thick manual is given over to command
  85. descriptions, with very small program fragments illustrating command usage.
  86. There is no tutorial in the manual, and the lack of properly commented
  87. examples (they are commented - but in German) is worrying.  The manual
  88. suffers from truly appalling translation in places, which can range from
  89. the faintly amusing to the downright misleading.
  90.  
  91. The GFA BASIC 3.5 interpreter is some 135 KB in length, allowing it to run
  92. comfortably on a basic A500.  Only one program can be edited at a time, but
  93. multiple interpreters can be run.  When this is done, blocks of text can be
  94. cut from one interpreter and pasted to another.
  95.  
  96. A shorter run-only interpreter is also supplied, and this may be freely
  97. distributed with your programs.  This program only accepts tokenised GFA
  98. BASIC files, and consequently could never be used for program development.
  99.  
  100. The Front End
  101. -------------
  102.  
  103. The single-bitplane editor screen has two rows of ten gadgets along the
  104. top, with a clock and a line number indicator on the right hand side.  These
  105. gadgets allow various file operations (Load, Save, etc) and edit operations
  106. (Block, Find, etc).  These gadgets correspond to function and Shift-function
  107. key combinations.
  108.  
  109. A couple of these gadgets merit special mention.  The Test gadget tests the
  110. integrity of your program's flow control structures, and warns you of any
  111. problems.  The Direct gadget drops you into a command line, where BASIC
  112. commands are executed as you type.  You should be able to work out what the
  113. Run gadget does.
  114.  
  115. The GFA editor is rather strange.  It parses the input line when you press
  116. Return, and won't let you continue if there is a syntax error.  It also does
  117. not allow blank lines, insisting on an apostrophe at the least.  You'll hate
  118. it at first, but when you realise that it allows abbreviated input (p for
  119. PRINT, inp for INPUT) and automatically indents loop structures, you'll
  120. begin to like it more.  Only one command is allowed per line, and line
  121. numbers must not be used.  In line comments are allowed though, but these
  122. must be prefixed with an exclamation mark.
  123.  
  124. Functions & Features
  125. --------------------
  126.  
  127. GFA BASIC knows about most of the commands in the Intuition, Dos, Exec,
  128. Layers, Diskfont Graphics and Icon libraries, and parses them
  129. appropriately; typing in "a%=allocremember(...)" for example would result
  130. in "a%=AllocRemember(...)" being returned.  (The very pedantic would also
  131. note that a syntax error would be returned too; ellipsis is not a valid
  132. input to AllocRemember()... :-) )
  133.  
  134. If your favourite routines exist in another library, you can use the FD
  135. file to create the basis for a stub.  I've already used this to create
  136. interfaces for the iff.library (for IFF handling) and the medplayer.library
  137. (for playing MED modules).  In this respect, being able to call these
  138. library functions from an interpreted language makes GFA BASIC a great
  139. prototyping tool.
  140.  
  141. As with most modern BASICs, GFA supports SELECT...CASE structures, and
  142. ELSEIF clauses in IF structures.  All structures support an EXIT IF clause,
  143. which works similarly to "break" in C.
  144.  
  145. INC, DEC, ADD, SUB, MUL and DIV manipulate variables far more quickly than
  146. the more usual infix operators.  Bitwise operators exist which are similar
  147. to (when compiled, identical to) 68000 instructions.
  148.  
  149. Windows and Screens are handled well, with HAM and Halfbrite as accessible
  150. as in any other language.  All the Window/IDCMP flags are available too.
  151.  
  152. Graphics commands are slightly better than AmigaBASIC's offerings; the DRAW
  153. command contains a full turtle graphics package, based on HPGL.  A slight
  154. nasty is the DISPLAY command; this is a hangover from the Atari, where it's
  155. quite safe to switch off Display DMA.  DISPLAY on the Amiga results in
  156. horrific flickering and all-over nastiness; avoid.
  157.  
  158. Two useful hangovers from the Atari are ALERT and FILESELECT.  ALERT creates
  159. a small requester similar to the GEM Dialog box, and nothing like as
  160. frightening as an Intuition red Alert().  FILESELECT creates a usable file
  161. selector; it's not as good as the ARP one, but it works well.  ALERT and
  162. FILESELECT are not Requesters, so they don't need a window to be attached
  163. to.
  164.  
  165. Arrays are used in the way that BASIC originally intended; as matrices.
  166. Matrices can be added, subtracted, multiplied, inverted, transposed, copied
  167. (in whole or part, with optional transposition) and the determinant and
  168. rank obtained.  Matrix housekeeping tasks for storing, recalling and
  169. printing matrices are supplied; a reasonable package.
  170.  
  171. Arrays can also have members inserted, deleted or moved, so dynamic list
  172. handling is a possibility.  Hardcoded quicksort and shellsort routines
  173. (fast) mean that the old bubble sort routine you've trusted since your PET
  174. days can finally be put out to grass.
  175.  
  176. Sound handling is OK.  I rarely use it though.
  177.  
  178. Variable Types
  179. --------------
  180.  
  181. The standard GFA integer is 32 bits long, unlike AmigaBASIC's sixteen which
  182. corresponds to GFA's Wo