Microsoft's 6502 BASIC is now Open Source (2025)

4 hours ago (opensource.microsoft.com)

In 1979, I made a program called VisiBase in this BASIC. It's a visual database modeled after VisiCalc. That won me a joystick in at a competition by the local computer store. :-) Still have the source, that works in an Apple 2 emulator. It's 13 K in ASCII (untokenized).

Ben Eater's 6502 series [1] uses MSBASIC for programming along with WozMon as the terminal interface.

[1] https://www.youtube.com/playlist?list=PLowKtXNTBypFbtuVMUVXN...

  • Is that the same BASIC as this?

    • From the video [1] that links to Ben Eater's fork with extensions and configuration specific to his 6502 breadboard computer [2]. That in turn is forked from `mist64/msbasic` which refers to a blog post [3] which states:

      > This episode of “Computer Archeology” is about reverse engineering eight different versions of Microsoft BASIC 6502 (Commodore, AppleSoft etc.), ...

      > This article also presents a set of assembly source files that can be made to compile into a byte exact copy of seven different versions of Microsoft BASIC, and lets you even create your own version.

      So Ben Eater's version is based on a reverse engineered version of the same program. You should be able to adapt the code released here to run on Ben Eater's 6502 with a bit of work.

      [1] https://www.youtube.com/watch?v=XlbPnihCM0E&list=PLowKtXNTBy...

      [2] https://github.com/beneater/msbasic

      [3] https://www.pagetable.com/?p=46

The Apple ][ basic interpreter placed its "get next token" routine down in the first 255 bytes of the computer's memory. Being there allowed for the machine instructions to be fetched twice as fast as "high memory". And "get next token" is definitely a good guess for hotpath.

Sadly nothing in Scott's blog post about how they obtained the source. Was it still in Microsoft's archives? Did they happen upon some tractor-feed print-outs they had to type in by hand?

  • It would also be interesting why it was open-sourced now. I assume if they had done the same last year, the resulting loss of revenue would not have destroyed the plucky little $3T upstart.

Do you think computing history would have been much different if Microsoft made a 6502 Pascal interpreter instead?

  • Pascal is a lot broader language and won't fit in sub 16KB of ROM (even if you exclude monitor [call-151])

    • A subset of it?

      I have a copy of "Tiny" Pascal by Supersoft from 1979 on a cassette tape which was licensed to Tandy Corp and which would load onto a 16KB TRS-80 Model III and allow a bit of room for programming.

      One of the great regrets of my life is that when I was doing so and when it would have mattered, I was unaware of the patch for this which would have allowed it to be saved as an executable to a TRS-DOS disk....

  • They didn't invent the language. BASIC was already a popular language for beginners on microcomputers at that time.

    • Microsoft itself popularized BASIC on microcomputers with its 8080 BASIC, starting on the Altair and ported to everything with A, B, C, D, E, H, and L registers since.

      Before then, however, BASIC was already popular on minicomputers as both an introductory language for beginners and a business language; the various "Business BASIC" dialects providing a small-business alternative to COBOL on mainframes with their features for decimal math and ISAM database access.

  • Except that wasn't possible. Languages like BASIC and Forth exist because they were the only kind of language implementable in 4K with no disk. Pascal in its smallest form (UCSD p-system) still needed disk overlays. The smallest C compilers were poly phase, needing storage for intermediate state.

I am really torn about this. Sure Microsoft is doing a lot of open source today (.NET core, VS Code and a bit of historic curiosities such as this one) but the "open letter to the hobbyists" still stands :) Release the Windows source code then we are talking.