VOGONS


First post, by TjLaZer

User metadata
Rank Newbie
Rank
Newbie

I recently got a nice Commodore PC-40 III 286 and I added a CF IDE , 3.5" 1.44MB Chinon FZ-357 drive, 287 coprocessor and Soundblaster 4170! I am now trying to squeeze out as much memory as I can.

I was able to set DOS=HIGH and am now getting 611k free with a Mouse driver loaded which takes 10k (Bus mouse for Amiga mouse port!)

Since I have 1MB, there is 384k XMS memory, how can I use this memory? Is it available to programs? Is it possible to use it as UMB? I looked at a few memory managers and it seems my chipset might not be supported. I guess it's a Western Digital Faraday FE3020 or something. Not sure which chip on the MB is the main chipset number to use. Anyone been able to do this with this particular PC from Commodore?

Next thing I am going to do is add a 16-bit 2MB EMS memory card.

Reply 1 of 2, by Ryccardo

User metadata
Rank Member
Rank
Member
TjLaZer wrote on 2024-07-30, 03:22:

there is 384k XMS memory, how can I use this memory?

For the most part you don't actively manage it, unlike with memory accessible in real mode (first MB of address space + HMA) 😀

TjLaZer wrote on 2024-07-30, 03:22:

Is it available to programs?

Yes, but there are various possible and non-interchangeable ways they could use it:

- with Int15 commands (lowest common denominator in compatibility being the only official way when the AT launched, relatively rather slow, it can only be used as "swap" for conventional memory, good enough for ramdisks though and that would likely be the most common use);

- with an XMS manager (like HIMEM), which fundamentally takes reservations for blocks of expansion memory* and proxies access to it for real mode software, so this is also "swap"/memory-copy based even if souped up in features and performance [it couldn't be otherwise as, again, real mode is limited to 1 MB of address space (plus the HMA with notorious tricks)] - and also implements in a comparable reservations for the HMA; → http://www.phatcode.net/res/219/files/xms20.txt

* classic gotcha that will throw your off - EXPANSION memory is the one above the HMA and an XMS manager will let you use it as EXTENDED memory = XMS, all concepts that have little to do with EXPANDED memory = EMS 😀

- with a 32-bit DPMS extender - of course that doesn't work on a 286;

- with a 16-bit DPMS extender, that uses the 286's relatively unpopular protected mode, but is effective for getting full 24-bit linear addressing and therefore direct access to all RAM!

TjLaZer wrote on 2024-07-30, 03:22:

Is it possible to use it as UMB? I looked at a few memory managers and it seems my chipset might not be supported. I guess it's a Western Digital Faraday FE3020 or something. Not sure which chip on the MB is the main chipset number to use

Traditionally it's the lowest numbered one, but there's no hard rule about this and guess what?! This is one of the exceptions, FE3000 + FE3010 + FE3020 + FE3030 = FE3400 ! → http://philip-searle.me.uk/page/grid/faraday-chipsets.html
And going by what that page implies, the FE3020 doesn't support address remapping unlike the FE3021 (which supports LIM 4.0, an EMS standard)...

Since a 286 doesn't have an hardware memory mapper, and your chipset is likely fixed to split RAM away from the UMA to helpfully avoid waste (check carefully the jumpers & BIOS options to be sure, but I bet that if there's another option at all it would be 512k + XMS, not straight linear mapping), you can't have EMS or UMBs using only what's integrated on your motherboard (unless you want to temporarily downgrade the graphics and repurpose some VRAM)...

...but you can indeed add memory in the upper memory area (with an EMS card if you want that, or with a not-too-plain RAM card if you don't really care for EMS*) and then force-map it as UMBs with an appropriate driver 😀

* to help you choose:

When the 286 stopped being a total luxury and started selling [otherwise said: when last-gen established, "cheap" 8086-compatibles were the "mass" market PCs and also what businesses already bought, detracting from the use of XMS] would be when EMS was at the peak of its popularity, on the other hand EMS has a reputation for being a hackjob designed by and for Lotus 123 so not that much software benefits from it, while comparatively more stuff can be "loaded high" (which of course means UMB and not HMA...)

Reply 2 of 2, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

In the case of this system, the 384k you are referring to is "NOT MAPPED".

That is to say, the normal memory map of a DOS PC looks like this

0kb <--Base Memory-->640kb<--Upper Memory Area / Adapter ROM Region, 384kb of address space-->HMA<-->1MB<--Extended Memory-->

Within the Adapter Rom / Upper Memory Area, you have this breakdown, usually.

Monochrome display adapter ROM and RAM area, (Ram area starts at B000, and ends at B7FF), CGA/EGA/VGA bios area (C000 through CC00 usually, but can go all the way through to CFFF) Then a chunk that is "Free" between D000 and EFFF, but which usually contains disk controller drivers or BIOS. Then, finally the system ROM BIOS at F000-FFFF

The chunk between D000 and EFFF is "Not mapped". That is to say, the addresses there have "Nothing attached to them."

They are reserved for any system option roms you might have/need, and any kind of EMS Ram Solution you might install.

Your 286's memory mapping then likely looks like this:

640k<->Adapter Region<->384kb Extended

with the 384k extended being "Above 1mb", and thus not accessible to DOS.
Your system's chipset might have functions to remap the Extended memory into the unused areas of the Adapter Rom region, but this is very chipset specific. the 286 lacks an MMU, and thus cannot remap the pages directly itself, like a 386 can.

To get UMB there, you need something that can supply RAM in that unused space. Something like a LoTech memory card/EMS card. (which can be configured to just present as UMB in the under 1mb address space.) You will need to tell DOS to turn it on, with something like HIRAM.SYS

The small chunk in the monochrome display buffer area can probably be turned on with hiram.sys with just a VGA card installed. IIRC, it's some 16kb in size?