VOGONS


286 conventional memory woes

Topic actions

First post, by Dennis1959

User metadata
Rank Newbie
Rank
Newbie

Hey guys,

I have built a 286 and have been using emm286.exe as a memory manager, but I realized none of my drivers were going to devicehigh or LH
I downloaded QRAM, but Optimize wants Qram.sys, which is not in the directory. I tried installing it, and in the registration it's asking for a serial key. I tried a couple I found, but no luck
I prefer things that are automated, such as qram optimize, which will do all the needed config.sys and autoexec.bat mods automatically.

This system has been a headache since I started,.

Thanks, guys.

Reply 1 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

Depending on your chipset, you might be able to use Use!UMBS to enable upper memory blocks.

Which chipset, bios, and how much ram is present?

(Explaination)

Many 286 chipsets, especially OPTI and Chips&Tech ones, were designed to also supply EMS services. These chipsets can enable read/write mode on 'shadow ram' that they have mapped into the adapter rom, when told to do so.

Use!UMBS is a piece of vintage freeware that can set shadowram (defined in the bios) to read/write on supported chipsets, then tell DOS to use it as UMB.

To know if it will work for you, I need to know how much ram is installed, what chipset is present, and what flavor bios you have. (Phoenix, award, ami, dtk, whatev)

Reply 2 of 21, by Dennis1959

User metadata
Rank Newbie
Rank
Newbie

The chipset appears to be Citygate, Amibios, 4mb of RAM

Thank you for the quick response

Reply 3 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

That appears to be a sticker.

Can you peel the sticker off?

[EDIT]

I see what might be an ALI single chip controller, just to the left of the 8bit slot.

Can I get a very clear image of that chip?

Reply 4 of 21, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
Dennis1959 wrote on Yesterday, 17:53:

The chipset appears to be Citygate, Amibios, 4mb of RAM

Thank you for the quick response

Is a very nice motherboard, i have same, I already taaalk aabout this board before, you did not seaarch well jeje Zida TD60K vs ALD DAT203 REV. B

The attachment 20260911_203409.jpg is no longer available

There is not UMB driver, but a EMS driver, then you can use qram to create UMB from EMS. Whaat i did finally is a dual setup UMB+XMS and EMS, because win3.1 did not start with qram+ems sadly

this is my config, i have 4mb ram like you

[MENU] MENUITEM=XMS, Configuracion XMS MENUITEM=EMS, Configuracion EMS MENUCOLOR=7,0 MENUDEFAULT=XMS,2 […]
Show full quote

[MENU]
MENUITEM=XMS, Configuracion XMS
MENUITEM=EMS, Configuracion EMS
MENUCOLOR=7,0
MENUDEFAULT=XMS,2

[COMMON]
DOS=UMB,HIGH
BUFFERS=43
LASTDRIVE=G
STACKS=9,128

[XMS]
DEVICEHIGH=C:\DOS\G2MMC.SYS /M=64 /Z
DEVICEHIGH=C:\DOS\HIMEM.SYS
DEVICEHIGH=C:\DOS\QRAM\QRAM.SYS FL:0

[EMS]
DEVICEHIGH=C:\DOS\G2MMC.SYS /M=3000 /Z
DEVICEHIGH=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\QRAM\QRAM.SYS R:0

The attachment G2MMC.zip is no longer available
Last edited by theelf on 2026-09-11, 18:42. Edited 1 time in total.

Reply 5 of 21, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
wierd_w wrote on Yesterday, 17:56:
That appears to be a sticker. […]
Show full quote

That appears to be a sticker.

Can you peel the sticker off?

[EDIT]

I see what might be an ALI single chip controller, just to the left of the 8bit slot.

Can I get a very clear image of that chip?

the chipset is a heaadland HT18/C

Reply 6 of 21, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Here's some information for the old Headland HT12/A..
Headland HT12/A 286 chipset: UMB driver?
https://www.youtube.com/@dreambyte7926/search?query=headland
It's not exactly same thing, of course. But maybe it gives an idea.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 7 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

