- BASIC09
BASIC09 is a structured
BASIC programming language dialect developed byMicroware for the then-newMotorola 6809 CPU. Somewhat in the fashion ofUCSD Pascal it was implemented via 'compilation' into an intermediate representation. It was paired with the OS-9 Operating system, also from Microware and took advantage of several OS-9 features (eg, shared memory, module loading and unloading, etc).The language processor turned BASIC09
source code into atoken ized, optimized,bytecode , called I-code in the BASIC09 literature. If that bytecode version of the source were saved (called packing), it could also be executed by a much more compact version of the interpreter, called RunB (no editor, no prettyprinter, no extraneous information included for human convenience, no debugger, ...).BASIC09 had very impressive features for its time (it was first available in
1980 ), and most especially for its memory requirements. It was also fast, in comparison with nearly all other microcomputer BASICs. Most of the features listed below have significant benefits for those writing more than example programs.Microware produced a version of BASIC09 for
OS-9 /68k (for the 68000), calling it Microware BASIC, but did not develop a version for OS-9000 (the portable version of OS-9).ignificant features
* reasonably structured control flow provisions (eg, line numbers were mainly needed for computed
, as BASIC09 did not have a switch/case statement, or computedGOTO
)GOSUB
* structure declaration (rare in any BASIC variant then; more common now)
* intrinsic integer andBoolean data type s
* more than two significant characters in variable names (some BASICs of the time allowed only 1(!), manyMicrosoft BASIC variants allowed only 2)
* procedures with local variables (indeed, "all" variables in BASIC09 are local to procedures) and parameter passing by reference
* a reasonabledebug ger (its only significant drawback was that one could not examine the contents of fields in structures)
* a way to interface tomachine language code, which could be passed parameters using the BASIC09 calling sequence
* automaticprettyprint ing of source, which enforced a standard layout and avoided the ghastly mess that was the usual appearance of a program of any size in the interpreted BASICs of the time. Programmers normally would cram as many lines together as possible to avoid line number memory overhead -- not a problem in BASIC09Procedure packing
Once one or more BASIC09 procedures are debugged to the programmer's satisfaction, they can be "packed" (or converted permanently to the I-code (ie, bytecode) form) into a file. Among other things, line numbers, comments and names of local variables are discarded during packing, so that, unlike the typical interpreted BASICs of the time, comments and intelligible variable names incur no runtime cost and were therefore not a 'burden' programmers learned to avoid to maximize runtime execution time or memory efficiency. For the BASIC09 releases intended for the
OS-9 operating systems, "packed" procedures are in fact OS-9 modules; the OS-9 shell recognizes them as I-code and automatically calls the RunB interpreter to execute them. RunB avoids much of the runtime overhead found in typical interpreted BASICs of the day -- not to mention that one can do integer calculations where appropriate rather than doing everything in floating point -- so that BASIC09 programs run extremely quickly in comparison with equivalent programs in the interpreted BASICs of the time. RunB was also smaller than nearly every other BASIC interpreter package of even remotely comparable capabilities.
Wikimedia Foundation. 2010.