What was the role of MS-DOS in Windows 95? (2007)(blogs.msdn.microsoft.com)
blogs.msdn.microsoft.com
What was the role of MS-DOS in Windows 95? (2007)
https://blogs.msdn.microsoft.com/oldnewthing/20071224-00/?p=24063
44 comments
It was a bit of a technical achievement that Windows 95 managed to continue working at all when people buggered it up with 16-bit Windows drivers, DOS drivers, and old DOS programs like SMARTDRV
You had the DPMI spec, DOS protected mode interface, to manage the potential mess. It was strange that you could install Borland DPMI host (as a TSR) instead of firing win.com and then launch krnl386.exe and it booted (!).
I was able to run Windows 95 on my 486dx/2-66Mhz Dos Compatibiliy Card installed on my Power Mac 6100/60 thanks to Windows support of 16 bit drivers.
It often wouldn't keep working. Win95/98/Me installs would regularly start throwing BSOD or just performing terribly and have to be reinstalled from scratch.
One had to reinstall Win95/98 every year or two. It got really slow, the Windows registry implementation was really sub par and caused a major slow down. (if you installed new programs, something that was a major problem up to WinXP)
I kept Win95 with Plus and IE4 with Windows Shell update. Then Win95 looked like Win98 anyway and (from my experience) more stable and faster. Win98SE was good though. WinME on the other side was pretty unstable, and got a bad reputation similar to Vista, 8 and 10.
I kept Win95 with Plus and IE4 with Windows Shell update. Then Win95 looked like Win98 anyway and (from my experience) more stable and faster. Win98SE was good though. WinME on the other side was pretty unstable, and got a bad reputation similar to Vista, 8 and 10.
> One had to reinstall Win95/98 every year or two.
Depends on how many applications one installed and uninstalled - I used to reinstall Windows at least twice a year. I still faintly remember the joy I felt when the newly installed Windows was so snappy. :-)
By the time ME was released, I had started to explore this other system called Linux, and I was hooked rather quickly. I did keep ME installed for watching DVDs, though, because back then my computer was too slow to decode DVDs in software, and the accelerator card only worked on Windows. So I can testify, if all you do to ME is install PowerDVD and the driver for that decoder card, and then watch DVDs with it, it is both stable and performant. I was always slightly baffled when others bashed ME. Was it really that bad? I wouldn't know, all I can say is it worked alright for DVD playback. ;-)
Depends on how many applications one installed and uninstalled - I used to reinstall Windows at least twice a year. I still faintly remember the joy I felt when the newly installed Windows was so snappy. :-)
By the time ME was released, I had started to explore this other system called Linux, and I was hooked rather quickly. I did keep ME installed for watching DVDs, though, because back then my computer was too slow to decode DVDs in software, and the accelerator card only worked on Windows. So I can testify, if all you do to ME is install PowerDVD and the driver for that decoder card, and then watch DVDs with it, it is both stable and performant. I was always slightly baffled when others bashed ME. Was it really that bad? I wouldn't know, all I can say is it worked alright for DVD playback. ;-)
I actually ran a dualboot of 98SE/XP up until around 2004 or so when I gradually transitioned to XP completely, and 98SE was pretty stable --- as others have mentioned, it lacks full memory protection so it really depends on what applications you use; I was never one to install/uninstall lots of apps "just to try them out", and stuck with old/stable versions of what I needed to use, so perhaps that has much to do with it.
I have a mid-90s ThinkPad with Windows 95 and Office 95 sitting on my shelf. I cannot do anything with it, because the battery is long gone, it has no floppy, no CD-ROM, no network. But every once in a while I turn that thing on. Still runs like a charm, and the performance is good, too, for its age. (It better be - it's one of those butterfly notebooks, those must have been pretty expensive way back when...)
When I started University in 2000, I quad booted Windows ME, Windows 2000, Slackware Linux and BeOS (all using the BeOS boot manager, because it was the most colourful at the time).
If you were able to be rid of FAT32, 98SE was just fine.
Could it be that the cause for the problems was in 3rd party applications/drivers that were messing with the system in ways unexpected by Microsoft developers?
My feeling (not backed by any evidence) is that most of the BSOD bugs are actually related to faulty hardware or bad code from somebody else than Microsoft.
My feeling (not backed by any evidence) is that most of the BSOD bugs are actually related to faulty hardware or bad code from somebody else than Microsoft.
Quite a bit of "BSOD" was the kernel going "Sorry, but all our lines as busy. Please hold". But MS decided to use the same basic framework as a honest to deity BSOD. Thus people were lead to believe the OS had gone belly up when it was actually trashing the HDD thanks to low memory, program trying to load files, and the swap file.
Very close to 100% of the BSODs I've had since I began building my PCs in the early nineties were because of a substandard driver or piece of hardware. In the past twenty years, it's almost always been because of graphics hardware.
I guess I'm in the 1% again. 95 was horrible, but ME or 2k never failed to install for me and even handled then-legacy drivers w/o any issues. Was there the occasional BSOD? Sure, but I experienced much more on my Windows 10 machines over the last few months.
Win2k was a very different beast from 95/98/Me. I guess it depends how long you used Me for but my 95/98/Me machines regularly had to be reinstalled from scratch, usually about once every year or so. Whether my gaming machines or work machines.
>> Win2k was a very different beast from 95/98/Me.
Agreed. Memory protection and pre-emptive multitasking was such a huge improvement back then.
Windows 2000 came out right around when I started working at a consultant/MSP, and all the power users that were using Adobe/Macromedia products were restarting their Windows 98 PC's multiple times per day. After installing Windows 2000 (and possibly adding another 32 or 64MB of RAM) they were running twice as fast and could go without a crash for a week. Mostly due to scanner driver hang-ups or losing communication with parallel Zip drives and things like that.
Agreed. Memory protection and pre-emptive multitasking was such a huge improvement back then.
Windows 2000 came out right around when I started working at a consultant/MSP, and all the power users that were using Adobe/Macromedia products were restarting their Windows 98 PC's multiple times per day. After installing Windows 2000 (and possibly adding another 32 or 64MB of RAM) they were running twice as fast and could go without a crash for a week. Mostly due to scanner driver hang-ups or losing communication with parallel Zip drives and things like that.
Windows 2000 was dog slow even with 128MB memory. Similar like WinNT 4 under 64MB run like a pig. Or WinXP under 256MB.
Of course WinNT OS series is rock solid and cannot be compared to Win9x in that way.
Of course WinNT OS series is rock solid and cannot be compared to Win9x in that way.
> Windows 2000 was dog slow even with 128MB memory.
I never found it so. That's pretty much the spec of my first Quake gaming rig. Of course, you omitted the CPU, which is a nontrivial detail. I remember the jump from Pentium II to a 800 MHz p3 being a big, big deal.
I never found it so. That's pretty much the spec of my first Quake gaming rig. Of course, you omitted the CPU, which is a nontrivial detail. I remember the jump from Pentium II to a 800 MHz p3 being a big, big deal.
> Windows 2000 was dog slow even with 128MB memory.
Indeed. A couple of years back, at a former employer, I was given a certain task that required me to set up an "office" in our assembly hall, so the only PC I was allowed to use was one that was practically part of the garbage pile anyway, which turned out to be a Pentium III 450 with 128 MHz of RAM. One of my coworkers gave the heartfelt advice to use Windows 98, but I was young and stubborn. Soon, I was young and impatient. ;-) It was fun, though, the PC had no case, it was just a PSU and a motherboard sitting on a very dusty table, which felt very macho. Fun times.
Indeed. A couple of years back, at a former employer, I was given a certain task that required me to set up an "office" in our assembly hall, so the only PC I was allowed to use was one that was practically part of the garbage pile anyway, which turned out to be a Pentium III 450 with 128 MHz of RAM. One of my coworkers gave the heartfelt advice to use Windows 98, but I was young and stubborn. Soon, I was young and impatient. ;-) It was fun, though, the PC had no case, it was just a PSU and a motherboard sitting on a very dusty table, which felt very macho. Fun times.
Wait, there was no memory protection in Windows 98?
Did it implement virtual memory for processes? If so, it seems like memory protection would be a freebie at that point?
I was also unaware that it was not a pre-emptive multitasking system.
Did it implement virtual memory for processes? If so, it seems like memory protection would be a freebie at that point?
I was also unaware that it was not a pre-emptive multitasking system.
So much misinformation -- Yes Windows 95 had memory protection and it had pre-emptive multitasking. The real cause of most BSOD was really hardware and drivers -- and as this article points out, the driver situation in those days was far from straight forward.
There was memory protection (paging, separate address spaces etc), but it was possible to enter kernel mode code (CPL=0) from user space code (CPL=3) simply by modifying CR0 register. Instead of raising General Protection Fault, Windows silently allowed it. Also direct I/O was allowed (IN and OUT instructions), as well as CLI and STI instructions (disable/enable interrupts). You could bend system however you like straight from userspace code. If you got interested, look at the source code for Virus.Win9x.CIH for more details and examples.
The new 32-bit stuff was. The problem was all the 16-bit programs and driving weren't, and large parts of Windows itself were still 16-bit.
The first 1MB ("realmode area") has no protection and is essentially shared, for compatibility with DOS and 16-bit Windows.
Win9x is preemptively multitasked, at least for actual Win32 processes, however I would not be surprised if some parts of it weren't.
Win9x is preemptively multitasked, at least for actual Win32 processes, however I would not be surprised if some parts of it weren't.
And MS put in various exceptions to make sure programs and games kept working. IIRC, sim city had one such because it had a "use after free" bug. Something that was a nono even in DOS, but not properly enforced by the OS until 9x.
There was, technically, but it was quite sketchy. For example, in Windows 95 the zero page was mapped to physical memory in order to workaround an ancient CPU bug... for which CPU support was later dropped anyway[0][1]; as far as I know, Windows 98 keeps doing this.
Try it yourself: run debug.com and type
[0] https://blogs.msdn.microsoft.com/oldnewthing/20110112-00/?p=...
[1] https://blogs.msdn.microsoft.com/oldnewthing/20141003-00/?p=...
Try it yourself: run debug.com and type
f 0:0 1000 0
It hangs the system even in Windows Me.[0] https://blogs.msdn.microsoft.com/oldnewthing/20110112-00/?p=...
[1] https://blogs.msdn.microsoft.com/oldnewthing/20141003-00/?p=...
When writing 32-bit Windows programs, I'm pretty sure it was basically the same as working on Windows 2000: separate address spaces per process, virtualized address space, swap file. In terms of ReadProcessMemory and the like (or whatever the equivalent was back then... I only did Win32/DirectX/OpenGL stuff at the time) it was probably a free-for-all (no users, no security...) but if you were just writing ordinary code then the basic operating model was a bit like the usual NT one.
The preemptive multitasking did work, but I remember it being quite lame, and if your program didn't use GetMessage/WaitForSingleObject/etc. often enough then it could have a deleritous effect on the rest of the system. But you could still see this sort of behaviour in XP at times, and it only really seemed to resolve itself properly when 2+-core CPUs became common... so I don't know how much Windows 9x's 16-bit heritage can be blamed.
This was all quite a long time ago, though, thankfully, so maybe I've forgotten something.
The preemptive multitasking did work, but I remember it being quite lame, and if your program didn't use GetMessage/WaitForSingleObject/etc. often enough then it could have a deleritous effect on the rest of the system. But you could still see this sort of behaviour in XP at times, and it only really seemed to resolve itself properly when 2+-core CPUs became common... so I don't know how much Windows 9x's 16-bit heritage can be blamed.
This was all quite a long time ago, though, thankfully, so maybe I've forgotten something.
I participated in the Windows 2000 beta programme back in '99. I remember being amazed by how stable it was and what an enormous step forward it was compared to both 95/98/98SE/Me and NT 4.0. In many ways it felt like some kind of crowning achievement.
Yeah, Win2k was NT based and thus much more stable than Me.
I used my ME machine for office, some gaming (with some external peripherals) and some Q(uick)BASIC programming. I never had to reinstall it, having used it for at least 3 years basically every day.
The 98 PCs were used in an SMB with older printers and cash registers. They worked great. 95 never managed to run for more than a month without some catastrophe.
The 98 PCs were used in an SMB with older printers and cash registers. They worked great. 95 never managed to run for more than a month without some catastrophe.
Windows 95 and 98 actually contain a bug that limits the uptime to about 50 days because the uptime is kept in milliseconds and after that time the counter overflows and the system crashes.
https://sites.google.com/site/edmarkovich2/whywindows95andwi...
https://sites.google.com/site/edmarkovich2/whywindows95andwi...
98SE was much more stable than Me or 95 though
>> 95 was horrible
The main problem with 95 was people trying to run it with Windows 3.11 era hardware. 386's, 486's, 8MB or less memory. Windows 95 wasn't robust but it would get the job done if you gave it some hardware to play with (Pentium, 16MB...)
Formatting my computer and reinstalling Windows was a point of pride for me. I'd laugh about it with my friends. I have no idea why in retrospect. Just one of those things. I guess I grew up after XP was so stable.
FWIW, I work in a machine shop with many CNC machine HMIs running on Windows 95, 98, NT, and 2000. Somehow, beyond all expectations, they just keep on working.
If you want a full answer, check out Schulman's Unauthorized Windows 95 and its sorta-sequel, Pietrek's Windows 95 System Programming Secrets.
It's a sprawling exploration of the insides of this OS with the goal of answering precisely this question.
It's a sprawling exploration of the insides of this OS with the goal of answering precisely this question.
Reinstalling Windows: https://www.youtube.com/watch?v=dQuDk3z25Ko
Sung to the tune of When I'm Cleaning Windows: https://www.youtube.com/watch?v=sfmAeijj5cM
Sung to the tune of When I'm Cleaning Windows: https://www.youtube.com/watch?v=sfmAeijj5cM
Did you know you can BSOD Win10 as a host os running VirtualBox when you're installing Win98se as a guest-os.
During the install(from an iso) it manages to bsod(kernel panic) the host OS itself.
A workaround for me was copying the files from the iso to a vhd and runing the setup from a "harddrive" inside the vm instead of emulated cdrom.
During the install(from an iso) it manages to bsod(kernel panic) the host OS itself.
A workaround for me was copying the files from the iso to a vhd and runing the setup from a "harddrive" inside the vm instead of emulated cdrom.
I kind of dislike the attitude Raymond is showing here, to be honest.
Microsoft did a very poor job of disclosing these very relevant (at the time) facts to programmers back then. I guess they still hadn't really understood the power of having a well-documented/readily available platform.
I know that I was hunting for information on this particular topic - just having gotten dial-up Internet access for the first time in the spring of 1995.
(But hey, there were still a shining light compared to Creative Labs :) )
Microsoft did a very poor job of disclosing these very relevant (at the time) facts to programmers back then. I guess they still hadn't really understood the power of having a well-documented/readily available platform.
I know that I was hunting for information on this particular topic - just having gotten dial-up Internet access for the first time in the spring of 1995.
(But hey, there were still a shining light compared to Creative Labs :) )
It had to have been purely defensive to avoid people building even more assumptions on top of what was already a convoluted mess.
Yeah, it's quite easy to imagine that their marketing and PR teams overrode the technical documentation team on this matter.
When I was discussing the OS/2 2.0 fiasco, I liked to mention how Win9x's dependence on DOS allowed Caldera to continue to sue MS.
BFFC9734 seems to be the "magic address" for this.(Googling "BFFC9734" yields results, but surprisingly, not "BFFC9734h", "0BFFC9734h", or "0xBFFC9734".)
Here are some more references to that I found, if you're curious:
http://xaknotdie.org/TopDevice/5/articles/z0mb009.htm (Russian)
http://andrewl.dreamhosters.com/site_z0mbie/ntoskrnl.txt (English version of above)