Windows 95 had a secret restart trick most people never knew

Alfonso Maruccia

Posts: 2,602   +978
Staff
Retro Computing: Windows 95 faced the challenging task of maintaining compatibility with 16-bit DOS software, 16-bit Windows 3.x programs, and newer 32-bit Win32 applications. Microsoft developers leveraged this complex architecture to include hidden optimizations that could make the OS restart faster, although the system would occasionally crash as a result.

Raymond Chen recently shared another interesting tidbit about the inner workings of Windows 95. The original 32-bit consumer operating system had a "secret" fast-restart feature, which users could activate by holding the Shift key while restarting through the OS GUI. If everything worked as intended, the system would restore a working desktop slightly faster than usual.

According to the Microsoft veteran, the fast-restart process relied on the EW_RESTARTWINDOWS flag passed to the 16-bit ExitWindows function. Windows 95 inherited this function from Windows 3.1, as documented in Microsoft's official resources. Chen explained that the function triggered a chain of events: it shut down the 16-bit Windows kernel, then the 32-bit virtual memory manager, and finally returned the CPU to real mode.

Real mode is the basic operating mode of all x86-compatible CPUs, including modern multi-core Intel and AMD processors. Windows 95 and other 32-bit operating systems switch 32-bit-compatible CPUs from real mode to protected mode, which adds memory management and security features. Modern 64-bit operating systems operate in long mode, enabling access to 64-bit CPU instructions and registers.

Intel once tried – and ultimately failed – to eliminate 16-bit real mode and other backward-compatibility features with the now-defunct x86S ISA. According to Chen, once the ExitWindows function puts the CPU in real mode, control returns to the win.com executable. This will then attempt to restart Windows 95 without going through the complex hardware checks required during a cold boot.

The fast-restart feature was likely useful in many scenarios, especially during an era when computers needed several minutes to start up complex, GUI-based operating systems. I had completely forgotten about this functionality, having jumped from MS-DOS straight to Windows ME and XP on a "powerful" Pentium 4 system.

I tried to replicate the fast-reboot process on my PCem virtual machines, with mixed results. The feature didn't work at all on Windows 95 OSR 2.5, but it worked as expected on Windows 98 SE.

Chen explained that the win.com program was written in Assembly and designed to perform additional memory management tasks. Specifically, it attempted to release all available conventional memory so that a single, large contiguous block could be reserved for loading Windows 95 in protected mode. If this procedure failed for any reason, conventional memory would remain fragmented, and win.com would have to fall back to a full reboot. Such was the messy and fascinating nature of the Win9x beast.

Permalink to story:

 
I know that holding Shift during the OS load will skip some drivers (vga, and the other stuff loaded on startup), so, I know that
its look like Safe mode :)
 
What's fascinating, too, is the skill that era of Microsoft's programmers had, able to orchestrate the 9x mess with brilliant effectiveness. It contrasts strikingly with the Microsoft of today.

LOL the truth is quite the opposite. Win9x was a horrible mess. There was no aspect of it that was half decent. And that's no exaggeration. Layers and layers of CPU modes thrown on top of each other, single user, pretty much single task as well (the screen saver starting up could crash your CD burning, trashing your CD-R), programs ran or broke depending on CPU clock (they had those "Turbo" buttons on PC cases to alleviate this, with variable success), no CPU scaling or power management whatsoever, everything ran at full clock all the time, driver changes almost always guaranteed a reinstall, had absolutely no rights management at all, FAT16/32 was a barebones fragile broken mess, etc.

It was so horrible that they took the OS/2 leftovers and some genius folks from DEC to make Windows NT separately, because it was literally easier to redo the whole thing from scratch than fixing Windows 9x.

Windows 2000 was rock solid, but business-oriented. Windows XP was decent, but still had some issues and gimmicks. For instance, you needed admin rights just to plug in a USB drive, and the UI was still part of the kernel so a GPU glitch always crashed the whole computer. Vista had too many (otherwise important and needed) changes to fix the shortcomings of XP, and so it failed again. By the time Windows 7 came out, both MS and HW vendors had the time to resolve their issues, so Windows 7 ended up being great.

Then we had the same cycle with 8 and 10.

Unfortunately I'm not sure we will have a Windows 12 that actually fixes anything. The problem with Windows 11 isn't the same. They're not pushing changes to improve Windows. This isn't about developing an OS anymore. This is about selling you more and more Microsoft services. Not to mention the "vibe coders" that really don't even seem to know what they're even doing anymore.

What a sad ending to a formerly great product.
 
