Raymond Chen explains what, exactly, the file winstart.bat in Windows 95 is used for.
In Windows 95, you could create a
↫ Raymond Chenwinstart.batfile in your Windows directory. During startup, the virtual machine manager initializes and creates the so-called “System virtual machine” (the “System VM”), which is the virtual machine that all Windows programs run in. But before running the user-mode kernel in that virtual machine, the virtual machine manager runs thewinstart.batbatch file if it exists.
Chen needs to use several diagrams to really explain what the batch file is used for, but as a very crude summary, it allows you to load TSRs that only apply to Windows programs, while not affecting any additional DOS command prompts you may load later after Windows is already running. While many think it’s a Windows 95 feature, it was already present in Windows 3.x.
A unique feature that I doubt many people made active use of.

I love the details on how Windows 95 loads that are revealed here that even more clearly show that Windows 95 DOES NOT run on top of DOS.
This is one of those ancient (30 years in tech is ancient!) claims that just won’t die. But, now I have more details and another link to show people that there is a lot more to Windows 95 than being just a DOS shell.
Despite its warts, Windows 95 was a remarkable piece of software in its day.
Right? It really has more in common with IBM VM than with DOS. Its loader is loaded by DOS (can be equally true of Linux with loadlin), and later contains DOS (also true of linux with dosemu, OS/2, Windows NT, etc…), and can use DOS drivers as a fallback (which in its time was simply… wise. Probably a bigger contributor to its success than it’s given credit for), but in no way uses DOS as its kernel as is so often implied.
I also love the stories about how much rigorous testing was done to create the interface. It’s no surprise, really, that it was the peak of discoverability and usability. I don’t understand what happened to this industry that now each release is more frustrating to be able to find the same things, the shareholders are confused why nobody likes it, the developers get no say, and then the price goes up or moves to a subscription and then continually goes up.
quinn,
They are a hybrid. It can run entirely in 32-bit mode, like LILO as you mentioned. But Win95 can also run in compatibility mode where it passes file I/O to actual DOS underneath
(This is how we did network boot in our systems back in the day. It would map the Novell drive in DOS. I think there might have been a way to “hand off”, but in our case Win 95 WAS running on top of DOS)
That’s the thing, though: when some devices fall back to 16-bit drivers, they’re not running underneath. They’re being run in the system VM86 process, which is still being preemptively multitasked like any other process. Granted, performance does drop dramatically, but not system stability, and unless it’s something like the admittedly piss-poor floppy driver (which iirc was actually a 32-bit driver) that shuts off interrupts to poll, it doesn’t even really introduce jitter
quinn,
That is the hybrid part, isn’t it?
In that configuration Windows has to maintain two kernels. Both Win32 and DOS are alive, and not only the device drivers, and DOS also dictates the memory manager (HIMEM/EMS)
And running DOS in VM86 is not new. Windows 3.1 already did that. Though to be frank, I’m not sure this is a praise for Windows 3.1 or something at Windows 95
Yep! That was the only configuration in Windows/386 (2.x) enhanced mode. It might have been there in 3.0, but I think it was 3.1 that added the same VxD 32-bit driver model Windows 95 used (3.1 drivers ended in a .386 file extension, but could be used for 32-bit I/O in 95). The 95 kernel wasn’t much different from 3.1, just added “full” win32 support rather than the installable and too emaciated to be much use win32s.
It is, indeed, nothing new. I don’t think you and I really disagree on anything technical, I just mean to say my opinion is that it makes more sense to say Windows (from 3.x enhanced mode through) 95 could use DOS drivers via its VM than to say Windows ran under DOS, since it took over all interrupt handling and only passed any through to DOS if your hardware was baroque. It’s a lot more like ndiswrapper than it is like uml, DOS was imo by definition under Windows, not the other way around.
Just one of those things. The OS was really interesting, and the way it could run at a higher operational level even when it couldn’t provide any drivers reminds me of IBM’s old VM/360, which was more like Xen than what we would consider an OS today. There was plenty to criticize about 95, Microsoft’s monopolistic practices ramping up to new heights not the least of it, but criticizing it for including DOS compatibility always seemed like a weird place to start when we who were doing it to be cool back then still needed to boot it pretty often for exactly that purpose