
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. 


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
------------------------------------------------------------------------
