Reclaiming conventional memory




My DOS games don't have enough memory. (If you thought this would be over with Windows 95, think again!). Well, I'm using Win95 and DOS 7.0, but I'm having difficulty loading drivers into upper memory. I have included device=c:\windows\himem.sys in my config.sys file, but to no avail.
Checking out the memory using mem /c shows that my conventional memory is down to about 418K. It seems that none of my drivers is loading into the upper memory block even though I have used Devicehigh= commands. I also tried the version of Memmaker that comes with Win95 -- with disastrous effects. Windows won't load properly, and everything crawls like a snail. I'm not sure why Microsoft included it in the first place! I am really hoping that you can help me iron out this problem.
By the way, this used to work before (loading drivers to upper memory) -- I'm not sure what I did to prevent it from working now.
- S Rusli


To allow programs to be loaded high you need to include several lines in your config.sys file. First there is the line you have already included: device=c:\windows\himem.sys. This loads the Extended Memory Manager. Extended memory (or XMS) is not directly involved in loading devices high, but is needed so that you can load the Expanded Memory Manager with the following line: device=c:\windows\emm386.exe RAM. Expanded memory used to be provided by hardware cards for old XT and 286 computers. 386 and higher computers employ extended memory instead. To maintain backward compatibility, programs such as emm386.exe emulate expanded memory using extended memory. However, despite popular misconception, neither extended nor expanded memory is used to load devices high.
DOS is capable of using the first 640K of RAM -- known as conventional memory -- directly. Extended and expanded memory use the RAM above 1Mb. Sandwiched between is 384K of RAM known as the upper memory area. Some of this is used by devices such as your video card. The rest is divided into upper memory blocks (UMBs) which can be used by device drivers and memory resident programs. The keyword RAM after the emm386.exe command tells the Expanded Memory Manager to provide access to the upper memory area.
The line DOS=high, UMB loads DOS high, and the keyword UMB gives programs access to the upper memory area.
If any of these lines are missing or out of sequence, then programs will not load high. If you have all these lines and still have problems then the most likely source of problems is emm386.exe. To find out more details about configuring this program, type help emm386.exe from the DOS prompt.
- Roy Chambers


Category: Win95
Issue: Sep 1997
Pages: 162

These Web pages are produced by Australian PC World © 1997 IDG Communications