BBC BASIC is a version of the
BASIC
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 ...
programming language released in 1981 as the native programming language for the
BBC Micro home/personal computer, providing a standardized language for a UK computer literacy project of the
BBC. It was written mainly by
Sophie Wilson.
BBC BASIC, based on the older Atom BASIC for the
Acorn Atom, extended contemporary
microcomputer
A microcomputer is a small, relatively inexpensive computer having a central processing unit (CPU) made out of a microprocessor. The computer also includes memory and input/output (I/O) circuitry together mounted on a printed circuit board (PC ...
BASICs with named
DEF PROC
/
DEF FN
procedures and functions,
REPEAT UNTIL
loops, and
IF THEN ELSE
structures inspired by
COMAL. The
interpreter also included statements for controlling the BBC Micro's four-channel sound output and its low-/high-resolution eight-mode graphics display.
Due to a number of optimizations, BBC BASIC ran programs much faster than
Microsoft BASIC running on similar machines. The optimizations included using multiple
linked list
In computer science, a linked list is a linear collection of data elements whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes whic ...
s for variable lookup rather than a single long list, pre-defining the location of integer variables, and having separate integer maths routines. Speed was further improved on the BBC machine by its fast
RAM chips, which allowed the
MOS Technology 6502 processor and
Motorola 6845
The Motorola 6845, or MC6845, is a display controller that was widely used in 8-bit computers during the 1980s. Originally intended for designs based on the Motorola 6800 CPU and given a related part number, it was more widely used alongside v ...
display driver to share memory without either pausing for access. As a result of these design features, BBC BASIC ran
David Ahl's
Creative Computing Benchmark in 21 seconds, besting even the
IBM Personal Computer, and far outpacing most other 8-bit platforms. The only commercial 8-bit BASIC computers that were as fast as the BBC Micro were the Swedish
ABC 80 and
ABC 800. The improved BASIC 4 on the
BBC Master executes the same benchmark in about seven seconds.
One of the unique features of BBC BASIC was the
inline assembler, allowing users to write
assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
programs for the
6502 and, later, the
Zilog Z80,
NS32016 and
ARM. The assembler was fully integrated into the
BASIC interpreter and shared variables with it, which could be included between the
and characters, saved via *SAVE and *LOAD, and called via the CALL or USR commands. This allowed developers to write not just assembly language code, but also BASIC code to emit assembly language, making it possible to use code-generation techniques and even write simple compilers in BASIC.
History
In 1978
Hermann Hauser and
Chris Curry
Christopher Curry (born 28 January 1946 in Cambridge) is the co-founder of Acorn Computers, with Hermann Hauser and Andy Hopper. He became a millionaire as a result of Acorn's success.
In his early career days, he worked at Pye, Royal Radar ...
founded
Acorn Computers. Much of the code was developed at Cambridge University by
Sophie Wilson and her colleagues. Starting with the original Acorn dialect of BASIC - "12K of working language which could be 'bent at will'" that had been informed by Algol W and BCPL in its design - Wilson "set about bending it towards Pascal" in collaboration with John Coll, creating a language combining "Microsoft necessities" and "Pascal-ish variations". Some Pascal-influenced features such as labels and multi-line conditional statements had to be dropped, however, due to broad compatibility expectations with Microsoft BASIC, ostensibly imposed by the requirements of the BBC.
Platforms and versions
BBC Micro

The full version list is available here:
BASIC I, the original version, was shipped on early
BBC Micros.
BASIC II was used on the
Acorn Electron and BBC Micros shipped after 1982, including the Model B. It added the
OPENUP
and
OSCLI
keywords, along with offset assembly and bug fixes.
BASIC III, was produced in both a UK version and a United States market version for Acorn's abortive attempt to enter the cross-Atlantic computer market. Apart from a few bug fixes, the only change from BASIC II was that the
COLOUR
command could also be spelled
COLOR
: regardless of which was input, the UK version always listed it as
COLOUR
, the US version as
COLOR
. The main place that BASIC III can be found is as the HI-BASIC version for the external second processor.
BASIC IV, also known as CMOS BASIC, available on the
BBC Master machines, was changed to use the new instructions available in the 65SC12 processor, reducing the size of the code and therefore allowing the inclusion of
LIST IF
,
EXT#
as a statement,
EDIT
,
TIME$
,
ON PROC
, , in
VDU
statements and faster floating point. Bug fixes were again included.
BASIC IV(1986) was a further improvement to BASIC IV, and was included on the Master Compact machine. The version of BASIC on the Compact included re-coded mathematical routines, said to provide a 30% speed increase over the version included in the rest of the Master series.
HI-BASIC: this was available in two versions, the first based on BASIC III, and the second based on BASIC IV. Both were built to run from a higher address (&B800) on the second processor, rather than the usual &8000 address on the BBC B. This allowed more program space to be available on either the external or internal 6502 Second Processors. A version was introduced to support a second Zilog Z80 processor.
Another version of BBC BASIC, called BAS128, was supplied on tape and disc with the BBC Master and Master Compact; it loaded into main RAM and used the 64 kB of Sideways RAM for user programs. This provided support for much larger programs at the cost of being a lot slower than the normal ROM-based version.
The interpreter can deal with both BASIC and 6502 assembly language, which can be included between the
and characters. This contributed to the system's popularity with industrial and research engineers.
Further details/Determining BASIC version
As the BBC MOS and RISC OS were usually supplied on ROM, it may be assumed that a specific release of the operating system contained a specific version of BASIC. As such, there is no simple way to determine ''which'' version of BASIC is actually running other than by enquiring the operating system identity and thus making an assumption.
See als
BeebWikientry for INKEY.
On the BBC family, it is possible to run both the standard BASIC ''and'' an enhanced HIBASIC on the 6502 Second Processor. One may determine if the program is running on the second processor by examining the initial value of PAGE, it will be &800 if using the second processor. To distinguish between BASIC and HIBASIC, one should examine the initial value of HIMEM. This will be &8000 for BASIC running on the second processor, and &B800 for HIBASIC on the second processor.
A similar situation exists on
RISC OS where there may be the normal BASIC or BASIC64 (which offers higher precision maths). Normal BASIC identifies itself as "BASIC V" and BASIC64 identifies itself as "BASIC VI", therefore the following (used before any error has occurred) will distinguish one from the other:
IF INSTR(REPORT$,"VI") THEN PRINT "BASIC64" ELSE PRINT "BASIC"
There are better ways of doing this, see th
BeebWiki In almost all cases you shouldn't need to be testing for what BASIC or platform your program is running on, just make the call and read whatever returned data is returned and deal with it.
Acorn Archimedes (RISC OS)
With the move to the 32-bit
ARM CPU and the removal of the 16 KB limit on the BASIC code size many new features were added. BASIC V version 1.04 was 61 KB long. Current versions of RISC OS still contain a BBC BASIC V interpreter. The source code to the
RISC OS 5 version of BBC BASIC V has been released under the Apache 2.0 license by
RISC OS Open. In 2011
TBA Software released test versions of an updated BASIC which includes support for
VFP/NEON from
assembler.
Amongst the new commands and features supported were:
*
WHILE-ENDWHILE
*
IF-THEN-ELSE-ENDIF
*
CASE-OF-WHEN-OTHERWISE-ENDCASE
,
*
RETURN
parameters in procedures,
* local arrays,
* procedure libraries (
LIBRARY
,
INSTALL
and
OVERLAY
),
*
LOCAL DATA
and
LOCAL ERROR
handlers,
* a relative
RESTORE
,
*
array operations,
* new operators,
*
STEP TRACE
,
* Commands for the new sound system, mouse, graphics.
The graphics commands were entirely backwards compatible, the sound less so; for example, the
ENVELOPE
keyword from BASIC V onwards is a command that takes fourteen numeric parameters and effectively does nothing— as in older versions, it calls OS_Word 8, but that does nothing on RISC OS. The in-line 6502 assembler was replaced by an
ARM assembler. BASIC V was said, by Acorn, to be "certainly the fastest interpreted BASIC in the world" and "probably the most powerful BASIC found on any computer".
BASIC VI is a version of BASIC V that supports
IEEE 754
The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many problems found i ...
8-byte format real numbers, as opposed to the standard 5-byte format introduced in BASIC I.
BBC BASIC V and VI were delivered as standard on the
Acorn Archimedes and the
RiscPC. A version of BBC BASIC V was also available to run on the
ARM second processor for the BBC Micro.
A compiler for BBC BASIC V was produced by Paul Fellows, team leader of the Arthur OS development, called the Archimedes BASIC Compiler and published initially by DABS Press. ABC was able to implement almost all of the language, with the obvious exception of the EVAL function, which inevitably required run-time programmatic interpretation. As evidence of its completeness, it was able to support in-line assembler syntax. The compiler was written in BBC BASIC V. The compiler (running under the interpreter in the early development stages) was able to compile itself, and versions that were distributed were self-compiled object code. Many applications initially written to run under the interpreter benefitted from the performance boost that this gave, putting BBC BASIC V on a par with other languages for serious application development.
Other platforms
BBC BASIC has also been ported to many other platforms.
A
NS32016 version of BBC BASIC was supplied with the Acorn 32016 coprocessor and Acorn ABC.
In addition to the version of BBC BASIC supplied with the
BBC Micro's Zilog Z80 Second processor, a Z80-based version of BBC BASIC also exists for
CP/M
CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers, is a mass-market operating system created in 1974 for Intel 8080/ 85-based microcomputers by Gary Kildall of Digital Research, Inc. Initial ...
-based systems.
A Zilog Z80 version of BBC BASIC was also used on the
Tiki 100 desktop computer,
Cambridge Z88 portable and the
Amstrad NC100 Notepad and
Amstrad NC200 Notebook computers. This version has been implemented on the
TI-83 Plus and
TI-84 Plus series
graphing calculators. Due to efforts of J. G. Harston (also responsible for a
PDP-11
The PDP-11 is a series of 16-bit minicomputers sold by Digital Equipment Corporation (DEC) from 1970 into the 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of all models were sold, ...
version) a version o
BBC BASICfor the
Sinclair ZX Spectrum was released in January 2002, with many improvements made in subsequent releases.
For
PC-based systems, BBC BASIC was also implemented for
DOS as ''BBCBASIC (86)'', which aimed for maximum compatibility with the BBC Micro, and ''BBasic'', which concentrated on the BASIC language, with its own enhancements based on BASIC II.
A version of BBC BASIC integrated with the
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
graphical user interfaceBBC BASIC for Windowscreated by
Richard Russell, developer of the Z80 and x86 versions, was released in 2001. This version is still under active development, seeing much industry use currently. Whilst supporting nearly completely the original BBC BASIC specification (BASIC IV), the Windows version supports much of BASIC V/VI syntax as well as some advanced features of its own. Features unique to BBC BASIC for Windows include interpreter support for record/structure types, and the ability to call Windows
API routines or those in an external
DLL. Recent versions have included advanced features comparable with languages like
C, and an external library has recently added support for objects.
BBC BASIC for SDL was also developed by Richard T Russell, supporting Windows, Linux and a number of mobile devices supporting the SDL library, as well as a version which allows the running of BBC BASIC programs as applets in a web-page via the Web Assembly framework.
A
GPL clone of BBC BASIC named ''Brandy'', written in portable
C, is also available.
An emulator of the BBC Micro for the
Commodore Amiga
Amiga is a family of personal computers introduced by Commodore in 1985. The original model is one of a number of mid-1980s computers with 16- or 32-bit processors, 256 KB or more of RAM, mouse-based GUIs, and significantly improved graphi ...
was produced by Ariadne Software for
CBM CBM may refer to:
Businesses and corporations
* Cambrex Corporation (NYSE: CBM)
* CBM (AM), a radio station in Montreal now known as CBME-FM
* CBM-FM, a radio station in Montreal
* CBM TV, a scrapped Freeview channel
* Central Bank of Myanmar
* Che ...
(UK). While extremely fast, it did not emulate the 6502 at full speed, so assembly code would run slower than a real BBC while BASIC programs would run much faster. Due to the way the optimised BASIC and the 6502 emulation interacted, almost no commercial games would run (but well behaved code and educational software generally worked); additionally it used a slightly less precise floating-point numeric format. For a while it was bundled with a special academic package of the
Amiga 500, in the hope that schools would replace their ageing BBC Bs with Amiga 500s.
BBC Micro publishing house
Computer Concepts
Xara is an international software company founded in 1981, with an HQ in Berlin and development office in Hemel Hempstead, UK. It has developed software for a variety of computer platforms, in chronological order: the Acorn Atom, BBC Micro, Z ...
produced a version of BBC Basic for the Atari ST, named
Fast ST BASIC, as a ROM cartridge.
A version of BBC BASIC V (Z80) has also been made for the TI-83/84+ Texas Instruments calculator families by Benjamin Ryves.
A
Commodore 64
The Commodore 64, also known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International (first shown at the Consumer Electronics Show, January 7–10, 1982, in Las Vegas). It has been listed in the Guinness ...
version ''Shado'' was produced by a small software house
Aztec Software
The Aztecs () were a Mesoamerican culture that flourished in central Mexico in the post-classic period from 1300 to 1521. The Aztec people included different ethnic groups of central Mexico, particularly those groups who spoke the Nahuatl l ...
in the early 1980s. Patched Versions of Acorn's 6502 based HI-BASIC have also been experimentally run on C64, with an interface to the C64 Kernel, replacing the Acorn MOS calls otherwise made.
There have also been efforts to make 6502 based version of BBC BASIC available on the Apple II series of computers
Applecornbeing one such effort.
BBC BASIC is the programming language used in the Agon Light, an 8-bit
Z80-based
single board computer and
microcontroller
A microcontroller (MCU for ''microcontroller unit'', often also MC, UC, or μC) is a small computer on a single VLSI integrated circuit (IC) chip. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable i ...
designed by Bernardo Kastrup.
Notes
See also
*
Dot space
In computer programming, whitespace is any character or series of characters that represent horizontal or vertical space in typography. When rendered, a whitespace character does not correspond to a visible mark, but typically does occupy an a ...
References
External links
*
* http://www.rtrussell.co.uk/products/
* http://mdfs.net/bbcbasic/
TI-83+ and TI-84+ implementation of BBC BASICThe Amstrad NC Users' SiteEbook programming guide with interfacing methodsBBC BASIC Reference Manual(for RISC OS)
(HTML)
BBC microcomputer User Guide(PDF)
Python code vs BBC Basic for WindowsR.T. Russell's Z80 BBC Basic is now open sourcea
GitHub
{{DEFAULTSORT:Bbc Basic
BASIC programming language family
BASIC interpreters
Acorn Computers
RISC OS programming tools
CP/M software
Discontinued BASICs
Programming languages created in 1981
Programming languages created by women