It never pays to underestimate the lengths a person will go for a pratical joke, Niteice. Trust me only this fnord.
I wouldn't claim that it was specifically a de-compiled version of freeDOS; there have been any number of MS-DOS workalikes developed over the years, free and proprietary, and the code could come from one or more of those. Nor would it be necessary to change all of the commenst and identifiers, just those which would identify the code as being from something other than MS-DOS. I'll admit that it is possible - likely even - that
some of the code really is from Microsoft, though not necessarily from MS-DOS. I'm simply arguing that at least part of it isn't what it is claimed to be.
I'll admit that I may be wrong in this, but I don't think so. Perhaps it's just my suspicious nature, but I'd definitely say that the anomalies in the code and documentation give me reason to question the authenticity. For example, this C file,
clone.c. This isn't MS-DOS code; as far as I can determine, MS-DOS was written entirely in assembly throughout it's lifespan, which I said before. In fact, it probably isn't Microsoft C code at all - the
<conio.h> library is a Borland extension library for accessing the DOS console, and while MS later added a version of it to Visual C++ (one which was incompatible with the Borland version), it is rather unlikely that MS ever used it internally. The various calling-convention warts (e.g., 'far pascal', 'cdecl') are specific to Windows, and while it does refer to the DOS console as well, it is clear that the DOS code is for connecting to a different system remotely. '
FastLynx' is the name of a file transfer program similar to LapLink; while it is possible that Microsoft had an internal program of the same name, the rest of the code does indeed seem to be related to file transfer. Thus, it is safe to say that at least
some of the code isn't part of any version of MS-DOS.
[
EDIT: Apparently, there
was an earlier file transfer program by the same name, from a Rupp Technology, which
MS licensed for MS-DOS 5 and later. Thus, I will partly retract this section, as there is indeed a connection between MS-DOS and at least one product called FastLynx.]
Or take the following
header file. There are a number of entries which make no sense in the context of DOS, but which, by remarkable coincidence, match the library header files from later versions of OS/2, from after the period when MS was involved with the project; compare them to
this header used in
osFree, an open-source Warp workalike. While it is possible that it was copied from 0S/2, it almost certainly was
not copied from MS-DOS, as it refers to features not supported by DOS. For example, the defines for drive joining (something MS-DOS does not support):
Code: Select all
#define MSG_JOIN_ON_DRIV_IS_TAR 133 /* directory on drive is target of a jo */
#define MSG_JOIN_DRIVE_IS 134 /* drive is joined */
#define MSG_SUB_DRIVE_IS 135 /* drive is substed */
#define MSG_DRIVE_IS_NOT_JOINED 136 /* drive is not joined */
#define MSG_DRIVE_NOT_SUBSTED 137 /* drive is not substituted - subst */
#define MSG_JOIN_CANNOT_JOIN_DRIVE 138 /* cannot join to a joined drive */
#define MSG_SUB_CANNOT_SUBST_DRIVE 139 /* cannot sub to sub drive */
Here we have defines for a DOS mode - support for
emulating DOS, which obviously DOS itself would not need to do. I suppose that it could be for Windows, but it is surely out of place in code that is supposed to be for MS-DOS:
Code: Select all
#define MSG_SYSINIT_DOS_FAIL 1200 /* Cannot create DOS mode */
/* 1201 - 1204 not used */
#define MSG_SYSINIT_DOS_MODIFIED 1205 /* DOS mode memory modified by DD */
Swap file defines:
Code: Select all
#define MSG_SWAP_INVALID_DRIVE 1470 /* Invalid drive %1 specified SWAPPATH */
#define MSG_SWAP_INVALID_PATH 1471 /* Invalid path %1 specified in SWAPPATH */
#define MSG_SWAP_CANNOT_CREATE 1472 /* Cannot create swap file %1 */
#define MSG_SWAP_DISABLED 1473 /* Segment swapping is disabled */
#define MSG_SWAP_CANT_INIT 1474 /* Cannot initialize swapper */
These are significant because at the time of the MS-IBM split, OS/2 was targetting 80286 protected mode, and 286 p-mode does not have any significant support for virtual memory. While it is possible to use swap without virtual memory management, it is both slower and less stable, and to the best of my knowledge OS/2 didn't use swapping until Warp, which was released after Windows 95. Thus, not only can't it be a DOS header - DOS never has any form of swapping or VM, of course - but also cannot be Windows headers from that period, either.
While this is hardly concrete evidence, I'd say that it is enough to raise a reasonable doubt as to the origin of at least part of the code.
I will add that I'm fairly certain that at least some of the code comes from an OS dev project that I recall studying the source from when it was linked to on alt.os.development years ago; however, it is possible that I'm mistaken in this, and I won't be certain until I can go through my old OS code examples to try and find it. On second thought, I won't bother; I've wasted enough time on this as it is.