• Please review our updated Terms and Rules here

Configure DOSMAX for use within MSDOS 6.22

alejack12001

Experienced Member
Joined
Jul 26, 2020
Messages
417
Location
Fredericksburg, VA
I am requesting some help with configuring DOSMAX (DEVICE=C:\DOSMAX\DOSMAX.EXE /p-) for an XT system using MSDOS 6.22. As shown, the dosmax seems to occupy the address E065. As it stands, the DOSMAX fails to start because the address is within the addresses being applied to the EMS driver, that is E000:F000.

I want to redirect the DOSMAX to a different address such as CA00-D800, which is 56KB, or F000:F800, which is 16 KB. According to Checkit, these addresses are open for use by the system. I have the manual of the DOSMAX, which is a little confusing to read and understand. I am looking for clarity.

Maybe Trixter could expand his video (https://www.youtube.com/watch?v=aiX0azs0qHE) regarding Hi Memory by a small briefing of the DOSMAX application. Thanks for all that reply.
 
Last edited:
Sanity check: does Check-It say those regions where you want high memory actually *have* memory in them, or merely that they’re “free”, IE, there’s nothing in them? What kind of memory hardware is your machine actually equipped with? DOSMAX has no ability to “remap” memory on its own, it can only enable the use of RAM already present in the upper regions when it’s invoked.
 
First, let me make a correction to the video listed in the original post. The correct video is the following link: https://www.youtube.com/watch?v=Xcc_D7q9bQs

I am using the Lo Tec 2MB 8-bit RAM card with their supporting EMS software. LTEMM.EXE. Checkit does recognize the card and states there is EMS software in use with 2048 Memory as total. I had DOSMAX following the LTEMM.EXE and it errored stating no HMA was not available. The Lo Tec card is set to use E000h address space. The MFM controller is using C000 and I believe the James Pearse XT-CF card is using the D000 address.

Checkit shows what's in the address space after 640 KB. So unless I miss interpreted what Checkit shows the addresses listed in the original post just show a dot, which I interpret to be an open space within the HMA. The E000 shows EEEE with starts above each E.There is a V, which I interpret to be the 16 KB video card, and R which are the drivers for the XT-CF card.

So, what is the error that I am seeing with regard to the HMA for the use of DOSMAX.
 
Okay, so, here’s the problem:

A: The Lo-Tech EMS card, despite being described as an “EMS 4.0” card, completely lacks the hardware to map memory outside of the 64k page frame, which is usually what people associate with EMS/LIM 4.0. It’s an extremely limited EMS 3.2-era hardware design with an EMS 4.0 compliant driver (which is allowed by the specification, the memory mapping stuff is “optional”) so it’s useless for providing UMBs. (You can statically map some pages into the page frame window to give you 64k of upper memory *instead* of EMS, I actually wrote a brain-dead driver for that, but it can’t do both things at once.)

B: Even if you had a full featured EMS 4.0 card you need an additional shim like QRAM to set up the page mapping, DOSMAX doesn’t interact directly with EMS drivers itself.
 
The forum had some discussion regarding HMA/UMB when I initiated a Boca EMS inquiry last year. It is surprising that no one has taken up the mantel to increase 64K to the full 384K to reach 1 MB. Your development must have taken many hours of study and research and I give you credit for your achievement.

Yes, I knew about the “EMS 4.0” not achieving what they advertised. I thought I would get the card and then do my own. But first, try to see if others such as yourself have already tried this with some degree of success. Trixter posted on YouTube his video regarding the 640 KB barrier and gave a 50,000-foot description of the configuration. He was going to do a follow-up on this video. I too, need to learn better the construct of how memory beyond 640 KB was designed.

Thank you for your input and feedback.
 
The forum had some discussion regarding HMA/UMB when I initiated a Boca EMS inquiry last year. It is surprising that no one has taken up the mantel to increase 64K to the full 384K to reach 1 MB. Your development must have taken many hours of study and research and I give you credit for your achievement.

Heh, I wish I could claim it took some kind of god-level groking to understand the card, but there's just not that much to it. Bluntly speaking there's no software way to increase the capability of this card to do what you want, the hardware is *extremely* simple and physically incapable of doing more than it does now. Not oversimplifying this at all: at the hardware level it's effectively just four bytes of "write-only" RAM mapped to four consecutive I/O ports, and whatever value is written into one of those memory registers serves as the upper bits for a 22 bit address (4MB total, although the low-tech only implements 2MB) within the memory on the card, with the lower 14 bits (16k) direct from the CPU. Each of those four registers directly maps to one of the 16k pages inside the EMS page frame, and that's it. There is *absolutely no way* to tell the card to put memory anywhere else. To implement that you're going to need more page registers *and* you'll need more elaborate decoding hardware to be able to selectively enable the card at arbitrary locations if you've decided to put a page register there.

I built my own version of this hardware for a homebrew Tandy 1000 upgrade board that's software compatible with the LTEMM.EXE driver despite using completely different parts for the page registers. (TL;DR, I used two harder-to-find chips in place of four easy-to-find ones for the memory registers, not because it was cheaper or better but to save board space.) To implement arbitrary remapping would require quite a few more parts *or* a higher-integration chip like a CPLD.

If you want it here's the enabler I wrote that just stuffs the registers to make sure they point to four unique pages of memory and exits. This lets you use DOSMAX to get 64K of upper memory without needing to load the LTEMMS driver, which saves about 5k of conventional RAM. But, yeah, you only get that 64k at the cost of your 2MB of EMS. (My Tandy card separately supplies upper memory that's enough "most of the time", I wrote this driver for when I want to load something really fat like an NFS stack high and don't need EMS.)

https://github.com/Astrowallaby/PaleozoicPC-stuff/tree/master/ems2umb
 
Thank you for sharing the enabler and the config.sys files that implement the enabler. I am disappointed that the Lo Tec can't be more than the 64 KB. I guess the designers must have used other 8-bit memory cards as a template. In addition, Lo Tec made theirs too generic to give users a choice of EMS memory and some sort of RAM drive for the difference in memory. Good luck with developing the CPLD. The word complex is about right for that chip. I have some feelers out for another AST or Boca XT RAM card to replace the Lo Tec. I am most grateful for your input.
 
My EMS card is just a simple EMS card, as said, implementing the basics. Having Alex Tsourikov's EMM driver available was a driving factor in the design. It provides EMS to 123, Windows etc and works fine for that. CPLD logic would be the way to go to get granular UMBs control.
 
Someone recently gave me a basket case plain XT clone to play with, if I can get it running I've been thinking of making a version of my Tandy 1000EX/HX "six-pack" expansion (conventional memory/EMS/dual serial/XT-CF/clock chip) board that fits a regular ISA slot. I use GALs for address decoding so I can support better-than-64k granularity on the UMB pages with a low parts count, which lets me cram upper memory with as much RAM as possible while remaining a lot simpler than a full-blown EMS 4.0-with-memory-mapping card. The downside there being that unless you own the GAL programmer or are targeting a specific computer with a known memory map and not many expansion options (like those Tandy 1000s) getting such a card to make room for arbitrary other cards sucking up UMB space for their own ROMs or whatever is a bear.

(For instance, the 1000 version supports a handful of switch-selectible options like "do you have a VGA card?" and some black magic to free up more upper memory in an HX with the help of a jumper wire clipped to the motherboard, but if I had some dingus plugged into the expansion passthrough that couldn't have is ROM mapped somewhere other than two specific windows it's back to the programmer.

Also, to be clear, the UMB backfill and the EMS is two separate pools of memory on my card, it's not doing "real" memory mapping magic.)

It wouldn't be that hard to add finer UMB granularity to one of the lo-tech 1MB memory cards by piggybacking a few parts to it, but obviously that falls a bit outside the "casual user" profile. As already noted, a full-blown EMS 4.0 card with large pages and arbitrary memory mapping would be hard. Especially if you didn't have well documented driver source for a similar card to start with. Unless someone really wants to go there hitting eBay with very specific searches is probably the more practical option.
 
I handle UMB backfill on my XT clone with an ISA card butchered together. The only components are a 16V8 gal and a 128k SRAM chip. alejack12001 would recognize the circuit as an adaption of how I handle UMB backfill on the ps/2 Model 25 riser.
 
I handle UMB backfill on my XT clone with an ISA card butchered together. The only components are a 16V8 gal and a 128k SRAM chip.

That's about the size of mine, although I'm using a 20v8 and a 512K SRAM so it handles both the UMBs and a 384k conventional backfill.

(And it also handles chip select for the EMS memory; actual mapping registers are a pair of 74LS670s. Have a DIP switch bank connected to a few of the 20v8 inputs for map selection.)
 
That's about the size of mine, although I'm using a 20v8 and a 512K SRAM so it handles both the UMBs and a 384k conventional backfill.

(And it also handles chip select for the EMS memory; actual mapping registers are a pair of 74LS670s. Have a DIP switch bank connected to a few of the 20v8 inputs for map selection.)

Mine was targeted to a machine which only has a 96k hole in the UMBs between video and BIOS (the ps/2 Model 25). The ISA card is a by-product, testing the circuit before committing to a PCB for the main project. It's come in handy for other machines though, its amazing what a few K of UMB's will do for your free conventional.
 
Back
Top