Thanks, for the feedback, Jedi118. I'm looking forward to the video! 😀
Speaking of memories, I think I can speak for all of us when I say that we all went through this, too.
In case of DOS memory managment and DOS for itself, things are often not like they seem.
In the past, both DOS and Windows were released through different channels, modified by OEMs, etc.
To give an example, Windows 3.0 got patched to work on PC/XT systems with a 386 upgrade.
That board was called the "Inboard 386" and didn't really change the nature of the host.
All limitations, like only one DMA and IRQ controller remained. If rumors were true,
some users even managed to grab some of the patched system files and transplanted them into Windows 3.1.
-
Memory Managment is another beast. Extended Memory is not quite the same as XMS memory.
As derSammler pointed out, all Windows 3.1 needs is Himem.sys, an XMS manager.
The difference between Extended Memory and XMS is not easily described in a few words.
In essence, Extended Memory is the memory that begins above 1024KiB.
Strictly speaking, the High Memory Area (HMA), which DOS can load a part of its own kernal into,
is also Extended Memory already.
Extended Memory (but not XMS) can be accessed by the PC/AT-BIOS.
It provides a service routine, interrupt 15 hex, function 87 hex (link) that's accessible in real-mode.
Early programs from the 1980s used that function to access more, "extended" memory on a PC/AT system.
That's why Himem.sys has a parameter (/INT15=) to specifiy the amount of memory to be reserved.
To make things even more complicated, XMS memory also *works* on systems
based on the 808x processors, unlike Extended Memory.
Reason is, that a direct access to Extended Memory requires protected-mode
(which the PC/AT-BIOS also takes care of when providing its own INT15 interface).
But XMS, in contrast, provides memory rather indirectly.
The interfaces can -in theory- provide memory that is not physically part of the system.
XMS, for example, is provided in such a fashion in the PCE emulator.
This is comparable to Expanded Memory (EMS). The biggest difference is, though,
that EMS re-maps memory and uses pointers/pages (bankswitching-method from the CP/M age).
XMS doesn't remap memory, it copies memory blockwise to and from its source (often Extended Memory).
What they have in common is, that they both rely on a memory managersoftware.
That's why they can both be emulated (EMM286 is a good example).
The difficulty of XMS emulation for one lies in its use of the 286's 24-Bit addressing,
and emulation of the A20 specific stuff.
-
Okay, so why am I telling this ?
Well, what I wrote was meant to demonstrate that things sometimes are more complex than they seem at first glance.
In your case, it could have been possible (though unlikely) that your Compaq's had an odd memory configuration.
If the memory was provided by chipset or a dedicated memory board, it could have been possible that your
machine still had Extended Memory, even though it lacked, well, Extended Memory. Sounds odd, I know. 😉
But things like this happened in the past already.
As I wrote in an older thread, there was an Extended Memory emulator (not XMS).
It replaced the INT15 handler of the PC/AT-BIOS I described above.
In theory, this would have allowed Himem.sys to provide XMS and thus Windows to load,
even though neither your mainboard, nor its PC/AT-BIOS had controll over/or access to Extended Memory.
Anyway, as derSammler said, all Windows 3.1 really wants is Himem.sys.
If it or another compatible XMS manager loads, -for whatever reason-, Windows 3.1 will, too.
Edit: Typos fixed, picture added.
"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel
//My video channel//