The home of BBC BASIC


BBC BASIC Console Mode editions

Click on picture for full-size version:

Towers of Hanoi
Towers of Hanoi demo

Chess game
Chess game

Eight Queens puzzle
Eight Queens puzzle

Snake game
Snake game

Sorting demo
Sorting demo

Sudoku solver
Sudoku solver

The BBC BASIC Console Mode editions are advanced cross-platform implementations of BBC BASIC for Windows (64-bit), Linux (x86, 64-bit), Mac OS-X (64-bit) and Raspberry Pi (Raspbian, 32-bit). They do not support sound or graphics but otherwise are highly compatible with BBC BASIC for Windows and BBC BASIC for SDL 2.0. They share with those dialects many new and advanced features including data structures, PRIVATE variables, an EXIT statment, long strings, timer interrupts, an address-of operator, byte variables, a line continuation character, indirect procedure and function calls and improved numeric accuracy. Up to 256 Megabytes of memory is provided for the user's program, data and stack.

The Console Mode editions take their input from stdin and send their output to stdout so may be run at a regular command prompt or in a client-server context (e.g. through a network or serial connection, or even via the internet). The console/terminal is assumed to be VT-100 compatible, which the great majority are, in which case most of the standard BBC BASIC VDU commands behave as expected (with the exception of graphics commands), although text viewports are not supported. Alternatively these editions may be used in CGI (Common Gateway Interface) applications, or as a shell replacement. Common shell commands may be accessed by prefixing them with a star (*), in the usual BBC BASIC way.

Limited program entry and editing capabilities are provided in Immediate Mode by means of the AUTO, DELETE, EDIT, LIST [IF], LISTO, LOAD, NEW, RENUMBER and SAVE commands, but in the case of large programs you are recommended to use either the BBC BASIC for Windows or BBC BASIC for SDL 2.0 IDE. The LOAD command will load a program in internal (tokenised) format or as a plain-text file (line numbers will be added if necessary). A BASIC program may be executed automatically by specifying it as a command-line parameter (it must be in tokenised format) or by giving it the same name as the executable but with a .bbc extension.

The Console Mode editions incorporate an assembler for the appropriate CPU (a 64-bit x86 assembler in the case of the Windows, MacOS* and Linux editions, and a 32-bit ARM assembler in the case of the Raspbian edition). You can access Application Program Interface (API) functions from assembler code and from BASIC (using the SYS statement), allowing an experienced programmer to produce sophisticated applications.

These editions are entirely free and may be downloaded for the supported platforms as follows :

Windows edition (64-bits) (135 Kbytes)
Mac OS-X edition (64-bits) (113 Kbytes)
Mac M1 edition* (64-bits) (99 Kbytes)
Linux edition (64-bits, x86) (108 Kbytes)
Raspberry Pi edition (32-bits) (86 Kbytes)

In each case the zip file contains the executable, some libraries and a few demonstration BBC BASIC programs; the contents should be extracted to a suitable directory. You may wish to add this directory to your PATH so that the executable and libraries can be accessed from 'anywhere'.

* The Mac M1 ('Apple silicon') edition does not have a usable assembler, because Apple enforces the Hardened Runtime on that platform.

VersionDateModification details
0.3411-Jun-2021 Worked around apparent MinGW _ftelli64() bug; improved speed by about 10% by optimising the expression evaluator.
0.3319-Apr-2021 QUIT n sets exit code; FOR...NEXT loop variable promoted to float; fixed RIGHT$(s$)= bug; new example.
0.3212-Mar-2021 Fixed *KEY not accepting (e.g.) |!|H; fixed FOR...NEXT bug in Raspbian edition; added &
0.3130-Jan-2021 Supports command-line > 255 characters; structure made static for CentOS; *KEY accepts leading spaces; Mac M1 edition.
0.3015-Dec-2020 Changed 'autorun' priority; *DUMP accepts start & end offsets; fixed files being padded; fixed *cmd near end of library crash.
0.2909-Nov-2020 Fixed a one-byte buffer overrun in the *KEY command; extended PTR() to accept a FN/PROC name as a parameter.
0.2807-Oct-2020 Fixed a subtle bug that could cause unwanted behaviour if ON ERROR LOCAL was used in a nested function.
0.2701-Oct-2020 Fixed ON ... PROC bug.
0.2612-Sep-2020 File pointers (PTR#) are always 64-bits; new PTR()= statement and SYS function; extended =PTR() function.
0.2504-Aug-2020 Fixed assigning a string to a numeric variable not reporting 'Type mismatch'; added libraries in the lib/ directory.
0.2422-Jul-2020 'Fatal' errors return to immediate mode rather than quitting; short text programs should not be misidentified as tokenised.
0.2318-Jul-2020 Introduced different timeouts for one-way (client → server) and round-trip (server → client → server) communication.
0.2217-Jul-2020 Escape timeout doubled from 100 to 200 ms.
0.2113-Jul2020 The LOAD command will now load a program in plain-text format as well as in ('Russell') tokenised format.
0.2011-Jul-2020 Console input handled in a separate thread.

Home - Products - Contact us

Best viewed with Any Browser Valid HTML 4.0!
© Richard Russell 2021