CREEPINGNET'S WORLD
THE VARIOUS LIMITATIONS AND ECCENTRICITIES OF WINDOWS 3.1X
So, You wanna Run Win-16 Apps Eh', here's as much of the eccentricites of Windows 3.1x as I can muster up - and there's a lot of em'
Ah yes, Windows 3.1x, the version of Microsoft Windows us Xennials cut our teeth on because DOS seemed cryptic and Macintosh was - even then - still very expensive and rare. A 16-bit GUI with 32-bit Extensions (Win32s) running on top of MS-DOS/PC-DOS that could barely eek by on a 286 surprisingly well, but was a freakin' weapon of mass production on some whizz-bang 486 of the era. Everyone loves to talk about 95 and up, but almost nobody appreciates or has an easy time with this legacy masterpiece.

But that said, Windows 3.1x, and it's various close relatives - Windows for Pen Computing and Windows for Workgroups - are a very different pack of animals from the 32-bit Windows 9x series. There is no "explorer" shell - instead you have the Program Manager - a 16-bit EXE file that acts as a "Rubbermaid Tub full of Bins" - with the "Bins" being the "program groups" where all of your icons are stored. The whole thing is user-editable like a Linux XF86 shell via text files, but it will run all your standard fare Windows apps, at least "early" versions of them - ie....IE, Office, Outlook, etc....


