GFA
Michael,
I had even worse problems with files. I had one program which
opened three files and invariably would process through to a specific
record and then would GURU and lock up the machine. Never figured out why.
I also had terrible problems with GFA's memory management. The early
versions would only recognize the first 512k of memory. Anything beyond
that was unknown. Also the early GFA would not run if any other program
was run first! What a strange bug. They apparently fixed those two
problems with the latest version, but I never found out about the file
problems. I couldn't get the compiler to compile half of the programs I
had written, and I have heard others complain they couldn't even get some
of the demos to compile! GFA was a very powerful Basic which would have
been a super language, but it was badly implemented, buggier than anything,
had a terrible editor, and was poorly supported. Its passing is a shame,
but perhaps it won't be much missed.
I use HiSoft regularly and find it a very suitable language. It is
reasonably AmigaBasic compatible, but hasn't the bugs. The compiler is
reliable as is the language. It has a lot of extensions, particularly in
the area of loop controls (LOOP, LOOP UNTIL, LOOP WHILE, DO … LOOP, IF
… THEN … ELSEIF, WHILE … WEND, REPEAT … UNTIL, SELECT CASE.) With
some effort I've developed some added subroutines and functions to provide
additional extensions such as getting a directory into an array, font
support and control, access to arp file requestor, submenus, etc. I am
very pleased with HiSoft and would recommend it unconditionally. F-Basic
is also another good product. The latest version, 3.0, has an integrated
editor, user-defined operations on RECORDs (it has a RECORD structure) and
superb string manipulation, ala, SNOBOL. It's extremely fast, faster than
almost anything other than assembler. It has sound and graphic support.
It's only drawback is that it isn't completely Basic, but rather is a mix
of Basic and Pascal. It is strongly typed, like Pascal. It also provides
for defining both local and global subroutines as well as variables. I