Once the emm driver is loaded (and puts ram at the pageframe address), you should be able to use Use!UMBS with the address of the pageframe as an argument, to make DOS turn it on as UMB.

No need for TLB.

Another trick might be to burn a slot for either a lotech 1mb ram card, (which you can turn specific banks on and off with, inside the UMA), or add a monochrome card that you then just dont use for anything except B000-B7FF.

That would let them have UMB and EMS at the same time.

(Lotech / MDAcard supplies UMB as hardware, chipset driver supplies EMS)

Last edited by wierd_w on 2026-09-11, 19:17. Edited 1 time in total.

Reply 8 of 21, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
Jo22 wrote on Yesterday, 18:53:
Here's some information for the old Headland HT12/A.. Headland HT12/A 286 chipset: UMB driver? https://www.youtube.com/@dreambyt […]
Show full quote

Here's some information for the old Headland HT12/A..
Headland HT12/A 286 chipset: UMB driver?
https://www.youtube.com/@dreambyte7926/search?query=headland
It's not exactly same thing, of course. But maybe it gives an idea.

No, 100% different beasts

Reply 9 of 21, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
wierd_w wrote on Yesterday, 19:13:
Once the emm driver is loaded (and puts ram at the pageframe address), you should be able to use Use!UMBS with the address of th […]
Show full quote

Once the emm driver is loaded (and puts ram at the pageframe address), you should be able to use Use!UMBS with the address of the pageframe as an argument, to make DOS turn it on as UMB.

No need for TLB.

Another trick might be to burn a slot for either a lotech 1mb ram card, (which you can turn specific banks on and off with, inside the UMA), or add a monochrome card that you then just dont use for anything except B000-B7FF.

That would let them have UMB and EMS at the same time.

(Lotech / MDAcard supplies UMB as hardware, chipset driver supplies EMS)

Too slow, I already tried hercules card to gain umb, and i get 15-20% slowdown

A friend of mine give to me a lotech card to test and slow too, not as much as hercules but in a 286 every % of cpu count!

Reply 10 of 21, by Jo22

User metadata
Rank l33t++
Rank
l33t++
theelf wrote on Yesterday, 19:16:
Jo22 wrote on Yesterday, 18:53:
Here's some information for the old Headland HT12/A.. Headland HT12/A 286 chipset: UMB driver? https://www.youtube.com/@dreambyt […]
Show full quote

Here's some information for the old Headland HT12/A..
Headland HT12/A 286 chipset: UMB driver?
https://www.youtube.com/@dreambyte7926/search?query=headland
It's not exactly same thing, of course. But maybe it gives an idea.

No, 100% different beasts

Hi, it's about the experience.
How to add the driver, use of USE!UMBS or The Last Byte manager etc.

PS: Using an EMS page frame as an 64 KB UMB might not be the wisest choice, maybe.
Because EMS can provide so much more memory in a meaningful way, if drivers and applications are used that take advantage of it.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 11 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie
theelf wrote on Yesterday, 19:21:
wierd_w wrote on Yesterday, 19:13:
Once the emm driver is loaded (and puts ram at the pageframe address), you should be able to use Use!UMBS with the address of th […]
Show full quote

Once the emm driver is loaded (and puts ram at the pageframe address), you should be able to use Use!UMBS with the address of the pageframe as an argument, to make DOS turn it on as UMB.

No need for TLB.

Another trick might be to burn a slot for either a lotech 1mb ram card, (which you can turn specific banks on and off with, inside the UMA), or add a monochrome card that you then just dont use for anything except B000-B7FF.

That would let them have UMB and EMS at the same time.

(Lotech / MDAcard supplies UMB as hardware, chipset driver supplies EMS)

Too slow, I already tried hercules card to gain umb, and i get 15-20% slowdown

A friend of mine give to me a lotech card to test and slow too, not as much as hercules but in a 286 every % of cpu count!

I am very surprised that a 16bits wide ISA card with 384kb of SRAM and DIP switches hasnt been made.

A 16bit MDA card should be just fine here, but the 1mb lotech would be slow due to being 8bits wide.

