MS-DOS v1.25 and v2.0 is now open-source (2014)
github.com
github.com
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/...
There actually was a multitasking version of MS-DOS, but it was only licensed to a few OEM's. These disk images surfaced about 10 years ago:
Microsoft Releases MS-DOS Source Code on GitHub - https://news.ycombinator.com/item?id=18428882 - Nov 2018 (7 comments)
The original sources of MS-DOS 1.25 and 2.0 - https://news.ycombinator.com/item?id=18097661 - Sept 2018 (115 comments)
MS-DOS is now Open Source - https://news.ycombinator.com/item?id=7468192 - March 2014 (3 comments)
Microsoft makes source code for MS-DOS and Word for Windows available to public - https://news.ycombinator.com/item?id=7466952 - March 2014 (204 comments)
MS-DOS Source Code Released - https://news.ycombinator.com/item?id=7466826 - March 2014 (7 comments)
I browsed a little through the code, and found that sort.com used self-modified to change the sorting order:
; note! jae is patched to a jbe if file is to be sorted in reverse!
;
CODE_PATCH LABEL BYTE
JAE INNER_SORT_LOOP
I committed similar crimes in the 90th as well, but that was just me as a teenager programming stupid games in asm for fun and giggles. Not for commercial software.Example: https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...
> These are the same files originally shared at the Computer History Museum on March 25th, 2014 [1] and are being (re)published in this repo to make them easier to find.
[1] http://www.computerhistory.org/atchm/microsoft-ms-dos-early-...
https://devblogs.microsoft.com/commandline/microsoft-open-so...
billg's very first BASIC, which he wrote on a night flight from Albuguerque to NY, or some such, for the Altair. 'Sbin a few decades, so ah disremember.
See Ichbiah's Le Nouveaux Magiciens.
Google ichbiah nouveax magiciens
And, get off my lawn! Grrr.
;-)
Kind of a silly thing to want, and of course "unsafe" for many tasks, but fun for hobbyists nonetheless.
The real thing I wish they could / would open source is that old pinball game.
As far as games, and the broader collection of earlier closed source applications: it's incredibly difficult to clear rights if there's third-party intellectual property that was written without the intention of being open, or licensed content, etc. It also takes a bit of an army to clean/review code and comments to get them ready.
[Source: I run our open source office... we help advise internally, but aren't staffed to do nostalgia open sourcing and so need to partner with people and teams who can help]
There's probably a business argument that they're far enough removed from Windows 11 to not be a threat to Microsoft's sale of Windows 11.
This is exactly what Sun wrote the CDDL for; it let them open source as many components as possible while still leaving some pieces closed. Sun also ended up releasing a bundle of binaries that you drop into a source build to get a complete /functional OpenSolaris system with the still-needed closed bits included, and over time some of those components got replaced piecemeal with FOSS alternatives (although illumos still includes some closed parts AFAIK).
Good to keep the successes in mind:)
> also I'm pretty sure all the closed stuff got purged out of illumos?, not even using Sun compilers now, it's all gcc/binutils
https://illumos.org/docs/developers/build/#getting-the-close... seems to say there's still some blobs in there, and gcc is a patched version. That said, yes, AIUI it's gotten better.
I am just glad Microsoft embraced open source and is even willing to open source some of their old tools. I fully understand... Sometimes people leave undesirable comments (swear words and curses for whoever breaks it, and so on...) so I appreciate anything you guys do. One of my secret hopes is someday I come on HN to find out that some if not all of Visual Basic 6 has been open sourced, that way I can always install it without having to sail the seven seas (an option I don't bother with anymore...) or trying to figure out where my old license key even went.
Quick question if you don't mind answering: Does Microsoft have a team that is devoted to just that full time? I'm assuming it would be your team, but is that essentially all or most of what your team works on?
Since this is mostly for historical interest, note what the IP is and what they do, for libraries, perhaps somebody will find a substitute or a version of library with similar functionality without the limitation. For images/sound just include blank ones of the proper dimensions/length and the same filename, if there is enough interest they can be remade.
Just to give you an idea of of the lengths preservationists are willing to go, people in the retroreversing community they are spending months to years converting by hand opcodes of binaries to annotated assembly or C code that compiles byte identically, a few non included IP bits shouldn't be much of a blocker to retro enthusiasts.
I think once you got to a flat 32 bit address space and more than 1mb of memory, C starts to make more sense.
There have been mixed memory models and you could go crazy with near and far to break out of the limits of the easy memory models.
Most of the time it was just a mater of picking a suitable memory model for your code and forget about near/far though. Not so different than today.
IIRC, with the tiny model you could often compile those to .COM files where MS-DOS would pick a free segment, load the file to the 0x100 offset, set all the segment registers to it, set the stack pointer to 0x0, and jump to the start at 0x100. Super simple (not even an executable header)!
http://alexfru.narod.ru/os/c16/c16.html
But indeed, we were all glad when the 32bit flat model was introduced with the 386.
Segmented architecture has nothing to do with it, there was support for it in any Compiler that targeted the platform. And besides, it was how you did things back then, no surprises there.
When I say "in the wild" I obviously mean "yo ho ho and a bottle of rum"; nothing authorised.
1. Copyright is 20-30 years in length, maximum. (We can argue about that.)
2. For computer programs, a copy of all source code, build tools, and final binaries must be supplied in an offline format (maybe a Blu-ray Disc or a few?) to the Library of Congress to store, duplicate, and preserve as needed. This content will then be released on the copyright expiration, and the offline format is meant to render computer hacking ineffective for stealing the work. For software as a service that is continuously improved, new discs must be received yearly.
#2, I think, already has precedent considering the patent system. A patent is meant to describe how to perfectly recreate the patented technology (minus, maybe, a few trade secrets), so why not copyrightable software?
Deposit requirement is already part of the copyright system, applying to everything published that is subject to copyright unless exempted by regulation:
Maybe keeping it nice and easy to start with by a six volume discussion of what a file is.
Dude, I just want my turtle to move around on the screen. Now I have to ship Blu-rays to Congress?
A big example of this is Square Enix which lost the source code for multiple games, including (infamously) Final Fantasy 7. The remaster was a reverse-engineering project. They were also rumored to have lost Final Fantasy 8 though this was later shown incorrect. (And, in addition to that, they lost all of Kingdom Hearts 1). And that's just the mistakes we know of. (There's also Konami losing Silent Hill...)
I suppose the US is the only country in the world, and if I release software in Europe, I've got to ship it across the pond...
And yes, I share the goal! I however don't see a practical way.
I like #2, but it could be a burden; perhaps only registered works should do it (and registering would be required for renewals).
1: I like 3, which is much shorter than current copyright but significantly longer than you suggest
Once you get away from purely functional into things like textbooks and word-processors, things get complicated quickly. If I write a word-perfect clone, that's pretty darn functional, yet I probably make lots of creative choices in the process that are hidden from the user. If it's a word processor with its own peculiar interface, there are even user-visible creative choices.
Did you perhaps mean aesthetic versus functional? If so, then that's even more of a treacherous area. How many people have Minard's famous chart[2] hanging on their wall for aesthetic reasons? Or what about e.g. Dr. Suess' books. Are those aesthetic, or are they an educational tool?
1: https://en.wikipedia.org/wiki/Lexmark_International,_Inc._v.....
2: https://en.wikipedia.org/wiki/Minard#/media/File:Minard.png
You could deny them copyright protection for their software within the US if they don't but that wouldn't be exactly popular.
Of course you could still do it purely internally within the US for software whose copyright belongs to US organizations or individuals, and it might achieve some of what you want.
It seems that "Unix" and "Xenix" were often used interchangeably in old Microsoft code. For example, there are 23 occurrences of "Xenix" in the MSVCRT.DLL source code (in the Windows 2003 SDK). This is one of them:
crt\stdlib.h:241:_CRTIMP extern int errno; /* XENIX style error number */https://github.com/microsoft/MS-DOS/blob/master/LICENSE.md
https://directory.fsf.org/wiki/License:Expat
Huh. Was not expecting that. Nice.
Edit: Of course they won't actually mention Free Software, because they don't want to acknowledge Free Software. smh
What would have satisfied you? I mean, MIT is "free software", what else do they need to say?
What do you want, a love letter?
Everyone else is just happy to satisfy the spirit of the thing without giving it explicit mention.