VOGONS


First post, by mac57mac57

User metadata
Rank Newbie
Rank
Newbie

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.

Reply 1 of 3, by pentiumspeed

User metadata
Rank l33t
Rank
l33t

Show us the memory banks in photos. I'm sure this one does have dip switch as well?

Remember this phoenix bios firmware and hardware is very close to the AT in concept, that you have to use a CMOS setup program to set up the settings and needs a battery (at least 4.5V to 6V).

I had few 286 boards like this back in the day when they were obsolete.

Cheers,

Great Northern aka Canada.

Reply 2 of 3, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

Something I didn't know "back in the day" as I never had an original AT is that the AT and some early clones had extended memory, yet had less than 640K of conventional memory, i.e. there was a memory hole from 512K-640K.

Could there be an issue where the memory you see at 512K-640K is actually an alias of somewhere else in the address space and that could be both why the POST catches it even though in a debugger you are able to poke at that memory, and it could be also why any program you try to actually use it is crashing.

Is it possible that this board requires jumpers to be changed according to the memory configuration?

mac57mac57 wrote on 2023-04-01, 18:09:

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.

It would probably be easier to do this in the boot sector before DOS is even running. You could either take your existing boot disk and rewrite the boot sector with one of your making, or something that is probably easier is to write one that makes this change to the BIOS data area, waits for you to change disks and push a key, then loads another disk's boot sector into memory and boots it. Don't forget the 55AA on your custom boot sector if the system validates that.

mac57mac57 wrote on 2023-04-01, 18:09:

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?

Those are chipset-specific and take advantage of chipsets that have the ability to remap extended memory as EMS in hardware.

Reply 3 of 3, by mac57mac57

User metadata
Rank Newbie
Rank
Newbie

Hello All, thanks for all the insights and comments. I just wanted to bring this topic to a close with a final update.

I noticed while carefully examining the motherboard that the "missing" 512KB was composed of 120 ns RAM chips, whilst the original 512KB was composed of 100 ns RAM chips. I have also read, in my wanderings around the web, that if your 286 is 10 MHz or faster, you must use 100 ns or faster RAM chips. The 286 in the PowerMate 286 is a 10 MHz part, and so it all made a degree of sense that perhaps the second bank of 512 KB was just too slow for the CPU. To test this, I got on eBay, found a set of compatible 100 ns RAM chips and ordered them. They arrived yesterday. Today I swapped out the "missing" 512 KB with these faster 100 ns parts and it worked instantly! The upper 512KB hadn't been missing all along... it was just too slow for the CPU!

This leaves open the question of why the machine was configured this way to start with. SOMEONE put the wrong RAM into it and didn't correct it. I thought that it might have something to do with the selected CPU speed: it can be set for 8 MHz or 10 MHz . Perhaps the 120 ns RAM worked OK when the CPU was running at 8 MHz? Alas, I had tried that some time ago and it made no difference. So, whoever had this machine before me never had use of more than the original 512 KB. Perhaps they never figured it out... perhaps they didn't care. Who knows!

Anyway, this newfound 512 KB, in conjunction with a LoTech 1MB RAM card (I will write a separate post on this topic) , now delivers to the PowerMate 286:
- 640 KB of base RAM, expandable to 720KB if not running EGA graphics modes (vs. EGA text modes)
- 48 KB of UMBs
- 64 KB of HMA
- 340 KB of XMS-based SMARTDRV disk cache
... and little bits of UMB, HMA and XMS left over

Thanks again for all your inputs on this. I am happy to have achieved, with your help, success on this one!