Reply 12 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie
Jo22 wrote on Yesterday, 19:27:
Hi, it's about the experience. How to add the driver, use of USE!UMBS or The Last Byte manager etc. […]
Show full quote
theelf wrote on Yesterday, 19:16:
Jo22 wrote on Yesterday, 18:53:
Here's some information for the old Headland HT12/A.. Headland HT12/A 286 chipset: UMB driver? https://www.youtube.com/@dreambyt […]
Show full quote

Here's some information for the old Headland HT12/A..
Headland HT12/A 286 chipset: UMB driver?
https://www.youtube.com/@dreambyte7926/search?query=headland
It's not exactly same thing, of course. But maybe it gives an idea.

No, 100% different beasts

Hi, it's about the experience.
How to add the driver, use of USE!UMBS or The Last Byte manager etc.

PS: Using an EMS page frame as an 64 KB UMB might not be the wisest choice, maybe.
Because EMS can provide so much more memory in a meaningful way, if drivers and applications are used that take advantage of it.

Or applications see EMS advertized, and clobber what's written on page 0. 😁

This is why I mentioned 2 other crazy things. MDA coexistence, *exclusively to use hardware supplied B000-B7FF* as UMB, and dropping in a lotech 1mb card with everything turned off, except unused bits of UMA, and telling use!umbs to turn it on.

The first would give you 32k of UMB from a display adapter you probably wouldnt ever use.

The second could give quite a lot more.

TheElf says both are slow though. I'd say it depends on what you loadhi there.

Reply 13 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

Out of curiosity, I looked to see if I could find the whitepaper for this chipset.

https://theretroweb.com/chip/documentation/he … bd080574730.pdf

A very simple program looks like it could forcibly turn on shadowram by writing some bytes to some magic io ports, according to page 75.

Such a program could be written in quickbasic even. (Use the OUT function, with an 8bit integer written to the appropriate IO port address)

In this case, writing a 0 to IOport 01ED tells the chipset to select control register 0 to be exposed on IOPort 01EF.

Then writing an 8bit integer sets a bitfield for this register.

Bit 0 = 'context selection' enable/disable
Bit 1 = '384k enable' enable/disable
Bit 2 = 'Global EMS' enable/disable
Bit 3 = 'Shadow enable E000-EFFF' enable/disable
Bit 4 = 'Shadow Enable F000-FFFF' enable/disable
Bit 5 & 6 = Dram bank count
Bit 7 = 'DRAM bank size' (0=256k, 1=1M)

So, one should FIRST read from IOport 01EF, grab the bottom 4 bits, then set the top 4 bits on a write, to turn chipset functions on and off. (After doing the requisite housekeeping)

The following is given for those bits:

Bit O: EMS Context Selection
1 = Alternate context. This bit operates in the same manner as bit D5 of Map
Address Register lEE except this determination of context is used during
Memory cycles.
0 = Standard context is selected

Bit 1: Global EMS
1= EMS Enabled. You must initialize the EMS registers before Bit 1 is set high.
0 = EMS Disabled

Bit 2: 384K Memory Relocation
l= Disables the extra 384K and usable as shadow RAM or as EMS.
0 = Enables 384K, Normally this address range, located between AOOOO and
FFFFFh is relocated above the IM border. This preserves the lower
addresses for system use.

Bit 3: Shadow Enable EOOOO and FEOOOO
1 = Shadow Disable
0 = Shadow Enable
The 64K page of DRAM that would have been located from EOOOO to
EFFFF in ROM is now enabled between 0EOOOO and 0EFFFF and is
duplicated at FEOOOO to FEFFFF. The ROM chip select will now be
disabled. Data should be written to this DRAM before enabling this bit.
Note: DRAM is write protected in this Range and is READ only

Bit 4: Shadow Enable FOOOO and FFOOOO
1 = Shadow Disable
0 = Shadow Enable
64K page of DRAM that would have been located from FOOOO to FFFFF
in ROM is now enabled between 0FOOOO to 0FFFFF and is duplicated at
FFOOOO to FFFFFF. ·nie ROM chip select will now be disabled. Data
should be written to this DRAM before enabling this bit.
Note: DRAM is write protected in this Range and is READ only

