MS-DOS cross-compiled to JAVASCRIPT.
MS-DOS running in pure CSS.
Word for Windows as pure HTML 5 (<brainfuck> element).
DOOM RUNNING NATIVELY on NATIVE MS-DOS on a PEBBLE.
Perhaps I've taken this meataphor too far?
And all released in the "look but don't touch" licence, I guess they need some waving cause of the Win 8 fiasco, the 8.1 fiasco and the retiring support for XP, if it hadn't been for the lucky Win 7, Microsoft would have gone the way of Nokia.
I guess they got around to removing all the curse words and comments where the programmers bash each other.
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).
Also this, from the documentation for the CharOper system call (that never made it outside of MSFT?) in SYSCALL.txt: AL Function
-- --------
0 DL, on return, will contain the DOS switch
character. On most systems this will default to
'-'.
1 Set the switch character to the character in DL.
2 Read the device availability byte into DL. If
this byte is 0, then devices must be accessed in
file I/O calls by /dev/device. If this byte is
non-zero, then the devices are available at every
node of the directory tree (i.e. CON is the
console device not the file CON). This byte is
generally 0.
3 Set the device availability byte to the value in
DL.
It looks like we have IBM to blame for '\' and '/' as a path separator/switch character in DOS/Windows, Microsoft originally was using the Xenix '/' and '-' respectively. I knew that Microsoft used Xenix fairly heavily internally but never thought that DOS was quite so influenced by it.I wonder if many other hidden or deprecated functions are present in these releases.
Can we view, modify, redistribute?
No one wants to get sued for these things, or being found to violate some end user license agreement with some other Microsoft software.
On the other hand, I'd love to find out that people viewing this code contribute an improvement that no one in Microsoft saw in decades that helps them improve something today, leading them to soften their stance on Free Software and copyright.
We can dream.
Microsoft didn't release the source code for these old versions of their software so people could use it, hack on it, and make new versions.
They released it because it's historically interesting.
As someone who is both a developer and a history graduate, I think it's fascinating.
* MS-DOS v1.1 and v2.0: http://www.computerhistory.org/atchm/microsoft-research-lice...
* Word v1.1a: http://www.computerhistory.org/atchm/microsoft-research-lice...
* https://mega.co.nz/#F!jAhUzLCC!2i187wbXL7WUF3587YaMfw
* http://www.sendspace.com/filegroup/61DF3FLY3Z3pnWTHQMzcRQ
SHA-256:
ed62a98801f15cf9b7f229e33c7413d1ff9d1e1e91e9aa2468742589b65e156d msdos.zip
b424c3c1c1d7083cc74c9b1b77823eb511739c4237cb7a2f1650b75391f43ff6 Word-1.1a-CHM-Distribution.zip ; /* Following comment is preserved verbatim for eternity */
; /* Rounding becomes a non-existant issue due to brilliant re-thinking */
; /* "What a piece of work is man
; How noble in reason
; In form and movement,
; how abject and admirable..."
; Bill "Shake" Spear [describing Sand Word] */ $ grep -ri fuck .
./Opus/asm/wordgrep.asm:; BP is used as always, the other registers are free to fuck with.
./Opus/asm/wordgrep.asm: je another_fucking_out_of_range_jump
./Opus/asm/wordgrep.asm:another_fucking_out_of_range_jump:
MS-DOS v1.1 & v2.0: $ grep -ri fuck . ;FIND.ASM
165 badfart proc far ;(what a hack!!)
166 ret
167 badfart endpI don't think there's much to gain in releasing it under a broader license - I would imagine that most programs that would need to expand or otherwise build upon this code would be better served by using one of the modern clones, such as http://en.wikipedia.org/wiki/FreeDOS
They have a modern toolchain, are actively in development, and seem like they would be much easier to add features to, if one found themselves with such a need.
You may not distribute or publish the software or Derivative Works.
You may not use or test the software to provide a commercial service unless Microsoft permits you to do so under another agreement.
You may publish and present papers or articles on the results of your research, and while distribution of all or substantial portions of the software is not permitted, you may include in any such publication or presentation an excerpt of up to fifty (50) lines of code for illustration purposes.
There was obviously scope for personality in the commenting...
arena_free_next:
CMP BYTE PTR DS:[DI],arena_signature_end
; end of road, Jack?
retz ; never come back no more
CALL arena_next ; next item in ES/AX carry set if tras
And a nice reminder of the other big players of the day: IF WANG ;Are we assembling for WANG? If dos_ver == "dr dos" then
Print("error")
Abort()
End if- You may not distribute or publish the software or Derivative Works.
I'm not saying it's a good license, but if you do not agree with or at least intend to follow it then perhaps you should have not downloaded it to begin with.
Bang up job by MS legal on this one. I'm confident this will prevent other distributions of this software.
MS-DOS 2.x is not so interesting in comparison.
And that's why Microsoft is at a turning point in 2014.
> Certain structures, constants and system calls below
> are private to the DOS and are extremely
> version-dependent. They may change at any time at the
> implementors' whim.
That pretty much summarises my experience of trying to work with Microsoft products. Arbitrary, undocumented API changes every time the version number changes "at the implementors' whim".Not only from a historical perspective, but for future people who may need to run some ancient software in order to extract some ancient data from obsolete formats.
I sure wish Turtlebeach would open source the software on their Audiotron. They abandoned it maybe 10 years ago, but it's still far and away the best standalone media player, but it could seriously use a software update.
Why the ---- does this have 656 upvotes? Microsoft PR campaign anyone?
"Microsoft had under 100 employees and a Microsoft product (MS-DOS) had less than 300KB". Yeah, that is still alot of employees compared to new software companies today. And the sourcecode? Well resources for software development were much scarce back then, both computer and human wise.
Just speaking for myself, I come down pretty firmly in the "Don't know, don't care" camp for both questions.
In a world where FreeDOS exists, there just isn't any practical value to having the source code to MS-DOS 2.0 available under a truly open license. That code's only interesting as a historical exhibit. If all we can do is look at it and go, "Huh, so that's how that worked", that's fine with me.
Yes, Yes, No.
No redistribution and the license can be revoked.
(also: must be research or education, mustn't be commercial, and you are licensing derivative works to Microsoft somehow)
If you create Derivative Works, you grant to Microsoft a non-exclusive, perpetual, irrevocable, royalty-free, assignable, sublicenseable license to reproduce, distribute, publicly display, modify, use, make, have made, import, and sell such Derivative Works.
EDIT: I can just imagine a future lawsuit:
A: Did you read the MS-DOS source code released by Microsoft on XX? We have logs to show you downloaded it.
B: Yes, but that has nothing to do with this lawsuit!
A: Incorrect. The MS-DOS source code you viewed is under Patent ZZ. We believe you used the IP found in the MS-DOS source code to build your flying car.
Judge: Guilty!
Software patents are bad enough without gratuitous fear-inducing claims added.
There's very little to learn from operating system design point of view in there, and better sources are available under more permissive licenses -- ie open source licenses.
It looks like a PR stunt to me.
I'm a proponent of OSS, and if MS wanted to release this under MIT that'd be great.. But I have a hard time thinking of projects that are stopped by the current license.
My guess is that creating a visualization would be a rather transformative use of the work - Redistributing your resulting visualization would likely be firmly in fair use territory.
Comparing the code for modularity is writing an essay. You don't need a redistribution license for the code to do that.
In any event, I hope they do eventually release using an open license. But as a fan of the history of our industry, I'm glad they released it at all.
You'd have to actually, you know, infringe their copyrights.
It's hard to know if you're one of the many who are confused about copyright, patent, and trademark but just reading the code doesn't put you on the hook for anything.
Sort of like the "rangeCheck" portion of the Google v. Oracle case.
With patents it doesn't matter whether you read their code or not: you're screwed in any case. But with copyright the history of the code matters, so it could matter if you have seen their code before writings yours, I think.
You write a lot of MASM code, such that this is actually a risk for you?
Maybe it's possible? I'm not a lawyer but I think at some point early in the process, in order to move forward, they'd have to convince a judge that they'd suffered damages as a result of your use of a few lines of their ancient MASM code. I assume that's where the whole thing would be met with laughter unless, of course, you've got some truly cunning thing you're going to do with DOS assembly code and make a million.
All that is before anyone needs to even consider whether the code you borrowed is trivial in nature such that it's protectable or not protectable via copyright.
One of the lessons of the Google v. Oracle case: Oracle didn't actually win anything in damages.
> With patents it doesn't matter whether you read their code or not: you're screwed in any case.
Okay, forget the rest and focus on this: you need to familiarize yourself with the concepts of willful infringement and treble damages. Unlike the rest of the stuff we're talking about, it actually matters and is not pure paranoia.
If you violate a patent - and realistically, all of us who write any software are violating someone's patent - you'd better hope you can convince a court that you did not do so knowingly. How do you do this? Make an effort not to read any patents, ever. Plausible deniability.
Whether the code you've read is patented or not is actually trivia. Whether you knew it was covered by a specific patent is important.
In any case, the parent commenters point wasn't the difference in the two research lab's results, but the difference in philosophies between the labs and their respective parent companies.
Do Nobel prizes and Turing awards count as instinct or are they facts?
> Okay, forget the rest and focus on this: you need to familiarize yourself with the concepts of willful infringement and treble damages.
> [...]
> Whether the code you've read is patented or not is actually trivia. Whether you knew it was covered by a specific patent is important.
So we're in agreement then? :) Yes, good point about knowingly infringing a patent, but, as I said (or meant to say), reading or not reading the source code has no effect on the patent situation. (But I'm not a lawyer either, so what do I know.)
Basically, if you touch this with a ten-foot-pole, the pole now belongs to Microsoft, along with your arm and anybody standing too close to you. You also lose the right to use your arm to sell things.
You may use, copy, reproduce, and distribute this Software for any non-commercial purpose
you may create derivative works of such portions of the Software and distribute the modified Software for non-commercial purposes
While the one used here explicitly deny it: You may not distribute or publish the software or Derivative Works.INAL, But if you are contributing to projects on tangential areas you should be OK.
Unless Microsoft licenses it under a license with the most explicit and extensive protections against patent lawsuits.
As a bonus, the availability of this code might make prior art challenges to extant patents much easier.
Yes. Design patents last 14 years. Utility patents last 20 years.
The person you are responding to, like most people, likely uses the words copyright, trademark and patent interchangeably as if they are synonyms.
P.S. Google Patents is useless for answering this question. "Referenced by" is included in the search, so any patent from 1983 that is ever referenced by a Microsoft patent (from any year) shows up in the results.
As for MSFT not having any patents in 1983, this is largely the result of the policy of not patenting "abstract ideas" that was argued in the courts at the time. The United States Court of Customs and Patent Appeals and the PTO were in opposing positions regarding the patentability of inventions that were essentially algorithmic.
The key log that stopped discouraging patent applications for software was Diamond v. Diehr in 1981, which involved applying a mathematical formula to a database of information for operating rubber curing machines under computer control.[1]
The United States Court of Appeals for the Federal Circuit has largely followed this method since this decision. Between the early 70s[2] and Diehr, SCOTUS settled disputes when Customs and Patent Appeals attempted to overrule the PTO and its Board of Patent Appeals and Interferences/Patent Trial and Appeal Board.
[0] I'm lazy, you get wikipedia. [1] http://en.wikipedia.org/wiki/Diamond_v._Diehr [2] Gottschalk v. Benson, 409 U.S. 63 (1972), http://en.wikipedia.org/wiki/Gottschalk_v._Benson
I did an advanced search at USPTO for "AN/microsoft and ISD/19750101->19890101" (patents assigned to Microsoft and issued between 1975 and 1989). All it found were:
4,779,187 - Method and operating system for executing programs in a multi-mode microprocessor (filed April 10, 1985, issued October 18, 1988)
4,588,074 - Holder for storing and supporting articles (filed March 21, 1985, issued May 13, 1986)
Yes, if I understand it correctly, Microsoft's first patent was "relates to article holders, and more particularly to a dual purpose holder for both storing, and supporting in open position, books, magazines, pamphlets, and similar items."
I can't figure out why 5,848,246 (Sun Microsystems, Inc.: Object-oriented system, method and article of manufacture for a client-server session manager in an interprise [sic] computing framework system) references this patent.
As for:
> 4,588,074 - Holder for storing and supporting articles ... Yes, if I understand it correctly, Microsoft's first patent
At one point, Microsoft Press was a big player in the publishing market. For example, Peter Norton's book on the IBM PC was published by Microsoft Press.
I imagine they needed a way to store multi-volume sets together.
I finally found the link to Advanced Search. It's off the Settings menu. I could swear it used to be right there next to the Search button ...
I guess I've just been using memorized operators on Google, and haven't actually looked for the Advanced Search link in quite a while.
It's like what Microsoft does with configuration dialogs. They design a new UI, but it doesn't do 100% of the what old UI did. So they keep the old UI, and shove it one level down. Then in another few years, they'll design yet another new UI, and I'll have to click two levels down ...
I don't think reading some source code will put anyone at risk of frivolous lawsuits (unless they actually do infringe, in which case it would be a grain of supporting evidence).
Another notable one is the original discovery of the cosmic microwave background, the primordial echo of the Big Bang, which is still being investigated today. That was a 1974 Nobel Prize.
A nice list is at: http://en.wikipedia.org/wiki/Bell_Labs#Discoveries_and_devel...
Basically, the GP comment is really quite wrong.
Its not comparing apples to apples but again, if dissing MSR for not being Bell Labs - great then.
Some argue that you can again, but I just don't see how it is possible. See, e.g., http://www.amazon.com/The-Idea-Factory-American-Innovation/d...
If you're in academia and getting a stipend and you look at it as part of your research, Microsoft could argue that that is a commercial gain to you. If FreeDOS has ever been used to make a commercial product (this is very different from the GPL which explicitly delineates derivative works from works produced by the software!), then its developers risk breaking the terms of the license agreement if they taint their thought processes with Microsoft's code. So yes, I'd probably say you're right.
This is a really serious issue, because we can be reasonably certain that Microsoft wants to release a new version of DOS in the reasonably near future and so this is a sinister plot to get a nonexclusive license to FreeDOS so they can charge licensing fees. Quite ingenious.....
[/sarcasm]
Unless your shower is located on a stage and you charge admission for people to listen to you sing in the shower, but I'm pretty sure that's not what you meant.
That's why it's explicitly listed as part of Freedom 1 of the four freedoms of software: https://www.gnu.org/philosophy/free-sw.html
But can you publish a diff, which someone could use to recreate your modified version?
There are SueprMarioBros. edits where they only distribute the patching file and the patcher program... just not the original ROM itself. They leave that for you to find somewhere...
That's not going to be the case here as the code is too old to be patent encumbered.
Things are certainly moving towards there being a wide definition of contributory copyright infringement, eg cases against torrent file sites that don't store copyright works. It would be pretty asinine and regressive to punish someone for publishing instruction on a copyright work could be modified, IMO, but the law isn't known for always making sense.
https://ilt.eff.org/index.php/Copyright:_Infringement_Issues...
In reality, if redistribution of source is forbidden, restricting unreleased modifications of source is hard to enforce.
The bigger concern would be copyright. That might be a fairly plausible argument for why FreeDOS developers shouldn't be reading this source. Though realistically the odds that Microsoft would actually pursue such a case are remote at best.
The chance that you are going to get MSDOS expressive structures in FreeDOS in a way that is even arguably beyond deminimis is nil. You don't usually just move code between implementations easily, and chances are pretty good that the FreeDOS folks use fairly different approaches than the MSDOS folks. The argument is that if you read the code you might be tainted, but I don't see this as a significant argument here for software that's 30 years old.
Yeah, but usually you cannot get extensions THAT easily, and extensions are limited in time. I don't think you can expect extensions to last too long either (at most you can add a couple of years of exclusivity).
Now exFAT is much more recently encumbered.
http://www.nytimes.com/1994/02/24/business/microsoft-loses-c...
> The Patents and Trademark Office, which began issuing software patents only a decade ago, has been accused of having inadequate expertise in software to judge what is truly novel.
Nice to know nothing has changed in a decade.
While thinking about it a little more deeply let's give them the benefit of doubt for five minutes and assume they did hire a bunch of geeks to do this. Is there any possibility the problem simply can't be solved easily? What seems complex and patentable today may in fact seem completely obvious and novel in ten years when it actually shows up in court or even just 5 years from now once it finally gets reviewed and accepted.
In searching for prior art, is it actually possible to go back in time on the wayback machine and check for these types of obvious issues with the claim?
Something to think about anyway. Disclosure: kiwi here. We did some form of reform already, havtn t noticed anything adverse thus far.
Would be interested to hear if anyone has come across problems yet.
It's not a PR stunt, it's a part of computing history (whether you like it or not). I spent a lot of time hacking around the internals of DOS and I think this might be a fascinating read. I remember pouring over Ralf Brown's Interrupt List and stepping through various DOS memory structures trying to create some impossible app. Good times.
In reality, getting the Windows source released so that the Wine team can do this would be much more useful. From what I understand Windows has a lot more undocumented but widely used API's that Wine tries to emulate by trial and error. Instead of having a complete emulation they break it down by which programs it can and cannot run because of these hidden API's.
This is definitely a publicity stunt, no question about it. It still provides some very minimal value and perhaps this is MS dipping their toes into the OSS water when it comes to old commercial products.
MS-DOS has been disassembled and reverse engineered to death by these teams, and there's little if anything at all left to discovered.
What they don't have are the comments.
What you are saying is like saying that putting Ford Model T blueprints to museum is useless because we have far better sources today to study car mechanics from.
There was xenix. As inconceivable as people might find it today, people CHOSE to run simple DOS over Unix on their very resource-constrained hardware.
Minix 1.0 ran on a 8086/8088
I mean, Adobe also released the source code for an old version of Photoshop. So old that it didn't even have layers. It didn't signal anything about the release of source code for say, Flash Player.
And look at which version of Word they released -- 1.1. Not even 2.0, because 2.0 was the version where it became mainstream.
Microsoft has already released a lot of source code that's a lot more useful than DOS and WinWord. For example, the .NET Framework Reference Source.
Actually there is quite a bit already for a single person to digest, if you want to understand the real details of how everything works. I learned about the DOS family by reading this book:
http://www.amazon.com/Dissecting-DOS-Code-Level-Operating-Sy...
UnixV6 and the Lions' book come close, but Unix is still far more complex than DOS because of its multitasking, multiuser heritage. Early Unices may be within the realm of an average student to grasp, but things like the BSD and Linux kernels are orders of magnitude bigger and more complex, which means that it's nearly impossible to get down to the details when studying them and the best thing one can hope for is a high-level overview of the various subsystems and how they interact. DOS is simple enough that a single person can study the whole OS at the level of individual instructions (and write an OS similar to it).
I understand your point, but in one important sense, this release has value. Someday, a scholar is going to write the history of drive letters and their perverse effect on all of computing -- up to the present day, where they're buried under a thin patina of respectability in the newest versions of Windows.
Under Windows, including the most recent versions, you can get repeatable results for procedures that involve peripherals only if you disconnect them all, then reconnect them in the same order each and every time. Why? Drive letters.
This might be excusable on historical grounds, except that, when MS-DOS was first written, there was already an OS without drive letters -- Unix.
So don't use drive letters.
Mount each volume in its own separate NTFS folder. Now you'll get repeatable results no matter what order you plug them in.
Found MS's description [1]. However, that's not useable by most office workers, and the steps are likely beyond the average home user. So it's really just a feature for power users and IT departments.
[1] http://technet.microsoft.com/en-us/library/cc753321.aspx
MS-DOS was a program that wrote stuff to disk for you, read the keyboard for you, listened to interrupts for things and showed useful error messages such as 'Retry, Fail or Abort?'.
There was no networking to speak of, certainly not TCP/IP as we know it, no user permission things, you couldn't run cron jobs and the list goes on. All of this normal stuff that an Operating System does was well established on UNIX boxes, VAXes and, to a certain extent, on the BBC Micro.
Consider that OSs started out as libraries of functions that programs could call into, which then evolved into job managers, that is where MS-DOS fits.
It's single-tasking, single-address-space, but it already has the concept of processes, drivers, files. This is still more than some embedded OSs which are not much more than a threading library.
And if I want to run a TOS (Tape Operating System), how should I call it? The naming is correct and comes from IBM mainframe operating systems from the 60's.
The BBC micro's operating system had no networking to speak of, certainly not TCP/IP as we know it, no user permission things (indeed, no concept of users at all), and no cron jobs (indeed, no OS scheduling of tasks at all). In other words, not one of the things you specifically called out as "normal stuff that an Operating System does".
(There was a networking system, called Econet, but it wasn't part of the base OS; you needed an extra ROM -- physically plugged into the circuit board, those were the days -- that implemented it.)
For the avoidance of doubt: I loved the Acorn MOS and hated MS-DOS. But it simply isn't true that the BBC Micro had those features and MS-DOS didn't. And, for what it's worth, I see nothing wrong with calling either of them an operating system.
I downloaded and dorked around with the code out of respect for what it did to PC’s 30 years ago. It’s interesting, I thought the codebase would be much larger than it is.
Given that it was a disk operating system it's no surprise that the bulk of the services are disk/filesystem-related, but it also has ones for I/O, memory, timing, and processes.
It provided a memory allocator service.