• Please review our updated Terms and Rules here

HMA oddity

jh1523

Experienced Member
Joined
Jan 15, 2009
Messages
298
Location
coastal New England
I've been playing lately a lot with my old motherboards, and I can't help but noticing some oddities. The one I'm submitting here happens on a 286/12 motherboard, here it is on TH99: http://artofhacking.com/th99/m/U-Z/30583.htm

This motherboard has 1M RAM on-board currently. It has 8 sockets for 44256 (256kx4) and 4 sockets for 41256 (256kx1) for parity. There is no other memory anywhere else. That's 1024kx8 total physical memory. The SIPP sockets are unpopulated.

The HMA is the region of 64K situated immediately beyond the first 1024k, and which can be accessed due to a segmented memory trick on 286 and above, if gate A20 is enabled. Correct? It sits in the physical space of 1024k-1088k.

Well, on this board which has only 1024k pf physical RAM, if I load himem.sys and then load DOS high (in the HMA), I don't get an error. Everything seems to function perfectly fine. If I use a memory listing program, such as mem.exe or mi.com, it reports that the HMA is available, and that DOS is loaded there. Moreover, the size of the OS components reported in conventional RAM is appropriately smaller, and more conventional RAM is available than if I don't load DOS high.

No UMBs are available, since this is a 286 and can't use emm386.exe, and there is like I said no addon memory board etc. DOS cannot be located anywhere between 640k and 1024k because that memory is not available to it.

So, where is DOS? Loaded in physically nonexisting RAM?

What is the explanation for this?
 
The 384KB is likely remapped to be 1024-1408KB.
You may find you have 64KB HMA, and 320KB XMS but nothing between 640-1024. Some 286's use it for shadowing, some for EMS, and some remap to XMS.
 
SpidersWeb explained it correctly, your motherboard is remapping the 640kb-1024kb area to 1024kb-1408kb area, so you are getting 640kb conventional, 64kb HMA and 320kb XMS
 
Ah yes, good old remapping. I had forgotten about the little tricks that chipsets used to play in that era. That explains it, thanks.
 
Next question: since this is a 286 machine, so emm386/qemm/386max and friends don't work - how can the 384k of extended memory be used in DOS for something? On a 386+ machine you'd make UMBs and load drivers, map some of it as expanded memory etc, but on a 286 the only utility that I know of (emm286.exe) that allows any of that will reduce the amount of conventional memory. :(
 
You can use it for a 320K ramdrive.

:) Most programs I'd want to speed up with a ramdrive wouldn't fit in 320k.

Next question: if I add a memory card such as an AST Rampage 286 and set it to backfill memory from 640k up, what happens to the 384k above 1M?
 
IIRC, the backfill will require creating expanded memory. On the AST card I had, that was set at multiples of 512kB. Some could be used for shadowing upper memory and the rest would be available for EMS page frame usage. Then the 384kB of Extended Memory on the motherboard would be counted and then (finally) any extended memory on the expansion card would be added on. However, with some cards, the memory addresses had to be set at 512kB intervals so with those cards the motherboard's extra extended memory would have to be ignored. Even if the motherboard extended memory was recognized, the system might run a lot faster by ignoring it.

Stuffing a 286 with memory leads to lots of annoying decisions as a choice that improves the system with some programs hampers it with different programs. A 386 saves so much aggravation.
 
It was pretty easy to fit eight 1meg simms to my 286 ;) According to to bios settings it is able to take another 10megs as expanded ram presumably via ISA ram expansion. I wonder if there were specialist 286 systems that took more?
 
Last edited:
It was pretty easy to fit eight 1meg simms to my 286 ;) According to to bios settings it is able to take another 10megs as expanded ram presumably via ISA ram expansion. I wonder if there were specialist 286 systems that took more?

What system is that? 8 SIMMs were uncommon and a 10 MB limit on expanded memory doesn't match with anything else. EMS 3.2 was limited to 8 MB while EMS 4 increased the limit to 32MB. I think one expansion board maker would show up at trade shows with a maxed out AT with the full 1 MB of conventional, 15 MB of extended, and 32 MB of expanded (using 5 expansion cards). Completely impractical but I guess was supposed to encourage people to buy a second expansion card. Add to that caching controller cards with another 8+MB. Of course, a system like that would cost close to $5,000 for just the memory.

Most people designing a server after 1990 went for the 386 or 486. The 386 would only add 10% to the total system cost but would be much faster. With the prices on expansion boards, the 386 system might actually be cheaper.
 
Back
Top