Slashdot Mirror


Microsoft Posts Source Code For MS-DOS and Word For Windows

An anonymous reader writes "Microsoft, along with the Computer History Museum, has posted the source code for MS-DOS 1.1 and 2.0, and Word for Windows 1.1a. It's been a long time coming — DOS 2.0 was released for IBM PCs in 1983, and Word for Windows 1.1a came out in 1990. The museum, with Microsoft's consent, has made the code available for non-commercial use. They've also explained some of the history of this software's development: '[In August, 1980], IBM had already contracted with Microsoft to provide a BASIC interpreter for the PC, so they asked them to investigate also providing the operating system. Microsoft proposed licensing "86-DOS", which had been written by Tim Paterson at Seattle Computer Products (SCP) for their 8086-based computer kit because the 16-bit version of CP/M was late. When SCP signed the licensing deal [7] with Microsoft, they didn't know for sure who the computer manufacturer was. Paterson said "We all had our suspicions that it was IBM that Microsoft was dealing with, but we didn't know for sure." [1] He left SCP to work for Microsoft in 1981. "The first day on the job I walk through the door and 'Hey! It's IBM.'" Microsoft originally licensed 86-DOS in December 1980 for a flat fee of $25,000. By the next summer they recognized the importance of owning it and being able to license it to other companies making IBM-PC clones, so they purchased all rights for an additional $50,000.'"

4 of 224 comments (clear)

  1. Re:Why are they posting old source code? by counterplex · · Score: 5, Insightful

    I'm not sure that's needed really. Projects like FreeDOS and the like seem to be fine on their own. The DOS 2.0 source code is more of a curiosity, nothing more.

    --
    $x = ($x * 10) % 10 >= 5 ? 1 + int $x : int $x
  2. Re:Why are they posting old source code? by Anonymous Coward · · Score: 5, Insightful

    the Computer History Museum

    Because there is historic value in early versions. There is also value in seeing how the apparent problems changed, but where things began is pretty significant.

    Oh, sorry, mod this down, I accidentally thought you might even take the half-second to read the first sentence of the summary before commenting. I forgot where I was for a moment there.

  3. Re:True to their genesis by Quila · · Score: 5, Insightful

    This short history summary shows that Microsoft's roots are in marketing, not programming

    No, their roots were in programming. This was their foray into marketing. Anybody who used a Radio Shack Model 100 (or its brethren) knows that Microsoft was capable of developing an excellent product at one point.

  4. Re:Why are they posting old source code? by Hal_Porter · · Score: 5, Insightful

    That doesn't mean that Windows 8 is 'based on Dos' anymore than a Linux box with the Dosbox emulator running Dos apps in a windows is.

    Incidentally in 64 bit Windows there is no NTVDM or support for 16 bit Windows - you can have 16 bit apps running on a 32 bit kernel via a thunking layer (Windows On Windows), or 32 bit apps running on a 64 bit kernel via a thunking layer (WOW64) but you can't have 16 bit apps running on two thunking layers on a 64 bit kernel. Since Microsoft won't support memory above 4GB using PAE on 32 bit Windows you pretty much have to use 64 bit Windows on a machine with more than 4GB. In fact even on a 4GB machine you'll have more usable memory with a 64 bit OS than a 32 bit one - there's a hole under 4GB for PCI memory mapped space. The only way to get access to the memory the hole covers up is to see it about 4GB. With current Microsoft OSs that is only supported on 64 bit OSs. So in the long run most machines are going to come with a 64 bit OS and that means no NTVDM.

    Of course part of it is probably that 16 bit Windows and Dos apps have pretty much ceased to be commercially important. And if you want retro games you've been better off with something like Doxbox than NTVDM for some time.

    --
    echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;