I am researching how to add additional RAM to my 286 build. I started by thinking about a memory expansion card for my system.
That has started some great discussion in my the video's comments section. From this, I am learning that I have more to learn. đ I plan to use this post to capture my learnings as I go, related to expanding memory in my 286 system.
Tidbits of info....
Memory above 1 MB is considered extended memory.
DOS, running in real mode, cannot directly access memory above 1 MB.
The Extended Memory Specification (XMS) provides DOS a way to indirectly access memory above 1 MB.
FreeDOS offers an XMS driver.
The FreeDOS XMS driver appears to leverage BIOS INT15H.
Move Block to/from Extended Memory: int 15,87 (stanislavs.org)
Extended Memory Size Determination: int 15,88 (stanislavs.org)
INT15H would need to switch from real to protected mode, transfer memory, and then switch back. Real-mode interrupts are disabled while the transfer is occurring. The 286 has to shut down when switching back to real mode.
LOADALL could be leveraged. LOADALL - Wikipedia
I could modify the design of the memory card to support switching between different 64K segments of it, leveraging a register and some decide logic. The active segment would be accessed through a window under 1 MB, such as C0000:CFFFF. This would be similar to how I access my 2 MB of VRAM on my VGA card (where I use A0000:AFFFF). See VGA 640x480 ISA Card (rehsdonline.com).
I could combine the 64K window approach from the previous bullet with INT15H to emulate XMS access without actually switching to protected mode.
Second Pass
After looking into I have put some thought into a paged setup, possibly inserting a 64KB window at C0000:CFFFF in my 1MB space. With this approach, I moved the decode logic into a PSoC (which are back in stock now...yay!).
More to come...
Comments