Thoreau BASIC


What if BASIC never went out of fashion?

What if it kept evolving?

And what if it still ran your GW-BASIC programs with virtually no changes?

Meet Thoreau BASIC.

BASIC as if it never stopped growing.

Version 3.4.1 · 14 October 2026 · Free

Download 3.4.1 What it is Example Documentation itch.io Contact

Download

Windows x64 · ZIP

UEFI x64 · ZIP

Plain-text documentation

3.4.1 release notes

THOREAU_GM.TBGM · losslessly compressed wavetable · 513.5 MB

3.4.1

AUDIT no longer mistakes comparisons with INKEY$, CLIPBOARD$, DATE$, TIME$ or ERROR$ for scalar assignments. Genuine function-name conflicts still produce warnings; checking a program does not run it or consume keyboard input.

This maintenance release collects the latest 3.4 fixes, including row-first TXTWINDOW coordinates. Programs already using the updated row,column forms need no further changes. For older programs, the coordinate migration is described below.

Included from 3.4

More ways to build your own tools in BASIC. Evaluate an expression held in a string with EVAL, or read, assign and declare variables by name with GETVAR, SETVAR and DCLVAL. Names can now begin with an underscore. Ordinary type rules and array bounds still apply.

ACCEPT can return field-navigation keys, shortcuts and outside mouse clicks to your program. RESTART resumes the last field with its draft, caret, selection and undo state intact. Comma and semicolon separators join the existing colon syntax.

Windows Alt shortcuts and previously silent Ctrl+digit or punctuation combinations now reach INKEY$, without duplicate characters or the unwanted Alt-menu beep. Alt+Space keeps its system menu and AltGr keeps normal text entry. SELECTBOX gains proper up/down scroll arrows.

Compatibility changes: Text-cell positions now consistently use row,column. Swap the first two arguments in older SELECTBOX calls. Both TXTWINDOW forms, including @n, now take row1,column1,row2,column2: swap each coordinate pair, keeping the window number in place. Graphics coordinates remain x,y. Names longer than the existing 37-character base-name limit now raise an error instead of being silently shortened.

GETFILES can skip and count filenames outside the BASIC character set, while FILEATTR reports file and directory attributes. On Windows, GETDRIVES, DRIVETYPE and DRIVEPATH$ expose drive-letter roots, types and network mappings.

On UEFI, choose clockwise display rotation with ROTATE = 0, 90, 180 or 270 in THOREAU.CFG. Text, graphics, menus, sprites and the pointer follow the logical screen. Newly created standalone EFI applications support the same setting.

AUDIT warns about unintended scalar accumulation in PARFOR and accepts valid empty IF branches. LOCATE reports malformed arguments consistently in direct mode and programs, and errors in later lines no longer get blamed on earlier valid statements when JIT is on.

See the manual and 3.4.1 release notes for this maintenance update and the retained 3.4 changes since the original 3.3 release, complete syntax and platform limits.

What it is

Thoreau BASIC starts from GW-BASIC-style syntax but is not trapped in 1983. It has 64-bit memory, 24-bit graphics, sprites, mouse input, TCP/IP and HTTP, a complete GM/GS wavetable with MIDI/WAV/FLAC/Opus playback, complex/quaternion/octonion values, a debugger, profiler, source tools, multicore PARFOR, and native x64 JIT compilation with automatic loop SIMD.

The same BASIC language runs as a normal Windows program or directly from UEFI firmware without an operating system. BASIC programs can also be packaged as standalone Windows EXE or bootable EFI applications.

Still BASIC

10 CLS
20 PRINT "HELLO FROM THOREAU BASIC"
30 FOR I=1 TO 5
40 PRINT I
50 NEXT I
60 END
RUN

And now the orchestra is BASIC too:

SOUND PRELOAD
LOADMID 0,"BALLADE.MID"
PLAYMID 0

Graphics, networking and sound remain ordinary BASIC commands, not separate frameworks.

BASIC without an operating system

The UEFI build boots directly on x64 machines. It uses GOP graphics, firmware or raw HID keyboard input, mouse support with fallbacks, networking through firmware protocols or Thoreau's own SNP-based stack, HDA/Azalia PCM sound where available, and the same interpreter/JIT and GM wavetable used by the Windows version.

Pixel Prose

Pixel Prose is included as a Thoreau BASIC example and is also available as standalone EXE and EFI builds. The original versions for DOS, Commodore 64 and Amstrad CPC live with my other retro projects on itch.io.

Project

The project page and downloads are on itch.io.

Contact

info@thoreaubasic.com

Bug reports, compatibility notes and strange BASIC edge cases are very welcome.

To support development, PayPal is available. No nag screens, no locked features.