7 June 2018
Within most 16-bit New Executables, 32-bit and even 64-bit Portable Executables is a tiny MS-DOS program. Most compilers fill this space with a small stub that prints a message along the lines of "This program cannot be run in DOS mode." What was the point of this, and can it be made to do something useful?
As MS-DOS and Windows programs both use the same extension (.exe), it is not possible to know if a program is for one or the other. Without the stub, it might try to run the Windows program's instructions with unpredictable results.
Another possible use is to load Windows, if you have it installed. It could pass itself as the argument so the program is started immediately (instead of the MS-DOS Executable or Program Manager).
But perhaps the most interesting use is to have a multiplatform program, along the lines of fat binaries on Apple Macintosh platforms. What about an installer (e.g.
I did find one good example of such a program: WinAdv. It is a 16-bit Windows version of the text adventure game Colossal Cave, which also runs within MS-DOS.
Colossal Cave under Windows 3...
...and the same program under MS-DOS.
I think this was a rather neat feature (I don't know if it has an official name), and I wonder why it wasn't used more often. I suppose having them separated meant you could save disk space by only installing the one you needed. It may have been more difficult to debug. There is also no easy way to run just the MS-DOS portion within a command prompt window, as it launches the Windows version instead.
© Andrew Nile 2018-2024. Privacy