![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
A very brief rundown:
If you are using Microsoft tools, you need to load the 386 memory manager,
emm386.exe
, in yourCONFIG.SYS
file.But, to do that, you need to load the XMS manager,
HIMEM.SYS
, first.So your
CONFIG.SYS
should begin with the lines:
DEVICE=C:\WINDOWS\HIMEM.SYS DEVICE=C:\WINDOWS\EMM386.EXE DOS=HIGH,UMB
4. That's the easy bit. Now you have to find free Upper Memory Blocks to tell EMM386 to use.
5. Do a clean boot with F5 or F8 -- telling it not to process CONFIG.SYS
or run AUTOEXEC.BAT
. Alternatively boot from a DOS floppy that doesn't have them.
6. Run the Microsoft Diagnostics, MSD.EXE
, or a similar tool such as Quartdeck Manifest. Look at the memory usage between 640kB and 1MB. Note, the numbers are in hexadecimal.
7. Look for unused blocks that are not ROM or I/O. Write down the address ranges.
8. An example: if you do not use monochrome VGA you can use the mono VGA memory area: 0xB000-0xB7FF.
9. One by one, tell EMM386 to use these. First choose if you want EMS (Expanded Memory Services) or not. It is useful for DOS apps, but not for Windows apps.
10. If you do, you need to tell it:
DEVICE=C:\WINDOWS\EMM386.EXE RAM
And set aside 64kB for a page frame, for example by putting this on the end of the line:
FRAME=E0000
Or, tell it not to use one:
FRAME=none
11. Or disable EMS:
DEVICE=C:\WINDOWS\EMM386.EXE NOEMS
12. Important Add these parameters one at a time, and reboot and test, every single time, without exception.
13. Once you told it which you want now you need to tell it the RAM blocks to use, e.g.
DEVICE=C:\WINDOWS\EMM386.EXE RAM FRAME=none I=B000-B7FF
Again, reboot every time to check. Any single letter wrong can stop the PC booting. Lots of testing is vital. Every time, run MSD and look at what is in use or is not in use. Make lots of notes, on paper.
14. If you find EMM386 is trying to use a block that it mustn't you can eXclude it:
DEVICE=C:\WINDOWS\EMM386.EXE RAM X=B000-B7FF
The more blocks you can add, the better.
15. After this -- a few hours' work -- now you can try to populate your new UMBs.
16. Device drivers: do this by prefixing lines in CONFIG.SYS
with DEVICEHIGH
instead of DEVICE
.
Change:
DEVICE=C:\DOS\ANSI.SYS
To:
DEVICEHIGH=C:\DOS\ANSI.SYS
17. Try every driver, one by one, rebooting every time.
18. Now move on to loadable Terminate and Stay Resident (TSR) programs. Prefix lines that run a program in AUTOEXEC.BAT
with LH
, which is short for LOADHIGH
.
Replace:
MOUSE
With:
LH MOUSE
Use MSD and the MEM
command -- MEM /c /p
-- to identify all your TSRs, note their sizes, and load them all high.
This is a day or two's work for a novice. I could do it in only an hour or two and typically get 625kB or more base memory free, and I made good money from this hard-won skill.
no subject
Date: 2025-03-03 12:54 pm (UTC)If you're recommending Manifest, why didn't you mention QEMM386?
no subject
Date: 2025-03-03 08:02 pm (UTC)Because -- sadly -- in my testing it won't run on modern hardware. I think processors are just too fast. Even back to a Core 2 Duo, it fails and usually locks the machine when it loads.
no subject
Date: 2025-03-04 12:05 pm (UTC)Gosh. I remember Borland's Sprint word processor needing a patch on 486 machines, because a timing loop finished in zero ticks of the 18.2 Hz clock on them. (Still my favourite wp program, all the books done on it.)
Perhaps this is why QEMM386's licences were only valid for a few (ten?) years - they knew it'd fail when processors got too fast for a race condition somewhere.
no subject
Date: 2025-03-05 09:27 am (UTC)Oh wow! Thanks for those nuggest of info. I didn't know either.
The original author of 386Max made it GPL3 FOSS a couple of years ago. I wish the FreeDOS project had picked it up and incorporated it, but they do not seem interested.
It too won't run on modern hardware in my testing, but since the source is there, presumably it's fixable. The MS-DOS, PC DOS, FreeDOS, and DR DOS memory managers all do run. This suggests to me they are trying to do less "clever stuff".
As for DOSbox -- I don't think this runs a real DOS by default. It's emulating DOS as well as a whole DOS-compatible PC. That makes life easier: if you're faking UMBs and things, then you know exactly where they are and can use them as you wish.
no subject
Date: 2025-03-05 04:27 pm (UTC)Yep, DOSBox (and -X) are faking it. Makes life a lot easier.
no subject
Date: 2025-03-04 09:21 am (UTC)no subject
Date: 2025-03-04 07:41 pm (UTC)Checking, the default setup for DOSBox-X gives you
I have to use loadfix to get some things to run, because they're surprised at being so low in memory...