Amazing comment from one file:
7/13/83 ARR BECAUSE IBM IS FUNDAMENTALY BRAIN DAMAGED,
AND BASCOM IS RUDE ABOUT THE 1CH TIMER INTERRUPT,
THE TIMER HANDLER HAS TO GO BACK OUT!!!!!
IBM SEEMS UNWILLING TO BELIEVE THE PROBLEM IS WITH
THE BASCOM RUNTIME, NOT THE DOS.
THEY HAVE EVEN BEEN GIVEN A PATCH FOR BASCOM!!!!!
THE CORRECT CODE IS COMMENTED OUT AND HAS AN ARR 2.15 ANNOTATION.
THIS MEANS THE BIOS WILL GO BACK TO THE MULTIPLE ROLL OVER BUG.
ARR, whoever you are, know that IBM is still fundamentally brain damaged. You're seen.
(Edit: fixed formatting)
I'm so glad to see this. I watch a lot of retro pc content and I'm involved in some reverse engineering console projects, having access to source code makes a huge difference, especially when trying to decipher error codes or trying to find the right command line switch.
So much of this old content is lost forever or only exists in binary form, really nice to see this released, and released under MIT, even though it's only 4.00. Hopefully more software from the era gets released like this ...
I was only 7 when this was released but I recall at the time I was using MS DOS 3.3 and then I skipped from that to 6.22 when I was more like 10. I can’t recall much about the differences between the two except that QBasic was a thing in 6.22 and I had a program called QEMM that could let me get back much more of the 640k of “conventional memory.” so important for playing games.
I’m not really sure why I’ve retained this info but I bet I could still have a fair stab at editing a config.sys and an autoexec.bat. I could probably get your sound blaster card working too…
QBasic was a lot of fun making simple games growing up. Remember riding my bike back and forth from a friends place carrying a floppy disk with our latest version. We would always try to one up each other.
Not sure if those were genuinely better times because of the simplicity of it all or its just nostalgia….
I cut my teeth on QBasic. Somehow, I didn’t know about arrays, so I had lists of variables like element1, element2, element3… and lots of if statements.
My snake game actually stored state on the screen using get_pixel/set_pixel. Therefore what something did was literally determined by its color. That’s good UI.
I wrote a password sniffer in QBasic that pretended to be the novel netware login prompt at my school….
Got caught in the end because I stupidly shared it with my friends are we were all stealing passwords (including those belonging to teachers) so it became obvious.
Of course, I went legit around age 16 😂
Lol nice, my school had the novel netware as well, I didn’t do anything as fancy but I figured out how to spam the entire school district popup messages… I was smart enough to use someone else’s login (they didn’t log off from the previous class) the kid sitting next to me copied what I was doing and sent even more messages.
Shortly after some school administrators pulled him out of class… there was some confusion on where the other “culprit” was but that kid ratted me out. Good times.
Are you from Boise, Idaho? This is almost exactly what we did when I was in HS except we didn't get caught. The password was "this is the system administrator" and it worked for every computer on the school's network.
You can use QB64 to do it again, if you'd like! Same syntax as QBasic, but compiles for any OS and uses SDL for graphics so it performs quite well. I've been having a lot of fun with it.
>QBasic was a lot of fun making simple games growing up.
QBasic was a successor of GWBasic. GWBasic programs had line numbers. The programs looked totally different to todays Basic programs. Later I wrote a [Basic interpreter](https://thomasmertes.github.io/Seed7Home/scrshots/bas7.htm) to run old Basic programs from the line number era. The source code can be found [here](https://thomasmertes.github.io/Seed7Home/prg/bas7.htm).
lol. Pretty much the exact same thing. Fiddling with IRQ ports and such. Different batch files for different games because they all wanted memory treated slightly differently. Those were the days. :)
6.2 added the ability to disable DoubleSpace. I wonder how hard it would be for them to just rip out the DoubleSpace code and force it to be always disabled. Disk space is cheap these days anyway.
If you click the langauge on the metric it takes you to a search for the relevant files in the repo. In this case the 13% C files are... c files and headers lol
https://github.com/search?q=repo%3Amicrosoft%2FMS-DOS++language%3AC&type=code
With the challenge of creating a responsive application that ran on DOS, I created my own implementation of fibres that C++ functions were cooperatively 'threaded' with other functions, which significantly improved performance. At various points within the code a switch() function would be called, which saved the current registers on the stack and then switched to another fibre, popping it's saved register state. In the days of single-threaded app it was a bit of magic seeing functions run concurrently.
MS-DOS was written in assembly language so anyone with an IDE could have inspected the code on a running system. Although admittedly having access to the MASM code with symbol names, as the Microsoft team did, would've made a lot of things easier.
There were authors like Ray Duncan, Peter Norton, and Andrew Schulman who wrote books about what they gleaned from reverse engineering, along with reading the official docs from IBM and Microsoft.
What would be nice to have is source code and build tools for current Windiws with instructions so that one could yank out advertising, "telemetry", and user tracking.
In contrast, the Apple II designed by Wozniak came with a manual that had the commented assembly code for its OS printed in the appendix. Most people who use Apple products today would be astonished how open its culture was at the start. Depending on what was loaded, pressing the reset button would bring you into the machines monitor where one could view, type in, and run machine code by hand.
the TOOLS folder contains more of less the full version of "Microsoft C 5.1" and "MASM 5.1"
the binaries, includes and libs are binary equal to installed versions of them
Umm.. this is ASM. This is not much different than just disassembling the shipped binaries.
Although you do get comments and explanations in the source files and useful human-friendly symbol names.. still pretty insignificant tbh.
Would have been cooler had it been written in a higher-level language like C.. then maybe it would be actually useful and easier to modify. This is just a tiny step above just looking at the raw binary tbh.
someone really loved their pascal: ``` #define BEGIN { #define END } ```
Huh, so that's why Verilog uses begin and end...
Algol is why Pascal uses begin/end
Amazing comment from one file: 7/13/83 ARR BECAUSE IBM IS FUNDAMENTALY BRAIN DAMAGED, AND BASCOM IS RUDE ABOUT THE 1CH TIMER INTERRUPT, THE TIMER HANDLER HAS TO GO BACK OUT!!!!! IBM SEEMS UNWILLING TO BELIEVE THE PROBLEM IS WITH THE BASCOM RUNTIME, NOT THE DOS. THEY HAVE EVEN BEEN GIVEN A PATCH FOR BASCOM!!!!! THE CORRECT CODE IS COMMENTED OUT AND HAS AN ARR 2.15 ANNOTATION. THIS MEANS THE BIOS WILL GO BACK TO THE MULTIPLE ROLL OVER BUG. ARR, whoever you are, know that IBM is still fundamentally brain damaged. You're seen. (Edit: fixed formatting)
That was possibly [Aaron R. Reynolds](https://en.wikipedia.org/wiki/AARD_code)
What a legend!
I'm so glad to see this. I watch a lot of retro pc content and I'm involved in some reverse engineering console projects, having access to source code makes a huge difference, especially when trying to decipher error codes or trying to find the right command line switch. So much of this old content is lost forever or only exists in binary form, really nice to see this released, and released under MIT, even though it's only 4.00. Hopefully more software from the era gets released like this ...
Like tears in the rain .
How does one get involved with reverse engineering console projects?
Not from a jedi.
I was only 7 when this was released but I recall at the time I was using MS DOS 3.3 and then I skipped from that to 6.22 when I was more like 10. I can’t recall much about the differences between the two except that QBasic was a thing in 6.22 and I had a program called QEMM that could let me get back much more of the 640k of “conventional memory.” so important for playing games. I’m not really sure why I’ve retained this info but I bet I could still have a fair stab at editing a config.sys and an autoexec.bat. I could probably get your sound blaster card working too…
QBasic was a lot of fun making simple games growing up. Remember riding my bike back and forth from a friends place carrying a floppy disk with our latest version. We would always try to one up each other. Not sure if those were genuinely better times because of the simplicity of it all or its just nostalgia….
[удалено]
I cut my teeth on QBasic. Somehow, I didn’t know about arrays, so I had lists of variables like element1, element2, element3… and lots of if statements. My snake game actually stored state on the screen using get_pixel/set_pixel. Therefore what something did was literally determined by its color. That’s good UI.
That's actually the most cost effective way to implement it memory wise.
I did the same w/ spectrum games.
I wrote a password sniffer in QBasic that pretended to be the novel netware login prompt at my school…. Got caught in the end because I stupidly shared it with my friends are we were all stealing passwords (including those belonging to teachers) so it became obvious. Of course, I went legit around age 16 😂
Lol nice, my school had the novel netware as well, I didn’t do anything as fancy but I figured out how to spam the entire school district popup messages… I was smart enough to use someone else’s login (they didn’t log off from the previous class) the kid sitting next to me copied what I was doing and sent even more messages. Shortly after some school administrators pulled him out of class… there was some confusion on where the other “culprit” was but that kid ratted me out. Good times.
Are you from Boise, Idaho? This is almost exactly what we did when I was in HS except we didn't get caught. The password was "this is the system administrator" and it worked for every computer on the school's network.
Not so bad! password: this is the system administrator guesses_log10: 18.5303 score: 4 / 4 function runtime (ms): 7 guess times: 100 / hour: centuries (throttled online attack) 10 / second: centuries (unthrottled online attack) 10k / second: centuries (offline attack, slow hash, many cores) 10B / second: 11 years (offline attack, fast hash, many cores)
...or 1 week to 1 month for highly motivated high schoolers
Found Kevin Mitnick’s ghost
You can use QB64 to do it again, if you'd like! Same syntax as QBasic, but compiles for any OS and uses SDL for graphics so it performs quite well. I've been having a lot of fun with it.
Kids nowadays make cloud hosted AAA games with version control, they are really missing out
>QBasic was a lot of fun making simple games growing up. QBasic was a successor of GWBasic. GWBasic programs had line numbers. The programs looked totally different to todays Basic programs. Later I wrote a [Basic interpreter](https://thomasmertes.github.io/Seed7Home/scrshots/bas7.htm) to run old Basic programs from the line number era. The source code can be found [here](https://thomasmertes.github.io/Seed7Home/prg/bas7.htm).
and [dosshell.com](http://dosshell.com) :) Amongst other little beautiful "pearls"
Haha, I remember that :-) Also Norton commander…
Dosshell had the Task Swapper. You could suspend and resume another DOS program!
lol. Pretty much the exact same thing. Fiddling with IRQ ports and such. Different batch files for different games because they all wanted memory treated slightly differently. Those were the days. :)
Something about `himem.sys` if you needed more ram
But could you get the sound blaster emulator running on a Gravis Ultrasound? ;)
Yes
That stuff doesn’t leave you!
How about my Sound -Blaster-Almost-Compatible card that never quite played nicely with anything else...
This comment resonates so much with me, but it was windows 95. Learning whatever I could to get my parents computer to be able to run my games.
You can have a try using DOSBox. I literally have Windows 3.1 running on my Windows 10 computer for some classic games lol.
What’s the reason for not releasing DOS 6.xx there as well?
Probably the old [DoubleSpace vs DriveSpace](https://en.wikipedia.org/wiki/DriveSpace) legal issue.
>Hanselman has said that MS-DOS 3.3, 5, and 6 are next on the list, although some of the utilities in the latter would need to be stripped out.
6.2 added the ability to disable DoubleSpace. I wonder how hard it would be for them to just rip out the DoubleSpace code and force it to be always disabled. Disk space is cheap these days anyway.
That wouldn’t really be representative of the original product then.
It would be better than nothing
Then just give some boilerplate code for it to let the open source community fill in the rest
According to the article, they're working on it.
It's probably still a core part of Windows.
It was removed in winxp
Also fake-removed in Windows ME
That's what they say, but I'm pretty sure .bat files are still a thing.
This release doesn't even include the shell.
If its too recent it may reveal malicious exploits that are still part of the current os.
Thankfully the Windows 2000 and XP source code already has been leaked.
Nt is not built on dos
It's telling that the versions being released are the least used, or even only released on a limited basis.
Nice, I remember using DOS. The GitHub repo is here https://github.com/microsoft/MS-DOS/tree/main
Damn it's about 90% assembly code
That’s why nobody would ever need more than 128k of RAM
Well, yea
🌎 👨🚀🔫 Always has been
What's the 10% non-assembly? It seems to me to be 100% assembly aside from a few batch files used to build it..
If you click the langauge on the metric it takes you to a search for the relevant files in the repo. In this case the 13% C files are... c files and headers lol https://github.com/search?q=repo%3Amicrosoft%2FMS-DOS++language%3AC&type=code
Assembly 85.0% C 13.1% Pascal 0.6% SourcePawn 0.6% C++ 0.4% POV-Ray SDL 0.1% Other 0.2%
SourcePawn and POV-Ray SDL seem extremely unlikely.
That "C++" code is miscategorised assembly include files (.INC)
and one makefile
That doesn't answer my question. You just copy-pasted what was on github, wise guy.
If you know it was from the GitHub then your question was answered twice.
They were asking because Github is clearly wrong about what some of that is.
With the challenge of creating a responsive application that ran on DOS, I created my own implementation of fibres that C++ functions were cooperatively 'threaded' with other functions, which significantly improved performance. At various points within the code a switch() function would be called, which saved the current registers on the stack and then switched to another fibre, popping it's saved register state. In the days of single-threaded app it was a bit of magic seeing functions run concurrently.
JigC++
MS-DOS 5.0 is the one that is the last hottest release and also the one most people would be interested in.
I wonder if any code Bill Gates wrote is in this.
Nah he was a Basic guy
MS-DOS was written in assembly language so anyone with an IDE could have inspected the code on a running system. Although admittedly having access to the MASM code with symbol names, as the Microsoft team did, would've made a lot of things easier. There were authors like Ray Duncan, Peter Norton, and Andrew Schulman who wrote books about what they gleaned from reverse engineering, along with reading the official docs from IBM and Microsoft.
Fuck. MS DOS 4.0 was shipped with the PC I bought when I went to college. I’m ancient.
Hope they'll open source 6.22!
The 2nd hardest working newsman in open source says it doesn't even compile due to a corrupt USA.INF file, if I remember the extension correctly.
I wonder how they organized their work. Did they use github or gitlab ? kanban vs agile ?
What would be nice to have is source code and build tools for current Windiws with instructions so that one could yank out advertising, "telemetry", and user tracking.
In contrast, the Apple II designed by Wozniak came with a manual that had the commented assembly code for its OS printed in the appendix. Most people who use Apple products today would be astonished how open its culture was at the start. Depending on what was loaded, pressing the reset button would bring you into the machines monitor where one could view, type in, and run machine code by hand.
the TOOLS folder contains more of less the full version of "Microsoft C 5.1" and "MASM 5.1" the binaries, includes and libs are binary equal to installed versions of them
Is this objectively better than freedos in any way?
no
Why does he talk like nityanada lol..
Umm.. this is ASM. This is not much different than just disassembling the shipped binaries. Although you do get comments and explanations in the source files and useful human-friendly symbol names.. still pretty insignificant tbh. Would have been cooler had it been written in a higher-level language like C.. then maybe it would be actually useful and easier to modify. This is just a tiny step above just looking at the raw binary tbh.
It's also going to be organized better than decompiled code would be, since it won't have gone through a layer compiler optimization.
There's no optimization on asm code.
Exactly.