GW-BASIC
MS-DOS
GW-BASIC | MS-DOS | |
---|---|---|
13 | 59 | |
2,615 | 15,623 | |
- | - | |
10.0 | 0.0 | |
almost 4 years ago | over 4 years ago | |
C++ | Assembly | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
GW-BASIC
-
Akalabeth: Porting from AppleSoft Basic to Gwbasic
Fun fact...Microsoft open sourced GW-BASIC under the MIT license a couple years ago...
https://github.com/microsoft/GW-BASIC
The blog post announcing it is here if you want more information about it...
https://devblogs.microsoft.com/commandline/microsoft-open-so...
-
Basic and the ROMs that changed the world (and then disappeared) (2022)
I'm way ahead of you :)
Unfortunately, rewriting it without reverse engineering makes it almost impossible to reach the same performance characteristics. These are essential to reproduce proper timing in several games.
Also, it may not be much code, but the floating point operations are quite a piece of art. See the GW-BASIC source code, which is somewhat similar [1].
I also rewrote most of the BASIC interpreter directly in Kotlin, omitting assembly, but obviously that runs into the same compatibility issues.
As far as I understand it, reverse engineering is not allowed without permission, although some people suggest that it is ok to get other software to run. Not sure whether that case would hold up for my entertainment value.
[1] https://github.com/microsoft/GW-BASIC/blob/master/MATH2.ASM
-
GPL-3.0 licensed BIOS for Intel 8088 based computers
Someone could take this and try to make it ROM-able in order to "complete" the BIOS:
https://github.com/microsoft/GW-BASIC
-
Question regarding floating point
Hey! They use an emulation. You can implement this yourself but it's quite the undertaking if you also want trigonometry functions etc. There are libraries available but they can be hard to build on older compilers, search for floating point emulation c library to get some ideas. Depending on what you want to do however are you sure you need floating point? I thought so in the past but have reconsidered. Many times you can work something out by either scaling or smart fractions like 355/113 for pi etc. Regarding scaling, this is also how fixed point math works, certainly also of interest and maybe more then enough?
- The Golden Age of Basic (2014)
-
Lapsus$ hackers leak 37GB of Microsoft's alleged source code
> but if ever the source for QBasic leaked
QBasic? - Why that modern thing. Just use the proper BASIC: https://github.com/microsoft/GW-BASIC ;)
- News to me: Microsoft GW-BASIC Interpreter Source Code
- Microsoft GW-Basic Interpreter Source Code
-
Hacker News top posts: Mar 7, 2022
Microsoft GW-Basic Interpreter Source Code\ (20 comments)
MS-DOS
- MS-DOS v1.25, v2.0, v4.0 Source Code
-
Open Sourcing DOS 4
This 4.0 code contains references to 4.00, though: https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/BOOT/...
- DOS 4.0 Source Code Released Under MIT License
- Why Does Windows Use Backslash as Path Separator?
-
ST-DOS
I recently stumbled across the MS-DOS 1.25 and 2.0 source code [1].
[1] https://github.com/microsoft/MS-DOS
-
The History of Xenix
“Despite this reduction in scope for MS-DOS 2.0, it did carry many bits of XENIX. The system adopted I/O redirection via less-than and greater-than symbols, piping, a hierarchical directory tree, file handles […]”
The source code for MSDOS 2 is available and the file descriptor stuff appears to be in https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/... and XENIX2.ASM. It stands in contrast to the File Control Block API which MSDOS 1 (née 86-DOS) modeled after CP/M’s API.
- MS-DOS v1.25 and v2.0 is now open-source (2014)
- MS-DOS v1.25 and v2.0 is now open-source
-
MS-DOS is now open-sourced
Asynchronous I/O figures in prominently in Windows NT. I was really surprised to see[0]:
Each driver in the chain defines two entry points; the strategy routine and the interrupt routine. The 2.0 DOS does not really make use of two entry points (it simply calls strategy, then immediately calls interrupt). This dual entry point scheme is designed to facilitate future multi-tasking versions of MS-DOS. In multi-tasking environments I/O must be asynchronous, to accomplish this the strategy routine will be called to queue (internally) a request and return quickly. It is then the responsibility of the interrupt routine to perform the actual I/O at interrupt time by picking requests off the internal queue (set up by the strategy routine), and process them. When a request is complete, it is flagged as "done" by the interrupt routine. The DOS periodically scans the list of requests looking for ones flagged as done, and "wakes up" the process waiting for the completion of the request.
I didn't realize that kind of forwarding-looking perspective was going into the design of MS-DOS.
[0] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...
-
Exploring the Internals of Linux v0.01
>Any others I'm missing?
I would suggest MS-DOS: https://github.com/microsoft/MS-DOS
What are some alternatives?
GW-BASIC - Assembling Microsoft GW-BASIC from 1983, with MASM or JWasm • "pre-release" binaries at https://codeberg.org/tkchia/GW-BASIC/releases • source mirror of https://codeberg.org/tkchia/GW-BASIC • fork of https://github.com/dspinellis/GW-BASIC
86Box - Emulator of x86-based machines based on PCem.
simh - The Computer History Simulation Project
dosbox-x - DOSBox-X fork of the DOSBox project
GW-BASIC - Assembling Microsoft GW-BASIC from 1983
Chicago95 - A rendition of everyone's favorite 1995 Microsoft operating system for Linux.
linux - Linux kernel source tree
qubes-issues - The Qubes OS Project issue tracker
8088_bios - BIOS for Intel 8088 based computers
emu2 - Simple x86 and DOS emulator for the Linux terminal.
micro_8088 - Micro 8088 - IBM XT Compatible Processor Board based on Faraday FE2010 chipset
open-watcom-v2 - Open Watcom V2.0 - Source code repository, Wiki, Latest Binary build, Archived builds including all installers for download.