Anyone whose first computing experience came in the form of an 8-bit home computer will tell you about booting straight into a BASIC interpreter. The machine invited you to program it, and no doubt many of our middle aged readers are here today because they ran with that.
Modern computers with their fancy 64-bit multitasking supercomputer operating systems may have lost that experience, but now thanks to [Tarjan] you can bring it back. They’ve produced Thoreau BASIC, a bootable bare-metal BASIC interpreter for x86 machines with UEFI.
It’s largely GW-BASIC compatible, but with a few upgrades for the 21st century. The available memory is now whatever the system reports, so imagine a BASIC machine with gigabytes of the stuff. And while it has all the old-style BASIC you know and love, it also has high-res 24-bit graphics, and can load bitmaps. There can even be multiple text windows, it’s BASIC as you have never seen it before.
We are not sure how many will take this interpreter and run with it, after all maybe those modern 64-bit operating systems can be rather useful at times. But we’re guessing there will be plenty who’ll at least have a play with it for old time’s sake. Meanwhile, BASIC is not the only piece of UEFI goodness we’ve brought you.

Love it! I just ordered a vintage Intel P8052AH-BASIC V1.1 microprocessor chip to build something from. It also boots into BASIC.
Hi, I’ve got one, too! Awesome chip!
It supports interrupts and can store ongoing data in EPROM, even.
Without erase, I believe. Like a PC would on a CD-R.
But btw, for a couple of years the intel AH-BASIC is now free and enhanced.
It can be programmed into many modern 8052 cores.
Maybe useful to beginners..
Ow. Personally, I’d rather recommend to use QB45/QBasic or Turbo Basic/Power BASIC as inspiration here.
Both remove the need for line numbers, support SUBs and allow much cleaner code structure (Turbo Pascal-like).
Sure, GW-BASIC used to be supplied with OEM versions of MS-DOS
and thus rightfully used to be a considered an industry standard,
but it wasn’t much better than C64 BASIC.
Both encouraged to produce spaghetti code, basically.
By contrast, QB/TB allowed to use markers/labels.
A GOTO or GOSUB could have a label rather than a line number.
For example:
10 GOTO 30
20 PRINT “You don’t see me!”
30 PRINT “Hello World!”
40 END
–
GOTO hellow
PRINT “You don’t see me!”
END
hellow:
PRINT “Hello World!”
END
In the 80s, better alternatives to GW-BASIC were Amiga Basic, GFA Basic or Locomotive Basic v2 (bundled with DOS Plus/GEM on Amstrad PC 1512).
Quick info to GW-Basic users.. By default, it uses tokenized format for storage.
You can save GW-BASIC programs in plain ASCII by adding “,A” when saving in GW-BASIC.
That way, you can import the Basic programs in Quick Basic, QBasic, Power BASIC etc.
Even TI-BASIC on TI-8x calculators had labels instead of numbers.
There isn’t a huge difference between QBasic and GW-BASIC. Other than the built-in editor and therefor the removal for the need for line numbers. A lot of the syntax we know and hate from GW-BASIC were alive and well in QB. Such as DIM myarray(10) and DEF SEG = &HA000
I would argue that QB is an evolution of GW, rather than a completely independent language. Certainly an improvement, especially around the easy that you can define new functions in QB. Although if you were handy with DOS Debug you could define any kind of function you wanted in GW.
10 DIM CODE%(20) ‘ Allocates 42 bytes of safe space (21 integers * 2 bytes)
20 DEF SEG ‘ Set the current segment to GW-BASIC’s data segment
30 ADDR% = VARPTR(CODE%(0)) ‘ Get the memory address of the first array element
40 FOR I = 0 TO 10 ‘ Loop through the number of bytes in your code
50 READ HEXVAL$
60 POKE (ADDR% + I), VAL(“&H” + HEXVAL$)
70 NEXT I
80 DATA 55, 89, E5, 8B, 5E, 08, 8B, 07, 8B, 5E, 06 ‘ add 2 words and return the result.
…
100 A% = 10: B% = 5 ‘ Define your integer variables
110 DEF SEG ‘ Return to the default GW-BASIC data segment
120 CALL ADDR%(A%, B%) ‘ Execute the assembly code at the array’s address
130 PRINT “The result is: “; A% ‘ A% will now display 15
how do you turn this into a working QB program … no need, it already is. And since there are no GOTOs you can discard the line numbers if you wish. DOS 5.0 came with a BASIC program to do this for you (REMLINE.BAS)
oops. I don’t know what I was thinking. I should be able to read those as integers directly instead of the broken gymnastics I had.
50 READ BYTEVAL%
60 POKE (ADDR% + I), BYTEVAL%
(all code is for demonstration/entertainment purpose and is not properly tested. since I’m at work an my nice little IBM Model 50 is at home and not internet-enabled)
Hi there! Good point, thanks a lot! 🙂👍
Hm. I remember there’s also PDS 7 and VB-DOS..
They mostly understand the QB syntax, but have advanced capabilities.
Just checked. Another line of Microsoft Basic on PC (non GW-Basic) was Microsoft BASIC-86 and Microsoft BASIC Compiler 5.x and Microsoft BASIC Compiler 6.x.
The Professional Development System 7.x (aka PDS 7) was their successor, basically.
Another difference in philosophy maybe is that QB is/was an IDE (integrated development environment) meant for semi-professional software development.
While MS GW-BASIC and IBM ROM-BASIC (and variants) can be used as operating system sort of.
Like every BASIC (or APL) driven home computer they have immediate mode.
If line numbers are ommitted, the commands are executed after hitting return key.
So they’re closer to an OS or a monitor/debugger programm.
Many home computer fans do apparently miss that these days.
https://en.wikipedia.org/wiki/Direct_mode
So yeah, I see the point of Thoreau BASIC.: It’s a modern version of the IBM ROM-BASIC.
https://en.wikipedia.org/wiki/IBM_BASIC
“In the 80s, better alternatives to GW-BASIC were…”
In addition to those you listed, I have a special fondness for Beta Basic on the Sinclair ZX Spectrum. Complete with the pinnacle of early-80s anti-piracy protection – a manual printed on un-photocopy-able red paper – it vastly extended and improved the machine’s built-in BASIC.
https://en.wikipedia.org/wiki/Beta_BASIC
BBC BASIC for Windows has been doingvthis for decades.
Ugg. You blithly ignore the Olivetti P6060
https://en.wikipedia.org/wiki/Olivetti_P6060
One of the most demented machines concieved by that mad country.
What seems to be missing is saving to external storage and I/O to serial ports or network.
If compatible with some of these horrible Win8.1/Win10 ‘Cherry Trail’ tablets and a keyboard could be useful for something.