Microsoft released the first version of GW-BASIC for the IBM PC on February 10th, 1983. Today, Microsoft has open-sourced GW-BASIC on GitHub.
For those who are unfamiliar with GW-BASIC, it is a variation of the BASIC programming language developed by Microsoft. It is similar to IBM’s BASICA language and but it is a self-contained executable. Unlike other BASIC derived languages, it doesn’t require the ROM BASIC.
After re-open-sourcing MS-DOS 1.25 & 2.0 on GitHub back in 2018, Microsoft also received numerous requests to open-source Microsoft BASIC.
In a blog post announcing open-source codes for GW-BASIC, Microsoft writes:
“These sources, as clearly stated in the repo’s readme, are the 8088 assembly language sources from 10th Feb 1983, and are being open-sourced for historical reference and educational purposes. This means we will not be accepting PRs that modify the source in any way.”
Just like every other software in the 70s and 80s, such as MS-DOS, the source code of GW-BASIC was written 100% in assembly language. Hence, there is no source code in C for GW-BASIC.
The reason behind using assembly language instead of high-level languages for software back then is that the compilers for such languages were often very expensive. They rarely generated efficient code, and space and performance constraints of home and personal computers of that era simply made it difficult to implement high-level languages.
To date, Microsoft has released various BASIC implementations way back from the time when Bill Gates and Paul Allen released an implementation of Microsoft’s first product — a BASIC interpreter for the Altair 8800.
While Microsoft has been requested by many to open-source the implementations for processors other than the 808x as well. However, the company says that it cannot provide sources for those ports and/or customizations at the moment.