![[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.