The home of BBC BASIC



Touch interface
Differences from BB4W
Beginners' Tutorial
Happy Birthday!

Click on picture for full-size version:

Running on Windows
BBCSDL running on Windows

Running on Linux
BBCSDL running on Linux (Ubuntu)

Running on MacOS
BBCSDL running on MacOS

Running on Raspberry Pi
BBCSDL running on Raspberry Pi

Running on Android
BBCSDL running on Android

Running on Amazon Fire TV Stick
BBCSDL running on Amazon Fire TV

Running on iOS
BBCSDL (64-bit) running on iOS

Running in Firefox
BBCSDL running in Firefox

BBC BASIC for SDL 2.0 (BBCSDL) is an entirely free and Open Source cross-platform implementation of BBC BASIC for Windows, MacOS, Linux (x86 CPU only), Raspberry Pi OS (RPi3 or later), Android, iOS or for running in a browser. It combines the simplicity of BASIC with the sophistication of a structured language, allowing you to write utilities and games, use sound and graphics, and perform calculations.

The Desktop editions (Windows, MacOS, Linux, Raspberry Pi) include a BASIC program editor with syntax colouring, live indentation, search & replace and many other features. Built-in diagnostic aids such as run-time trace, listing of variables, single-step execution and a profiler make debugging even the most complex programs straightforward.

The Android and iOS editions, for smartphones and tablets, have a simplified interface optimised for touchscreen control. It too provides a BASIC program editor with syntax colouring, live indentation, search & replace and other features; see here for more details. The Android edition will run nicely on a (64-bit) Chromebook, particularly if you enable window resizing.

The in-browser edition also uses the simplified interface, it is compatible with desktop versions of Brave, Chrome, Edge, Firefox, Opera, Safari & Vivaldi; the Android versions of Chrome and Firefox, and with Safari on iOS. It will also run on a Chromebook.

The Android edition will also run on the Amazon Fire TV or Fire TV Stick and some smart TVs. Several of the supplied example programs can be operated using the navigation wheel and buttons on the remote control, including most of the games. Any sounds or music created by a BASIC program will be played through the speaker(s) of the attached TV.

You can 'compile' your BASIC program to a standalone application bundle which will run without BBC BASIC having to be installed (.exe file in Windows, .dmg file in MacOS, .zip file in Linux or Raspberry Pi OS and .apk file in Android via the BBC2APK utility). You can distribute such application bundles freely without any royalty for BBC BASIC being due.

BBC BASIC for SDL 2.0 is largely compatible with BBC BASIC for Windows; it shares with that dialect many new and advanced features including data structures, PRIVATE variables, an EXIT statment, long strings, event interrupts, an address-of operator, byte variables, a line continuation character, indirect procedure and function calls and improved numeric accuracy. It also retains a high degree of compatibility with the BBC Microcomputer, including emulation of the SOUND and ENVELOPE statements, and the MODE 7 (teletext) screen mode.

Up to 4 Gbytes of memory (256 Megabytes in 32-bit editions and 32 Mbytes in the in-browser edition) is provided for the user's program, data and stack (subject to sufficient RAM being available). Unlike some older versions of BASIC, you won't suffer the frustration of running out of memory! Line numbers are optional.

BBC BASIC incorporates an assembler* which can be used when the speed or other capabilities of the interpreter are inadequate. The assembler depends on the CPU in your device: x86 (32-bit or 64-bit) for Windows, MacOS or Linux; ARM (32-bit or 64-bit) for Raspberry Pi. In the case of Android the assembler is ARM or x86 as appropriate. You can access Application Program Interface (API) functions from BASIC and from assembler code, allowing an experienced programmer to produce sophisticated applications.

BBC BASIC for Windows programs that call Operating System API functions, or that rely on libraries that do not have a direct equivalent in both dialects, will need to be adapted in order to be compatible with BBCSDL. Also, programs that use the *FONT command will require a small alteration. But otherwise programs can be expected to run with little or no modification. Of course, programs that incorporate assembly language code will not run on an ARM-based Android device or Raspberry Pi without significant changes. Details of the differences between BB4W and BBCSDL may be found here.

