11 ms·
The original sources of MS-DOS 1.25 and 2.0
- miffe 8y agoWhy only 2.0, not 6.22?
- chungy 8y agoNot speaking from any authority, but I'd imagine because 6.22 can still be useful in certain applications and Microsoft would still want to exploit that. 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)
- mdip 8y agoGlad someone else started the whole "Not speaking from any authority", so I'll follow your lead... (-: 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.
- phendrenad2 8y agoI wonder, is 6.22 considerably more complex than DOS 2? Did they do any rewrites or is 6 based directly on 2?
- bluedino 8y agoIncludes so many other things like disk compression
- milpool 8y agoI'd prefer 3.0 - because it was the baseline to DOS applications, it seems. EverythingTM runs on DOS 3.0. (I'm using MS-DOS 5.0 on my 386, though.)
- unixhero 8y agoWhy would you, when 6.22 has better tools and features?
- yjftsjthsd-h 8y agoMemory footprint?
- mdip 8y agoI wasn't a fan of the 6.x series of DOS but I can't remember exactly why. I have fond memories of DOS 5.0, but that's also the first version I ran on my 486 that we built in the 90s (I came from an 8088, so this was an unfathomable upgrade). It was the first version of DOS that I could finally run some interesting games on. 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.
- qwerty456127 8y agoI would love to see the sources of MS DOS 7.1 (the version included with Windows 98 that supports FAT32) actually. And Novel DOS 7 (that supports multitasking) if possible. Also these could make an amazing contribution to the FreeDOS project and possibly add some steam to what the world of DOS is nowadays. I love DOS.
- sverhagen 8y agoCould you elaborate, do people love it nostalgically, or are they making a case for actual current day usage of some sort?
- qwerty456127 8y agoI love it nostalgically (and I actually enjoyed using it back in the days), many people still use some flavor of DOS e.g. in supermarkets and post offices. I believe there is a lot of old hardware that is only compatible with DOS still in use.
- xahrepap 8y agoIn 2006 I worked at a dry-cleaner/laundromat that had its computer system all running on DOS. I remember when the computer died one day, my boss went to the local thrift store and found a computer old enough to just move the drive over and keep things running. I thought it was odd, but it worked great! Kept us from using it to play games :)
- berbec 8y agoUp until about 10 years ago the ordering system at all the Domino's pizza stores was running either on a DOS or a Win95 machine in a dos window. They manage to patch it to the point it could take internet orders over, what I think was, a virtual modem controlled by a helper windows program.
- qwerty456127 8y ago> Kept us from using it to play games :) Why? All the best games ever run under DOS!
- userbinator 8y agoIf you don't mind doing some searching and the legality (or lack thereof), I believe the sources for 6.22 were leaked a long time ago along with 3.2 (or 3.3, can't remember now --- this was over a decade ago.) Maybe MS will officially release it someday, but you'll probably see 3.x first.
- giancarlostoro 8y agoWonder if and when we will get closer to seeing existing windows apps open sourced. It looks like they may be doing clean up of old codebases to release
- chungy 8y agohttps://github.com/Microsoft/winfile https://github.com/Microsoft/winfile :-)
- etatoby 8y agoOhh, that screenshot brought back memories of Win 3.1 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.
- kerng 8y agoOh, VB6 was the most productive language I have ever used I think. It really was about rapid development and getting stuff done by non experts, which was very powerful. Wonder if we'll see something like this again in upcoming years.
- userbinator 8y ago...or perhaps even Windows itself? 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.
- 8y ago
- gerdesj 8y agoWell it has a place, I suppose. For me: I wasted a lot of time and effort farting around with config.sys and autoexec.bat getting drivers to load etc. Could I sue for lifetime wasted?
- mysterydip 8y agoThe worst for me was when you needed an extra 10KB to run a game after removing everything else and it was either no sound or no game
- NegativeLatency 8y agoOne time I accidentally uninstalled the cd rom drivers while trying to clear enough space to play some Star Trek game.
- jaredsohn 8y agoDid you install qemm (https://en.wikipedia.org/wiki/QEMM https://en.wikipedia.org/wiki/QEMM) and use loadhi to try to move software into 'high memory' (where that would only work for some programs)? 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.
- okcwarrior 8y agoI was telling my coworker the other day to think about how much of our lives we have wasted waiting for status bars to go from 0 to 100%, haha.
- utopcell 8y agoFull assembly. Was this the case all the way up to 6.22 ?
- simcop2387 8y agoI bet at least until the whole .com .exe stuff was sorted out. After .exe was created they finally got more than a single segment in a binary, so they probably we're using C by then for some things at least. I imagine all the .com files were ask even at 6.22 though, because of the 64kb limit of them
- Narishma 8y agoI'm pretty sure .EXE was supported from the first release.
- simcop2387 8y agoLooks like you're probably right, https://en.wikipedia.org/wiki/DOS_MZ_executable https://en.wikipedia.org/wiki/DOS_MZ_executable 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).
- aries1980 8y agoAlso, .exe had a larger header, afaik 512 bytes, that was luxurious for some use cases.
- qwerty456127 8y agoI believe I've once seen parts of some leaked DOS (6.0 5.0 or 3.0, I can't remember for sure) source code that was at least partially in C.
- sebazzz 8y agoProbably everything that is 16-bit.
- Theodores 8y agoShocking to think this is where PCs got started. On my first encounters with MS-DOS I was underwhelmed, the Acorn BBC Micro came with better software and it was all in ROM. I could not believe that this was serious software.
- bbcbasic 8y agoADFS FTW
- etatoby 8y agoSadly, Marketing wins over Engineering every time.
- rusk 8y agoIf Cringley is to be believed, the original incarnation was called QDOS, Quick & Dirty DOS done up by some guy in the valley that didn’t want to pay for CP/M. Gates licensed it outright for $50k cause he needed something to go to IBM with ...
- iguessthislldo 8y agoIt looks like they set the commit dates to match the release dates: https://github.com/Microsoft/MS-DOS/commits/master https://github.com/Microsoft/MS-DOS/commits/master
- userbinator 8y agoInteresting. More explanation: https://hackernoon.com/how-to-hack-github-kind-of-12b08a46d02e?gi=6c1136aeb6d5 https://hackernoon.com/how-to-hack-github-kind-of-12b08a46d0... 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-to-set-a-git-commit-to-have-a-timestamp-prior-to-1970 https://stackoverflow.com/questions/21787872/is-it-possible-... Edit: downvoters, care to explain what I'm wrong about?
- deleted 8y ago[deleted]
- philipkglass 8y agoThe second half of your post appears to imply that MS-DOS source releases would properly be dated "pre-Unix" (pre-1970), but they're not that old. I didn't downvote.
- codesnik 8y agoI didn't downvote you, but what you say doesn't make much sense. 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.
- tinus_hn 8y agoThe format Git uses determines the range of dates it can store. If it uses the normal Unix epoch system 0 means 1-1-1970 so you can’t represent dates before that.
- 0xabe 8y agoMicrosoft, please release QuickBasic to the world
- scruffyherder 8y agoI'd even be happy with 8080 CP/M MS Basic...
- themodelplumber 8y agoThat'd be really cool. Upgrades to QuickBasic would come out pretty fast I'll bet. 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.
- rnd0 8y agoFreeBASIC is pretty cool, qb64 isn't bad either -and might be a shade closer to the original quickbasic? (I'm not sure as I don't know enough QB arcana to test). https://www.qb64.org/ https://www.qb64.org/
- codetrotter 8y agoThere’s also a guy from Finland that wrote his own QuickBasic compiler and is doing some pretty cool videos on YouTube under the handle Bisqwit, with some of the videos talking about things he wrote or prototyped using QuickBasic. https://bisqwit.iki.fi/source/qbc.html https://bisqwit.iki.fi/source/qbc.html https://youtu.be/TUa5HJUebEA https://youtu.be/TUa5HJUebEA https://youtu.be/8x9Ya4izFaE https://youtu.be/8x9Ya4izFaE https://youtu.be/ZwcFV3KrnQA https://youtu.be/ZwcFV3KrnQA https://youtu.be/5Da6ZyQJjE0 https://youtu.be/5Da6ZyQJjE0 https://www.youtube.com/playlist?list=PL41889A5E9CBD68CF https://www.youtube.com/playlist?list=PL41889A5E9CBD68CF
- tdeck 8y agoI think the source is floating around somewhere. At least, back when I wrote QuickBasic it seemed like some people in the community had copies.
- scruffyherder 8y agoIt's MIT licensed too! https://github.com/Microsoft/MS-DOS/blob/master/LICENSE.md https://github.com/Microsoft/MS-DOS/blob/master/LICENSE.md I was kind of surprised about that!
- rnd0 8y agoIt is pretty suprising, all things being equal. I'd suggest keeping a close eye on this issue: https://github.com/Microsoft/MS-DOS/issues/2 https://github.com/Microsoft/MS-DOS/issues/2
- anon49124 8y agoUniversities and industry groups, esp. security folks, get full source copies of Windows and more... with big bear-trap, PMITAP NDA's. I have/had a NT5/Win2k source CD somewhere in my empire of junk.
- theamk 8y agoInteresting, all sources of MS-DOS 1.25 is just 12K lines of code, including comments. Today, this seems like a pretty small project, and most commercial apps are significantly bigger.
- ndnxhs 8y agoMy beta web app probably has more source code than that.. 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.
- stormbrew 8y agoAn "OS" that just boots and prints hello world would be on the order of tens to hundreds of lines depending how fancy you want to be and how much you want to lean on legacy bios support still being a thing. There are a lot of tutorials out there that'll walk you through quite a bit more than that in a weekend.
- ChrisSD 8y agoThere are many tutorials for creating a Raspberry Pi OS[0]. Running in a VM like qemu is the easiest and cheapest way to start (setting up a bootable SDcard is more involved). 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. [0]: https://jsandler18.github.io/ https://jsandler18.github.io/
- anticensor 8y agoThis is the sanitised version, with inappropriate comments et al. removed.
- danmg 8y agoMost of the functionality is done by the BIOS. It's basically a shell that wraps around the interfaces provided by the BIOS.
- forapurpose 8y agoDon't overlook the email by v1.25 (and v2.0?) author Tim Paterson: https://github.com/Microsoft/MS-DOS/blob/master/v1.25/Tim_Paterson_16Dec2013_email.txt https://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/MSHEAD.ASM https://github.com/Microsoft/MS-DOS/blob/master/v2.0/source/... EDIT: Found better version history
- lioeters 8y agoApparently, Tim Paterson worked on MS-DOS up to v1.25 (completed March, 1982). Source: http://www.patersontech.com/dos/origins-of-dos.aspx http://www.patersontech.com/dos/origins-of-dos.aspx
- ape4 8y agoCould you run this with any current virtual machine?
- extropy 8y agoDosbox should be able to handle it.
- rnd0 8y agoThere's 86box, based on PCEM; https://github.com/86Box/86Box/ https://github.com/86Box/86Box/ ...it has support for several PC/XT/AT models. If you can get it onto a floppy image, I'm sure it would run it just fine.
- Jaruzel 8y ago> 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.
- dfox 8y agoIt is even more complex than that. This source code (and the compiled binaries) does not contain the PC-specific DOS code, which were supposed to be written by the OEM (in PC case that probably means IBM). In order to build bootable DOS out of this you have to link SYSINIT.OBJ and SYSIMES.OBJ and your hardware interface code into binary (on PC the result of that is IBMIO.COM for PC-DOS and IO.SYS for MS-DOS for PC) and if you want to boot from floppy you also have to provide some kind of bootloader.
- Dowwie 8y agoDoes anyone remember ANSI bombs? One tricked 12 year old me and formatted my hard drive
- berbec 8y agoAh yes... Mapping space bar to "^Mformat c: /q /y^M". Those were the days...
- 6502nerdface 8y agoThe README for 2.0 contains an interesting apology to OEMs: > 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!
- userbinator 8y agoThere's even an (undocumented?) int 21h function to get the switch character, if I remember correctly.
- Jaruzel 8y agoI'd like to see tiny 80x86 boards (about the size of the Pi Zero) that you could boot DOS on, with full access to GPIO/SERIAL/PARALLEL etc. I know arduino exists in this space, but for DOS lovers, little hobbyist boards like this would be great, and ideal for bootstrapping single purpose apps written in C.
- selimnairb 8y agoI have tons of nostalgia for DOS having first used it in 1992. However, as soon as I used Linux in 1994, it was instantly apparent how backward and hard to use DOS was compared to Unix-like systems. With hardware like Raspberry Pis, not sure why anyone would want to use DOS on x86 for embedded purposes today.
- brandonmenc 8y agoDoes anyone remember a particular DOS programming guide that dove deep into the internals, distributed as textfiles written by a single author on contract from (I believe) the US Navy?
- Asiasweatworker 8y agoThere is unlawful leaked MS-DOS 6.0 source code too.