8
Modules using memory below 1 MB:

  Name           Total       =   Conventional   +   Upper Memory
  --------  ----------------   ----------------   ----------------
  MSDOS       14 317   (14K)     14 317   (14K)          0    (0K)
  HIMEM        1 120    (1K)      1 120    (1K)          0    (0K)
  EMM386       3 120    (3K)      3 120    (3K)          0    (0K)
  OAKCDROM    36 064   (35K)     36 064   (35K)          0    (0K)
  POWER           80    (0K)         80    (0K)          0    (0K)
  NLSFUNC      2 784    (3K)      2 784    (3K)          0    (0K)
  COMMAND      2 928    (3K)      2 928    (3K)          0    (0K)
  MSCDEX      15 712   (15K)     15 712   (15K)          0    (0K)
  SMARTDRV    30 384   (30K)     13 984   (14K)     16 400   (16K)
  KEYB         6 752    (7K)      6 752    (7K)          0    (0K)
  MOUSE       17 296   (17K)     17 296   (17K)          0    (0K)
  DISPLAY      8 336    (8K)          0    (0K)      8 336    (8K)
  SETVER         512    (1K)          0    (0K)        512    (1K)
  DOSKEY       4 144    (4K)          0    (0K)      4 144    (4K)
  POWER        4 672    (5K)          0    (0K)      4 672    (5K)
  Free       552 944  (540K)    539 088  (526K)     13 856   (14K)

Memory Summary:

  Type of Memory       Total   =    Used    +    Free
  ----------------  ----------   ----------   ----------
  Conventional         653 312      114 224      539 088
  Upper                 47 920       34 064       13 856
  Reserved                   0            0            0
  Extended (XMS)*   64 898 256    2 671 824   62 226 432
  ----------------  ----------   ----------   ----------
  Total memory      65 599 488    2 820 112   62 779 376

  Total under 1 MB     701 232      148 288      552 944

  Total Expanded (EMS)                33 947 648 (33 152K
  Free Expanded (EMS)*                33 538 048 (32 752K

  * EMM386 is using XMS memory to simulate EMS memory as needed.
    Free EMS memory may change as free XMS memory changes.

  Largest executable program size        538 976   (526K)
  Largest free upper memory block          7 488     (7K)
  MS-DOS is resident in the high memory area.

I'm running MS-DOS 6.22 on VMWare virtual hardware. This is memory state after MEMMAKER pass, so i'm looking for optimization beyond MEMMAKER.

Note: NLS drivers (DISPLAY, KEYB, NSLFUNC) are essential for me.


Thanks to @mtone for valuable reminder about MSCDEX /E which gave me 16KiB of low memory (see the diff)!

3 Answers3

8

Try replacing any DEVICE= lines in your CONFIG.SYS with DEVICEHIGH=.

I think the DOS=HIGH,UMB helps somehow, but I've forgotten what it does exactly. I think it moves DOS itself into the upper area if possible.

There's also the LOADHIGH command you can use for MSCDEX and other TSR's IIRC.

The above may be wrong. It's been at least 10 years since I've seriously messed with DOS but I hope it helps.

Also if you don't have a program that needs SETVER you can get rid of it. Also consider getting rid of DOSKEY if you don't need its command line enhancements.

Last, if you free up too much conventional memory and get some type of corruption error message on starting programs, use LOADFIX.

LawrenceC
  • 75,182
2

Unless you need to stay with Microsoft's drivers, I suggest replacing them with FreeDOS alternatives which are more flexible and have a smaller memory footprint.

  • ctmouse replaces mouse
  • uide replaces oakcdrom and smartdrv
  • shsucdx replaces mscdex

If there is no specific requirement for MS DOS, simply using FreeDOS as already suggested by Ignacio Vazquez-Abrams would be the easiest solution.

Gurken Papst
  • 4,232
  • 1
  • 20
  • 19
0

Agreed with using better drivers. I saw OAKCDROM.SYS and instantly thought of alternatives. I didn't know about UIDE when I researched this many years ago. But I still found better alternatives than OAKCDROM.SYS : See TOOGAM's Software Archive: CD-ROM drivers. CuteMouse is also a great recommendation. These can provide you with more free memory and really no downsides. It's just newer and better code.

SHSUCDX can save memory, although may have some issues with CD Audio (at least with version 2.20b, as I recall). If CD audio works fine with it, or if that is a non-issue, then use it.

I also agree with using DOS=HIGH,UMB and trying to use DEVICEHIGH. But using DEVICEHIGH might use up a tiny bit of upper memory, and then you might have just barely not enough upper memory for something bigger. So watching things carefully may be needed to get the ideal setup. Don't even bother with that until after you know what drivers you want.

Then, LH can be used for anything from the command line, including anything loaded from the AUTOEXEC.BAT.

Get rid of DOSKey: Instead, use 4DOS to replace Command.Com. 4DOS used to be shareware but there is now a Freeware version, and then later source code became available. I do believe that 4DOS tends to use less conventional memory, or at least can be configured to do so. To use 4DOS, obtain the software and then have the CONFIG.SYS refer to it via SHELL, e.g.:

SHELL=C:\4DOS\4DOS.Com

Also set the COMSPEC:

SET COMSPEC=C:\4DOS\4DOS.Com

Comspec can be CONFIG.SYS or AutoExec.bat

Probably get rid of SETVER: It is usually completely unnecessary. It simply makes some software work, instead of the software complaining uselessly about software versions. But software typically doesn't do that unless it was bundled with another (commercial?) DOS version.

][CyberPillar][: DOS Memory lists some other options, like replacing the memory managers. e.g.: If you have the time to really play with stuff, see if UMBPCI works on your system. If so, enjoy using that instead of EMM386.

Otherwise, EMM386 (I think, maybe HIMEM, but I think EMM) has some parameter (HIGHSCAN if I remember right) that can generate more memory, but freezes up a small percentage of systems. Check the online help for such a parameter; it might cause more memory to be found and be used.

Well, following all of those tips will be a pretty good start anyway.

I know you addressed this in your question, but since that line ay be easy to miss, I'll quickly point out that NLSFunc (National Keyboard Language Functionality) and DISPLAY.SYS (loaded in CONFIG.SYS) may be unnecessary unless you are trying to support non-American code pages. Similar for KEYB. I don't know how well POWER is.

Don't have much faith in MemMaker. It can help. It can make things worse. Usually it helps, a bit, if using an unoptimized system. Maybe try it again after making all other recommended changes, including backing up your CONFIG.SYS and AUTOEXEC.BAT before letting MemMaker look at the system.

If you need memory for a specific application, you might be able to create a boot menu that lets you choose what drivers to load. MS-DOS 6.x supported this by using commands in a CONFIG.SYS. (See HELP for "menu" commands.)

TOOGAM
  • 16,486