BBC BASIC for SDL 2.0 is entirely free and may be downloaded for the supported platforms as follows :

Windows edition (Installer) (19.5 Mbytes)
Windows edition (32-bit, Zip) (21.4 Mbytes)
Windows edition (64-bit, Zip) (21.7 Mbytes)
MacOS edition (64-bit) (25.7 Mbytes) ‡
Linux edition (32-bit, x86 CPU) (19.9 Mbytes)
Linux edition (64-bit, x86 CPU) (19.9 Mbytes)
Raspberry Pi OS edition (32-bit) (19.9 Mbytes)
Raspberry Pi OS edition (64-bit) (19.9 Mbytes)
Android edition from the Google Play Store
iOS or iPadOS edition from the Apple App Store
In-browser edition (not IE) (2.0 Mbytes)

The Windows edition is available either as an installer or a Zip archive which simply needs to be extracted to a suitable place. The MacOS, Android and iOS editions are self-installing. The Linux and Raspberry Pi editions must first be unzipped, and then installed according to the instructions in the supplied text file. The in-browser edition needs no installation.

‡ On a Mac you will need to override the "unidentified developer" security warning; there are instructions for doing that here. Please note that the app is signed and is therefore protected against tampering; the warning simply means that it has not been reviewed by Apple. This edition is x86 (Intel) code but will run nicely on an M1 ('Apple silicon') Mac under Rosetta 2 emulation.

* The iOS and in-browser editions are exceptions. Because iOS does not permit 'arbitrary code execution' the assembler, the CALL statement and the USR function are not usable. This is a restriction imposed by Apple and is unavoidable.