This suggests that shadowram cant be set read/write, and cannot be used for UMB.

HOWEVER.

It DOES say that before you enable it, the ram is accessible above 1mb, and what addresses are used. The shadowram function could be exploited with a custom loader to copy something to the writable address above 1mb, then turning the bit on.

Think something like 'ctload', except specific for this chipset.

OR, a special XUB diskette that copies the XTIDE XUB into the >1mb location, flips the shadow bit, then jumps execution.

Any number of fun ways to use this.

Does not help the OP, but maybe useful for the oldbies here.

Reply 14 of 21, by Jo22

User metadata
Rank l33t++
Rank
l33t++

This is why I mentioned 2 other crazy things. MDA coexistence, *exclusively to use hardware supplied B000-B7FF* as UMB, and dropping in a lotech 1mb card with everything turned off, except unused bits of UMA, and telling use!umbs to turn it on.

Good idea! 🙂👍 I hope it works.
In the past, I've never got my Hercules compatible cards to offer their 64 KB of RAM to UMBs. 😟
Umbherc.sys requirements ?
I guess I would have needed a real Hercules board, maybe.
But maybe an MDA UMB driver can use those 4 KB of MDA, maybe.
Never tried this before.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 15 of 21, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie
Jo22 wrote on Yesterday, 21:29:
Good idea! 🙂👍 I hope it works. In the past, I've never got my Hercules compatible cards to offer their 64 KB of RAM to UMBs. 😟 U […]
Show full quote

This is why I mentioned 2 other crazy things. MDA coexistence, *exclusively to use hardware supplied B000-B7FF* as UMB, and dropping in a lotech 1mb card with everything turned off, except unused bits of UMA, and telling use!umbs to turn it on.

Good idea! 🙂👍 I hope it works.
In the past, I've never got my Hercules compatible cards to offer their 64 KB of RAM to UMBs. 😟
Umbherc.sys requirements ?
I guess I would have needed a real Hercules board, maybe.
But maybe an MDA UMB driver can use those 4 KB of MDA, maybe.
Never tried this before.

From the Use!UMBS documentation:

Anyway, let's go for it: If TEST!UMB showed that you have RAM outside the D000-EFFF range, that RAM may be of three kinds: (1) […]
Show full quote

Anyway, let's go for it:
If TEST!UMB showed that you have RAM outside the D000-EFFF
range, that RAM may be of three kinds:
(1) Completely free RAM - not used by the videocard or by any
other program. This is good news: you can use it as a UMB
without any problems - you only have to patch the addres-
ses into USE!UMBS.SYS.
(2) Graphics VideoRAM - this is only used by the video system
when you are working in graphics mode. If you don't use
graphics, you may use this RAM as a UMB. Beware to boot
your computer without USE!UMBS.SYS if you intend to use
graphics programs! (It won't damage anything, though,
your computer will simply hang once it switches to grap-
hics mode.)
(3) Text VideoRAM - sorry, but you really can't use this. If
you would, then how could you get anything on the screen?

==============================================================

USE!UMBS Documentation Page 8
==============================================================

Finding out to which of the three categories your RAM belongs
is complicated: it depends on your videocard. I will try and
describe as well as I can what ranges each videocard uses. As
said above: you can use any range as long as it doesn't inclu-
de the Text Range; and you may use the Graphics Range, but
only if you don't switch to graphics mode. Read the Advice
carefully - but note that this doesn't guarantee anything!
(Thanks to Eef Hartman for the information about addresses.)

Monochrome Display Adapter (MDA)
TEXT : B000-B0FF (4K)
GRAPHICS : None (0K)
ADVICE This is a very old-fashioned one. It was in the
original IBMs. It can't do any graphics, only text.
So if you appear to have *any* RAM outside the text
range specified above: use it.

Color Graphics Adapter (CGA)
TEXT : B800-B8FF (4K)
GRAPHICS : B800-BBFF (16K)
ADVICE If there is any RAM outside the graphics range
(B800-BBFF) then that RAM is not used by the CGA
adaptor, and you may problemlessly use it.
If you want to use the graphics range, take care:
this may give problems since the CGA adapter often
uses it as 4 pages of text.

