• Please review our updated Terms and Rules here

Use UMB on Olivetti M24(SP)

freakedenough

Experienced Member
Joined
Jul 30, 2016
Messages
93
Location
Vienna, AT
How do I make use of UMBs on my M24SP?
There are obviously unused UMB available:
A000-B7FF
C000-D7FF
DC00-EFFF

But when I try to load USE!UMBS.SYS 2.2. on DOS 4.01 and then DOSMAX, my system will just freeze with a blinking cursor when DOSMAX should be loaded. It continues booting as normal if I exclude DOSMAX.
Same for DOS 5.00, but directly after loading USE!UMBS.SYS, so cause of crash is USEUMB. I found both tools in this thread.
I added it to config.sys in these 3 ways, all with no luck:
Code:
DEVICE=USEUMBS.SYS A000-B7FF C000-D7FF DC00-EFFF
or
DEVICE=USEUMBS.SYS A000-B000 C000-D000 E000-F000
or
DEVICE=USEUMBS.SYS A000-AFFF C000-CFFF E000-EFFF
However, if I choose to use UMB segment B800-BFFF it continues (under DOS5) at least to DOSMAX.EXE and then crashes because it writes into video memory, showing me garbage on the screen as expected.

So my question is why are all the free blocks unusable? Did I miss something?

 
Last edited:
Um... I'm confused. Did you actually install physical memory into those locations? I don't know what program you're displaying the output from there, but according to the key "black" is "Available", not "RAM". I'm pretty sure "Available" in this context means "you can put RAM here if you have the means", not "This is RAM that's available for you to use." unless there's something about the M24 I don't know. All USE!UMB.SYS does is set up means for a himem.sys replacement like DOSMAX to identify that RAM that's mapped into that space is usable, it itself doesn't *put* memory there. You need either a hardwired memory card or a suitable EMS 4.0 mapper to actually fill up those spaces.
 
How do I make use of UMBs on my M24SP?
There are obviously unused UMB available:
A000-B7FF
C000-D7FF
DC00-EFFF

Did you add a memory board that puts memory there? If not, you have no memory there.

The M24/6300 EEMS board can put memory in the A000-B7FF area if you run QRAM. I expanded DOS memory to 736K on my 6300 this way.
 
The XTIDE and other cards with roms use a portion of upper memory space . The card has a rom (read only memory) and that rom must be addressed in the upper region. Upper memory regions can also be used for ram(random access memory) but the physical memory must be there and addressed to a region that doesn't conflict with any roms or other ram. I'm sure others here can describe it better but as was previously mentioned, your machine did not come with ram in the upper region.
 
Nope? Shouldnt it be there for Addon Card ROMs which may want/need to use it?

I think you're misunderstanding how memory works in these machines. For instance:

Why do I see D800 used by my XTIDE then?

You see this because the XTIDE card has a physical ROM chip on it, and also has some decoder circuitry that monitors the address lines on the expansion bus so when they indicate that the CPU is looking at the address range where you want the chip to reside it "enables" that physical ROM chip so it replies to READ commands issued by the CPU (communicated by pulling a control line low) by asserting the contents of the referenced byte of memory onto the data bus. No "resource" supplied by the computer itself is involved here other than the bus drivers, the memory lives on the card.

The same will have to be the case if you want to use upper memory blocks in this machine. It has, at most, 640k soldered onto the motherboard, that's it, and some ROM up high. If you want RAM between, say, C0000 and D8000, you'll need to place a memory card into a slot that has address decoding for that range on it that likewise enables RAM chip(s) on said expansion card to respond to read/write commands. Something like this, or a card like the one Trixter mentioned that has EEMS/LIM 4.0 hardware capable of mapping memory to arbitrary locations in addition to an EMS page frame.
 
... or to put it another way, it seems like you're assuming that the base M24 has more than 640k to work with, that the machine has the hardware to arbitrarily move memory around to fill gaps (or shadow ROM contents), and that USE!UMB.SYS would be the driver you'd use to implement this. None of those are true.
 
Gosh, I've never seen such a dumbass noob like me in my whole life. Thanks for the explanation. I always believed that there is always memory between 640k-1m which is reserved for filling it with ROM data. Will try to find a Lotech card then.
 
Before you get a memory card, you should research what it is you'll be running on your M24. If you're not going to be running anything that has extremely high (for the system) memory requirements, or anything that doesn't support EMS, you don't need to add more memory beyond 640K.
 
If you get the Lo-tech card you'll probably want to see if you can set the jumpers on your XTIDE to put the BIOS in the C-page (or move it up to the E-page) so you can get a contiguous 128k of UMB between either D000-EFFF or C000-DFFF; it's more awkward to make full use of upper memory blocks if they're split. (Also note the Lo-Tech card is limited to a 64k granularity so you can't fill, say, 32k gaps.) It will also let you fill A000-AFFF which with the right driver you might be able to make contiguous with base RAM. Note that all this RAM will be somewhat slower than what's built into the machine because the M24 has full 16 bit access to that while RAM/ROM in an 8-bit slot takes an additional couple machine cycles to access.

And like Trixter says, it's worth checking to see if you're really going to benefit from it. The main use case for upper memory on my XT, other than because I can, is to make more room for network drivers. Without that or other kind-of-atypical things you're probably fine without it.
 
B000 is typically where monochrome video ram lives, and because of that, it could cause issues with software that probe around with that expectation if you actually try to put an adapter ROM there. Non-video adapters should go in C000, D000, or E000.
 
