On March 25, 2014, Microsoft made the code to SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11 available to the public under the Microsoft Research License Agreement, which makes the code source-available, but not open source as defined by Open Source Initiative or Free Software Foundation standards.[16][17][18][19] Microsoft would later re-license the code under the MIT License on September 28, 2018, making these versions free software.[2]
ms-dos 6.22 source code
As a response to Digital Research's DR DOS 6.0, which bundled SuperStor disk compression, Microsoft opened negotiations with Stac Electronics, vendor of the most popular DOS disk compression tool, Stacker. In the due diligence process, Stac engineers had shown Microsoft part of the Stacker source code. Stac was unwilling to meet Microsoft's terms for licensing Stacker and withdrew from the negotiations. Microsoft chose to license Vertisoft's DoubleDisk, using it as the core for its DoubleSpace disk compression.[75]
MS-DOS 6.0 and 6.20 were released in 1993, both including the Microsoft DoubleSpace disk compression utility program. Stac successfully sued Microsoft for patent infringement regarding the compression algorithm used in DoubleSpace. This resulted in the 1994 release of MS-DOS 6.21, which had disk compression removed. Shortly afterwards came version 6.22, with a new version of the disk compression system, DriveSpace, which had a different compression algorithm to avoid the infringing code.
MS-DOS 6.22 was the last standalone version produced by Microsoft for Intel 8088, Intel 8086, and Intel 80286 processors, which remain available for download via their MSDN,[84] volume license, and OEM license partner websites, for customers with valid login credentials. MS-DOS is still used in embedded x86 systems due to its simple architecture and minimal memory and processor requirements, though some current products have switched to the still-maintained open-source alternative FreeDOS.
In 2018, Microsoft released the source code for MS-DOS 1.25 and 2.0 on GitHub. The purpose of this, according to Microsoft, is mainly for education and experimentation with historic operating systems and for new programmers to gain an understanding of how low-level software works, both historic and current. According to program manager Rich Turner, the other versions could not be open-sourced due to third-party licensing restrictions.[85]
Due to the historical nature of the software, Microsoft will not accept any pull requests to the code; only pull requests for modified and translated documentation will be accepted. Users, however, are allowed and fully encouraged to fork the repository containing the MS-DOS source code and make their own modifications, and do whatever they like with it.
The enhanced DEBUG package includes DEBUG.COM which is a replacement for the standard DOS DEBUG and DEBUGX.COM which can debug DPMI client programs and has more features but uses more memory. The inclusion of some features are controlled by defines in the source code. DEBUG supports assembly and disassembly of all Intel x86 instructions up to the Pentium Pro (P6). Note EMS support is disabled by default because it is not useful to typical debugging. EMS support may be enabled by defining EMSCMD to 1 and rebuilding. Enabling EMS support will increase memory usage by 1.2KB. Enhanced DEBUG runs on DOS 2.0 and later.
The enhanced DEBUG source code may be built with JWasm, UASM, or MASM. The instruction set table builder program MKTABLES.C may be built with any ANSI C compiler such as the Microsoft C compiler or the Open Watcom C compiler.
Interested in seeing the source code that lets you talk directly to a packet driver? I have taken the lowest layer of the mTCP code and packaged it with a sample application that shows you how to interface a C program with the software interrupt mechanism used by packet drivers. Check it out here: mTCP_tcpacket.html
All of the applications use the mTCP TCP/IP library which is designed for high performance even on small, slower machines. The code is written in a combination of C++ and assembler. The style of coding is more like "C with classes" to improve the structure of the code with assembler being used in limited areas to improve the performance. The source code is fairly well commented. You can look at it as a framework for writing TCP/IP applications for DOS, complete with plenty of examples.
mTCP is developed using Open Watcom, an open source tool chain that supports C, C++, and assembler. Open Watcom is flexible and generates reasonably optimized code. Open Watcom also runs under modern environments such as Windows and Linux so you can develop in the environment of your choice while still generating 16 bit DOS executables. Open Watcom is regularly updated; mTCP is using version 1.9 which was released in June 2010. Porting to other environments such as Borland Turbo C++ for DOS is possible without too much pain. (mTCP originally started with Borland Turbo C++ for DOS.)
So the MS-DOS source code release is interesting, but FreeDOS would not be able to reuse this code for any modern features anyway. FreeDOS has already surpassed these versions of MS-DOS in functionality and features.
Yes, in the past we've had to turn away a few contributors because they had downloaded and studied the MS-DOS source code that was posted on the Computer History Museum website. That's because the Museum license did not allow you to re-use the code in other projects.
My understanding from lawyers who have explained it to me (I am not a lawyer) is that you can be "tainted" by knowledge of proprietary source code, under US law and under similar laws agreed to by partner countries. So anyone who read or studied the source code to MS-DOS as it was previously released via the Computer History Museum license was not allowed to contribute to FreeDOS afterwards. We posted several notices to this effect on the FreeDOS website and elsewhere.
With this source code release from Microsoft, however, that problem goes away. This source code release of MS-DOS 1.25 and 2.0 uses the MIT License, which is not only a recognized open source software license, but compatible with the GNU GPL. This means the "taint" concern is effectively lifted.
One can also experiment with the original MS-DOS code base, released in 2018. The Github repository includes original source code and binaries for MS-DOS versions 1.25 and 2.0. As noted on the repository homepage, Microsoft published the code "to allow exploration and experimentation for those interested in early PC operating systems."
A number of beta versions have surfaced on the Internet, such as 5.0 (a ten-diskette version in the same vein as 4.0), 7.00 beta 1 (based on 6.00), 7.00 beta 2 (based on 6.22). An OEM source package for 6.00, and a late release of 6.2(b) have also been seen. These are not retail versions.
As a response to Digital Research's DR DOS 6.0, which bundled SuperStor disk compression, Microsoft opened negotiations with Stac Electronics, vendor of the most popular DOS disk compression tool, Stacker. In the due diligence process, Stac engineers had shown Microsoft part of the Stacker source code. Stac was unwilling to meet Microsoft's terms for licensing Stacker and withdrew from the negotiations. Microsoft chose to license Vertisoft's DoubleDisk, using it as the core for its DoubleSpace disk compression.
MS-DOS 6.0 and 6.20 were released in 1993, both including the Microsoft DoubleSpace disk compression utility program. Stac successfully sued Microsoft for patent infringement regarding the compression algorithm used in DoubleSpace. This resulted in the 1994 release of MS-DOS 6.21, which had disk-compression removed. Shortly afterwards came version 6.22, with a new version of the disk compression system, DriveSpace, which had a different compression algorithm to avoid the infringing code.
While reading the description of the self-printing program presented earlier, one might wonder if it is a quine. While there is no standardized definition of the term quine, it is generally accepted that a quine is a computer program that takes no input and produces an exact copy of its own source code as its output. Since a quine cannot take any input, tricks involving reading its own source code or evaluating itself are ruled out.
Is our 12-byte x86 program a quine? It turns out that we have a conundrum. There is no notion of source code for our program. There would have been one if we had written out the source code of this program in assembly language. In such a case we would first need to choose an assembler and a proper quine would need to produce an exact copy of the assembly language source code (not the machine code bytes) for the chosen assembler. But we are not doing that here. We want the machine code to produce an exact copy of itself. There is no source code involved. We only have machine code. So we could argue that the whole notion of machine code quine is nonsense. No machine code quine can exist because there is no source code to produce as output.
Every compiler has its specific procedure to compile and build a program from the source C files.Which compiler are you using? MS-DOS 6.22 does not have a built-in C compiler.If you need to compile C code using an old version of the Turbo C compiler, you can download Turbo C 2.01 from
I'll have a quick look in the sources to see if there's anything obvious which makes it hang, but I'm afraid that I can't help you there. I'm not really good with this kind of code, and I don't even have any ability to test LPT1+LPT2 properly.Keep in mind that accessing both of these will most likely use interrupt 5 and 7, which is almost always in use by the sound card. This mode probably works the best on machines with no sound card installed.
I'll have a quick look in the sources to see if there's anything obvious which makes it hang, but I'm afraid that I can't help you there. I'm not really good with this kind of code, and I don't even have any ability to test LPT1+LPT2 properly. 2ff7e9595c
コメント