SATURDAY, AUGUST 29, 2026|No. 13114
Technology · Retro-Computing

BASIC Interpreter for UEFI Machines Offers Retro-Computing Experience

A new BASIC interpreter, Thoreau BASIC, has been developed to run directly on UEFI systems, bringing a classic programming experience to modern hardware.

The Thoreau BASIC interpreter brings a classic programming environment to modern UEFI machines.
The Thoreau BASIC interpreter brings a classic programming environment to modern UEFI machines. · Photo by Lorenzo Herrera on Unsplash
1 sources
Pipeline ingest
3 reads
Positive / Neutral / Negative
0 countries
Related coverage

Thoreau BASIC

A GW-BASIC–compatible interpreter that runs on bare metal (a Windows version is available, too).

The data segment is sized to the largest block of conventional memory the firmware (or Windows) reports, which on a modern machine is gigabytes.

Language

  • (mostly) GW-BASIC compatible. Programs load and save as ASCII.
  • Numeric types, including 32 and 64-bit integers (%, &, &&), single and double precision, strings.
  • 32 bit wide line numbers.
  • DEF FN, GOSUB, ON…GOTO/GOSUB, DATA/READ/RESTORE, and the rest of the control flow.
  • Error trapping: ON ERROR GOTO, RESUME / RESUME NEXT / RESUME n, ERL, ERRON BREAK GOTO

Graphics

  • PSET, LINE, CIRCLE, PAINT and friends at native framebuffer resolution. PSET, LINE and PAINT usable with 16 color EGA or 24 bit R,G,B syntax.

  • 16-color EGA palette and 24-bit color: COLOR r,g,b (and a background triple).

  • Bitmaps: LOADBMP slot, file$ reads a 24/32-bpp Windows .BMP into a data-segment slot; BITBLT slot, x, y [,key] blits it, with an optional transparent color key for sprites.

  • GRAMAXX / GRAMAXY (graphics) and TXTMAXX / TXTMAXY (text) are readable variables holding the actual bounds.

  • SCREEN x,y requests a mode. SCREEN 1024,768 works on almost every machine and is usually the boot mode; try your native resolution for a sharper picture. GRAMAXX/GRAMAXY update after a SCREEN command.

Text

  • IBM VGA 8×16 font, soft-scrolling console.

  • Multiple text windows: WINDOW @n, x1,y1,x2,y2 carves a region; PRINT @n, CLS @n, LOCATE @n and COLOR @n work inside it, each window with its own cursor and pen/paper. Plain PRINT still owns the whole screen.

Memory & hardware

  • A three-pointer memory model with no 64KB ceiling. Arrays in the billions of elements, if you want them.

  • PEEK, POKE, VARPTR, and readable pointers into the machine: LOMEM, HIMEM, FREEBOT, FREETOP, SCRNADR, GRAPITCH.

  • 64-bit HEX$ / OCT$.

Disk I/OSAVE, LOAD, MERGE, FILES, KILL, running directly on the UEFI Simple File System.

Editing — full-screen EDIT, AUTO line numbering, and RENUM (renumbers and rewrites every GOTO/GOSUB/THEN/ELSE/ON…/RESTORE/RESUME/ERL reference).

Timing — the TIMER variable reads a high-precision clock from the CPU's invariant TSC.

New in v1.2

  • CHDIR, MKDIR, RMDIR, FIELD, GET#, PUT#, LSET, RSET
  • CVI, CVS, CVD, MKI$, MKS$, MKD$
  • TAB(), SPC()
  • OPTION BASE, ERASE
  • NAME old$ AS new$
  • MERGE
  • DELETE
  • CSGN, CDBL
  • ERROR n, TRON, TROFF
  • SCREEN () function

New in v1.1.3

  • MID$ can be an assignment now
  • ERL wasn't stored and no error line was shown when a program exited with an error
  • INPUT: backspace didn't work right

New in v1.1.2

  • When available RAM was less than 4 GB, the Windows version bailed out.
  • BASIC lines are now fixed to 244 characters without line numbers.
  • EDIT/LIST bug: when line number was greater 32767 it showed an empty line 0 instead.

New in v1.1.1

  • Bare metal: Fixed the slow scrolling and writing to the framebuffer.
  • Win d ows: Added autostart. You may now call ThorauBASIC with a .bas filename attached, it will autostart.

New in v1.1

  • Much faster. A per-line token cache, a precedence-climbing expression evaluator, and variable-slot caching . Roughly 25× quicker on compute-heavy programs. The bundled Mandelbrot dropped from ~230s to under 10s, and Conway's Life now runs interactively. Lunar Lander runs at a fixed 100 fps now.

  • Bitmaps (LOADBMP/BITBLT), text windows with per-window color, ON ERROR/ON BREAK/RESUME, ERL/ERR, RENUM, and PEEK/POKE/VARPTR.

  • Correctness fixes: exact 64-bit integer math (overflow promotes to double), cleaner number formatting, and full-width HEX$.

More information

Updated11 hours ago
Published29 days ago
StatusIn development
CategoryTool
AuthorTarjan
GenreEducational
Tagsbasic, Experimental, gw-basic, interpreter, programming, Retro
ContentNo generative AI was used

Download

Download Now Name your own price

Click download now to get access to the following files:

v 1.2, BASIC64.efi - Rename this to BOOTX64.EFI and put it in \EFI\BOOT to bo 111 kB

v 1.2, Virtual Harddisk, use this to boot inside a Virtual Machine. 12 MB

ThoreauBASIC-Windows-1.2.zip 1.3 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

Rarevogel21 days ago(+1)

Nice! I have been messing with buildroot to create the smallest and quickest possible booting basic, and it works, but this solution is much cleaner, and is not relying on any OS. Interested in further developments!

Reply

PAN's pipeline reviewed approximately 1 open sources for this article. No human editor reviewed this article before publication.

Related Reads

Show on timeline →