Hercules Adapter
TEXT : B000-B0FF (4K)
GRAPHICS : B000-BFFF (64K) full
or : B000-B7FF (32K) half
ADVICE If there is any RAM outside the graphics range
(B000-BFFF) then that RAM is not used by the Hercu-
les adaptor, and you may problemlessly use it.
If you want to use the graphics range, take care:
the hercules adapter may use the first half of its
RAM (B000-B7FF) to store several text pages. So if
you want to use the graphics range, use B800-BFFF.
If you have a half (1 page) hercules, then you don't
have that range.

4. Patching in the addresses

This is the hardest bit. As I mentioned before, I wrote this
driver for the Philips 35xx series, so it will by default only
manage the block from D000 until EFFF. If you don't have that
entire block at your disposal, you will have to change some
code in the file. I will describe below how you can patch in
the adresses using the DEBUG program, which you will have,
since it came with the MS-DOS package.

First of all, you need to know the addresses of the block(s)
you want to patch in. The maximum number of separate blocks
you can patch in is three. I don't think you will need more
than that; if you think you do, contact me, and I can fix it
for you. (As long as the RAM is contiguous, you can specify it
in one block, however long the contiguous block is.)

Once you know the starting and the ending address of a block,
you should calculate its length (in paragraphs). How do you do
that? You simply subtract the beginning address from the end
adress, USING HEXADECIMAL CALCULATION. [Hex calculation goes
just like decimal calculation, only that the numbers 10
through 15 are changed to A through F]

==============================================================

USE!UMBS Documentation Page 10
==============================================================

Some examples:

End address : AFFF BFFF BBFF E7FF EFFF EFFF
Begin address : A000 B800 B0FF E000 D7FF D000
------------- - ---- ---- ---- ---- ---- ----
Length : 0FFF 07FF 0B00 07FF 1800 1FFF

