This page will attempt to answer some of the most commonly asked questions about GFA-Basic.
What is the most current version of GFA-Basic?
Version 3.6 TT E was last one ever released. The 'E' simply meant 'English'. There is also a German version marked with a 'D'. The 'TT' means it supports the TT030 video hardware, but it will run fine on other Atari machines.
|Atari 400/800||1.4 (Frost BASIC)||-||-||[E]|
|Atari XL/XE||1.5 (TURBO-BASIC XL)||1.1||-||[E][E][C][C][R]|
|windows32||2.30 Build 1160 - Jul 25 2001||-||-||[E]|
|SCO Open Desktop (unix)||vaporware (GFA-Basix)||-||-||-|
Can I access the STiK/STinG socket layers?
Yes. Also works with GlueSTiK. Download my STiK source code. For a working example download my Doodle source code.
Can I access the MiNT-Net socket layer?
Yes and no. Technically it's possible, but since all the socket stuff is in gcc library format, you can't call it. Someone would have to port the MiNT socket library to a compatible library format. As of MiNT v1.16 the socket library has been incorporated into the MiNT kernel as standard GEMDOS() calls. The only limitation is the function gethostbyname() (the resolver) is still part of the MiNT-lib. Solution for now, use the resolver in GlueSTiK. Download my MiNT-Net source code. Also see my HighWire Devkit.
Can I access the PCI bus on my Atari clone?
Yes. Download my PCI source code.
Can I access Shared Libraries?
Yes. Download my SLB source code.
Can I create a Shared Library?
No. A shared library itself cannot be created since the GFA-Compiler is not flexible enough to build the binary as required.
Can I access an LDG libraries?
Yes. Download my LDG source code.
Can I create an LDG library?
No. An LDG library itself cannot be created since the GFA-Compiler is not flexible enough to build the binary as required.
Can I use the FPU chip in the computer?
Yes and No. Most people don't know it, but GFA-Basic can use the FPU in a limited fashion. It's related to the function TT?. By default GFA-Basic does not use the FPU at all. However, one call to TT? will activate the FPU support. Once activated, the following functions will be redirected to the FPU: SIN(), COS(), TAN(), EXP(), LOG(), and LOG10. Note however, that the function TT? uses self-modifying code. Please use an updated editor and/or library.
Why does the TEXT command limit me to 118 characters?
This limit comes from the fact that GFA-Basic's internal VDI INTIN() array is fixed at 128 elements. You can get around this problem with assembler or download my VDI fix source code. If you are using standard ST screen modes you may never notice this problem.
Is it possible to get the address of PROCEDUREs and FUNCTIONs?
Yes, but not easily. It requires some assembler tricks. Even if you have such addresses, you can't make external calls directly into a GFA-Basic application. This has something to do with the way parameters and LOCALs are internally handled. Attempting to do so anyway usually ends with a 'LOCAL error' (#90) message.
Can I load and/or call an overlay?
Yes. Download my PUG source code.
What library format does GFA-Basic use?
GFA-Basic uses the standard DRI format. The same as PureC for example. Devpac can also create DRI object files.
Can the GFA-Basic Linker link additional object files?
It sure can. The only limit is how many you can cram into a single command line. They must be standard DRI object files. Devpac and PureC can be used to create DRI object files. In fact you can have parallel code such that when compiled, the object file is used, but when interpreted it uses the code below the $X command. See option $X in the compiler manual for further information. Quick example:
FUNCTION add(a%,b%) $X AddLng !the name of the routine to be called from the object module (must be the 1st line of the function) ' when compiled the rest of this routine is replaced by the code in the object module ' however when interpreted the $X commmand is ignored, and code here is executed instead LOCAL r% r%=a%+b% RETURN r% ENDFUNCNote: There is a serious bug related to compiler option $X and the above example will only work properly with my revised compiler.
Can I write a desk accessory?
Can I write a CPX module?
No. CPX modules use callbacks which won't work in GFA-Basic. Also the binary must be constructed in a certain way and the GFA-Compiler is not flexible enough to build such binaries.
Can I write an auto folder program and/or a TSR?
Yes. However you are limited to what you can do from the auto folder.
Can I write TOS and TTP style applications?
Function wind_new() is not built in to the language, can I still call it?
Yes. GFA-Basic provides access to all the OS layers: BIOS(), XBIOS(), GEMDOS(), AES, and VDI. All that is required is the proper documentation in order to write a binding for any system call. You can also write a binding to replace a GFA command that ends up making a system call.
Should I use hardcoded lower case file names?
It depends. For starters that is the default for ext2fs which is available for MiNT. There is also minix which understands lower case file names. All versions of TOS can handle file names and paths in lower case. Never assume your application won't migrate to a machine running MiNT.
Can I code memory protection clean applications for MiNT?
Yes. It's simply a matter of following the recommended guidelines when allocating memory blocks. If you know for a fact that another application is going to access your memory block directly, then you need to make sure that memory block is allocated correctly. If you don't, then MiNT will terminate the offending application. The AV Protocol is a good example.
Can I create an XDD or XIF driver for MiNT?
No. The GFA-Basic Compiler is not flexible enough to build the required binary.
Can MiNT help me with advanced debugging?
Yes. If you happen to have a bug that you just cannot seem to find, there are advanced ways to track them down. Firstly MiNT tries to help by reporting what sort of crash occured and where. Also GFA-Basic has some options to aid in advanced debugging. See section Debugging with GFA-Basic and MiNT of my GFA-Basic Compendium HYPertext for an explaination of this debugging method.
Did Frank Ostrowski ever write any other Atari programs?
Yes. Before Frank Ostrowski wrote GFA-Basic he created Turbo-BASIC XL for the Atari 8-bit machines. It was published in Happy Computer Magazine and became quite popular. He also had a game called TwoMaze (Pacman clone) published in the same magazine.
Did Frank Ostrowski write any software after GFA-Basic for the Atari ST?
Yes. Frank ported GFA-Basic to the amiga. Frank is credited in the manual for the ms dos port of GFA-Basic. Frank is also credited in the manual for the windows 16-bit port of GFA-Basic. I am not sure at this time who created the windows 32-bit port. GFA-Basic for OS/2 and GFA-Basix for Unix were announced, but neither of these came to be.
How different are the various versions of GFA-Basic?
Atari XE: Based on Atari BASIC. Token compatible. This is where it all started.
Atari ST: Some of the commands are similar to those found in Turbo-BASIC XL.
amiga: A direct port of the Atari ST version, bugs and all, plus some new bugs. Recoded just enough of it to make it work, in fact the file formats are nearly identical.
dos: File format completely different.
windows 16-bit: More or less the same file format as the ms dos version with some extra sections added.
windows 32-bit: File format changed again, plain ASCII.
Did GFA-Basic have any competition?
Yes. See table below, it's a breakdown of all known BASICs for the Atari ST.
|BBC Environment Emulator ||1.01AR||1985||Yes||No||Tris 'Mad' Mabbs, BTMsoft|
|Philon Fast/BASIC-M||1.35?||1986?||Yes||Yes||Philon Inc.|
|Henry's Fundamental BASIC ||?||1986?||Yes||No||Philon Inc.|
|SoftWorks BASIC||?||1986?||No||Yes ||SoftWorks Limited|
|Fast Basic ||1.05c||1986||Yes||No||Computer Concepts (Xara Group Ltd)|
|ST BASIC (aka Personal BASIC)||2nd||1987||Yes||No||Atari Corporation (Metacomco plc.)|
|DBASIC ||1st||1987||Yes||No||DTACK Grounded Inc.|
|True BASIC||2.0||1987||Yes||Yes ||True BASIC Inc.|
|LDW BASIC Compiler||2.01||1987||No||Yes||Logical Design Works, Inc.|
|Power BASIC Compiler ||1.21||1988||No||Yes||HiSoft|
|STOS - The Game Creator ||2.6||1988||Yes||Yes||Mandarin Software (Clickteam)|
|Real BASIC||1.3?||1988?||Yes||No||Computer Crossware Labs, Inc. (On2)|
|FirST BASIC ||1.0?||1988?||No||Yes||HiSoft|
|HiSoft BASIC [F]||2.10||1992||No||Yes||HiSoft|
|HiSoft BASIC Professional [F]||?||1989?||No||Yes||HiSoft|
|GFA-Basic [F]||1.0||1986||Yes||No||GFA Software Technologies GmbH|
|GFA-Basic [F]||2.0, 2.01, 2.02||1986||Yes||Yes||GFA Software Technologies GmbH|
|GFA-Basic [F]||3.0, 3.02, 3.03, 3.04, 3.05, 3.07||?||Yes||Yes||GFA Software Technologies GmbH|
|GFA-Basic [F]||3.5, 3.51||?||Yes||Yes||GFA Software Technologies GmbH|
|GFA-Basic||3.6||1991||Yes||Yes||GFA Software Technologies GmbH|
|Omikron Basic [F]||3.0, 4.0, 5.20||1998||Yes||Yes||Berkhan-Software|
|Basic 1000d ||1.20||2000||Yes||No||Jean-Jacques Labarthe|
|Advan BASIC ||?||?||No||Yes||Advan Language Designs|
|Bywater BASIC ||2.25||1997||Yes||No||Download|
Suggestions by the following also went into this FAQ: