• Please review our updated Terms and Rules here

Loading dos high on a XT

Hi,

The 2.2 Version by Krille is the last one ?

@Trixter What do you mean by not compatible with DOS 6.22 ?
The source code is not clear, but it seems to be too small to support all the UMB commands.
I think 2.2 is the last one. I have not seen higher versions.
 
It's compatible with DOS 6.22, but typing "mem /c" doesn't show UMB usage properly, if memory serves. It's been a while since I've tried it, but I remember being frustrated by it enough that I just used QRAM instead (which works perfectly).

As far as I know, Krille's 2.2 version is the most recent.
 
OK, misunderstanding. But even then, googling on "USE!UMB" turned up with nothing. Then I found out it should have been USE!UMBS. For those who are interested, I found it in VOGONS.
 
I did not know USE!UMB was the result of recent update.

Somebody should put it on GitHub.
It also need much more comments
 
Has anyone who truly understands MCB black magic reviewed the USE!UMBS source? I have occasionally noticed what can only be described as "odd" behaviours when using it over the years, and have seen others post about the same
As the previous discussion in this thread illustrates, USE!UMB works in a way that isn't compatible with DOS 6's extension of the MCB chain to upper memory blocks.

You might have some luck making DOS=UMB the first line of CONFIG.SYS, and removing the "HIGH" part since your XT doesn't have an HMA (HMA requires a 286+). This works for me in PC DOS 7, at least.
It's compatible with DOS 6.22, but typing "mem /c" doesn't show UMB usage properly, if memory serves. It's been a while since I've tried it, but I remember being frustrated by it enough that I just used QRAM instead (which works perfectly).

As far as I know, Krille's 2.2 version is the most recent.

Vague complaints but no real bug reports. So I'll try to explain the basics;

USE!UMBS.SYS is a UMB provider and it isn't really that complicated. It hands out blocks of memory to whatever piece of software that asks for it. This is usually DOS, from when support for UMBs where added (MS-DOS 5 I believe?), but nothing prevents software from asking for memory under older DOS versions, they just have to know how.
USE!UMBS.SYS doesn't have any say in how the blocks are used or what's put in them. It also doesn't care about DOS' memory control block chain - or whether it is linked to the UMA or not.

It is possible that there are problems with how it handles calls to itself. I don't know the XMS/EMS API:s that well and didn't bother to verify the functionality of the original version (2.0). I just optimized the code and extended functionality. If there are problems in my updates that is not present in the original version then I'd like to hear about it. But it seems to me that a more likely reason for any perceived problems might just be bugs in other parts of the puzzle. Differences in how memory usage is presented may vary between utils and DOS versions. A glaring example is how FreeDOS obviously can't handle certain block sizes as reported by @wondow in post #32. Maybe there are restrictions in what sizes UMBs can have? I don't know.

I did not know USE!UMB was the result of recent update.

Somebody should put it on GitHub.
It also need much more comments
In my opinion, it might need more comments in the part regarding the XMS/EMS API but that is partly why I include the original version in all my updates - the original has more comments. Also, the specifications are not that hard to find if someone wants to do actual updates of that part of the code.

The other parts of the code is sufficiently commented in my opinion. :) (Don't hesitate to ask if there's something specific you want to know.)
 
My comments weren't meant as complaints; apologies if they seemed that way. Like maxtherabbit, the behavior was present before you ever touched the source.
No need for apologies! It's just that it is frustrating when people mentions problems but can't provide details. I would like to fix any bugs in USE!UMBS.SYS but I need detailed steps on how to reproduce them. Also, I need to use some kind of emulator as I don't have any computers that can use this driver - if anyone has advice on that part I'd be grateful.

I have sergey's very cool Micro8088 with 640KB RAM and 128KB UMB. (D000-F000), i can go even till F400!
...
USE!UMB.SYS (Version 2.2) in the Range D000-F400. USE!UMB is working fine without any problems.
@explit; I don't think you can use the F000-F400 memory range. The Micro8088 page on github says that you can configure the board to use ranges from C0000h to EFFFFh (depending on switch settings). USE!UMBS.SYS will seem to work with that range because there's actually very little error checking/handling in the driver. This is likely the reason why DOS says there are no UMBs.
 
No need for apologies! It's just that it is frustrating when people mentions problems but can't provide details. I would like to fix any bugs in USE!UMBS.SYS but I need detailed steps on how to reproduce them. Also, I need to use some kind of emulator as I don't have any computers that can use this driver - if anyone has advice on that part I'd be grateful.


