FutureBASIC
   HOME

TheInfoList



OR:

FutureBasic is a free BASIC
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
for
Apple Inc. Apple Inc. is an American multinational technology company headquartered in Cupertino, California, United States. Apple is the largest technology company by revenue (totaling in 2021) and, as of June 2022, is the world's biggest company ...
's
Macintosh The Mac (known as Macintosh until 1999) is a family of personal computers designed and marketed by Apple Inc. Macs are known for their ease of use and minimalist designs, and are popular among students, creative professionals, and software en ...
. It consists of an
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools ...
(IDE), editor, project manager, etc. for both PowerPC and
Intel Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 seri ...
microprocessor A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circ ...
s. Since 1 January 2008, the package has contained a translator, FBtoC, that converts the FutureBasic syntax to C and automatically calls Apple's
GNU Compiler Collection The GNU Compiler Collection (GCC) is an optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free softwar ...
(gcc). No knowledge of C is required. FutureBasic supports access to
Mac OS Two major famlies of Mac operating systems were developed by Apple Inc. In 1984, Apple debuted the operating system that is now known as the "Classic" Mac OS with its release of the original Macintosh System Software. The system, rebranded "M ...
library calls.


History

FB began life in the mid-1980s as ZBasic, which was created by Andrew Gariepy and envisioned as a
cross-platform In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software ...
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, Zedcor Inc., the company of the Gariepy brothers Andy, Mike, Peter and friends based in
Tucson , "(at the) base of the black ill , nicknames = "The Old Pueblo", "Optics Valley", "America's biggest small town" , image_map = , mapsize = 260px , map_caption = Interactive map ...
,
Arizona Arizona ( ; nv, Hoozdo Hahoodzo ; ood, Alĭ ṣonak ) is a state in the Southwestern United States. It is the 6th largest and the 14th most populous of the 50 states. Its capital and largest city is Phoenix. Arizona is part of the Fou ...
presented FutureBASIC (later called FBI). In 1995 Staz Software, led by Chris Stasny, acquired the rights to market FutureBASIC. Chris Stasny started this business with an upgraded version, namely FBII, and with his own development, the Program Generator (PG PRO), a CASE tool. The transition from 68k to PowerPC
central processing unit A central processing unit (CPU), also called a central processor, main processor or just Processor (computing), processor, is the electronic circuitry that executes Instruction (computing), instructions comprising a computer program. The CPU per ...
(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. The result of their efforts, a dramatically enhanced IDE called FB^3, was released in September 1999, featuring among many other things a separate compiler application, various open, hence modifiable runtimes, 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 runtime written by Robert Purves and the
Carbon Carbon () is a chemical element with the symbol C and atomic number 6. It is nonmetallic and tetravalent—its atom making four electrons available to form covalent chemical bonds. It belongs to group 14 of the periodic table. Carbon mak ...
compliance of generated applications. Once completely carbonized to run natively on the
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
, the FutureBASIC Integrated Development Environment (FB IDE) was called FB4 and first released in July 2004. Based in Diamondhead,
Mississippi Mississippi () is a state in the Southeastern region of the United States, bordered to the north by Tennessee; to the east by Alabama; to the south by the Gulf of Mexico; to the southwest by Louisiana; and to the northwest by Arkansas. Miss ...
, 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. In 2007, an independent team of volunteer FB programmers, known as the FBtoC team, 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.


Processor and operating system support

System requirements for original Macintosh release: Motorola 68000 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.


Syntax

FutureBasic syntax supports procedural, modular styles of programming using function calls and
local variable In computer science, a local variable is a variable that is given ''local scope''. A local variable reference in the function or block in which it is declared overrides the same variable name in the larger scope. In programming languages with o ...
s.


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 Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathemati ...
; * 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 Macintosh Toolbox implements many of the high-level features of the Classic Mac OS, including a set of application programming interfaces for software development on the platform. The Toolbox consists of a number of "managers," software compone ...
. 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 * SELECT ... CASE... CASE ELSE ... END SELECT * FOR ... NEXT Legacy BASIC language commands such as: GOTO and
GOSUB BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
/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
  HandleEvents
until ( gFBQuit )               //so that we can see results


Data types

FutureBasic supports complex data types include single and double precision
floating point In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can b ...
s, 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$ (length byte); a$ (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 AppleScript is a scripting language created by Apple Inc. that facilitates automated control over scriptable Mac applications. First introduced in System 7, it is currently included in all versions of macOS as part of a package of system aut ...
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$ do line input #1, a$ print a$ until eof(1) close 1 * FB allows inline C code. Example: : BeginCFunction // Simple C function to add two integers long simple_add( long a, long b ) endC // 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 ) do HandleEvents until ( gFBQuit )


Limitations

* No cross-platform development. This is a Macintosh-only compiler. FutureBasic supports Macintosh Intel architectures but does not compile on or for any version of Microsoft Windows. and see bottom of page at:


References

# An history of Basic wars on the Mac platform by Jonathan Hoyle fo
MacCompanion, Part I
# ZBasic 5 reviewed by Dave Kelly fo

# FBI introduced major enhancements to the BASIC language, encouraging the developers to use named constants and local functions instead of subroutines for better structured programs and re-usable code. # Home o
Staz Software,inc.
# FBII was 32bit-clean and could run from Mac 128 to G5-based Macintosh in emulated mode. # Program Generator is a
Rapid application development Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
tool that is flexible enough to build sophisticated applications quickly for the Macintosh pre-Mac OS X environments. For Mac OS X, Appearance compliant programs onwards, FutureBASIC uses Apple's
Interface Builder Interface Builder is a software development application for Apple's macOS operating system. It is part of Xcode (formerly Project Builder), the Apple Developer developer's toolset. Interface Builder allows Cocoa and Carbon developers to creat ...
. # pronounced FB cubed. # A week later the European edition was released which included English, Italian, German (now discontinued) an
French
language versions. There is also

language edition. # Starting with FB^3, a runtime consists of include files written in FutureBASIC that are compiled along with the source code written by the programmer. It contains various declarations for structures, constants, global variables, resources, functions and procedures that constitute the FutureBASIC language. The main runtimes are: ''Standard BASIC'', ''Appearance Compliant'' and ''Mac Toolbox''. # The ''Appearance Compliant'' runtime allows access to most of the features of Apple's '' Appearance Manager''. # {{BASIC Articles with example BASIC code BASIC compilers Discontinued BASICs BASIC programming language family