Thoreau BASIC

3 min read Original article ↗

Download

Windows x64 · ZIP

UEFI x64 · ZIP

Plain-text documentation

3.2 release notes

THOREAU_GM.TBGM · losslessly compressed wavetable · 513.5 MB

3.2

File browsers and menus are now ordinary BASIC commands. GETFILES gathers files, directories and the parent entry with an optional file mask. SELECTBOX turns a string array into a keyboard- and mouse-controlled selector, with multiple columns, optional colors, and single or double box-drawing frames.

Filenames keep their original spelling and case throughout the file commands. Masks are case-sensitive. Full paths can contain up to 4,095 bytes, including an added extension; filesystem limits on individual names still apply.

STATEWRITE and STATELOAD checkpoint selected variables to two alternating, checksummed generations. FLUSH, FILECOMMIT and FILECOPY support staged saves and verified backups. CRC32 checks byte strings, and TEXTSTATS counts words and characters in a range of a string array.

SYSTEMINFO$ reports CPU and firmware details, usable AVX2 or SSE2, PARFOR capacity, the calibrated TSC counter rate, display backend and build information. Targeted JIT changes reduce work in floating-point INT and native complex, quaternion and octonion arithmetic. RUN can restart a program without growing the host stack, and HELP category headings appear once.

The Opus wavetable and WAV, FLAC, Opus and MIDI playback remain available. Sound banks are expanded to PCM before playback, with no decompression while music plays. Standalone EXE and EFI applications can omit the bank with NOGM. See the manual and release notes for the full changes and syntax.

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.

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.

If you want to support development, PayPal is available. No nag screens, no locked features.