Disruptor wrote on 2025-05-27, 19:59:
jakethompson1 wrote on 2025-05-27, 19:46:
Not relevant to this 386SX specifically, but common retro advice is that Win9x allocates physical memory from the top down, so the noncacheable memory gets used first.
No true. Win9x is bottom up.
NT is top down.
The opposite claim is all over vogons, regardless, it's less interesting exactly which is which, (though I'd look if an interesting place in the SDK/DDK etc were pointed out rather than apocryphal knowledge) but why.
Because Win9x has to grab the preexisting DOS and shove it inside a Virtual 8086 machine, perhaps there is some reason to avoid the HMA or conventional memory until there is memory pressure.
Or, when EMM386 or friends are loaded in config.sys, Win9x has to use Global EMM Import to essentially pass control from one protected mode kernel to another, so perhaps that also dictates how physical memory is prioritized.
The Old New Thing (https://devblogs.microsoft.com/oldnewthing/20 … 112-00/?p=11773) suggests that virtual memory (I guess he means paging) was broken in the first 64KB of RAM on B1 stepping 80386.
Then there is the 16MB limit for ISA DMA and ISA memory devices.
Related: a few major releases back, the Linux kernel gave up on every trying to use memory below 1MB, because there's just too much chance of the BIOS (eg System Management Mode) scribbling over it even when it isn't properly marked by the BIOS as reserved. One reason this happened was Windows stopped attempting to use that memory around XP or Vista or such.