The IDEAL RetroComputing Configuration
Probably the most ideal configuration of Windows 3.1x is on a 486-based PC, running MS-DOS 6.22, with one or more FAT-16 partitions of 2.1GB each to work with. That is, the primo setup for Windows 3.1x. And the Hard drive is not newer than a model you could find in maybe - oh say - 1998 or 1999 maybe. Pre ATA/100-133 - so something like a Seagate ST38410A at the most, or a Maxtor 91531U3 - that's about as high as I'd go for this configuration - with an older DDO like Maxblast (which works with everything regardless of make), and partitioned into 4+ 2.1GB Partitions (1 active primary DOS partition, and then the rest of the drive with extended DOS Partition and logical DOS drives filling it up at full capacity + whatever's left at the end).

The reason this configuration works best, is those drives will work happily with your circa 1994 VESA Local Bus IDE Controller with a driver - like the venerable PTI-255W that I use in Creeping Net 486 - which is a real speed demon with a fast IDE Drive running in PIO-4 mode. They won't get confused, whine, or lock up looking for command.com when you stdart up, they work as intended, in the best way possible.

This also means, you don't need either 24 more Logical DOS Drives in the Extended DOS Partition - till you run out of Drive Letters even with LASTDRIVE=Z in your config.sys file, and you don't need to mess with the fiddle faddle hackery of making Win16 work on a FAT-32 filesystem! (more on that later). WinG and Win32s will install and run properly, and won't cause your machine to crash or hang, or try to overwrite the firmware on your SoundBlaster AWE card. This is - for all intents and purposes, Win16 perfection.

Of course, another option on this is you could also just stick to older hard drives that are in the capacity directly addressable by the BIOS and enjoy things like LBA, but what's the fun in that. Then the time you spend once getting everything working on FAT-32 is translated over to deleting something every time you want to run some other huge program, or praying that your optical drive has been granted an eternal life pass...and that you don't just fire the thing up one day and your creaky old Western Digital Caviar has not decide to give up the ghost. Did you know the hard disk is the biggest bottleneck on these old systems?
The Caveats of FAT-32 - now we see the REAL limitations of Windows 3.1x
Of course, there's nothing stopping you from jamming a 32+ GB ATA-100/133 HDD into a 486, putting on OnTrack 9 (my DDO of choice), and then installing that weird MS-DOS 7.01 GPL release with a fully fleshed out Windows For Workgroups 3.11 install - except....well...you won't hit roadblocks, you'll just hit really weird idiosyncracises that are possile to deal with, and it seems people seldom talk about.

The first one is the DOS Version idiosyncracy. See, the last actual, commercial, sold-as-DOS version of MS-DOS, is MS-DOS 6.22! With it's competitor, PC-DOS going up to a version called "PC-DOS 2000" from around that time by IBM. That DOS 7.01 "GPL" release is really just the MS-DOS bundled with Windows 95/98/Me stuck on a CD with a bunch of other random-esque stuff, and then pretending to be some kind of standalone release. As such, it comes with all of the same problems as a triple-boot Windows 3.x/Windows 9x scenario entails, without the benefit of Windows 9x being installed.

Of coruse, there is an alternative that IS truly open source and less as questionable - FreeDOS, but the way FreeCOM (command.com), and the various goofey modern memory managers work in FreeDOS causes Windows 3.1x to only be usable in Protected mode at best - not 386 Enhanced mode, which is the most most people will want to run it in, especially if they want to mess with network support. So basically, if you use FreeDOS, Windows for Workgroups will work - but it won't be able to use it's networking features, it cannot use anything that requires 386 Enhanced Mode, including all the various "Virtual86" mode stuff, and a lot of applications won't run, including Win32s. That's why in the DOS side I'm championing HX a lot - because it gets us away from Windows and the Microsoft Empire entirely.

So let's go with DOS 7.01 GPL - alright. Thankfully - this, minus the Windows 9x features, was already modified to work with 3.1x. For regular 9x, you have to find a file called w3xstart.exe and use that to rewrite the IO.SYS file/patch IO.SYS to make it work with Windows 3.1x. BUT - DOS 7.01 GPL DOES have some issues I'd like to address too. For starters, DOS Edit looks weird, it lacks the regular terminal building blocks the actual Windows 95 version has. Secondly, I've had some real funky odd-ness with it with hardware in the past, particularly PnP SoundBlaster cards including weird messages referencing the now non-existant Windows 9x installation, or somehow my firmware on the AWE64 in my 486 getting written over and needing AWEFLASH to restore.

But the real expense of a FAT-32 O/S like this with Win31x is this....

You Can't Use 32-bit File or 32-bit Disk Access - I find any time I enable this, I either brick the install, brick the O/S, or both. The reason is, Windows 3.1x comes with it's own generic drivers from that time period (ie 1992-1996) that assumes AT BEST your computer is some kind of 486 system with a generic IDE Controller and a generic, of-the-time, IDE HDD capable of understanding what's being fed to it. When it sees one of these ultra-fast, whizz bang, ATA-133/100 drives, or a mSATA SSD, it gets pretty confused, because it's expecting some 150ms seek time mess from 1992 that's about 250-528MB in size and sounds like someone slowly dumping Legos into a Pyrex container when it seeks.

You Can't Use Your Special Fancy VLB Chipset Drivers Either - This one will REALLY Confuse DOS now. In particular, I have a PTI-255W in Creeping Net 486, a WEstern Digital chipset dual IDE, Floppy, Serial, Parallel, Game "Super I/O" card released sometime around 1993. This card works with "faster modes" - mostly intended for of-the period high speed 500MB+ HDD - and plays nice with Pre-ATA 100/133 drives pretty much - but once you get into the area of a 32GB or more HDD with ATA 100/133 - it's happier without that WBIDE.EXE driver and the TekRAM Driver especially in Windows loaded. Because that's how PRe-95 DOS does this: when the machine boots, CONFIG.SYS loads "DEVICE=C:\WBIDE\WBIDE.EXE" which auto-detects your hard disk's capabilities, configures the Suoer I/O card to the capabilities, and then Windows 3.1x uses a TekRAM branded HDD Driver to work with WBIDE for things like 32-bit File Access and 32-bit DISK Access. This makes the computer run particularly fast and quick, but it's also negotiable because the sheer speed of an ATA drive often is a little slower but still comparable.

Win32s Causes Trouble too - What kills most of my "super-big" win31x installs is when I install Win32s. The SPECIFIC file that causes problems with this, is the w32s.386 file found in c:\windows\system\win32s\ - which is the driver that gives Win32 capabilities to Windows 3.1x. I don't know what Win32s has to do with DOS post-6.22 that causes so much trouble. But I've found by removing the line DEVICE=C:\WINDOWS\SYSTEM\WIN32S\W32S.386 from my SYSTEM.INI file fixes the problem and let's Windows work as intended. Typically if this is loaded, it causes Windows to either dump back to the DOS prompt, complain of some kind of "unsupported data", or just hang - especially in Windows for Workgroups. So unfortunatley, Win32s is something of a trade-off if you want to run win31x on a newer version of DOS with huge FAT-32 partitions.

Long Filename Issues - DOSLFN is your friend! One of the #1 problems I've had with Windows 3.1x since day one (2001, with Creeping Net 1 - which was running a 123MB Maxtor 7120AT HDD with AOL 3.0 and 4.0 on it), was that I had to reformat and reinstall a lot back in the day because I was not careful with my downloading on the internet - and would end up with these file names with spaces in them that were longer than 8.3 naming convention (the convention REQUIRED by DOS), but the name would get cut off after the filename size limit, often with a space. Basically, what would happen, is the link between the filename and the actual data attached to it would be broken. However, I did later figure out in FreeDOS at least how to rename the files and get them and the data to line up (ie use the first pack of letters in the file name with a wildcard and then retype a shorter, 8.3 compliant name), but there's no guarantee that will work. So when downloading in Windows 3.1 or Links, it's a good idea to make sure you rename the file before you download it so that it will fit within the standard naming convention - or have DOSLFN loaded.