First post, by mac57mac57
I have an NEC PowerMate 286, and unlike the Tandy 3000 I have been posting about, it's BIOS allowed me to boot off of the native floppy and get MS-DOS running. From there, I was able to configure the BIOS and all has been well since (I replaced the motherboard battery, so it retains its settings).
I have two issues with this machine, both related to the RAM.
First issue: there is physically 1MB of RAM on the motherboard. I can see the chips. They are physically there. However, the BIOS declares a memory error at the 512 MB boundary and reduces the available RAM from 640 KB to 512 KB. This restricts a lot of software from running - I get lots of "out of memory" errors and many programs will not run. It also declares a memory error at the 1 MB boundary, but I am not sure I am too worried about that, except that the HMA is not available.
Since I can see the RAM chips are physically there, I wrote a memory diagnostic myself and checked the full address range of lower memory. Sure enough, the range from 8000:0 to 9FFF:F (from 512 KB to 640 KB) tests perfectly. There is RAM there, and it passes my memory test (each word is tested with all 0's, all 1's and alternating 1's and 0's - 55AAH and the inverse AA55H. The only "usual" test that I haven't included is the "walking 1s" and "walking 0s" tests). There doesn't seem to be any way to get the BIOS to skip its POST RAM tests - it is the same Phoenix BIOS 3.10 with no onboard SETUP that is in the Tandy 3000 I am having so much trouble with, and the DOS setup program I have for it does not have any settings that would allow me to disable the POST RAM tests).
Does anyone reading this have any thoughts on what might be going wrong, or on how I could get the BIOS to skip its POST RAM tests and thus NOT declare a RAM error above 512KB? I have tried typing ESC just before and during the POST RAM tests, but this had no effect. I have also tried the CTL-ALT-ESC, CTL-ALT-S and CTL-ALT-ENTER sequences that I have read about - none of these had any effect either.
As an alternate, I tried to "trick" DOS into believing that it had 640 KB of RAM available. I found the word in the BIOS Data Area that contains the amount of RAM in the system, and set it to 640 KB. This didn't do the trick. It did change the amount of available memory to 640 KB, but DOS then declared that nearly 200 KB of that was "in use", leaving me with no gain in available RAM. I did some digging on how DOS manages memory, and discovered its list of Memory Control Blocks (MCBs). I wrote a program to traverse this list and find the last entry on it, which controls the remaining free RAM. I increased the size of this segment in its MCB to the difference between 640 KB and the sum of the usage of all the preceding entries on the MCB list. This seemed to work ... the mem/c command showed all the right stuff... but nothing could successfully use the added RAM - it would just hang the machine, or spit errors, or do other unexpected things.
Does anyone here know about any other places that DOS keeps a record of its free RAM? I would think there was a "single source of truth" on this, but there may be many.
Second Issue (related to the first, I am sure): MSD and Norton SysInfo both tell me that I have 384 KB of extended memory, which I believe. This is almost certainly the leftover physical RAM from 640 KB to 1 MB, mapped to some Extended RAM address space. The problem is that nothing else can see it! HIMEM.SYS declares that there is no Extended Memory. This is a 286, and so EMM386.EXE doesn't work - I tried it; it just hangs. I have tried The Last. Byte memory manager - it won't install, since none of the chips its checks for exist on this motherboard. EMM286 runs, but won't install. It won't do anything unless an XMS or EMS manager like HIMEM has been installed ahead of it. The RAM is there - MSD and Norton both find it and classify it as Extended Memory.
Does anyone here know of a good Extended Memory manager for 286 class machines that might uncover where this RAM is and make it available?
In the end, this is a machine with 1 MB of RAM, but due to BIOS, DOS and other factors, I seem to be limited to 512 KB of RAM. I would like to use the full 1 MB. Any and all help MUCH appreciated.
Two 286 machines (Tandy 3000, NEC PowerMate 286), both hobbled by Phoenix BIOS 3.10 - I am coming to hate that BIOS - I NEED an onboard SETUP to solve most of these problems.