Microsoft BASIC For 6502 Is Now Open Source

An overriding memory for those who used 8-bit machines back in the day was of using BASIC to program them. Without a disk-based operating system as we would know it today, these systems invariably booted into a BASIC interpreter. In the 1970s the foremost supplier of BASIC interpreters was Microsoft, whose BASIC could be found in Commodore and Apple products among many others. Now we can all legally join in the fun, because the software giant has made version 1.1 of Microsoft BASIC for the 6502 open source under an MIT licence.

This version comes from mid-1978, and supports the Commodore PET as well as the KIM-1 and early Apple models. It won’t be the same as the extended versions found in later home computers such as the Commodore 64, but it still provides plenty of opportunities for retrocomputer enthusiasts to experiment. It’s also not entirely new to the community, because it’s a version that has been doing the rounds unofficially for a long time, but now with any licensing worries cleared up. A neat touch can be found in the GitHub repository, with the dates on the files being 48 years ago.

We look forward to seeing what the community does with this new opportunity, and given that the 50-year-old 6502 is very much still with us we expect some real-hardware projects. Meanwhile this isn’t the first time Microsoft has surprised us with an old product.


Header image: Michael Holley, Public domain.

28 thoughts on “Microsoft BASIC For 6502 Is Now Open Source

    1. man…it sounds like a pipe dream but i wonder if they shouldn’t actually do it. microsoft is losing their hegemonic position. they invented dot net in the late 90s with explicitly the same design goals and choices as android, but they stood still for 25+ years while android ate the meal they meant to prepare for themselves. and android is (somewhat) open source and that attribute has only helped google leap ahead of microsoft.

      it really wouldn’t surprise me if microsoft tries to learn a lesson from this. i mean, who would have expected WSL 30 years ago?

      the silver lining is that it will be too little too late and it won’t succeed and the few outsiders who bother to look at the source will claw out their own eyes but

        1. I’ve run Ubuntu on MS Virtual PC 2004 about 20 years ago.
          Mac users were accustomed to using PC emulators since the 90s.
          Virtual PC 1 to 7, SoftWindows/95/98 etc.
          They’ve looked same as Virtual Box does now.

          Some had been using PC emulators in the 80s, already.
          Such as PC-Ditto on Atari ST, SoftPC on 68k Macintosh..
          They maybe couldn’t have run Linux, but perhaps Minix 0.x or 1.0.

          Windows itself had been run in virtualization on Solaris or Caldera Linux in the 90s.
          Via WABI, which ran the 386 Enhanced-Mode kernal on top of *nix, without using DOS.

      1. WSL did exist 30 years ago, sort of. Look up Interix which used the almost never-used Windows NT kernel personalities feature to run a complete, standards-compliant Unix in parallel to the stock win32 personality.

        It worked astonishingly well. I used it for a while as a Cygwin alternative. It was faster, more capable and more compatible. At one point I wrote a Linux binary loader for it, which let it run stock Linux binaries (poorly; the NT and Linux kernels have very different ideas of how some things work, and I needed to do stuff like catching NPEs and looking at the code to see what the application was actually doing in order to emulate operations which can’t be done natively). I got it working well enough to run Debian i386 in a chroot. https://cowlark.com/lbw/

        It’s a shame Microsoft never actually told anyone about it!

        It lasted up to Windows 8 for Microsoft eventually dropped it, but I believe a lot of the same tech went into WSL 1. WSL 2, however, is based on a VM running a hacked Linux kernel.

      2. The term WSL is false logic.

        It should have been LSW, Linux Subsystem for Windows,
        because Windows is the host and the subsystem serves it.

        Back in the 90s, Windows NT was about such things about “OS/2 subsystem”, “POSIX subsystem” or the “Win32 subsystem”.
        And all these subsystems were for Windows.

        But now, with WSL, it seems that Windows NT is the obedient servant of Linux.
        Which bows down an lets take Linux all of its resources and services.
        That’s not how a host system is supposed to be.

        Also, if there had been a sort of dosminix analogy based on Linux, there would have been LSD.
        The Linux Subsystem for DOS. ;)

        1. “The term WSL is false logic. It should have been LSW, Linux Subsystem for Windows”.

          Totally agree, and it grates every time I see it. But I suppose the marketing people are Microsoft preferred Microsoft Windows Subsystem for Linux, a name that begins with “Microsoft Windows” rather than “Microsoft Linux”…

      3. To be fair, Android and iOS aren’t exactly the embodiment of “progress”.
        Things like the hamburger menu dumbed down user interface and created a generation of non computer-savvy users.
        Even the web degenerated thanks to these mobile OSes.
        Just look what happened to real, sophisticated websites of the 90s or 2000s were users had to actually “read” text.
        This isn’t what my definition of progress, it’s a dystopia of users who nolonger understand the technology they’re using.
        This can can get dangerous in a few decades.
        It’s a far cry from the days of DOS when even the average Joe could use QBasic or debug.com and had an interrupt list book on his shelf. So sad.

        1. i’m not sure if i agree with you or not but in support of your point

          the biggest struggle i have with teaching my 13yo how to use a computer is that he never reads what’s on the screen. he never tries to understand what the state of the computer is. even as he becomes a more advanced user, he still first just clicks on whatever seems likely. using vague visual cues. thoughtlessly. and, i might add, ineffectively.

          1. That’s probably because he’s 13. I somewhat remember doing that sometimes when I was his age, too. What you need to do is let him experiment, break, then have to fix it.

    2. Not absolutely needed, since they’re a mess.
      Windows 95 is a pile of poorly debugged drivers.
      No really, it’s a pile of VXDs. It’s a hack, a really messy one.

      DirectX is already available as an implementation via Wine and ReactOS project.
      Virtualbox prior to 6.1 included experimental Direct3D 8/9 support for Windows XP.:
      It was based on WineD3D and helped rendering Direct3D graphics on the host side via OpenGL.
      DirectX 7 and below were handled via software rendering by the Direct3D HEL.

    1. Yah. But did he actually write it? Or did he just take code that the Homebrew Computer Club members had written and shared with one another and ported that to the Altair? Maybe with this release we will finally find out!

      1. I thought he complained about the 8080 version that was floating around rather than the 6502 version.

        In terms of authorship, I think he did actually write the 8080 version along with Paul Allen and someone else using university resources. I wouldn’t be surprised if early 6502 versions were 1:1 hand translated versions of the 8080 version

    1. wouldn’t matter the source is largely just assembly instructions, you can generate that easily from the ROM anyway.

      the useful bits are the comments, but you can pretty easily use RE tools to work out call sites, etc

  1. I remember when source code for Win2000 made public release, to spend hours of time to isolate a kernel, that was essentially built into everything. The problem with Windows NT, is the lack of separation, between developers and consumers. This writes itself into the code and of course, everyone pays, to have Intel doing their TCP/IP implementation for Windows, opposed to being able to drop that DLL and insert their own (open source) implementation, modified to suit their needs and continue, to load anything else that MSTC and Windows Registry decides to load..

Leave a Reply to MartoniCancel 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.