All The Best Computers Boot To BASIC

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.

33 thoughts on “All The Best Computers Boot To BASIC

  1. Love it! I just ordered a vintage Intel P8052AH-BASIC V1.1 microprocessor chip to build something from. It also boots into BASIC.

    1. 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..

    2. Hello mjrippe!
      Did you try microbasic from Geof?
      Run on an pic32f… so, not as charming as the Olivier 8052 or wmotorola 6801 with embodied BASIC, but usefull and powerfulk@

  2. It’s largely GW-BASIC compatible, but with a few upgrades for the 21st century.

    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).

    1. 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.

    2. 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)

      1. 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)

      2. 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.

      3. 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.

      4. 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

      5. There isn’t a huge difference between QBasic and GW-BASIC.

        I strongly disagree. QBasic is a structured programming language; GW-BASIC is not. It adopted significant concepts from “modern” languages of the time, like Pascal and C, that were completely missing from GW-BASIC and other classic forms of interpreted basic.

        The concept of a “function” simply doesn’t exist in GW-BASIC, let alone the idea of local/global variables, passing parameters by value vs reference, etc. Nor does GW-BASIC support custom datatype structures.

        Writing a program in gw-basic with all variables being global and using line numbers, “goto”, “gosub”, and “return”, is completely different from writing a program in qbasic with actual subroutines/functions.

    3. “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

      1. Thank you very much! This is nothing short but impressive! 🤯
        I had no idea there was something like this being available so early!
        Especially in an affordable way to home users.
        Thanks again for sharing this info!

    4. That’s interesting as far as it goes, but mainly cosmetic. What really helps is proper control structures, not just changing the number after the GOTO into a label. I never wrote anything useful in either QB or GW-BASIC, it was MS Professional BASIC and DEC BASIC-PLUS that had proper file/record handling, similar to COBOL, and that’s what we needed. We were expected to structure our code correctly and avoid spaghetti, line numbers and all, because we were real men who shaved with a jug of ice water every morning, probably. ☺️

    1. BBC basic was the best basic. It supported functions and procedures and best of all you could write assembly straight into the code!

      1. Why the past tense: “BBC BASIC ‘was’ the best basic, it ‘supported’ … you ‘could’ …”? BBC BASIC is still going strong today! Only yesterday I updated an app (in the Android and iOS app stores, plus other platforms) written entirely in BBC BASIC.

    1. Wow, never knew of this machine. Am I seeing this right – square keyboard keys; round numpad keys, and backlighted transparent console keys? This is so horribly bad its good. I want one!

  3. If compatible with some of these horrible Win8.1/Win10 ‘Cherry Trail’ tablets and a keyboard could be useful for something.

  4. I actually have a Maximite 2 which boots straight into MMBASIC. I bought it to show the kids and to play with. The great thing is, its BASIC runs so fast , it puts the machines from the 80s to shame even when their programs are written in assembler :-)

  5. From the webpage: “32 bit wide line numbers”
    Who wants to be the first to write a four-billion-line BASIC program? 🤣
    (No vibe coding allowed!)

  6. In 1984 I bought the soon to become defunct PCjr, but that opened up new vistas for me. The computer itself was limited, but useful as a learning tool, which eventually led to my 40 year career in computer application development retiring as a senior database engineer 2 years ago. The jewels that came with the PCjr were the hardcover binders of DOS 2.10 and GW-Basic. I taught myself to program and become comfortable with operating systems. I was working for the phone company at the time and a few years later I took advantage of an opportunity to enter their in-house computer training course. After the most harrowing and stressful 3.5 months of my life where both my career and my future hung in the balance I graduated. I then, as mentioned before, enjoyed a 40 year career in computers retiring as a senior database engineer working with MS SQL Server. Thank you GW-Basic.

  7. I was a professional programmer and software engineer using many languages from fortran C/C++ perl python etc.
    Now retired I only use my favorite …. BBC Basic for windows. An SDL version is also available.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.