VersionDateModification summary (click on the version number for details)
1.40a01-Jul-2024 64-bit Windows binary; integer arrays aligned; updated aagfxlib & pdflib libraries; added & examples; bug fixes.
1.39a26-Feb-2024 Increased initial memory; VDU 19 supports opacity; updated arraylib & gpiolib libraries; added & examples.
1.38a13-Nov-2023 Added Hebrew to DejaVuSansMono; added @fn%(21) table entry; added tabs to; added &; bug fixes.
1.37a01-Sep-2023 Added system variable @cache%; updated SDLIDE & BBCEdit IDEs; added example program; a few minor bug fixes.
1.36a31-Jul-2023 Windows edition makes standalone EXEs; SDLIDE supports bi-directional text; new analyser & Hello_Box2D examples; updated libraries.
1.35a06-Apr-2023 Fixed PLOT 68 plotting when it shouldn't; use unbuffered I/O for serial devices; new examples,,
1.34a07-Feb-2023 Updated SDL2, SDL2_ttf and SDL2_net to the latest versions; updated pdflib library; new script library; new Add SDL Constants utility.
1.33a28-Oct-2022 Enabled *float 80 in ARM editions; fixed failed upload; added FN_readlinesocketM to socklib; restored Ceefax Sport index.
1.32a20-Aug-2022 SDLIDE supports keyword abbreviations; added mysqllib library & mysqldem example program; fixed a minor mouse coordinate issue.
1.31a18-Jun-2022 Updated SDL2, SDL2_ttf & stb_image; listboxes now support multiple selection; updated; new example program.
1.30a08-May-2022 Improved iOS edition; updated the compile & touchide utilities; updated gfxlib library; added & example programs.
1.29a26-Mar-2022 Updated aagfxlib library; updated searchin utility; added & example programs; support for serial I/O; minor bug fixes.
1.28a10-Feb-2022 Updated dlglib, gfxlib & imglib (to support animated GIFs) libraries; added example program; modified to send CR.
1.27a30-Dec-2021 Added support for web bundles; updated audiolib and gfxlib libraries; added example program; several minor bug fixes.
1.26a19-Nov-2021 New audiolib & gfxlib libraries; new & example programs; minor compatibility improvements & bug fixes.
1.25a08-Oct-2021 PAGE may be lowered (with care!); new SUM operator (modulo-264 addition); stringlib library updated to support 64-bit integers.
1.24a20-Aug-2021 Added GCOL 5-7; relative plot commands don't discard the LSB; fixed a memory leak on string array initialisation; fixed bugs in SDLIDE.
1.23a09-Jul-2021 Added 64-bit Raspberry Pi edition; added msgbox library; updated BBCEdit; more Mac shortcuts; fixed cruncher bugs, and more.
1.22a28-May-2021 Added more Mac keyboard shortcuts; added & Box2D sample demos; updated; some performance optimisations.
1.21a16-Apr-2021 Supports some Mac keyboard shortcuts; added box2ddbg library; added & examples; several minor bug fixes.
1.20a03-Mar-2021 Fixed FOR...NEXT bug in ARM editions; added f1-f4 shortcuts in; removed timeout from; several minor bug fixes.
1.19a22-Jan-2021 Extended *dump cmd; new editbox & menulib libraries; new gorillas & textedit examples; new macro recorder for SDLIDE; bug fixes etc.
1.18a04-Dec-2020 New -borderless switch; PTR() accepts FN/PROC name;, & added; BBCEdit updated; bug fixes etc.
1.17a23-Oct-2020 New shaderlib and webgllib libraries; BBCEdit IDE updated; updated to track BBC website changes; bug fixes and more.
1.15a11-Sep-2020 New PTR()= statement and SYS function; SDLIDE has breakpoints and can print a listing; updated &; bug fixes etc.
1.14a03-Aug-2020 New *dump command, updated IDEs, updated &, updated & examples, bug fixes etc.
1.13a19-Jun-2020 MODE7 & SOUND improvements, smooth listbox scrolling, new classlib & mode7lib libraries, new example, bug fixes & more.
1.12a08-May-2020 Improved file selector, touchide copies directories, new example programs, &; bug fixes and more.
1.11a27-Mar-2020 Render batching; MODE 7 font changed; new example programs, &; bug fixes and more.
1.10a15-Feb-2020 Box2D physics engine bundled;,, & example programs added; bug fixes and more.
1.09a11-Jan-2020 New Memory Monitor utility, dlglib library improved, Ceefax simulator updated to include weather, travel & local news, and more.
1.08a01-Dec-2019 Bug fixes, eventlib made 64-bit compatible, added, and example programs, SkyBaby updated.
1.07a20-Oct-2019 Bug fixes, treeview has a scrollbar, aagfxlib supports dotted/dashed lines, listboxes can be drag-scrolled, new SkyBaby example program.
1.06a03-Sep-2019 Antialiased graphics (via new aagfxlib library); assembler fixes;, & example programs added.
1.05a25-Jul-2019 Bug fixes, Goto Line in SDLIDE, combobox support, updated DejaVuSans font, new & 3D animation to accompany .
1.04a23-Jun-2019 VDU 23,24,n| adjusts character spacing; @tmp$ is now always user-specific; & example programs added.
1.03a12-May-2019 BBCEdit IDE updated; Search BASIC programs utility added; multi-column list boxes; rewritten to run on all platforms.
1.02a04-Apr-2019 ARM & 64-bit editions buffer files; dlglib includes trackbar support; new polydots & recorder examples, updated, bug fixes.
1.01a23-Feb-2019 VDU 23,23 works with circles/ellipses/arcs; RECTANGLE SWAP added; SDLIDE improvements; disco, slitscan, surks & swirl examples.
1.00a01-Feb-2019 SDLIDE loads Acorn-format files, Cross Reference utility, ARM align directive, ellipse & treeview libraries, seascape & ellipses examples.

cover photo

Home - Products - Contact us

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