I'd be kind of surprised if a typical PC BIOS would even probe for a BIOS extension under C000, but I guess that could be a thing where your mileage may vary.

I actually have the XTIDE BIOS residing at F000 on my Tandy 1000 HX, but I used dark hackery to make that happen.
 
Talking about video RAM...

There is indeed one piece of memory that the M24 has that most CGA PCs don't, namely the additional 16KiB of memory used for the 640x400 pixel monochrome mode.
I'm not entirely sure how the M24's video hardware behaves in normal CGA modes, i.e. if the additional RAM between BC000 and BFFFF remains visible, but allocating that 16KiB block as UMB might be worth a try.
It's not much, but it's "free".
 
Since one of the charms of the M24 line is the 640x400 mode, I'd personally be hesitant to do that. Losing that mode, and the software that supports it, doesn't seem worth gaining up to 16K. I'd rather reduce BUFFERS in config.sys first, or only load a mouse driver on demand.
 
Also of theoretical concern is it's my vague recollection that CGA memory isn't actually fully decoded, that the 16k of memory actually shows up twice between B800 and BFFF, and supposedly there were a few odd pieces of software that leveraged the "rollover" for hardware scrolling, etc.

(Edit: I don't know if the 6300 actually replicates this behavior or not. The Tandy 1000 does in text and CGA graphics modes, I know that.)
 
The 6300 replicates that from a display standpoint; displaying data after 16K wraps around. You have to turn on the additional page before it won't wrap at 16K. So you could write to the second 16K and not worry about it showing up on the display if the start address register gets set to a high value.
 
Just 16k for a UMB would be pretty useless anyway, at least if it was all that you had. Adding the driver necessary to access it its going to add a K or two of overhead, and even if you could get it to work without conflicting with conventional CGA modes, well, you're now stuck with conventional CGA. That's a massively lousy tradeoff if the reason you're looking to free memory is to run a GUI.
 
so after all i got it working using pc-dos 5.0 and a microram ram card i bought on ebay. good things take time. i dint quite understand there there was no physical ram between 640kb and 1mb. i alaways believed that there IS physical memory but it is reserved for option roms which are loaded into this area.

Code:
//CONFIG.SYS
DEVICE=C:\DOS\USE!UMBS.SYS A000-B000 C000-D000 E000-F000
DEVICE=c:\DOS\DOSMAX.EXE /R+ /N+ /P- /M1
DOS=UMB,HIGH
SHELL=C:\DOS\SHELLMAX.COM C:\DOS\COMMAND.COM C:\DOS /E:512 /P
FILES=40
BUFFERS=30

//AUTOEXEC.BAT
echo. NO ADDITIONS NEEDED

the driver "USE!UMBS.SYS" (ver. 2.2) actually creates UMB blocks in the ranges written into the command. those are free on my m24 and configured on the microram card. the area D000-E000 is now occupied by a xtide card rom.
DOSMAX.COM and SHELLMAX.COM load all drivers and the command shell into the UMB blocks

mem /C output:
Code:
Conventional Memory:

  Name                 Size (dezimal)       Size (Hex)
-------------       ---------------------   -------------
  IBMDOS              9552      (  9.3K)       2550
  USEUMBS              208      (  0.2K)         D0
  COMMAND              256      (  0.3K)        100
  COMMAND              512      (  0.5K)        200
  FREI                 320      (  0.3K)        140
  FREI              643376      (628.3K)      9D130

Total FREE:     643696      (628.6K)

Upper Memory:

  Name                 Size (dezimal)       Size (Hex)
-------------       ---------------------   -------------
  SYSTEM            169088      (165.1K)      29480
  COMMAND             4832      (  4.7K)       12E0
  DOSMAX               240      (  0.2K)         F0
  FILES               2080      (  2.0K)        820
  FCBS                 256      (  0.3K)        100
                     15968      ( 15.6K)       3E60
  LASTDRIV             448      (  0.4K)        1C0
  STACKS              1872      (  1.8K)        750
  INSTALL              144      (  0.1K)         90
  MOUSE               5648      (  5.5K)       1610
  SHARE               8256      (  8.1K)       2040
  ONSI                1584      (  1.5K)        630
  SETVER               400      (  0.4K)        190
  WD8003E             4016      (  3.9K)        FB0
  FREI                  64      (  0.1K)         40
  FREI                7200      (  7.0K)       1C20
  FREI               52384      ( 51.2K)       CCA0
  FREI               53856      ( 52.6K)       D260

Total FREE:     113504      (110.8K)

TOTAL FREE (Conventional+Upper): 757200   (739.5K)
Maximumn size for executable:  643376   (628.3K)
Biggest free block in Upper Memory: 53856   ( 52.6K)

630kb free base memory on a 8086 while having all drivers loaded upon boot :cool:

i wrote an article about the M24 here: https://www-retrospace-net.translat...p?id=48&_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en for those who are interested (original in german: https://www.retrospace.net/infoseiten/readm.php?id=48)
 
Last edited:
Code:
DOS=UMB,HIGH
You can remove HIGH as that is only for using HMA which doesn't exist on these machines.

the driver "USE!UMBS.SYS" (ver. 2.2) actually creates UMB blocks in the ranges written into the command. those are free on my m24 and configured on the microram card. the area D000-E000 is now occupied by a xtide card rom.
Is it not possible to use D800-E000 as an UMB?
BTW, r602 of XUB is kind of old now. There's been quite a few bugs fixed since then.
 
Back
Top