Most active commenters
  • rusk(7)

←back to thread

304 points mooreds | 24 comments | | HN request time: 1.073s | source | bottom
Show context
jmclnx ◴[] No.42166830[source]
I never thought of Windows 3.1 as an OS. The other 2 was MS-DOS and Windows 95.
replies(2): >>42167247 #>>42168397 #
1. rusk ◴[] No.42167247[source]
Agree, the terminology in those days was “shell”.

Though Windows 95 was arguably similar running atop “DOS 7” it actually imposes its own 32-bit environment with its own “protected mode” drivers once booted. Dropping to DOS reverted to “real mode”.

replies(3): >>42167329 #>>42168096 #>>42168667 #
2. tliltocatl ◴[] No.42167329[source]
So did the lastest Win3.1 for workgroups, just MS spared all the fanfare for Win95. Not sure if the 3.1 version in the installers does.
replies(1): >>42167345 #
3. rusk ◴[] No.42167345[source]
Windows 3.1 was just a graphical shell. All the drivers and stuff were still managed by DOS. You still needed to configure your system with config.sys

EDIT it’s coming back to me. Windows 3.1 did have a a subsystem for running 32 bit apps called Win32 I think that’s what you mean. This was very much in the application space though.

It still used cooperative multitasking and Win 95 introduced preemptive.

replies(4): >>42167548 #>>42167566 #>>42167659 #>>42167851 #
4. YakBizzarro ◴[] No.42167548{3}[source]
It was Win32s https://en.m.wikipedia.org/wiki/Win32s
replies(2): >>42167616 #>>42189655 #
5. nkrisc ◴[] No.42167566{3}[source]
I was only 5 or 6 maybe when I used Windows 3.1 so I may be misremembering, but didn’t it have an X on the desktop to close the GUI and return to the DOS prompt?
replies(3): >>42167963 #>>42168499 #>>42171477 #
6. rusk ◴[] No.42167616{4}[source]
Thanks

”Win32s lacked a number of Windows NT functions, including multi-threading, asynchronous I/O, newer serial port functions and many GDI extensions. This generally limited it to "Win32s applications" which were specifically designed for the Win32s platform,[4] although some standard Win32 programs would work correctly”

replies(1): >>42167939 #
7. DHowett ◴[] No.42167659{3}[source]
Bryan Lunduke has an article about this myth, actually!

https://lunduke.locals.com/post/4037306/myth-windows-3-1-was...

It’s backed up by another Old New Thing article at https://devblogs.microsoft.com/oldnewthing/20100517-00/?p=14...

The TL;DR is that Windows 3.1 effectively replaced DOS and acted as a hypervisor for it, while drivers could be written for Windows (and many were) or DOS (and presumably many more of those were actually distributed). The latter category was run in hypervised DOS and the results bridged to Windows callers.

(Edited after submission for accuracy and to add the Old New Thing link.)

replies(2): >>42168323 #>>42168490 #
8. rbanffy ◴[] No.42167851{3}[source]
I think it’d be fair to call it more than a shell. It was also a set of libraries that implemented the common user interface elements of Windows apps, similar to the Macintosh Toolbox but not in ROM.
replies(1): >>42168502 #
9. kjellsbells ◴[] No.42167939{5}[source]
It was a strange time back then for anyone who wanted to get online. Win3.1 had no TCP/IP stack so many folks used a third party download called Trumpet Winsock. IIRC you might have needed win32s in order to use it.

Looking back, Microsoft were clearly in an incredibly complicated transitioning phase, with very little margin for error (no patching over the Internet!)

replies(1): >>42168401 #
10. mixmastamyk ◴[] No.42167963{4}[source]
My memory is that closing Program Manager exited windows.
11. Hilift ◴[] No.42168096[source]
Another competitor shell at the time was "WordPerfect Office for DOS". Which I witnessed some people launch from Windows 3.11. I believe it had WordPerfect and what preceded GroupWise for email. https://mendelson.org/wpdos/shell.html
12. phire ◴[] No.42168323{4}[source]
One of the major motivations for windows, is that the driver situation for DOS really sucked. Every single office suite had to talk directly to printers. Text mode was reasonably uniform, but printing graphics required the application to know about the printer.

And games needed to talk directly to the video card and sound card if you wanted anything more than PC speaker beeps and non-scrolling screens on one of the default BIOS graphics modes.

One of the major selling points of Windows 1.0 was a unified 2D graphics API, for both screen and printing. The graphics vendor would supply a driver and any windows application could use its full resolution and color capabilities needing to be explicitly coded for that graphics card. This rendering API also supported 2D accelerators, so expensive graphics card could accelerate rendering. 2D accelerators were often known as Windows accelerators.

Windows 3.1 still relied on DOS for disk and file IO, but everything was can be done by VXD drivers, and should never need to call back to DOS or the BIOS (which was slow, especially on a 286)

