From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search

FutureBasic is a free, 32-bit BASIC compiler for Apple Inc.'s Macintosh.

It consists of an integrated development environment (IDE), editor, project manager, etc for both PowerPC and Intel microprocessors. Since 1 January 2008, the package contains a translator, FBtoC, that converts the FutureBasic syntax to C and automatically calls Apple's GNU Compiler Collection (gcc). No knowledge of C is required. FutureBasic supports access to Mac OS library calls.


History of FutureBasic

FB began life in the mid-1980s[1] as ZBasic, which was created by Andrew Gariepy and envisioned as a cross-platform development system. Before long, the cross-platform aspects were dropped in favor of focusing on Macintosh development. ZBasic acquired a devoted following of developers who praised its ease of use and the tight, fast code produced by the compiler (a legendary labor involving extensive use of hand-built 68K assembly language code). In 1992 and as the next major step after ZBasic version 5[2], Zedcor Inc., the company of the Gariepy brothers Andy, Mike, Peter and friends based in Tucson, Arizona presented FutureBASIC (later called FBI).[3] In 1995 Staz Software,[4] led by Chris Stasny, acquired the rights to market FutureBASIC. Chris Stasny started this business with an upgraded version, namely FBII,[5] and with his own development, the Program Generator[6] (PG PRO), a CASE tool.

The transition from 68k to PowerPC central processing unit (CPU) was a lengthy process that involved a complete rewrite of the editor by Chris Stasny and an adaptation of the compiler by Andy Gariepy. This was undertaken during Apple's darkest days when the further existence of the Mac and Apple itself was questioned in the news every week. The result of their efforts, a dramatically enhanced IDE called FB^3[7], was released in September 1999[8], featuring among many other things a separate compiler application, various open, hence modifiable runtimes,[9] inline PPC assembly, a simplified access to the Macintosh Toolbox Application Programming Interface (API), as well as an expanded library of built-in functions. Major update releases introduced a full-featured Appearance Compliant[10] runtime written by Robert Purves and the Carbon compliance of generated applications. Once completely carbonized to run natively on the Mac OS X, the FutureBASIC Integrated Development Environment (FB IDE) was called FB4 and first released in July 2004.

Based in Diamondhead, Mississippi, Staz Software was severely hit by Hurricane Katrina in August 2005 and development pace was slowed at a time when major effort was required to keep the IDE up to date with Apple's evolution towards the Intel-based Macintosh.

More recently, an independent team of volunteer FB programmers developed a translator (FBtoC) that allows FB to generate applications as Universal Binaries through the use of the open source GCC compiler which is included with each copy of Apple's Mac OS X system software.

On January 1, 2008, Staz Software announced that FB would henceforth be freeware and FB4 with FBtoC 1.0 was made available.[11]

Processor and Operating System Support

System requirements to create universal binaries with FBtoC: Mac OS X v10.4 or higher, GCC 4.0 or higher, and the Cross-development SDKs must be installed.


File:FutureBASIC Editor.png
Screenshot of FutureBASIC Editor & Project Manager

FutureBasic syntax supports procedural, modular styles of programming using function calls and local variables.

Program flow & structural blocks

User-defined functions (a.k.a. LOCAL FNs in FutureBasic) are much like C or Pascal functions.

  • They can also be totally insulated from the main program (LOCAL MODE statement);
  • they allow recursion;
  • they can be called dynamically at runtime (DEF FN USING statement);
  • called automatically by FutureBasic built-in event vectors (ON EVENT FN statement);
  • used as cooperative threaded functions (THREADBEGIN statement).

Specific structures (ENTERPROC/EXITPROC) are used for callback procedures when calling the Macintosh Toolbox.

The language provides the programmer with a complete set of vectors for event-driven applications, such as ON MENU, ON MOUSE, ON DIALOG, ON APPLEEVENT, ON EDIT, ON TIMER, etc.

Other structured keywords include conditional blocks such as:

  • LONG IF .... XELSE ... END IF
  • DO .... UNTIL
  • WHILE ... WEND
  • FOR ... NEXT

Legacy BASIC language commands such as: GOTO and GOSUB/RETURN with line numbers and labels - while discouraged - are supported for educational purposes.

An example of a simple program to input a number and display "Hello World" is given below

//Example FutureBasic program

dim i,num,a$                    //These are our variables

window 1                        //open standard window
input "Number of loops "; a$    //BASIC input from user
num=val(a$)                     //convert text to number
long if num>0                   //Structured IF
  for i = 1 to num              //BASIC loop
    print "hello world"         //output text
  next i                        //end of loop
 xelse                          //Otherwise
  print "Not today"             //no number entered
end if

do                              //Wait until Apple-Q
until ( gFBQuit )               //so that we can see results

Data Types

FutureBasic supports complex data types include single and double precision floating points, double length integers, arrays, strings and records (similar to struct in C). Of note is the DYNAMIC array structures (size of memory footprint grows only when used) including DYNAMIC string arrays called INDEX$ and "container" variables which can perform string-like operations on data streams up to 2Gb in size.

C and Pascal borrowed coding styles

Commenting in the code is substantial allowing REMark statements, and C style /* remark */ statements. Sections of code can be bookmarked for easy reference.

Other alternate syntax borrowed from C allows the use of operators such as ++ -- == != += -= || &&

Characters in Pascal strings are accessible much like items of an array: a$[0] (length byte); a$[1] (first character in string a$).

While the FutureBasic language still supports old style variable typing with suffix identifiers, it provides a modern alternative with the as clause: dim b as byte; dim s as short, dim l as long; etc.

Bridges to other languages

  • AppleScript scripts can be assembled with FutureBasic statements then executed on the fly by a running application. Example:
route _toAppleScript 
print "return the path to me as string" 
route _toScreen  

long if usr ApplescriptRun( message$ ) = _noErr 
  print message$ 
end if
  • FutureBasic allows the triggering of UNIX commands. Example:
// print a calendar for 2009  
open "UNIX", 1, "cal 2009" 
dim a$

   line input #1, a$
   print a$
 until eof(1)
  close 1 
  • FB allows inline C code. Example:
// Simple C function to add two integers
long simple_add( long a, long b )
    long sum;
      sum = a + b;
    return (sum);

// Define C function so FB can see it
toolbox fn simple_add ( long a, long b ) = long

// Create little program to add 2 + 2 with the C function

window 1

print fn simple_add ( 2, 2 )

until ( gFBQuit )


  • No cross-platform development. This is a Macintosh-only compiler.

FutureBasic supports Macintosh PPC and Intel architectures but does not compile on or for any version of Microsoft Windows.

  • No 64bit support

FutureBasic doesn't support 64bit addresses. It does support 64bit integer variables.

  • Missing runtime for object oriented programming

In the early 2000s, the CD that was delivered with the FB releases used to contain an experimental Object Oriented runtime; an interesting new paradigm for the FB programmers. However this runtime was withdrawn without explanation.

  • Missing CASE/RAD tool

The development of PG PRO was stopped on the road to Mac OS X. While it is still possible to create applications that run on 68K and PPC including Carbon with that CASE tool, its use is highly discouraged. Programmers should use instead Apple's Interface Builder to handle the user interface of their applications.


Personal tools

Served in 0.141 secs.