Problem with EMS memory

The intent of this forum is to discuss my DOS TSR programs (available at, how they work and don't work, new/missing features, status of updates, and anything else related to them that may need to be discussed.

Problem with EMS memory

Postby maferv » Fri Dec 02, 2016 1:18 pm

First I want to make clear that I know very little about how computers work, I just read and try things hoping to learn more and more each day.

I'm creating a "revolutionary" approach for an old Pentium 166Mhz.

The idea is to run everything from a USB stick (system and games). The motherboard lacks any USB connectivity (Hsing Tech 519 v1.0) so I'm using a VIA 6202 based PCI USB 2.0 card.

It works great with Bret's driver, but a little slow to run everything fine. For instance, to run doom fast enough I use a ramdisk.

If I want to mount an iso with shsucdhd/shsucdx and run a game (in this case Dune), it just doesn't read the USB stick fast enough, so it is hardly playable

By the way, I'm using index 1, /x:64
I add the x:64 to improve speed and it does improve, but it is not 64 times faster than the default value (1).

So I resorted to use the proprietary USB driver usbmass.exe, and although I experience some hangs from time to time, it loads way faster, and the game animations run smooth BUT this game requires EMS memory for sound, and when I load emm386.exe, the driver doesn't work properly. If I do

c:\> dir

All I see is "IO.SYS" and nothing else.

So I guess this has to do with emm386 and how it is using some part of the memory that usbmass.exe needs. I was trying many configurations but although I read a lot and tried a lot, I'm a complete ignorant of how to finetune emm and assign "parts" of the memory.

By the way, the usbmass.exe allows one to define the start address of i/o pool and the start address of memory pool, the help page says:

/io:n start address of I/O pool (default 0x00002000)
/M:n start address of memory pool (default 0x000D0000)

Since you are very knowledgeable in this, would you please help me figure out what parameters for emm386 I should set, or for usbmass.exe to overcome this?

Thank you in advance!
Posts: 2
Joined: Fri Dec 02, 2016 12:33 pm

Re: Problem with EMS memory

Postby Bret » Thu Dec 08, 2016 4:10 am

I'm glad you've had pretty good luck with my programs, even though I know USBDRIVE has some speed problems. Hopefully, the next release of the program will have most of those kinds of problems solved. I'm still not sure when the next release will be, though -- I have very little time to work on things like that nowadays. I am still making very slow progress.

Regarding the /X:# parameter in USBDRIVE, you are correct that using a value of 64 is not 64 times faster than 1. In my experiments, it seems to be somewhat cyclical: 2 is better than 1, 3 is better than 2, etc., up to a point (usually somewhere around 8, but it varies), and then further increases make it increasingly worse for awhile, and then it gets better again, etc. 64 could actually be worse (slower) than 1, at least in some cases. It also varies with individual flash drives and computer systems. USB is tremendously unpredictable, especially the flash drives.

If USBDRIVE is too slow for your purposes, you will need to find another solution, like USBMASS, or using RAM disks, or something.

I'm afraid I won't be able to help you very much with USBMASS or EMM386. I've never used USBMASS, and in just glancing through the documentation it looks like there are a lot of options related to memory segments and I/O ports, and the documentation isn't all that clear on what everything means with only a cursory reading. If I read it enough times it may start making sense, but I really don't want to go down that road since I never intend to use the program. Hopefully you can find someone who has used the program before (or the author) who can help you more with that.

About the only thing I can say about EMM386 is that the only two versions I've ever found very useful are the one Microsoft included with later versions of Windows and JEMM (made by Japheth). On my home page you can download the version MS included with Windows 98SE (DOS 7.1), which I think is the last one MS ever made. I've had at least one computer where that one didn't work, and I had to use JEMM. I've also had computers where JEMM didn't work and I had to use the MS version. These days, I generally use the MS EMM386 one from my home page, since it contains the special interface needed by some programs, like my USBJSTIK, to virtualize I/O ports in DOS. If the computer doesn't "like" MS EMM386 for some reason, I use JEMM.

Sorry, but I probably won't be able to help you much more than that.
Posts: 365
Joined: Fri Oct 10, 2008 3:43 am
Location: Rio Rancho, NM

Return to Programs

Who is online

Users browsing this forum: No registered users and 1 guest