[Windows 95: What It's Not]

By Andrew Schulman


According to Microsoft, "Windows 95 isn't a layer on top of MS-DOS. It is a complete operating system with 32-bit, protected-mode subsystems to keep your PCs running. If an errant application or component goes down everything continues to run." (" Windows 95 Fact Sheet for Information System Professionals.")

Is it true that Windows 95 (Win95), unlike Windows 3.x, isn't a layer on top of DOS? Is it true that it's robust enough to keep going in the face of buggy programs?

Certainly, these claims aren't merely advertising hype from Microsoft, because much of the PC industry -- power users, developers, IS professionals, and computer journalists -- backs up Microsoft's claims. That so much of the industry is heavily invested in these claims makes them worth examining.

DOS is dead; Long live DOS

As one example, Windows Magazine (December 1994) enthuses that "Windows no longer has to hand off to DOS or bypass DOS or work with DOS or do anything with DOS -- because there is no DOS," and a letter in the same issue gushes, "DOS is dead-- hurray for WINDOWS Magazine! ... I recently tried a sample copy of another Windows publication and their article on Windows 95 was filled with incorrect information, including the misconception that in Windows 95, DOS boots up first and then calls Windows. Needless to say, I will never read that magazine again." And while Microsoft itself is careful never to claim that Win95 is some sort of "NT Lite," the company has definitely given developers and computer journalists the impression that Win95 is architecturally closer to NT than to the old Windows/DOS combination. Even Charles Petzold, probably the world's leading authority on Windows programming, has written that "While Windows 95 was originally going to run on top of DOS 7.0, the architecture was revised to replace DOS entirely. Thus, Windows 95 is closer to Windows NT than any previous version of Windows" (PC Magazine, January 24, 1995).

Another good example, perhaps, is O'Reilly's own book, Networking Personal Computers with TCP/IP. The chapter on Win95 TCP/IP opens with: "The newest generation of Windows is not dependent on DOS.... Windows 95 is not simply a new version of Windows; it is an entirely new operating system." The book goes on to say that Win95 is a "fully integrated operating system. Windows 95 does not depend on DOS; it replaces it. The PC boots directly into Windows 95.... The kernel is 32-bit protected mode code, which should greatly enhance reliability.... Only modules that require backward compatibility with Windows 3.1 use 16-bit code."

The PC industry -- even a company such as O'Reilly with every reason to be skeptical of Microsoft's claims -- seems almost desperate to believe that DOS is dead, and that Win95 isn't merely a very compelling upgrade -- Windows 4.0, combined with MS-DOS 7.0 -- but a brand new operating system, similar in design to NT, redesigned from the ground up, which ushers in a new era in personal computing. Major purchasing/development/deployment decisions are being made based on these beliefs.

Yet, its difficult to know what's really being claimed for Win95. While on the one hand Microsofts Win95 "World Tour" displayed the slogan "NO MS-DOS!" (see Computer Reseller News, June 5, 1995), at the same time the Microsoft Windows 95 Resource Kit contains a short section, "Technical Notes on MS-DOS Components in Windows 95" (pp. 560-561), which directly contradicts this assertion. The section starts off by acknowledging that "Many users have wondered whether Windows 95 contains MS-DOS code, and if so, whether that means that Windows 95 is somehow built on top of MS-DOS." The section goes on to list over a dozen functions which Windows 95 handles by calling MS-DOS. No MS-DOS?

Microsoft merely states that "Functions implemented in this manner ensure backwards compatibility with existing real-mode software, such as the Novell NetWare client." This is very odd. Microsoft's attitude in its resource kit -- "gee, we could really get rid of DOS if it weren't for this wooden leg called NetWare" -- hardly matches the claims in its advertising that DOS is already gone. What does it mean to explain why DOS is present (even if the explanation given isn't a very convincing one -- for one thing, software such as NetWare isn't interested in some of the calls such as Get Date and Get Time that Win95 passes down to DOS), when the company widely broadcasts claims that DOS is already gone?

This is typical of the sloppy thinking around this issue. The more you look at them, what at first appear to be statements on Win95's architecture turn out to be a feel-good exercises. Back in February 1994, the Microsoft Systems Journal claimed that Windows no longer can be likened to a fancy paint job on an old MS-DOS Yugo. "Because the entire operating system is freshly designed from the ground up, you now have killer features such as threads, memory-mapped files, and asynch I/O." Move ahead to October 1994, and this same statement appears in Dave Edson's oddly titled book, Dave's Book of Top Ten Lists for Great Windows Programming, except now the entire operating system is merely most of the operating system (p. 251). Aside from the amusing sight of Microsoft employees describing MS-DOS -- the most successful software product ever, and the foundation for Microsoft's fortunes and success -- as a Yugo, you have to wonder about the apparent ease with which these phrases such as "freshly designed from the ground up" are thrown around.

So whats the truth here?

My Unauthorized Windows 95 (IDG Books, 1994) showed in detail -- perhaps an absurd amount of detail -- that Win95 still relies on DOS. DOS is part of Win95, not simply a convenient place from which to boot, nor simply for "compatibility." The system still has MS-DOS at its core.

As one example, every Windows program, even the newest Win32 program, requires a DOS data structure, called the Program Segment Prefix (PSP), which the system allocates in conventional memory, and initializes with a DOS call (INT 21h function 55h). And every program that exits, whether DOS, Win16, or Win32, calls the DOS Terminate Process function (INT 21h function 4Ch). Win95 most certainly does sit on top of DOS, albeit a copy of DOS that comes in the same package.

Now, it is true that Win95 runs DOS in Virtual-8086 mode. This means that Win95 runs DOS, rather than the other way around. But exactly the same could be said of Windows 3.x 386 Enhanced mode. And its true that Win95 provides 32-bit file access that bypasses the file I/O code in DOS. But the same could be said of Windows for Workgroups 3.11. Win95 relates to DOS in the same way that Windows 3.x Enhanced mode has always related to DOS. Win95 continues to use DOS for many non-file operations, including getting the current date and time, getting and setting the current drive, managing PSPs, and so on. (One important difference, however, is that Win95 provides memory-mapped file I/O: this new feature is a good example of what bypassing DOS really looks like.)

So, to whatever extent you can say that Win95 is not a layer on DOS, you could say the exact same of Workgroups 3.11. Yet, Microsoft spokesmen today trash that product as hopelessly lame. Check out the interview with Microsoft VP Brad Silverberg in Adrian King's Inside Windows 95: "When I have to go back to the Windows for Workgroups machine, its like, 'This is the old stuff. How did I ever use this? How did I ever like it?'" (p. 415). Will we one day be hearing of how Win95 is a joke? Remember, it wasn't so long ago that Microsoft claimed that Windows 3.x was not a mere "operating environment" layer on DOS, but a full-blown operating system, part of an "integrated whole" with DOS. Now it turns out according to Microsoft to have been a mere layer, after all.

Perhaps its worth spending some time up front anticipating how Microsoft, in its next fit of "creative destruction," will describe Win95 a few years from now. A Microsoft spokesperson seeking to encourage you to jump on the Windows 97 bandwagon might, for example, note that Win95 obviously rests on top of DOS, and if you doubted it, might point out a ridiculously easy way to see that this is so: If Win95 isn't a layer on top of DOS, then obviously overwriting DOS in memory should have no effect on the running of Windows itself. Oh, it might make it impossible to run DOS programs, but clearly a DOS-free Windows would be able to run Windows programs even in the case of a corrupted in-memory DOS.

Well, it turns out that overwriting DOS in memory kills off all of Win95 -- not just the DOS box. For example, the following C code brands the first two bytes of the DOS INT 21h handler with the number of the Beast thereby crashing the system on the next DOS call.

View C code example

This next DOS call may come from a Win16 or even from a Win32 program.

That trashing DOS trashes all of Win95 shows how ludicrous is the idea that DOS is gone from Win95. So where does this idea come from? Is it just wishful thinking? Certainly it's not based on even a cursory examination of the product. That overwriting MS-DOS from a DOS program brings down the entire system means that Win95 can't survive without working DOS code underneath it -- even if you never run a single DOS program. DOS is gone from Win95 in only the most superficial and meaningless sense that it's also gone from Windows 3.x Enhanced mode.

Win95 is an excellent product, but it's crucial that the industry get its expectations in line with the realities of the product. Otherwise, Microsoft and those who repeat its slogans could face a nasty backlash from those who believed they were getting NT Lite, only to find they have nothing more -- though also nothing less -- than Windows 4.0 lashed together with MS-DOS 7.0.


Return to Windows 95
[O'Reilly Home]