Download
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
Bug reports, compatibility notes and strange BASIC edge cases are very welcome.
To support development, PayPal is available. No nag screens, no locked features.