With Windows 95, Disk/File IO were moved into VXD drivers, and it was finally possible to do everything without ever leaving protected mode (though, DOS drivers were still supported).

Read more about the history of Device drivers here: http://www.summitsoftconsulting.com/WinDDHistory.htm

And I really enjoyed this documentary about the development of Windows 1.0: https://www.youtube.com/watch?v=vqt94b8bNVc

replies(1): >>42189642 #
13. phire ◴[] No.42168401{6}[source]
Trumpet Winsock works on a 286, but apparently NCSA Mosaic version 2.0 needed Win32s.

So I guess there would have been a time in 1994 where many people were forced to retire their 286es. Though Mosaic was quickly replaced by Netscape Navigator in late 1994 which worked on Win16.

And then Windows 95 came along, and it really needed a 486 with 4MB of ram, ideally 8MB.

replies(1): >>42170574 #
14. rusk ◴[] No.42168490{4}[source]
Thanks for that it’s very interesting. I had no idea the virtual machine system was so advanced. Device drivers and such were all still real mode but yes I can see how this would make DOS a component of Windows rather than the other way round. All for nothing if the apps aren’t bought in though!
15. rusk ◴[] No.42168499{4}[source]
There was a way to “drop to DOS” alright, which is what you would have had to do for games and the like. Can’t remember the exact mechanism but it could have been the x on the “program manager” window.

The raise Windows you’d type “win” and if you wanted to “boot to windows” you would call “win” from your autoexec.bat

replies(1): >>42169299 #
16. rusk ◴[] No.42168502{4}[source]
Not sufficient on its own to qualify it as an OS though. The VM subsystem described in sibling comment makes a big difference though!
replies(1): >>42171455 #
17. tzs ◴[] No.42168667[source]
I don't think it actually reverted to real mode. I believe Win 95 continued with what they had done in Windows for Workgroups 3.11, which was the first Windows that required an 80386.

What that did is use DOS as a first stage boot loader, then switched into protected mode and created a v86 task which took over the state of DOS. The protected mode code than finished booting.

v86 mode was a mode for creating a virtual machine that looked like it was running on a real mode 8086 but was actually running in a virtual address space using the 80386 paging VM system.

When you ran DOS programs they ran in v86 mode. If a DOS program tried to make a BIOS call it was trapped and handled by the 32-bit protected mode code.

v86 mode tasks could be given the ability to directly issue I/O instructions to designated devices, so if you had a device that didn't have a 32-bit protected mode driver a DOS driver in a v86 task could be used.

For devices that did have a 32-bit protected mode they would not give v86 mode direct access. Instead they would trap on direct access attempts and handle those in 32-bit protected mode code.

I wish Linux had adopted a similar use of v86 mode. I spent a while on some Linux development mailing list trying to convince them to add a simplified version of that. Just virtualize the BIOS in a v86 task, and if you've got a disk that you don't have a native driver use that v86 virtualized BIOS to access the disk.

Eventually someone (I think it may have been Linus himself) told me to shut up and write the code if I wanted it.

My answer was I couldn't do that because none of my PCs could run Linux because there were no Linux drivers for my SCSI host adaptors. I wanted the feature so that I could run Linux in order to write drivers for my host adaptors.

OS/2 did the v86 virtualized BIOS thing, and that was how I was able to write OS/2 drivers for my SCSI host adaptors.

18. nkrisc ◴[] No.42169299{5}[source]
That sounds about right. My dad had commands written on sticky notes on the monitor for me.

As a recall I had to in order to play Commander Keen.

19. dboreham ◴[] No.42170574{7}[source]
1994 wasn't a time where everyone was using a web browser.
20. rbanffy ◴[] No.42171455{5}[source]
The line is blurry though.
replies(1): >>42171787 #
21. LocalH ◴[] No.42171477{4}[source]
Windows 3.1 didn't have any "X" buttons. It had the system menu (the one shaped like a spacebar, since the hotkey was Alt-Space). If you quit Program Manager, it would end the Windows session (since Program Manager was your shell). If you had a replacement shell (as some did back then, Norton Desktop etc), then quitting that would exit Windows and return to a pure DOS prompt.
22. rusk ◴[] No.42171787{6}[source]
More akin to Window Manager to me. But yes more than a mere “shell” and through my error I have learned oh so much.
23. int_19h ◴[] No.42189642{5}[source]
It was specifically the acceleration that made it advantageous, especially once DirectX got off the ground. 2D graphics by itself was reasonably straightforward in DOS once SVGA and VBE were a thing, but all you got out of it was a raw pixel buffer that you could poke into.
24. int_19h ◴[] No.42189655{4}[source]
Much later, the HX DOS Extender (https://www.japheth.de/HX.html) had something vaguely similar called Win32 emulation mode. Meaning that you could load a Win32 PE image, and it could call quite a few Win32 APIs, all while running under plain DOS (in 32-bit flat mode), with HX DOS providing the implementation.

It had just enough parts of the API implemented to be able to run Quake 2 in DOS.