VOGONS


First post, by perhenden

User metadata
Rank Member
Rank
Member

This question is about using a memory extender card on a PC-XT clone (Amstrad PC1640, 8088).
My goal is to have more free memory available for DOS programs.
EDIT: Using MS-DOS 6.22.

The card is Everex Maxi Magic EMS EV-165A, driver version is 3.22.
The vendor's configuration tool reports the card as functioning well.
The EMS driver (emm.sys) is loaded in config.sys and reports OK status on boot.
The machine has an added VGA card.

Still, I don't see the "Total Expanded (EMS) " in the 'mem' command under MS-DOS. Should this line be expected?
EDIT: the XT doesn't support memory above 1MB, so I'll have to claim some of the UMB memory normally reserved for ROMS, and map the EMS memory to that range.

Will I need special parameters to say that the EMS memory should start at 0xCC000? Using the 'page' directive below?

From the documentation:

Expanded Memory Manager EMM.SYS

Version 3.22

(C) Copyright Everex Systems, Inc. 1986, 1987

To boot up the system with the Expanded Memory Manager, insert the
following device driver entry in your CONFIG.SYS file:

DEVICE=[path\]EMM.SYS [/C] [pppp] [[port,page] ...]

Where

[] indicates an optional item.

/C directs EMM.SYS to chain interrupt vector 67H. Chainning
permits software that uses vector 67H for other purpose
to coexist with Expanded Memory Manager.

pppp tells EMM.SYS where to start searching for a valid page frame.
The page frame is the starting address of the EMS memory mapping
window. The pppp can be C400, C800, CC00, D000, DC00, or E000
(value in hexadecimal). C400 is the default value if pppp is not
specified.

port is the port address used to control the board.
port can be 208, 218, 258, 268, 2A8, 2B8, or 2E8
(value in hexadecimal).

page is the starting logical page on the board that supports
Expanded Memory. page ranges from 00 to 7F (value in hexadecimal).

Last edited by perhenden on 2020-08-24, 07:15. Edited 2 times in total.

Reply 1 of 3, by Horun

User metadata
Rank l33t++
Rank
l33t++

First: which version of DOS are you using ? Second: Expanded Memory is different than Upper Memory, you want Upper Memory/UMB and a version of DOS that can "loadhigh". You cannot "loadhigh" into EMM, it is only useful with apps that use expanded ram. DOS 5 was the first version that could do that, also DOS 5 "MEM " command to report memory useage is very weak/limited compared to DOS 6.x. If your card and it's driver cannot supply UMB and/or EMM then you need an alternative.

Hate posting a reply and then have to edit it because it made no sense 😁 First computer was an IBM 3270 workstation with CGA monitor. Stuff: https://archive.org/details/@horun

Reply 2 of 3, by perhenden

User metadata
Rank Member
Rank
Member
Horun wrote on 2020-08-23, 22:52:

If your card and it's driver cannot supply UMB and/or EMM then you need an alternative.

Thanks! That increases my understanding:
what I need is to map some expanded memory to the UMB-area, so that the XT CPU can use it.
The UMB region 0xCC0000 -> 0xEFFFF is available for this, on my machine, it seems.
The EMS driver from Everex should then have the 'pppp' value set to 'cc00' to stop it from putting anything in the used area where the ROM for fonts and harddisk controller is stored.

I'm unsure if the EMS driver does this mapping to UMB, I'll re-read the documentation to check, but my guess is it doesn't.
Quarterdeck QRAM [1,2] is probably the solution for me, and maybe the dos-up.sys from QEMM to load DOS in UMB as well.

[1] https://winworldpc.com/product/qram/2x
[2] ftp://ftp.informatik.uni-stuttgart.de/pub/cm/ … erdeck_qram.pdf

Reply 3 of 3, by perhenden

User metadata
Rank Member
Rank
Member

A hardware error popped ut with the EMS board: "Parity error occured....system halted$"
Afterwards, the board fails to initialize, even with the same parameters that worked before.
Apparently, something broke after being used for a while.
I could try moving some of the memory chips on the board around, as I won't use the higher 256KB bank, and this way perhaps I'll end up with 256KB that works, and reconfigure the DIP switch on the board to say 256KB installed.

For future reference, my plan was to do this in config.sys:
device=c:\everex\ems.sys
device=c:\qram\qram.sys exclude=C000-CFFF
(possibly device=c:\qram\qram.sys exclude=C000-CFFF FRAMELENGTH=0, depending on support)
and then use the QRAM provided loadhigh software to load some TSRs into UMB.