Ahhh...the days of Windows 3, 3.1 and on up.
I use to be able to write my own config.sys and autoexec.bat files by memory because I had several games that required over 604k of ram and wouldn't run on the normal boot to run windows.
Today, I couldn't write one without looking one up LOL
 
As a teenager I figured there was a problem with disk space. So I jumped into the windows folder and hit del *.dll attempting to clean up some free space. Little I knew after I reboot I completely borked windows 3.1 lmfao.
 
LOL the truth is quite the opposite. Win9x was a horrible mess. There was no aspect of it that was half decent. And that's no exaggeration. Layers and layers of CPU modes thrown on top of each other, single user, pretty much single task as well (the screen saver starting up could crash your CD burning, trashing your CD-R), programs ran or broke depending on CPU clock (they had those "Turbo" buttons on PC cases to alleviate this, with variable success), no CPU scaling or power management whatsoever, everything ran at full clock all the time, driver changes almost always guaranteed a reinstall, had absolutely no rights management at all, FAT16/32 was a barebones fragile broken mess, etc.

It was so horrible that they took the OS/2 leftovers and some genius folks from DEC to make Windows NT separately, because it was literally easier to redo the whole thing from scratch than fixing Windows 9x.

Windows 2000 was rock solid, but business-oriented. Windows XP was decent, but still had some issues and gimmicks. For instance, you needed admin rights just to plug in a USB drive, and the UI was still part of the kernel so a GPU glitch always crashed the whole computer. Vista had too many (otherwise important and needed) changes to fix the shortcomings of XP, and so it failed again. By the time Windows 7 came out, both MS and HW vendors had the time to resolve their issues, so Windows 7 ended up being great.

Then we had the same cycle with 8 and 10.

Unfortunately I'm not sure we will have a Windows 12 that actually fixes anything. The problem with Windows 11 isn't the same. They're not pushing changes to improve Windows. This isn't about developing an OS anymore. This is about selling you more and more Microsoft services. Not to mention the "vibe coders" that really don't even seem to know what they're even doing anymore.

What a sad ending to a formerly great product.

I'm aware of all that. Note that with NT, the UI/GDI was first in user mode; NT 4 shifted it into kernel mode for performance, a change Dave Cutler was never happy with. Strictly speaking, if one classifies the executive as being above the kernel, GDI is not part of the latter.

My argument is that it took a lot of brains to get the 9x mess to work, and it did work, roughly speaking. (NT 4 even ported much of 95's UI code.) Today, MS struggles to code a GUI element properly, and are likely damaging the NT codebase little by little.

It is sad indeed.
 
Last edited:
I paid for W95 as it came with a machine I bought. Sure it had issues but it was definitely easier to manage than MS-DOS - that precursor was much harder to tame than anything GUI-d that came later.
W2000 was the first I fell in love with, so much that I didn't care that some of my games refused to run. I actually have a Win2000 wallpaper on my screen right now.
Call me a liar but I had zero problems with ME. I may have been the only one according to legend.
Tried Vista but it was laughably bad.
7 surprised me - I liked it so much that I installed the BETA as main OS on a newly built box, and I bought 7 when the final was released. Because of that I also have a legal Win10 license.
I happily pirated all the other versions (skipped 8) - MS didn't care, nor do they care that I run my Win10 on three machines.
Said it before: a sad goodbye is coming - I will likely move to MacOS this year. (weep emoji)
Nostalgia post really ¯\_(ツ)_/¯
 
I paid for W95 as it came with a machine I bought. Sure it had issues but it was definitely easier to manage than MS-DOS - that precursor was much harder to tame than anything GUI-d that came later.
W2000 was the first I fell in love with, so much that I didn't care that some of my games refused to run. I actually have a Win2000 wallpaper on my screen right now.
Call me a liar but I had zero problems with ME. I may have been the only one according to legend.
Tried Vista but it was laughably bad.
7 surprised me - I liked it so much that I installed the BETA as main OS on a newly built box, and I bought 7 when the final was released. Because of that I also have a legal Win10 license.
I happily pirated all the other versions (skipped 8) - MS didn't care, nor do they care that I run my Win10 on three machines.
Said it before: a sad goodbye is coming - I will likely move to MacOS this year. (weep emoji)
Nostalgia post really ¯\_(ツ)_/¯

W95 was groundbreaking in that the same GUI metaphor is being used today, apart from some minor changes.
 
As a teenager I figured there was a problem with disk space. So I jumped into the windows folder and hit del *.dll attempting to clean up some free space. Little I knew after I reboot I completely borked windows 3.1 lmfao.

What made you choose those files to delete?
 
Back