Microsoft Basic for 6502 Microprocessor – Version 1.1
Posted4 months agoActive4 months ago
github.comTechstoryHigh profile
excitedpositive
Debate
20/100
Microsoft Basic6502 MicroprocessorRetro Computing
Key topics
Microsoft Basic
6502 Microprocessor
Retro Computing
Microsoft has open-sourced the original Microsoft BASIC for the 6502 microprocessor, sparking nostalgia and discussion among retro computing enthusiasts about the code, its history, and its potential applications.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
28m
Peak period
149
Day 1
Avg / period
40
Comment distribution160 data points
Loading chart...
Based on 160 loaded comments
Key moments
- 01Story posted
Sep 3, 2025 at 1:28 PM EDT
4 months ago
Step 01 - 02First comment
Sep 3, 2025 at 1:56 PM EDT
28m after posting
Step 02 - 03Peak activity
149 comments in Day 1
Hottest window of the conversation
Step 03 - 04Latest activity
Sep 13, 2025 at 7:24 PM EDT
4 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45118392Type: storyLast synced: 11/20/2025, 7:50:26 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
It's just a nice touch.
It's doable, but would have to doctored, there was no git then, obviously.
https://news.ycombinator.com/item?id=45120440
For any ordinary commit you can simply include "--date=" with the 'git commit' command, e.g. -m "This is an old change" --date="2001-03-02 18:05:47"
https://github.com/dspinellis/unix-history-repo
[1] https://git-scm.com/docs/git-commit#_commit_information
* https://github.com/dspinellis/unix-history-repo
You'll also enjoy the contributors list.
This lead to the phrase “pressure sensitive buttons” being bandied about, which is kind of funny (what is a pressure insensitive button? An immobile lump I guess).
https://news.ycombinator.com/item?id=13590065
Contributors: There was an error generating this graph
from Paul Allen's Idea Man biography:
Bill Gates was involved with the business-side of the company at this point, trying to sign new clients for the BASIC interpreter.So Ric Weiland would have done much of the 6502 BASIC interpreter.
Yawn. Everything “democratizes” everything these days.
Like when awaiting pizza delivery, "they're here in 10 mins" doesn't directly relate to a specific guy
Could be wrong though
And no, to answer your question
Before we got our home computer, the closest I ever got to a computer was reading about them in the encyclopedia.
What Stallman did a decade later was great if you happened to have access to the type of computer that could run Emacs. Even then, you probably didn't own the machine and maybe even had to pay for time on it by the hour. The small machines that ran Microsoft Basic were in people's homes.
No, a decade later was at the end of the 1980's. At that time, many middle class families could afford home computers like the Atari ST, which could run many of the GNU compilers/tools.
It was a great learning experience porting Unix apps and games to the ST.
You might be thinking of basic Motorola 68000 support which GNU C did have in the late 80’s but you couldn’t build a set of GNU tools that ran on the ST with it.
https://en.wikipedia.org/wiki/MiNT
My point was more that the 68K home computers like Atari ST and the Amiga of the mid-to-late 1980s were powerful enough to "run emacs / C compilers", even if it wasn't the GNU stuff yet.
You could have that BASIC experience on a minicomputer like the PDP-8, 11, or 20 which you might have at a high school or college earlier but with microcomputers you could have it in elementary school or at home.
[1] https://thedoteaters.com/?bitstory=bitstory-article-2/breako...
[2] http://blog.hardcoregaming101.net/2012/09/basic-history-of-b...
I loved the cassette drive and all-in-one chassis. Ah, typing in programs from magazines and creating programs from scratch with PET graphics on the keys! I miss those days. So much wonder and fun.
My next step was Pascal on a VAX at Uni. Never looked back to PET or Microsoft. Linux user today.
Microsoft recently closed a 7 year old .NET documentation bug I opened using Copilot. I am not a fan of AI but the submitted fix was far superior to the basically useless message that had been previously present, so net positive. At being ignored for 7 years, it was unlikely to get better from human effort.
I wish code repos had a "contaminated by AI" flag.
Seems hypocritical for a human being to hallucinate a conspiracy theory about LLMs, with no evidence whatsoever.
> 12/1/77 FIXED PROBLEM WHERE PROBLEM WITH VARTXT=LINNUM=BUF-2 CAUSING BUF-1 COMMA TO DISAPPEAR
The original C64 ROMs (along with AmigaOS) are owned by a company called Cloanto. (Well, I suspect with Amiga OS in particular, it's probably more complicated than that). Not sure if you have to licence MS BASIC separately, or if the favourable deal Jack Tramiel negotiated way back when still covers it.
This split is why the mini C64/A500 units a few years back had actual Commodore software, but didn't have Commodore branding, as they could get a deal with Cloanto, but not the previous owners of the C= logo etc.
0. https://sites.google.com/site/amigadocuments/
Way more complicated in fact, as documented in Amiga Documents[0].
0. https://sites.google.com/site/amigadocuments/
Never change, bureaucracy :)
https://github.com/microsoft/BASIC-M6502/issues/5
https://github.com/microsoft/BASIC-M6502/issues/3
https://github.com/microsoft/BASIC-M6502/issues/1
One was noting the missing LICENSE, another was noting the missing SECURITY.md, and the other one was a policy bot nagging the repo owner to follow a process to exclude the code from the "Microsoft Internal Github" "to protect Microsoft's property"
The quotes below only talk about OS source code, but they found language interpreter source code as well, see register story.
> "So, for a few years that is where I spent my time. I'd skip out on athletics and go down to this computer center. We were moving ahead very rapidly: BASIC, FORTRAN, LISP, PDP-10 machine language, digging out the operating system listings from the trash and studying those. Really not just banging away to find bugs like monkeys[laughs], but actually studying the code to see what was wrong." [4]
> "While his parents were concerned with his slipping grades, there was no slowing him down. He and Bill would go “dumpster diving” in C-Cubed’s garbage to find discarded printouts with source code for the machine’s operating system"
[1] https://en.wikipedia.org/wiki/BASIC-PLUS#Comparison_to_MS_BA...
[2] https://everybasic.info/doku.php/basics/decbasic#influence_f...
[4] https://americanhistory.si.edu/comphist/gates.htm
[3] https://www.theregister.com/2000/06/29/bill_gates_roots/
[5] https://paulallen.com/Futurist/Microsoft.aspx
DonHopkins on Sept 16, 2018 | parent | prev | next [–]
Speaking of weird BASIC features, does anyone know why DECSYSTEM 20's BASIC had a "LISTREVERSE" command?
Yes, it actually did exactly what it sounds like!
Chalk one up for DEC and BASIC. What other programming languages support that feature, huh?
http://www.bitsavers.org/www.computer.museum.uq.edu.au/pdf/D...Erum, none of your references show this (or come remotely close).
MS did base NT on DEC work, and settled a court case as a result. Perhaps you're thinking of that story?
BASIC the language pre-dates the DEC implementation (it came from Dartmouth College), and nobody would reasonably think that seeing the code for a high level language BASIC interpreter implementation for Machine A, then writing an assembler implementation for Machine B means you "based it on their work".
Only if you weren't there.
You won't find the answers to everything online.
The internal structure of DEC BASIC PLUS is a far, far cry from what MS-BASIC (MSB) is. Outside of some shared syntax, the implementations are night and day.
BASIC+ (B+) is compiled to p-code, not tokenized and then interpreted. Those are completely different runtime approaches. B+ has a raw text source that is edited and maintained by the runtime, MSB does not. After you hit ENTER on MSB, your "source code" is gone. It's converted, and not necessarily losslessly, into an internal tokenized form. That tokenized form is read and recreated into the source lines you see when you LIST the program.
This scratch text file for the B+ program actually allows B+ to work in even more memory starved environments than MSB because the text is never fully loaded into RAM, so the bulk of RAM is compiled byte codes and data. You also don't have to "pay" for having extra spaces in your code, as the raw text does not impact that actual runtime size in contrast to MSB tokenized form.
B+, being compiled, supported much different styles of things like loops and if statements.
MS-BASIC can not handle that properly with it tokenizer based system.On the surface, they look similar with their interactive development environment. Internally, it was a completely different story.
A lot of us did the same thing in that era. It's surprising how much information can be learned from what others think is useless.
Thank you SUNY New Paltz and the IBM submarine facility (no idea what it was called) for not securing your Dumpsters. It's how I learned computing before it was taught in schools.
Bill Gates played a significant role in jumpstarting the commercial software industry, especially with his "An Open Letter to Hobbyists" in 1976, which urged people to pay for software.
;)
Visual Basic 6 rebuilt in C# – complete with form designer and IDE in browser
https://news.ycombinator.com/item?id=42105869
I like to imagine that there was actually a VB7 in the works with a lot of enhancements to VB6 that we just never got to see once Microsoft dropped .NET and made VB .NET a thing.
(Which itself was designed to a large extent to match what VB was doing before, so it's a bit circular).
And let's not forget that .NET grew out of the "COM 2.0" project. Which started in 1998, at the same time VB6 was released.
The amusing thing about native VB is that Win32 is still, to this day, carrying a bunch of APIs (Var*) that essentially encode its semantics on Variants, e.g.: https://learn.microsoft.com/en-us/windows/win32/api/oleauto/...
[1] https://en.wikipedia.org/wiki/Graphical_user_interface_build...
[2] https://www.cloudwisp.com/exploring-visual-basic-1-0-for-ms-...
Sounds like competitor For Vermont Views or the previous product Windows for Data and windows for C
No sure of the names ... my recollection this software was in use in early 90s and maybe late 80s
Borland Turbo Pascal and Borland Delphi where also (similar) products from around that time. These products where popular at the time. ( The development system provide include some kind of windows system for the application )
Microsoft even hired key Delphi person ....
I do recall the 640 KB barrier being a limitation. I've forgotten the exact details, but, as I recall, the docs implied it shouldn't generally be an issue - but in practice it was. And it'd always be a problem at the most annoying time.
(But it could just have been some large model thing that experienced real mode fiends would instinctively know to avoid? Coming from a 68000 background, for DOS stuff I'd used Borland's huge model or a DOS extender of some kind, to avoid the segmentation one way or another. Maybe that was the problem.)
Despite the occasional problems I had, I always generally liked it, and felt the UIs I created with it looked really rather nice.
Funny that the DOS version came out after the Windows one.
It amuses me that I'm sat here at my desktop right now using the exact same interface in Visual Studio 34 years later to build a WinForms app.
Link to the file: https://github.com/microsoft/BASIC-M6502/blob/main/.gitignor...
Regardless, thank you Mr. Hanselman. This is great!
I don't think that the .gitignore file is meant to reflect anything about when this BASIC interpreter was written, it looks like it's just a MS managed .gitignore that accounts for everything that was ever popular for development in Visual Studio, even things that have been obsolete for decades. In order to handle your most legacy C#, F#, VB.NET, or Visual C++ solutions.
[0] https://continuoustests.com/
[1] https://github.com/github/gitignore/commit/2183a6c531d7085e2...
Lines 6530 - 6539 are the "MICROSOFT!" that gets printed.
Line 4914 is the code to check the address passed to WAIT and, if correct, print the "MICROSOFT!".
It really is inconspicuous. A source licensee definitely wouldn't find it by quickly perusing.
[0] https://www.pagetable.com/?p=43
There were fullscreen editors. You can see one with a 1978 copyright date at about 14:45 in this video: https://www.youtube.com/watch?v=YQNHg1XuFR4
but i'm gonna guess SOS or TECO, if they were running a bog standard PDP-10 OS from DEC
normal:
weird:(I say "near universal", because Acorn's MASM had a similar syntax. (See, e.g., https://github.com/stardot/AcornDmosBasic/blob/master/src/DB...) I don't remember ever seeing that described as anything other than an oddity.)
And, also, there are probably assemblers smooshed into Forth or Lisp (or implemented with assembler macros for an assembler targeting some completely unrelated CPU) that work in a similar way, because you're limited by the pre-existing syntax rules. But that feels like a separate category
E.g. various register-register transfer combinations have dedicated mnemonics: TXA, TAX, etc.
LDA (index),Y. has index and Y in the argument space, but the A operand is in the mnemonic. The comma doesn't separate operands but is a displacement operator.
In other words, we really want LD A, (index) + y. Or LD A, (index + x).
I did a lot of hobby programming in BASIC. But I wonder how many commercial applications were written with it. Did small or big businesses write their own BASIC programs for internal needs?
Though, past a certain point of complexity, performance aside, assembly might be more readable than BASIC because BASIC relied on line numbers for jumping around, whereas assemblers offered named labels.
True that. Who could forget "One moment for house-cleaning!" as it ran a FRE(0) every time you saved.
(... uh, everybody?)
GW-Basic was the IBM PC port. Kind of more consequential no?
> CHKVAL: BIT VALTYP ;WILL NOT F UP "VALTYP".
http://reprobate.site/?stage=pearintosh
"7/27/78 FIXED BUG WHERE FOR VARIABLE AT BYTE FF MATCHED RETURN SEARCHING FOR GOSUB ENTRY ON STACK IN FNDFOR CALL BY CHANGING STA FORPNT TO STA FORPNT+1. THIS IS A SERIOUS BUG IN ALL VERSIONS."
Not far off from a comment I might make these days
https://github.com/microsoft/BASIC-M6502/blob/main/m6502.asm...
37 more comments available on Hacker News