Asynchronous I/O figures in prominently in Windows NT but I just assumed it wasn't ever thought about in DOS (being single-tasking and single-user). 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.
They copied this driver model from UNIX/XENIX. However the way it was implemented in DOS, the interrupt routine had to always return with the "done" flag set, so a driver that was compatible with it wouldn't ever be possible to run asynchronously on a newer version.
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:
Reminds me of TSR (terminate and stay resident) programs, which felt like magic (I was happy to implement one a long time ago). TSR is an embryo of that in a way!
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.
> 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.
Thanks for the suggestion. We do have a "MicrosoftArchive" organization that we could consider transferring this sort of thing to...
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]
I don't think C and x86 real mode with segment:offset addresses mix that well. Obviously there were compilers that did it (and then those "near" vs "far" pointers ...), but it's not great.
I think once you got to a flat 32 bit address space and more than 1mb of memory, C starts to make more sense.
I wonder if there are any copies of the "OEM Adaptation Kit" in the wild. Would be neat to be able to get this running on a not-IBM-compatable 8086 machine.
If I could pass my ideal version of copyright to the world, this is what I would dream:
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?
We do need major copyright reform, and I think even splitting copyright into categories makes sense. Some time-sensitive content, like sports and news broadcasts, might only warrant 4-5 years of copyright protection before becoming public domain. Books and movies may as well enjoy the 20-30 time frame you propose (the original 1790 copyright act offered a maximum of 28 years of protection, if you bought a 14-year extension to the default 14-year term). Software might warrant just 10 years of copyright protection, which is just about the maximum length that corporate support exists for; it could be reasonable to allow for a 10-year extension to an initial 10 years.
I think 20 years with N optional 10 year renewals (where N can be debated[1]). I'd like it to be short enough for the less-profitable works to make archivists jobs easier, but long enough for authors to be able to profit off of commercial adaptations (e.g. the GoT show appeared 15 years after the book was published).
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
> 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
Dude, I just want my turtle to move around on the screen. Now I have to ship Blu-rays to Congress?
> #2, I think, already has precedent considering the patent system.
Deposit requirement is already part of the copyright system, applying to everything published that is subject to copyright unless exempted by regulation:
#2 may work for old software, but how can this work for contemporary, which even for "on premise" use receives frequent patches and updates? And becomes really tough with modern "cloud" (in broad meaning) software, which is tied to a lot of infrastructure.
And yes, I share the goal! I however don't see a practical way.
#2 wouldn't work internationally. Of course the US can internally have whatever kind of legislation they want, including whatever requirements for having one's works covered by copyright. But non-US authors or companies (or government organizations) obviously can't be obliged to supply materials to the US Library of Congress.
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.
[+] [-] EvanAnderson|2 years ago|reply
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/...
[+] [-] rep_lodsb|2 years ago|reply
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:
https://www.pcjs.org/software/pcx86/sys/dos/microsoft/4.0M/
https://www.os2museum.com/wp/multitasking-ms-dos-4-0-lives/
[+] [-] thibaut_barrere|2 years ago|reply
[+] [-] dezgeg|2 years ago|reply
[+] [-] gslin|2 years ago|reply
[+] [-] dang|2 years ago|reply
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)
[+] [-] torusle|2 years ago|reply
I browsed a little through the code, and found that sort.com used self-modified to change the sorting order:
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.[+] [-] BryanLegend|2 years ago|reply
Example: https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...
[+] [-] nitwit005|2 years ago|reply
[+] [-] voytec|2 years ago|reply
> 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-...
[+] [-] giancarlostoro|2 years ago|reply
[+] [-] chungy|2 years ago|reply
[+] [-] guestbest|2 years ago|reply
[+] [-] anticensor|2 years ago|reply
[+] [-] Hrundi|2 years ago|reply
[+] [-] sillywalk|2 years ago|reply
[+] [-] gigel82|2 years ago|reply
[+] [-] giancarlostoro|2 years ago|reply
The real thing I wish they could / would open source is that old pinball game.
[+] [-] jeffwilcox|2 years ago|reply
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]
[+] [-] leni536|2 years ago|reply
[+] [-] magic_hamster|2 years ago|reply
[+] [-] Endy|2 years ago|reply
[+] [-] issafram|2 years ago|reply
[+] [-] outside1234|2 years ago|reply
[+] [-] asveikau|2 years ago|reply
I think once you got to a flat 32 bit address space and more than 1mb of memory, C starts to make more sense.
[+] [-] ok123456|2 years ago|reply
[+] [-] pjmlp|2 years ago|reply
[+] [-] kjs3|2 years ago|reply
[+] [-] gjsman-1000|2 years ago|reply
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?
[+] [-] chungy|2 years ago|reply
[+] [-] aidenn0|2 years ago|reply
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
[+] [-] paulddraper|2 years ago|reply
Dude, I just want my turtle to move around on the screen. Now I have to ship Blu-rays to Congress?
[+] [-] dragonwriter|2 years ago|reply
Deposit requirement is already part of the copyright system, applying to everything published that is subject to copyright unless exempted by regulation:
https://www.law.cornell.edu/uscode/text/17/407
[+] [-] johannes1234321|2 years ago|reply
And yes, I share the goal! I however don't see a practical way.
[+] [-] Delk|2 years ago|reply
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.
[+] [-] delta_p_delta_x|2 years ago|reply
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...
[+] [-] dave4420|2 years ago|reply
[+] [-] sedatk|2 years ago|reply
[+] [-] lproven|2 years ago|reply
[+] [-] tibbydudeza|2 years ago|reply
[+] [-] trebligdivad|2 years ago|reply
[+] [-] tibbydudeza|2 years ago|reply
[+] [-] TheRealPomax|2 years ago|reply
[+] [-] Karellen|2 years ago|reply
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
[+] [-] unknown|2 years ago|reply
[deleted]
[+] [-] blibble|2 years ago|reply