@explit; I don't think you can use the F000-F400 memory range. The Micro8088 page on github says that you can configure the board to use ranges from C0000h to EFFFFh (depending on switch settings). USE!UMBS.SYS will seem to work with that range because there's actually very little error checking/handling in the driver. This is likely the reason why DOS says there are no UMBs.
Thanks for the answer, @Krille Yes, i read that to. As i understand, memory range F000-F400 is reserved for additional BIOS ROM inside the Micro8088 BIOS Chip (Since its much bigger than the actual BIOS). Since i have no other additinal ROMs on my BIOS, there is a possibility to switch off checking for this area in the Micro8088 BIOS. CheckIt 3.0 says, this area is not used, so i could resize the UMB!SYS range till F400.

But if you say, better not to use this area, i will change the UMB!SYS Value back to D000-EFFF.

Thanks
 
CheckIt 3.0 says, this area is not used, so i could resize the UMB!SYS range till F400.

The point was that the hardware doesn’t put any RAM there, unless you’ve modified it to do so. USE!UMBS.SYS doesn’t itself do anything to “map” memory into unoccupied address ranges in high memory even if you have hardware capable of doing that function (Like some EMS 4.0 compatible memory cards), which you don’t have. It can only enable the use of memory that’s already mapped when the driver is loaded. IE, the memory range switches are just telling it “blindly tell DOS it can use this”, if there’s no RAM actually there it’s not going to check and stop you from creating an error situation.

If you actually wanted to use that area for RAM in the Micro8088 you would need to reprogram the decode GAL to allocate it accordingly, and from a peek at the GitHub that GAL only has address lines down to A15 attached to it. So without a hardware modification you’d have to put RAM up to F8000, not F4000… which may or may not fly depending on how large the BIOS is.
 
CheckIt 3.0 says, this area is not used ...
On PC family computers, and clones of, it is not possible for software to say with 100% certainty that certain hardware is not in use.
For example, if I run CheckIt 3 on my IBM PC, Checkit's memory map functionality informs me that B8000-F4000 is "<nothing>".
The 5150 motherboard's ROM's start at F4000, and in the 5150's technical reference, IBM indicate that the F0000-F4000 space is "reserved".
Putting everything together, it all sounds like that on an IBM 5150, that the F0000-F4000 space is available for me to use; perhaps I will map a card's ROM into that space.

But if I look at the 5150 motherboard's circuit diagram, I discover that the motherboard actually 'uses' the F0000-F4000 space.
The 5150 motherboard decodes the space for read operations (even though there is nothing there to read).
Had I mapped a card's ROM into that area, I would have ended up with bus contention (both the card and the motherboard simultaneously driving the data bus).

So in regard to F0000-F4000:
- IBM's "reserved" is misleading (I think 'reserved' to most people implies not in use now, but may be in the future).
- CheckIt's "<nothing>" is misleading.

Other software may have informed me of the same. Maybe a later version of CheckIt is smarter, determining (via the motherboard's BIOS ROM) that it is running on an IBM PC motherboard, and therefore knowing not to show F0000-F4000 as "<nothing>".
 
But if you say, better not to use this area, i will change the UMB!SYS Value back to D000-EFFF.
Make that D000-F000. When DOS asks USE!UMBS.SYS for memory it receives a response with the starting segment and the size of the block. The size is calculated during initialization by subtracting the end of the range from the beginning of the range. F000h - D000h = 2000h paragraphs, a full 128 kB block whereas EFFFh - D000h = 1FFFh, 128 kB minus 16 bytes. So 16 bytes will be unused, and if you would do this under FreeDOS you would likely trigger the bug wondow reported in post #32.
 
Hi,
Use!UMBS seems to not work at all with DOS 6.22
Not detected by the DOS MEM Command, not detected by Mod Master (My MOD Player)
 
OOPS No, I have not seen it displayed wrong command line
Now UMB is visible under MEM Command, 2x32Kb block (Visible with MEM /F)
Showing 229,424 bytes reserved, this is strange...
 
Last edited:
As the previous discussion in this thread illustrates, USE!UMB works in a way that isn't compatible with DOS 6's extension of the MCB chain to upper memory blocks.

You might have some luck making DOS=UMB the first line of CONFIG.SYS, and removing the "HIGH" part since your XT doesn't have an HMA (HMA requires a 286+). This works for me in PC DOS 7, at least.
I'm running into this same issue (also using PC DOS, and with DOS=UMB specified in CONFIG.SYS), and while MEM correctly reflects the state of the upper memory after an initial system boot, it shows no UMB space or usage if MEM is run following most programs.

The problem is that it's not cosmetic - additional UMB allocation/usage is precluded by the erroneous state. For example, if the CTMOUSE driver is loaded after an initial boot, while UMBs are properly reported, the driver loads into upper memory. If the CTMOUSE driver is instead loaded after running another program, and while the UMBs are being misreported, it loads into conventional memory.

What modification to USE!UMBS.SYS might prevent or resolve this behavior?
 
Back
Top