I wonder, apart from having fun and scratching some nostalgia itches, what are the outcomes of this? Do any of the things learned by doing this project help in working with present day hardware?
Probably not so much. Most of Win 3.1 is actually still 16bit even in Protected Mode (unless you count win32s which came much later), so everything over 1MB cannot even be addressed directly. While you can probably come up with something that makes use of the 32MB under Win 3.1, that would likely be rather artificial and not very typical of what was happening back in the day, not just because 32MB was considered absolutely massive then.
I vividly remember thinking how freaky it must be to have a PC that tests 32MB at boot (and how long it must take), and I think that was even during Pentium times already, not sure... my 486 had 8MB while many still had 4MB.
Protected mode using 16 bit segment:offset addressing could use more than 1 MB of memory.
The segments were 64K, but the base address of each individual segment was defined in a descriptor table and could point to anywhere within 24-bit addressable memory space on the 286 and 32-bit on the 386.
So the 286 was limited to 16 MB of ram in 16-bit protected mode. The 386 not so.
Incidentally, I had a 286 that was happy to use all the 4 MB of memory it had when running under Windows 3.1.
I remember using Turbo Pascal for Windows, and being amazed that I could allocate more than 640KB — albeit in 64K segments.
I know, hence why I said “addressed directly”, which 16 bit segments (like the major Windows portion living in vm86) couldn’t do, but they could still access it through windows (lowercase w, and no pun intended). EMS and XMS essentially did what you describe for example.
That much RAM on a 33Mhz 386DX would run OS/2 very comfortably, and you could actually use all of it. Or very early Linux distributions, of course. Imagine a Beowulf cluster of them!
Exactly. The requirement for my first personal PC was that it could run True Emacs on Linux (Sun 3 at my University had spoiled me), but I could only afford the absolute minimum: 386SX/25 MHz w/4 MiB. It was a Toshiba T1800 notebook, very nice but monochrome LCD, tiny harddrive, and not expandable.
With 4 MiB I was able to try X11, but not use it in practice. 32 MiB would have been incredible.
A 386DX actually has a full 32-bit address bus, so you can theoretically give it (almost, due to MMIO) 4GB of RAM. Memory testing might take a ridiculously long time, however, and I'm not sure if there's any stock BIOS that will handle it. All limitations that can be worked around, of course.