The original sources of MS-DOS 1.25 and 2.0
github.com
github.com
> The user manual contains some significant errors. Most of these are due to last minute changes to achieve a greater degree of compatibility with IBM's implementation of MS-DOS (PC DOS). This includes the use of "\" instead of "/" as the path separator, and "/" instead of "-" as the switch character. For transporting of batch files across machines, Microsoft encourages the use of "\" and "/" respectively in the U.S. market. (See DOSPATCH.TXT for how you can overide this. The user guide explains how the end-user can override this in CONFIG.SYS). Both the printer echo keys and insert mode keys have now been made to toggle. The default prompt (this may also be changed by the user with the PROMPT command) has been changed from "A:" to "A>". We apologize for any inconveniences these changes may have caused your technical publications staff.
So MS-DOS almost had Unix-style file separators and argument switches!
In case it doesn't happen, I have to say FreeBASIC is pretty nice...I was happy with how easy it was to make a little simulation game and compile it. Also I haven't tried it out for very long, but Gambas seems pretty neat and does some kind of web app creation thing now too.
https://github.com/Microsoft/MS-DOS/blob/master/LICENSE.md
I was kind of surprised about that!
It looks like git uses the standard Unix epoch for its internal timestamp format, and not e.g. a format unable to represent dates before its creation, but that still means it can't really handle pre-Unix dates:
https://stackoverflow.com/questions/21787872/is-it-possible-...
Edit: downvoters, care to explain what I'm wrong about?
I didn't downvote.
git is distributed and works offline, this means that nothing could prevent you from making commit with a "fake" date, you always can change time on your machine. So there's nothing really hackish in that, and that has nothing to do with format in which time stored in git internally. And you can have legitimate uses for "faking" commit date. I'd say repository above is an example of such a legitimate use.
$ perl -e 'print gmtime(-2147483648).""'
Fri Dec 13 20:45:52 1901https://github.com/Microsoft/MS-DOS/blob/master/v1.25/Tim_Pa...
... or the version history in the v2.0 MSHEAD.ASM file:
https://github.com/Microsoft/MS-DOS/blob/master/v2.0/source/...
EDIT: Found better version history
There's at least support in 1.0, but the api changed in 2.0. Though I believe the few bits of software I've seen from that era, there were fewer .exes (I suspect for the same language distinction I postulated earlier).
Today, this seems like a pretty small project, and most commercial apps are significantly bigger.
That has me thinking though. I have always wanted to try OS dev but all the stuff I have read says it will take years to get a system that can print hello world but surely it can't take that long to write 12k lines.
There are a lot of tutorials out there that'll walk you through quite a bit more than that in a weekend.
A "something that boots" kernel is very small although obviously it doesn't do much. By the time you get to "hello world" the program will have grown but it's still relatively small.
Could I sue for lifetime wasted?
I spent so many hours of my youth messing with that :) and this is one of those things where built up experience became completely irrelevant over time.
The Greek roots of “nostalgia” translate as “the pain of returning home,” so it’s a false dichotomy. :)
And personally, I currently have a bad case of emacs configs.
I loved tweaking AUTOEXEC.BAT so much that I created a front end menu shell which could be end user customised that at one stage became the de-facto program launcher for an entire state government here in Australia for a couple of years in the '80s.
I remember developing real world apps using MS Access on Win 3.1. It was a great RAD platform, you didn't even had to know all of SQL and VB right away, you could add it bit by bit as needs arose. All the while I was learning C and C++ with the Borland compiler and playing around with Corel Draw. Fun times. I was in high school.
I'm a bit ambivalent about this (and all the "open sourcing" MS has been doing recently.) On the one hand, it's great to see source code. On the other hand, everything can be reverse-engineered anyway and it feels like this is a sign of a "shedding" (for lack of better term) MS --- one that doesn't see software as having intrinsic commercial value anymore, but instead is turning to services like Azure and stuffing telemetry in everything to eventually turn into another adware company for profit, while at the same time hiding that behind the "but we're open-source too" marketing.
I can see Microsoft using open source to attract developers & retain its userbase and platform dominance, then using that to make money from the surrounding ecosystem.
https://www.microsoft.com/resources/sharedsource/Licensing/r...
Looks like they manually backdated that for effect, as there are only 3 commits in the repo.
Or a CVS importer applied the appropriate date, perhaps.
Then again, there's FreeDOS which happens to be used in a ton of places that MS-DOS otherwise would be (BIOS update disks, car radios, etc)
In addition to said usefulness, it doesn't necessarily have to even be something that Microsoft may consider useful to keep as IP, and -- here it comes -- not speaking from any authority but I recall that there were some components that Microsoft may not have the complete ownership of in these later versions of MS-DOS; I'm not sure if these components are so critical that releasing it without them would make it unusable, or if it would just involve a lot of effort on the code side to do so (and then on the audit side to make sure it was really done[0]). Those companies may not exist any longer to even get the appropriate permission from ... though they have a way of popping out of the woodwork when there's a large corporation that could be sued.
Even if memory serves me wrong, and these later versions of MS-DOS are 100% Microsoft code[1], owned free-and-clear without copyright or patent licensing agreements that included any provisions about publication/re-licensing of source code. You then have the legal team.
Copyright is hard, and while I'd be surprised if Microsoft didn't have a legal team that understood software licensing and all of the fun and turmoil of Copyright (multiplied by every country they operate in), I wouldn't be terribly surprised if the idea of Copyright and 'All Rights Reserved' are indistinguishable to -- at least -- some of these lawyers. However, assuming even that's not a problem, getting everyone in a room to clean all of the guts off of the floor is both a time-consuming and not-at-all-easy task. I've done the 'large multi-national corporation thing'[2] and IP was something you didn't pull an "it's easier to ask for forgiveness..." thing on. I created a security product, software, hardware and all for the company, with direct assistance with Microsoft. My boss made a handi-cam video which Microsoft showed at the MVP summit. I spent weeks trying to get permission to upload the video to YouTube or have it put on our marketing page (made little sense there; but probably the easier path). I didn't give up -- I was told in no uncertain terms that I was forbidden to upload the video and that I should delete all copies of it (which I did) with various IP-related reasons given[3].
Honestly, I'm surprised they bothered with MS-DOS versions of that age. It's really neat, don't get me wrong. I'm guessing they either believe that the historical value, good will generated (marketing), and such is high enough to warrant the effort/time/cost and/or the effort was minimal due to it being a simpler time, smaller team, era of software development[4].
[0] And even then, just because you're right, doesn't mean you won't be sued; nor that said suit won't cost more to win than it would ever possibly be worth.
[1] Honestly don't recall -- I can only remember things I saw, vaguely, from my old PC and while I can't remember specifically seeing a notice about third-parties in the copyright notice that appeared prior to the prompt display, I thought a few of the things it shipped with (very possibly having nothing to do with DOS) having been part of the installed product.
[2] 17,000 employees at its peak, globally (plus many, many contractor/temp), so not 'massive' like the likes of Microsoft, but big enough that several bureaucracy-dances were required for some of the most basic-sounding things when it came to software licensing (and a whole lot of other things). We were in tech, but not software, so there's the artificial barrier of explaining to a lawyer the idea of a GPL-style license. Fun times.
[3] I knew our IP policy and worked in security the year prior, so I knew they weren't screwing around. I also assumed nobody would have the desire (or stones) to upload it. I discovered at a job interview that went really well that the reason I wasn't asked a large number of technical questions was because they found the video of the product I had described on my resume and it demonstrated everything they were looking for. I'm not sure who did it (it wasn't me -- I signed the contract, so I really did delete all of my copies), or when -- years (and one merger) later they were far more lax, too.
[4] And I'm really hopeful this is the God's honest "everything but the license" original code, warts and all, because it'd be fascinating to look at something produced at this time under the pressures that were all around them. I remember seeing videos of Bill Gates where he looks like he's going to outright vomit Microsoft blue -- unshaven, unshowered, and talking to a room full of people and a camera.
(I'm using MS-DOS 5.0 on my 386, though.)
One thing I do recall about the 6.x series that drove me nuts was that the installer progress bar was ... peculiar[0]. It seemed like you could benchmark the 5.0 and 6.22 install from the time the progress bar started and both would go from 0% to 99% in the same time, but where 5.0 would finish with a non-unusual delay after 99%, each version of 6.x spent a while there, with each minor version longer than the prior. By a while, it was something like 3 or 4 times more time spent on that 1% than the entirety of 0-99 (no politics intended). We joked that the entire MS-DOS 5.0 installer must have been copied over and they appended all of the files for 6.x to some post-install script that ran at 99%. No evidence or attempts to gather evidence were ever done, but it was something to talk about while waiting for that last semi-solid 8-bit ASCII block to get filled in.
The 6.x series ended up being one that I ran for the least amount of time -- I ended up on DR-DOS and PC-DOS. But software of that time was really painful to work with. Eventually, I ended up on OS/2 (2.0 through Warp, which I used until just prior to Windows 95) because it felt like the software I depended on ran the same on the platform it was designed for -- Windows 3.x -- as it did on on OS/2's compatibility layer[1].
And the worst part is this is not a compliment of OS/2. Back then, starting an application wasn't as simple as tapping an icon on a touch-screen. Some programs required commitment and following a careful launch sequence if your level of commitment was detected as insufficient. To appease these demonic applications, you followed a careful set of ritualistic actions. Double-click the program icon, wait until the mouse stops moving entirely (or if it starts hopelessly stuttering, that's fine, too). At this point, turn the computer off, wait until it's quiet, turn it back on, tidy your desk, refill the coffee, double-click the application icon (rinse, repeat until you land three 7s). And in the days of co-operative Multitasking or OS/2's 'hold my beer' with a single application's bug taking out the entire system (OS/2 one-upped Microsoft by occasionally causing dumpster fires in the shape of large, metal, PC enclosures). /s
This really wasn't meant to be so ranty, so my apologies. I think fondly of those days. I also tend to think about them a lot more when people say silly things like 'quality of software isn't what it used to be'. It really depends on what 'used to be' means. (-:
[0] Sure, complaining about an installer you run once is weak, but while I mentioned that big computer upgrade, I didn't mention was that it was funded by my father selling PCs which I assembled and configured DOS/Windows/Networking on (we had some corporate clients). It was a side business he set up as a way for me to make enough money to buy a top-of-the-line upgrade. I was 13, or so, and we were ... successful ... just my take in it paid for a car and a 486 that cost as much as a car. I installed ... a lot ... of DOS ... and Windows.
[1] If memory serves, it was actual Win32 API code that they had a license to from past contractual agreements (they still had to pay for the license for each version but they were legally allowed to include it on install media), so it wasn't so much a compatibility layer as it was ... Windows, running on OS/2 with stability as a future feature ... of Windows, and nearly every Windows app of the era. Later they removed the compatibility layer, and released a version where you could provide your Windows installation disks to get the compatibility layer. The two were meant to feel tightly glued together, but someone mixed up glue and lube.
Windows 95 was really annoying in that regard, the progress bar would race to 95%, and then stay there for a long time. We used to joke that the installation routine would only start doing any actual work upon reaching that 95% mark.
It was also when I started to feel the age of the 8088 I was running it on and was the first version of an OS that I wrote something 'difficult' that I thought was 'really cool' using assembler. I was very young, so cool had a wildly different definition than it has today. What I wrote was a TSR (terminate and stay ready -- something that was almost, but not quite, entirely unlike a background app) that made a ball-like character bounce around the screen after a random number of minutes, really fast* for a second (just long enough for you to maybe question what you saw)[1].
It was a horrible pain of C, some assembler, and -- of course the mess of pirated software that claimed to be something of a compiler and a development environment but I found most of them were designed to simply return indecipherable errors (or -- error codes -- sometimes literally just exit codes), it took me weeks, but it's the reason I stopped begging for a C64, Mac, Amiga or any of the other platforms that had far more fun things to do with them at the time.
[0] Some never forget being told '640K is more than you'll ever need' (yes, partial or misquote, but it's exactly what the guy who sold us that first 8088 told us) -- I'll never forget the incredible controversy that happened when OS/2 2.1 came out and it was something like ~30MB installed! We had a FULL height 350MB SCSI drive at the time (a cool $1,600 controller, cable, terminators, drive and all), so I was a little spoiled. I was still always almost full all the time but, hey, what can you do.
[1] I got the idea from a rumor I had heard about a software virus of the time that did something similar. Mine didn't spread -- it had to be edlin'ed into the AUTOEXEC.BAT. I named it something non-obvious since my dad was proficient enough to go snooping around (it may have even been something in the more l33t CONFIG.SYS).
I suspect the most useful thing I wrote was a simple "undeleter" program, for recovering deleted files from floppies and drives. Unmarking the FAT-entry as deleted, then chasing blocks to reassemble the file.
Your comment brought back some great memories, thanks :)
Honestly, I think I've always referred to it as Terminate and Stay Ready; probably something I read in one of those old books that used to adorn the bookshelf of my parent's office.
Writing it brought back a lot of memories, as well - glad someone enjoyed it! It's amazing to think that we used to write programs in ways other than "I don't know how to do this" (performs google search) "I know how to do this now", but rather had to pour through books, forums (on dial-up BBSes and what qualified as equivalents in the early Internet days) and acquiring that little nugget of knowledge felt like it had so much more value, even though the reality is that the value was the same, it just took a lot more effort.
5.0 brought the ability to load a bunch of stuff high, so you could finally have your cake and eat it too.
Why? All the best games ever run under DOS!
Being able to legally do something more with them may be useful to some.
Maybe MS will officially release it someday, but you'll probably see 3.x first.
If you can get it onto a floppy image, I'm sure it would run it just fine.
There's a bit of a catch-22 there. Technically, you need to be running DOS X.X to create a bootable floppy (real or image) of DOS X.X, as to make a disk bootable you have to type 'SYS A:' from the running DOS to write bootblock onto the floppy and copy over the current IO.SYS MSDOS.SYS and COMMAND.COM.
So, on say.. a modern machine, with no extra third party tools to create the empty bootable floppy image, you'd be hard pushed to do this, as the files in the Repo are just the files and not a floppy image.