Page 1 of 1

Smallest 386 systems (RAM-wise), and other questions.

Posted: Tue Jan 08, 2013 11:15 pm
by linguofreak
A few questions of historical interest:

Did any 386 systems ship with less memory than the 2MB on the Compaq DeskPro 386? For instance, did any ship without any extended memory whatsoever?

Also, on late 286 / early 386 systems with small amounts enough amounts of expanded memory for it to matter, did quoted memory amounts include the UMA? For instance, if I had gone shopping for a computer in that era, and it was advertised to have 2 MB of RAM, would that have been 640k of conventional memory, 384k of ROM/Video/upper memory, and 1024k of expanded memory, or would it have been 640k of conventional memory and 1408k of expanded memory with the UMA left out?

Finally, did any DOS memory managers allow conventional memory to be mapped above the 1 MB line? If the answer to both of the above questions is "no", then the window in which this feature would have been useful would have been short or non-existent, and given that all of the memory managers I've played with seem to lack the feature, I suspect that that may have been the case.

Re: Smallest 386 systems (RAM-wise), and other questions.

Posted: Wed Jan 09, 2013 12:22 am
by gerryg400
My first 386sx20 had 1mb of ram. Only 640k was accessible. I later added an extra mb but I'm pretty sure that the mem between 640k and 1mb was wasted.

Re: Smallest 386 systems (RAM-wise), and other questions.

Posted: Wed Jan 09, 2013 12:52 am
by Brendan
Hi,
linguofreak wrote:A few questions of historical interest:

Did any 386 systems ship with less memory than the 2MB on the Compaq DeskPro 386? For instance, did any ship without any extended memory whatsoever?
I don't know; but I'd assume some 80386 machines may have existed without any extended memory (but with expanded memory instead).
linguofreak wrote:Also, on late 286 / early 386 systems with small amounts enough amounts of expanded memory for it to matter, did quoted memory amounts include the UMA? For instance, if I had gone shopping for a computer in that era, and it was advertised to have 2 MB of RAM, would that have been 640k of conventional memory, 384k of ROM/Video/upper memory, and 1024k of expanded memory, or would it have been 640k of conventional memory and 1408k of expanded memory with the UMA left out?
I know there were some 80386 systems where the RAM that would've been underneath the legacy/video/ROM area is remapped to the end of extended memory. I'd assume that some systems weren't as good and didn't do this (where 384 KiB of RAM is wasted), just as there are system now that don't remap RAM in the PCI area (and waste 512 MiB of RAM or more). I don't think any systems would've used RAM underneath the legacy/video/ROM area as expanded memory, as expanded memory was typically implemented as a separate card in an ISA slot and not part of the motherboard.

Please note that "extended memory" is memory above 0x00100000 in the physical address space; while "expanded memory" is an ugly bank switching scheme where most of the RAM can't be accessed by the CPU except for a small selectable piece (sort of like the way bank switching is used by SVGA cards to allow 4 MiB of display memory to be accessed through a small 64 KiB window).
linguofreak wrote:Finally, did any DOS memory managers allow conventional memory to be mapped above the 1 MB line?
I'm not sure what you're asking here - conventional memory is below 0x000A0000 and therefore isn't mapped above 0x00100000 (unless you're getting physical addresses and virtual addresses confused).


Cheers,

Brendan

Re: Smallest 386 systems (RAM-wise), and other questions.

Posted: Wed Jan 09, 2013 3:34 am
by linguofreak
Brendan wrote:I

Please note that "extended memory" is memory above 0x00100000 in the physical address space; while "expanded memory" is an ugly bank switching scheme where most of the RAM can't be accessed by the CPU except for a small selectable piece (sort of like the way bank switching is used by SVGA cards to allow 4 MiB of display memory to be accessed through a small 64 KiB window).
#-o

I'm aware of this and meant "extended memory" at all points in my post. Any instances of "expanded memory" are due to the fact that my brain experiences hash collisions on terms that share the same beginning ("ex-") and end ("-ed memory") with a different middle ("-tend-/-pand-"). I even looked the terms up while writing my post to make sure I was getting the correct one, and still managed to mix them up. :oops:
linguofreak wrote:Finally, did any DOS memory managers allow conventional memory to be mapped above the 1 MB line?
I'm not sure what you're asking here - conventional memory is below 0x000A0000 and therefore isn't mapped above 0x00100000 (unless you're getting physical addresses and virtual addresses confused).
I'm not getting them confused. I'm referring to virtual addresses under memory managers making use of V86 mode and paging. I know that many existed that provided expanded (and this time I'm not getting brain-scrambled and actually do mean expanded) memory on 386's and above by running in V86 mode and using paging to map extended memory below 1M. What I'm asking about is if there were any that performed the reverse trick: Mapping RAM below the physical 640k mark to a virtual address above 1M in order to provide a bit of extra extended memory (or, in a multitasking environment like Windows or Desqview that could run multiple DOS instances, mapping less than 640k into a DOS instance's conventional memory in the first place to save on extended memory usage).

Such a facility might allow some programs to run on a system that didn't quite have enough extended memory to technically support them, though the set of programs that would benefit might be fairly small because a program that used lots of extended memory would probably use a fair bit of expanded memory as well. The biggest benefit would be to programs that used around a megabyte (too big to fit in conventional memory, small enough that sacrificing conventional memory could provide useful amounts of extended memory) and where the programmer didn't want to mess with bank switching or splitting his program up between conventional and extended memory. With such a program, the program itself would run entirely in protected mode in extended memory, only interact with DOS/BIOS via DPMI, and would only use conventional memory in its initialization stub.

Now, my knowledge of DOS comes at about 20 years' remove, so it's entirely possible that few or no programs existed that would have benefited from such a scheme, or that the window in which low-end 386 systems had little enough memory for said scheme to be worthwhile was too short for it to be implemented in a memory manager, which is why I ask.