So, what you do is (just as with decimal calculation): go from
right to left and each time subtract two digits. If you have
to `borrow' you can do so. Keep in mind that e.g. F-7=8 (bec-
ause 15-7=8) and that 10-8=8, because 16-8=8.

Ok, now you must patch the starting address and the length of
each block into USE!UMBS.SYS. Only ... there is a twist now:
both values have to be reversed bytewise before being patched
in. It's best to explain this using an example: suppose you
have a block, which starts at B800 and has length 07FF, then
you reverse the bytes as follows:

Address Length
B8 00 07 FF
\ / \ /
/ \ / \
00 B8 FF 07

So, the sequence B800 07FF becomes 00 B8 FF 07. And this is
the sequence we will patch in. If you have more blocks, trans-
pose them in the same way, and append them to this sequence.
(But *never* more than three blocks in total!!!)

Then startup the debug program with the following command:

DEBUG USE!UMBS.SYS

and debug will report with its prompt:
-
(if this doesn't happen: make sure debug is in the search path
and use!umbs.sys is in the current directory. You can type Q
to exit from debug).

Now type:

-E153

(don't type the hyphen, and finish with carriage return)
and debug will say this

xxxx:0153 00._

==============================================================

USE!UMBS Documentation Page 11
==============================================================

Now, type the first byte of your sequence, and finish with a
SPACE, NOT A CARRIAGE RETURN!!!. So, if your first byte was
(for example) AB, you will now see something like this:

xxxx:0153 00.AB D0._

Now, type the next byte, AGAIN FOLLOWED BY A SPACE, NOT A
CARRIAGE RETURN! And keep on doing this until you have entered
the whole sequence (which amounts to 4 bytes for one block, 8
bytes for two blocks, 12 for three blocks). After having
completed this, STILL DON'T PRESS CARRIAGE RETURN, but enter
another four bytes, all with value 00, every time using the
spacebar to move to the next. (These 00-bytes signal the end
of the list.)

If you have done that, you may now finally press RETURN to get
back to the debug-prompt. If you made any mistakes, you can
now press Q to quit without changes, but if everything went
alright, press W to write away the changes. (And afterwards Q
to exit the programme.)

Well, that was it... Now you can continue to the next section
and finally install USE!UMBS.SYS.

It will require some massaging of Use!UMBS to enable the block, but since we are using coexistence, and using a color video card with its own BIOS routines (which dont do anything at all with the MDA, and which do not overlap the MDA in any meaningful way), having the MDA present will just have it expose some IO ports and some memory addresses.

The ones we are interested in, are B000-B0FF. Which will be backed by actual ram, in the "Unused" MDA card.

After patching Use!UMBS, we should be able to use the 4k RAM there as UMB.

Please note:
This can only work with an MDA card, and a CGA card.

EGA and VGA overlap the MDA text region. Sadly.

CGA and MDA can coexist.

CGA and (Half memory) Hercules, can coexist.
https://forum.vcfed.org/index.php?threads/any … ga-cards.63834/
If you threw in a half memory hercules (which seems a waste) you could get 32k block at B000-B7FF.

The lotech card is the far better option, IMO, but you might be able to get some of DOS high with an MDA card using this trick.

Reply 16 of 21, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
wierd_w wrote on Yesterday, 21:41:
From the Use!UMBS documentation: […]
Show full quote
Jo22 wrote on Yesterday, 21:29:
Good idea! 🙂👍 I hope it works. In the past, I've never got my Hercules compatible cards to offer their 64 KB of RAM to UMBs. 😟 U […]
Show full quote

This is why I mentioned 2 other crazy things. MDA coexistence, *exclusively to use hardware supplied B000-B7FF* as UMB, and dropping in a lotech 1mb card with everything turned off, except unused bits of UMA, and telling use!umbs to turn it on.

Good idea! 🙂👍 I hope it works.
In the past, I've never got my Hercules compatible cards to offer their 64 KB of RAM to UMBs. 😟
Umbherc.sys requirements ?
I guess I would have needed a real Hercules board, maybe.
But maybe an MDA UMB driver can use those 4 KB of MDA, maybe.
Never tried this before.

From the Use!UMBS documentation:

Anyway, let's go for it: If TEST!UMB showed that you have RAM outside the D000-EFFF range, that RAM may be of three kinds: (1) […]
Show full quote

Anyway, let's go for it:
If TEST!UMB showed that you have RAM outside the D000-EFFF
range, that RAM may be of three kinds:
(1) Completely free RAM - not used by the videocard or by any
other program. This is good news: you can use it as a UMB
without any problems - you only have to patch the addres-
ses into USE!UMBS.SYS.
(2) Graphics VideoRAM - this is only used by the video system
when you are working in graphics mode. If you don't use
graphics, you may use this RAM as a UMB. Beware to boot
your computer without USE!UMBS.SYS if you intend to use
graphics programs! (It won't damage anything, though,
your computer will simply hang once it switches to grap-
hics mode.)
(3) Text VideoRAM - sorry, but you really can't use this. If
you would, then how could you get anything on the screen?

==============================================================

USE!UMBS Documentation Page 8
==============================================================

Finding out to which of the three categories your RAM belongs
is complicated: it depends on your videocard. I will try and
describe as well as I can what ranges each videocard uses. As
said above: you can use any range as long as it doesn't inclu-
de the Text Range; and you may use the Graphics Range, but
only if you don't switch to graphics mode. Read the Advice
carefully - but note that this doesn't guarantee anything!
(Thanks to Eef Hartman for the information about addresses.)

Monochrome Display Adapter (MDA)
TEXT : B000-B0FF (4K)
GRAPHICS : None (0K)
ADVICE This is a very old-fashioned one. It was in the
original IBMs. It can't do any graphics, only text.
So if you appear to have *any* RAM outside the text
range specified above: use it.

Color Graphics Adapter (CGA)
TEXT : B800-B8FF (4K)
GRAPHICS : B800-BBFF (16K)
ADVICE If there is any RAM outside the graphics range
(B800-BBFF) then that RAM is not used by the CGA
adaptor, and you may problemlessly use it.
If you want to use the graphics range, take care:
this may give problems since the CGA adapter often
uses it as 4 pages of text.

Hercules Adapter
TEXT : B000-B0FF (4K)
GRAPHICS : B000-BFFF (64K) full
or : B000-B7FF (32K) half
ADVICE If there is any RAM outside the graphics range
(B000-BFFF) then that RAM is not used by the Hercu-
les adaptor, and you may problemlessly use it.
If you want to use the graphics range, take care:
the hercules adapter may use the first half of its
RAM (B000-B7FF) to store several text pages. So if
you want to use the graphics range, use B800-BFFF.
If you have a half (1 page) hercules, then you don't
have that range.

4. Patching in the addresses

This is the hardest bit. As I mentioned before, I wrote this
driver for the Philips 35xx series, so it will by default only
manage the block from D000 until EFFF. If you don't have that
entire block at your disposal, you will have to change some
code in the file. I will describe below how you can patch in
the adresses using the DEBUG program, which you will have,
since it came with the MS-DOS package.

First of all, you need to know the addresses of the block(s)
you want to patch in. The maximum number of separate blocks
you can patch in is three. I don't think you will need more
than that; if you think you do, contact me, and I can fix it
for you. (As long as the RAM is contiguous, you can specify it
in one block, however long the contiguous block is.)

Once you know the starting and the ending address of a block,
you should calculate its length (in paragraphs). How do you do
that? You simply subtract the beginning address from the end
adress, USING HEXADECIMAL CALCULATION. [Hex calculation goes
just like decimal calculation, only that the numbers 10
through 15 are changed to A through F]

==============================================================

USE!UMBS Documentation Page 10
==============================================================

Some examples:

End address : AFFF BFFF BBFF E7FF EFFF EFFF
Begin address : A000 B800 B0FF E000 D7FF D000
------------- - ---- ---- ---- ---- ---- ----
Length : 0FFF 07FF 0B00 07FF 1800 1FFF

So, what you do is (just as with decimal calculation): go from
right to left and each time subtract two digits. If you have
to `borrow' you can do so. Keep in mind that e.g. F-7=8 (bec-
ause 15-7=8) and that 10-8=8, because 16-8=8.

