U64 BBC BASIC: BBC BASIC on the Commodore 64
U64 BBC BASIC 1.0.0 — BBC BASIC 3.10 for the Ultimate 64 and C64 Ultimate

U64 BBC BASIC: BBC BASIC on the Commodore 64

October 23, 2026
C64Ultimate 64BBC BASIC6502retro

U64 BBC BASIC puts the BBC Micro's BASIC on a Commodore 64 with an Ultimate 64 or C64 Ultimate. The interpreter is the original BBC BASIC 3.10, unchanged; around it sits a new operating system, written for the C64 and for everything the Ultimate can do. Version 1.0.0 is out today, free and open source, with five videos that show what it does.

The BASIC I Never Had

I learned to program as a kid on a Texas Instruments TI-99/4A and a ZX Spectrum, typing in listings from magazines such as Sinclair User, and later on an Oric Atmos. Their BASICs were better than the Commodore 64's BASIC V2, where almost everything is POKE and PEEK. In 1992 I wrote board games in BASIC 7.0 on the Commodore 128: better, with DO and LOOP, but still GOSUB to line numbers and two-letter variable names.

The BASIC I envied was on the BBC Micro: named procedures and functions, local variables, REPEAT and UNTIL, graphics and sound commands, and an assembler built in. I never had one. Years later I did get BBC BASIC V on an Acorn Archimedes, where ArchBAS brought Eric Schraf's graphics programs to it. U64 BBC BASIC closes the circle: BBC BASIC on the Commodore 64.

The Original Interpreter, Unchanged

The interpreter is BBC BASIC 3.10, built from Ivo van Poorten's annotated source, which goes back to J.G. Harston's source reconstruction. It is not patched: the only addition is a build target, and the build checks that the interpreter is identical, byte for byte, to the reference ROM. Everything machine-specific lives in the MOS, the machine operating system that BBC BASIC calls for its output, input, files and sound, just as it does on a BBC Micro.

That MOS is new: some 55,000 lines of 6502 assembler with their comments, spread over the banks of the cartridge. Its design follows Ivo's Atari port of BBC BASIC. The aim is that BBC BASIC programs run: the language, and the behaviour of the VDU, graphics, sound and file statements. It is not a BBC Micro emulator, so programs that poke the BBC's hardware or call BBC machine code will not work.

The first surprise came from the cartridge itself: on the Ultimate 64, code fetched from cartridge ROM runs at bus speed, 1 MHz, whatever the turbo setting. So BASIC is copied into the RAM under the cartridge at start-up, and runs from there at the Ultimate's full speed: a million empty FOR loops take 5.4 seconds at 64 MHz, against about three minutes on a BBC Micro.

BBC Screen Modes on a VIC-II

The BBC's graphics modes have 256 lines and square pixels; the VIC-II has 200 lines. On a 64 MHz Ultimate, U64 BBC BASIC draws the BBC modes the way Upic does: the CPU writes every pixel's colour into the border colour register while the beam passes, with the Ultimate's programmable palette turning colour numbers into BBC colours. The result is the exact 320 x 256 picture of a BBC Micro. The price is CPU time: while such a picture shows, BASIC keeps about 15% of the processor, still about two and a half times a BBC Micro.

Next to those: teletext MODE 7 with mosaics and double height, the C64's own modes, Upic full pictures of 384 x 256 with every pixel its own colour, every shape of the BBC Master and the Graphics Extension ROM, 32 multiplexed sprites with a sprite editor, CharPad maps and a PETSCII mode.

Twenty-Four Voices

SOUND and ENVELOPE work as on a BBC Micro, and with *SOUND BBC they even sound like one. In SID mode they reach all 24 voices of 8 UltiSIDs, with instruments. A song tracker records what SOUND plays and plays it back in the background: the music demo builds each piece note by note from BASIC and then plays it on 24 voices. Ultimate Audio adds sample effects and ProTracker MODs, through a port of ModPlayer_16k by Freshness.

The sound engine runs in the interrupt and keeps its data in the REU. That gave the hardest bug of the project: memory that was wiped now and then. The Ultimate's REU bank register reads back only its low three bits, so an interrupt that saved and restored the REU registers restored the wrong bank. Now every REU transfer in the foreground sets its registers up with interrupts off.

Files, the Ultimate and the Network

Files live on the Ultimate's drives, through its Command Interface. The REU doubles as a 15 MB RAM disk, /REU. A file browser on F1 opens files by type, and copies, moves and deletes whole folders. Disk images mount with one command, and the clock comes from the internet.

BASIC talks to the network as well: TCP and UDP connections as file channels, HTTP requests and JSON. The network demo is a Ceefax-style service in MODE 7, written in BBC BASIC, with the weather, this blog, the news and where the International Space Station is.

Programming from a PC

A VS Code extension runs a program on the machine with Ctrl+F5, shows its output, and puts run-time errors on the source line. It debugs with breakpoints, stepping and variables, through a hook in BASIC's TRACE, and it formats programs by their block structure. A command-line tool and an MCP server let AI coding agents write and test BBC BASIC on the real machine too.

Tested on Real Hardware

An end-to-end test suite runs every feature in VICE and on the Ultimates themselves, typing on the keyboard and reading back the screen and the machine's state. Making the videos found one more bug, in the VS Code extension: the debug console lost characters when a pause split a printed line.

The Videos

Five videos, all captured from the Ultimate's video and audio streams on real hardware, with the palettes applied in post (the stream carries colour numbers only):

  1. Introduction: why it exists, typing and running BBC BASIC, the speed, the line editor, *HELP, VS Code
  2. Graphics: the BBC modes, Upic, teletext, sprites, maps, PETSCII
  3. Sound and music: BBC SOUND, 24 SID voices, the song tracker, MODs, samples, speech
  4. Files, the Ultimate and the network: the file browser, the RAM disk, HTTP, the teletext service
  5. The demos: the showcase, Eric Schraf's programs, BBC BASIC classics

All five in one playlist.

Made with AI

In full: U64 BBC BASIC was made with an AI coding assistant, Anthropic's Claude (in Claude Code). Claude wrote most of the code: the MOS in 6502 assembler, the tools, the end-to-end test suite and the VS Code extension, and it wrote the documentation and the user manual. It also recorded, edited and scripted the five videos; the narration voice is Piper text-to-speech. My part was the idea and the goals, the design choices and every decision along the way, reviewing the results, and testing everything on real Ultimates, where most of the bugs came to light. The BBC BASIC interpreter itself is not AI work: it is Sophie Wilson's original, unchanged.

Thanks

To Sophie Wilson and Acorn Computers for BBC BASIC; to Ivo van Poorten for the annotated source and the Atari port; to J.G. Harston for the source reconstruction and decades of documentation; to Freshness for ModPlayer_16k; to Aleksi Eeben and Christian Gleissner for Upic; to Eric Schraf and Aurel Wizzard for their graphics programs; and to Gideon Zweijtzer for the Ultimate.

Version 1.0.0 Is Available Now

The cartridge images, the demos, the user manual as PDF and the VS Code extension are in the release on GitHub. It needs an Ultimate 64, Elite or Elite II with firmware 3.15a or newer and a 16 MB REU. On the Commodore 64 Ultimate it is not fully functional yet: it relies on features of the Ultimate 64 firmware 3.15a, which Commodore has not yet released in a C64 Ultimate firmware update. The source, the manual and the full list of features are in the repository; it is also on the projects page.

Share:
Facebook X Bluesky WhatsApp