First post, by Predator99
I think what I have done here is really cool - I should keep it for myself to buy all these unneeded cards before publishing 😉 But thats no fun...
So...there seem to be many of ISA XMS/EMS Memory Extenstion / Expansion cards cards around. They are quite expansive when there are Drivers and Documentation available, e.g. the AST Rampage, Intel Aboveboard or DFI AT-Rambank. But its rather difficult to get all these "no name cards" running. Its nearly impossible to find the Software or find Documentation of the Jumpers.
In the meantime I have 4 of these cards, nothing to find about them.
It was not a solution for me to dump these valuable cards as unusable. As already mentioned in my other thread
ISA RAM Expansion card
all of these cards are capable of providing XMS. And some (if not most) of them also EMS.
- in general XMS is rather easy. The memory is mapped the same way as the memory on the mainbaord. The Jumper settings define the amount of memory on the ISA card and the location where it should start. In case you have 2048 MB on the Mainboard it should start directly after the 2048MB to have no overlap and no gap. This should run with himem.sys.
- EMS is more complicated as you have to open a EMS window of usally 64k in the lower adress space of 0-1024k. In this window, an area of the card RAM is mapped. This is driven by the EMS driver. This driver should be similar on all cards, however. But configuration of the Jumpers is more difficult as you have to define that EMS window additionally and figure out the IO-port.
For the Jumpers on the cards there should be the following:
- Select Total RAM size
- Select XMS/EMS Mode
- XMS only: select starting adress = Mainboard base memory size
- EMS only: select EMS windows location / size
- EMS only: IO/port for Driver/Window shifting
I 1st focussed on the XMS:
The 80286 has an adress space of 16MB. In protected mode, this memory is linear. The bottom 1024k of this area is occupied by the Mainboard RAM+ROM area. In the area above 1024k additional mainboard RAM follows.
When you insert an ISA memory card configured as XMS, it maps its memory somewhere in this area.
To understand the current jumper settings, you have to find out where in the 0-16MB 80286-space its memory is located. In theory it should be somewhere if the XMS/EMS jumper is set to XMS. As I have never learned protected mode programming, I searched for a program that scans the whole memory area and reports where is physically RAM located and where not.
The only program I have found is "Extended Memory Tester". Its performing more a test than a scan and It takes ~10 Minutes to complete a scan, but It reports the correct results!
My test Setup is a VLSI 80286 with 1024kb onboard. I tried a RAM card I got recently
"RAM Electronics & Manufactury CO. LTD. AT Enhancer"
It has 512kb of RAM on Bank 0. Ignore the 4 spares on Bank 2.
When inserting the card nothing happens, BIOS and DOS only detect the 1024k Mainboard RAM:
I started "Extended Memory Tester" (be sure not to load himem.sys) with parameter 16384 to test the whole 16MB area:
TESTEXT 16384
As expected, it detected the 1.0-1.383MB area (which is the upper memory area of the Mainboard RAM). But it also detected 512 kb of RAM at 13.0M. Therefore this is its current location!
Goal is now to find the Jumper setting to move this window behind the 1.383MB to have all the memory at the start without a gap. With this, it should be possible to use the ISA RAM with himem.sys. I played with the Jumpers...
Right DIP untouched (1=on, x=off)
12345678
11xx1111
Left DIP - Mem start
12345678
11x1xxxx -13.0M
x1x1xxxx- 5.0M
1xx1xxxx- 9.0M
OK, seems to work 😀 Memory start is shifting when playing with these jumpers! But do I like to test all combinations? No, this should be similar on all cards. So I compared with the DFI AT-Rambank settings:
http://www.minuszerodegrees.net/manuals/AT-RA … rs%20Manual.pdf
Left DIP - Mem start - DFI-AT-Rambank
12345678 - ------ - 1234567
11x1xxxx - 13.0M - xxx1x11
x1x1xxxx - 5.0M - xxx1x1x
1xx1xxxx - 9.0M - xxx1xx1
11xxxxxx - 12.0M - xxxxx11
Do you see it? 😉 Its the same, but other direction...
Therefore the needed setting is easy:
xxx1x11x - 1.384M - 11x1xxx (!!! Thats it. 384kb base + 512 kb ISA without gap!!!)
And "Extended Memory Tester" shows:
Now I have all the RAM together.