Ok, now you must patch the starting address and the length of
each block into USE!UMBS.SYS. Only ... there is a twist now:
both values have to be reversed bytewise before being patched
in. It's best to explain this using an example: suppose you
have a block, which starts at B800 and has length 07FF, then
you reverse the bytes as follows:

Address Length
B8 00 07 FF
\ / \ /
/ \ / \
00 B8 FF 07

So, the sequence B800 07FF becomes 00 B8 FF 07. And this is
the sequence we will patch in. If you have more blocks, trans-
pose them in the same way, and append them to this sequence.
(But *never* more than three blocks in total!!!)

Then startup the debug program with the following command:

DEBUG USE!UMBS.SYS

and debug will report with its prompt:
-
(if this doesn't happen: make sure debug is in the search path
and use!umbs.sys is in the current directory. You can type Q
to exit from debug).

Now type:

-E153

(don't type the hyphen, and finish with carriage return)
and debug will say this

xxxx:0153 00._

==============================================================

USE!UMBS Documentation Page 11
==============================================================

Now, type the first byte of your sequence, and finish with a
SPACE, NOT A CARRIAGE RETURN!!!. So, if your first byte was
(for example) AB, you will now see something like this:

xxxx:0153 00.AB D0._

Now, type the next byte, AGAIN FOLLOWED BY A SPACE, NOT A
CARRIAGE RETURN! And keep on doing this until you have entered
the whole sequence (which amounts to 4 bytes for one block, 8
bytes for two blocks, 12 for three blocks). After having
completed this, STILL DON'T PRESS CARRIAGE RETURN, but enter
another four bytes, all with value 00, every time using the
spacebar to move to the next. (These 00-bytes signal the end
of the list.)

If you have done that, you may now finally press RETURN to get
back to the debug-prompt. If you made any mistakes, you can
now press Q to quit without changes, but if everything went
alright, press W to write away the changes. (And afterwards Q
to exit the programme.)

Well, that was it... Now you can continue to the next section
and finally install USE!UMBS.SYS.

It will require some massaging of Use!UMBS to enable the block, but since we are using coexistence, and using a color video card with its own BIOS routines (which dont do anything at all with the MDA, and which do not overlap the MDA in any meaningful way), having the MDA present will just have it expose some IO ports and some memory addresses.

The ones we are interested in, are B000-B0FF. Which will be backed by actual ram, in the "Unused" MDA card.

After patching Use!UMBS, we should be able to use the 4k RAM there as UMB.

Please note:
This can only work with an MDA card, and a CGA card.

EGA and VGA overlap the MDA text region. Sadly.

CGA and MDA can coexist.

CGA and (Half memory) Hercules, can coexist.
https://forum.vcfed.org/index.php?threads/any … ga-cards.63834/
If you threw in a half memory hercules (which seems a waste) you could get 32k block at B000-B7FF.

The lotech card is the far better option, IMO, but you might be able to get some of DOS high with an MDA card using this trick.

You can get up to 32kb of UMB with MDA clone cards B0000-B7FFF, 64kb is not possible because second half ram is on ega/vga memory space, original hercules have 4kb. You can get 4kb too on CGA cards i think

Reply 17 of 21, by Dennis1959

User metadata
Rank Newbie
Rank
Newbie

Thank you, guys, for all of the replies, and for the zip file for QRAM,

I ran QRAM optimize and got 423k, but using my normal startup, I get 453k of usable RAM,

This has been an adventure getting this 286 running; everything is booting from a 1.44 floppy, hoping the 1.2 SCSI drive coming by mail, will work as my C:. For now, the ISA2USB card is my C :\ drive; the SyQuest is D:, and the SCSI CD-ROM is F:, as when the hard drive gets here and works, all the drive letters will move up by 1

I had a working IDE drive but dropped it, and now it does not work anymore; funny how mechanical drives will do that.

I wanted a zip100 because I had one many years ago for my 486, and I have 4 of them that worked for a day or two and developed the click of death, so I tried the SyQuest ez135, and what do ya know, it works great.

My intent was to make a super 286 with all the bells and whistles. I am thinking that if I get the SCSI hard drive up and going of calling it done.

Thank you for all the help and suggestions.

Reply 18 of 21, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
Dennis1959 wrote on Today, 00:47:
Thank you, guys, for all of the replies, and for the zip file for QRAM, […]
Show full quote

Thank you, guys, for all of the replies, and for the zip file for QRAM,

I ran QRAM optimize and got 423k, but using my normal startup, I get 453k of usable RAM,

This has been an adventure getting this 286 running; everything is booting from a 1.44 floppy, hoping the 1.2 SCSI drive coming by mail, will work as my C:. For now, the ISA2USB card is my C :\ drive; the SyQuest is D:, and the SCSI CD-ROM is F:, as when the hard drive gets here and works, all the drive letters will move up by 1

I had a working IDE drive but dropped it, and now it does not work anymore; funny how mechanical drives will do that.

I wanted a zip100 because I had one many years ago for my 486, and I have 4 of them that worked for a day or two and developed the click of death, so I tried the SyQuest ez135, and what do ya know, it works great.

My intent was to make a super 286 with all the bells and whistles. I am thinking that if I get the SCSI hard drive up and going of calling it done.

Thank you for all the help and suggestions.

The best you can use is a CF card, forget about mechanical drivers, scsi or whatever

In my 286 i have a 16GB CF card, more than enough for store whatever i need, and a IDE>SD for moving data from my modern PC to 286

Reply 19 of 21, by Dennis1959

User metadata
Rank Newbie
Rank
Newbie

I have bought 2, I still have 512mb cf card but the thing kept comming up system halted basic something or other, I bought a fiffernt adaptor, same thing system halted, I went looking for an XTIDE card but they are sold out on ebay and my hands are really deformed from arthritus so even though I have the stuff to put a kit together I just don't want to try. That why I dropped the hard drive 🤣