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.