The MEMMAKER.STS File

Archived content. No warranty is made as to technical accuracy. Content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

This chapter provides technical information and troubleshooting tips on memory management, including MemMaker.

When you run MemMaker, it creates a MEMMAKER.STS file. This file contains information about the current state of the optimization process, your memory configuration, and the sizes of memory-resident programs. MemMaker creates the MEMMAKER.STS file just before it restarts your computer for the first time. It stores the file in the same directory as the MEMMAKER.EXE file. Normally, you do not need to edit the MEMMAKER.STS file; it exists mainly for MemMaker to use.

On This Page

The [MemMakerData] Section
The [SizeData] Section
You have a Super VGA display and want to conserve memory
Changes MemMaker Makes to the SYSTEM.INI File
File Size Limitations With MemMaker
How MemMaker Changes the Order of Commands in the CONFIG.SYS File
Troubleshooting MemMaker
You Use QEMM and Receive the "Bad Command or Filename" Message
New Features of EMM386
HIMEM.SYS is Quiet by Default

The [MemMakerData] Section

The [MemMakerData] section is the first section in the MEMMAKER.STS file. It contains information about the current state of the optimization process and your computer's memory configuration. The following is an example of a [MemMakerData] section:

[MemmakerData]
State=     DONE 2283
AvailConvMemoryBefore=481696
AvailUpperMemoryBefore=66448
UsedUpperMemoryBefore=59504
WindowsUpperMemoryBefore=0
EMSUpperMemoryBefore=0
AltSysFiles=False
WindowsXlat=False
CustomMode=True
AutoexecBatCheckSum=28495 
ConfigSysCheckSum=40673 
SystemIniCheckSum=0     
WindowsLocation=E:\WIN

The following sections explain each field in the [MemMakerData] section.

State

The State field describes the current state of the optimization process. This field is always the first in the MEMMAKER.STS file. The State field uses the following syntax:

State= CurrentState SessionID

The CurrentState variable indicates the current state of the MemMaker optimization process. For a list of possible CurrentState values, see the following tables.

The SessionID is a unique number generated by MemMaker and later used as a startup parameter. MemMaker uses the SessionId number to verify that the correct file is being accessed.

The following table lists values for the CurrentState variable that indicate normal processing.

Value

Current state of optimization process

SR1

MemMaker is about to restart your computer in order to measure the size in memory of each device driver and memory-resident program.

SR2

Your computer has restarted, and MemMaker is about to begin the sizing process (measuring the size of each memory-rsesident driver or program). State SR2 indicates that the highscan option for EMM386 is enabled. It can be entered only from state SR1.

SR3

MemMaker is about to begin the sizing process with the highscan option for EMM386 disabled. State SR3 can be entered from state SR1 if you chose Custom Setup and then disabled the highscan option for EMM386 by answering No to the question "Scan upper memory aggressively?" State SR3 can also be entered from state SR2 if you restart your computer while in state SR2 and then disable the highscan option.

SR4

The CHKSTATE.SYS device driver has loaded with state SR3. This state indicates starting of sizing (with highscan disabled).

FR1

MemMaker has determined the optimum memory configuration,
but has not yet made modifications to the CONFIG.SYS and AUTOEXEC.BAT files. The user cannot reenter the sizing process (states SR1 through SR4) once state FR1 is reached.

FR2

The computer has restarted, and the CHKSTATE.SYS device driver has loaded and determined that the previous state was FR1. Drivers and memory-resident programs are being loaded into their new locations in upper memory.

Value

Current state of optimization process

DONE

The optimization process has successfully completed.

UNDO/state

MemMaker has previously undone the changes it made. The /state parameter indicates the state MemMaker was in before you chose to undo changes.

The CurrentState variable can also indicate that an error condition has occurred. The following table lists CurrentState values that indicate an error condition.

Value

Current state of optimization process

ESR1

MemMaker restarted your computer successfully at least twice, but the sizing process was not completed. MemMaker enters state ESR1
if the CHKSTATE.SYS device driver loads during state SR2 and you then choose to undo all changes.

ESR2

MemMaker restarted your computer successfully at least twice, but the sizing process did not complete successfully even though the highscan option for EMM386 was disabled. MemMaker enters state ESR2 if the CHKSTATE.SYS device driver was loaded during state SR4 and you then choose to undo all changes.

EFR1

Your computer was restarted while in state FR2, before MemMaker was started for the final time. State EFR1 indicates that a device driver or memory-resident program did not start properly, or that some other problem occurred that prevented MemMaker from starting.

BADID

The State field in the MEMMAKER.STS file contains an invalid SessionID value. MemMaker automatically undoes all changes when it encounters state BADID.

AvailConvMemoryBefore

Shows how much conventional memory was free before you started MemMaker.

AvailUpperMemoryBefore

Shows how much upper memory was available before you started MemMaker.

UsedUpperMemoryBefore

Shows how much upper memory was in use before you started MemMaker.

WindowsUpperMemoryBefore

Shows how much upper memory was reserved for use by Windows before you started MemMaker.

EMSUpperMemoryBefore

Shows how much expanded memory was available before you started MemMaker.

AltSysFiles

Indicates whether there are extra copies of system files (CONFIG.SYS and AUTOEXEC.BAT) on the drive that contains the MEMMAKER.STS file. If

this field is set to True and you choose to undo the changes made by MemMaker, MemMaker copies the original AUTOEXEC.BAT and CONFIG.SYS files to both the startup drive and the drive that contains the MEMMAKER.STS file.

WindowsXlat

Indicates whether or not MemMaker will reserve upper memory for Windows to use for translation buffers. If set to True, MemMaker reserves upper memory for Windows translation buffers.

ConfigChksum

A number that MemMaker uses to determine whether the CONFIG.SYS file has changed.

AutoexecChksum

A number that MemMaker uses to determine whether the AUTOEXEC.BAT file has changed.

SysIniChksum

A number that MemMaker uses to determine whether the Windows SYSTEM.INI file has changed.

SysIniLoc

Indicates the location of the Windows 3.0 SYSTEM.INI file, if the file was modified.

The [SizeData] Section

The [SizeData] section of the MEMMAKER.STS file shows the size in memory of each device driver or memory-resident program. It contains information for each driver and program loaded by the CONFIG.SYS and AUTOEXEC.BAT file. The following is an example of a section in the [SizeData] section:

[SizeData]
Command=C:\UTIL\DOS\SETVER.EXE
Line=8
FinalSize=832
MaxSize=12048
FinalUpperSizes=0
MaxUpperSizes=0
ProgramType=DEVICE

The following table describes each field:

Field

Description

Command

The path to the executable device driver or program file.

Line

The line number in the CONFIG.SYS or AUTOEXEC.BAT file.

FinalSize

Final size in memory of the driver or program after it has finished loading.

MaxSize

Maximum size in memory of the program or driver during loading.

FinalUpperSizes

Final size in upper memory of the driver or program after it has finished loading (if the program loads itself into upper memory).

MaxUpperSizes

Maximum size in memory of the program or driver during loading (if the program loads itself into upper memory).

ProgramType

If set to DEVICE, the driver or program is loaded from the CONFIG.SYS file. If set to PROGRAM, it was loaded from the AUTOEXEC.BAT file.

You have a Super VGA display and want to conserve memory

If you have an 80386 computer with extended memory and a Super VGA display, you can use the MONOUMB.368 file, in conjunction with MemMaker, to conserve conventional memory for running programs.

To conserve memory if you have a Super VGA display:

  1. Open your Windows SYSTEM.INI file, and find the [386Enh] section.

  2. Add a device command for the MONOUMB.386 file, which is located in your MS-DOS directory. For example, if your MS-DOS files are in C:\DOS, add the following line to this section:

device=c:\dos\monoumb.386

  1. Save the file, and then restart your computer. After your computer starts, run MemMaker by typing memmaker at the command prompt.

  2. Choose Custom Setup. On the Advanced Options screen, answer Yes to the question "Use monochrome region (B000-B7FF) for running programs?" Then, follow the instructions on your screen.

Changes MemMaker Makes to the SYSTEM.INI File

MemMaker changes the Windows SYSTEM.INI file only if you are running Windows 3.0, and only if certain options are selected prior to memory optimization. If MemMaker does change the file, it saves the original file as SYSTEM.UMB.

The following list shows the changes MemMaker might make to the Windows 3.0 SYSTEM.INI file:

SYSTEMROMBREAKPOINT=FALSE
EMMEXCLUDE=A000-FFFF
EMMINCLUDE=<any w= regions>
DUALDISPLAY=TRUE                   if b000-b7ff is included
NOEMMDRIVER=TRUE                   if NOEMS is specified

File Size Limitations With MemMaker

If your CONFIG.SYS, AUTOEXEC.BAT, or SYSTEM.INI file has 512 or more lines, MemMaker displays the following message:

MemMaker cannot continue because the AUTOEXEC.BAT, CONFIG.SYS, or Windows 
SYSTEM.INI file is too long. 
The file must be less than 512 lines long.
* To undo MemMaker's changes, press ENTER.

To solve this problem, exit MemMaker, remove some lines from the file that is causing the error, and restart MemMaker.

Û To use MS-DOS Editor to determine the length of a text file

  1. Exit Memmaker

  2. Start MS-DOS Editor and load a text file such as your AUTOEXEC.BAT file. For example, type the following and press ENTER:

edit c:\autoexec.bat

  1. Press CTRL+END.

MS-DOS Editor displays the number of lines in the text file in the lower right corner of the screen.

  1. When you have determined which file has 512 or more lines, remove as many lines as necessary to make it shorter than 512 lines. Then, save the file and quit MS-DOS Editor.

  2. Restart Memmaker by typing memmaker at the command prompt.

How MemMaker Changes the Order of Commands in the CONFIG.SYS File

When you run MemMaker, it modifies the CONFIG.SYS file so that the following commands appear in the following order:

device=c:\dos\himem.sys
device=c:\dos\emm386.exe <settings>
buffers=<setting>
files=<setting>
dos=umb
lastdrive=<setting>
fcbs=<setting>

It does not change the order of other commands in the CONFIG.SYS file.

The <setting> and <settings> parameters are determined by MemMaker for each specific installation and configuration.

If you must load a device driver before the drivers listed above, edit your CONFIG.SYS file yourself and move the command line for that driver where it belongs.

Û To add a driver yourself

  1. Edit your CONFIG.SYS file and use the rem command to comment out the device driver you are having problems with.

  2. Run MemMaker.

  3. Edit your CONFIG.SYS file and remove the rem command from the command that starts the device driver.

  4. Return the device driver to its previous location.

If the memory configuration that MemMaker created changes when you follow this procedure, you must manually optimize your configuration.

Troubleshooting MemMaker

The following section provides tips on troubleshooting MemMaker. For additional tips, see the MemMaker section of the README.TXT file and the troubleshooting section in the chapter "Making More Memory Available" in the MS-DOS 6 User's Guide.

MemMaker Reports Memory-Change Values That Don't Match

When MemMaker completes, it shows how memory usage has changed as a result of the optimization process. The numbers in the Change columns for conventional memory and upper memory usually match (for example, if MemMaker reports that there is 40K more free conventional memory, there will usually be 40K less free upper memory). However, under certain conditions these two values may differ (for example, MemMaker might report that there is 58K more free conventional memory and 62K less free upper memory).

The values for the change in conventional and upper memory will not match if one of the following conditions occurs:

  • A program that loads itself into the upper memory area changes size (for example, SMARTDRV.EXE does this).

  • You use a third-party memory manager that utilizes the upper memory area differently from EMM386. (When you run MemMaker, it installs EMM386 to manage upper memory.)

  • A program that MemMaker configured to run in upper memory failed to load into upper memory.

Third-Party Compression Software Doesn't Load After Running MemMaker

If you run MemMaker with a third-party disk compression program, such as Stacker® or SuperStor™, MemMaker cannot undo the changes in the CONFIG.SYS and AUTOEXEC.BAT files after failing to restart your computer.

If MemMaker cannot restart your computer properly, it provides you with the option to undo changes. However, because the compressed drive is no longer mounted, MemMaker cannot undo changes to the copies of your CONFIG.SYS and AUTOEXEC.BAT files located on the compressed drive.

Although MemMaker detects that your drive has been compressed and verifies that the CONFIG.SYS and AUTOEXEC.BAT files match, the problem occurs because CHKSTATE.SYS is loaded before the disk-compression software that enables the compressed drive. MemMaker can restore the files on the host drive, but not on the compressed volume (which is swapped with the host after the disk-compression software is loaded).

To restore your computer to its previous state, quit MemMaker, and then copy and rename the AUTOEXEC.UMB and CONFIG.UMB files from the host

drive to the compressed volume. For example, if drive D is the uncompressed host drive and drive C is the compressed drive, you would type the following commands:

copy d:\autoexec.umb c:\autoexec.bat
copy d:\config.umb c:\config.sys

You Use QEMM and Receive the "Bad Command or Filename" Message

If you are using QEMM™ to load programs into upper memory, and the files command has a plus (+) sign for a delimiter, the following message appears:

Bad Command or Filename

Using a plus sign as a delimiter is not standard for MS-DOS. For example, the following command is not valid in MS-DOS:

c:\qemm\loadhi /r:1 files+30

Û To correct the command:

  1. Remove the QEMM **files+**nn command from your AUTOEXEC.BAT file.

  2. Add the files command in your CONFIG.SYS file to specify the number of open files. For example, you would add the following command to your AUTOEXEC.BAT file:

files=30

  1. Run MemMaker again to ensure you have the optimal memory configuration.

New Features of EMM386

Version 4.45 of the Microsoft expanded memory manager (EMM386.EXE), provided with MS-DOS 6, has the following new features:

  • Advanced upper memory scanning

  • EMS/VCPI/XMS memory sharing

  • Ability to provide upper memory regions for Microsoft Windows

  • Ability to load with NOEMS when no page frame is available

  • NOVCPI switch for smaller load size

  • Automatic IBM® Token Ring adapter detection

  • Quiet loading

  • Alternate CTRL+ALT+DEL handling

  • Larger default DMA buffer size

Advanced Upper Memory Scanning

EMM386 can now scan the E000h-EFFFh region and the F000h-F7FFh region when the system ROM is duplicated between F000h-F7FFh and F800h-FFFFh. The ROM Basic area on IBM PS/2® systems is included by default.

To enable this feature, edit your CONFIG.SYS file and add the highscan switch to the device command line that loads EMM386.EXE.

EMS/VCPI/XMS Sharing

Previous versions of EMM386 allocated as much Extended Memory Specification (XMS) memory as possible during their initialization phase.

This tied up memory that could otherwise have been used by programs that
use Expanded Memory Specification (EMS) memory.

EMM386 version 4.45 includes support for dynamic allocation of memory.

This means EMM386 can create and free different types of memory as you
run different programs.

Ability to Provide Upper Memory Regions for Windows

EMM386 version 4.45 provides a new win switch that defines upper memory regions available for use by Microsoft Windows. These regions are similar to regions excluded by using the x switch, because memory is not mapped into those areas. However, unlike regions excluded by using the x switch, Windows (when running in 386 enhanced mode) can map its own memory into these upper memory regions and make more conventional memory available to MS-DOS – based applications running with Windows.

Ability to Load with No Page Frame

Previous versions of EMM386 would not load if expanded memory support was enabled and there was not enough contiguous available address space for an EMS page frame. To support MemMaker, EMM386 has been enhanced to display a warning message and to continue loading if this situation occurs.

NOVCPI Switch for Smaller Load Size

Previous versions of EMM386 disabled both EMS and virtual control program interface (VCPI) support when the noems switch was used. EMM386 version 4.45 leaves VCPI support enabled by default when the noems option is used (relying on the EMS/VCPI/XMS sharing enhancement to supply VCPI memory).

To disable VCPI support, add the novcpi switch to the device command for EMM386.EXE. Using the noems and novcpi switches together results in a reduction in the amount of extended memory used by EMM386.

Token Ring Adapter Detection

EMM386 automatically detects the memory location of IBM Token Ring adapter cards and prevents the mapping of expanded or upper memory over the adapter. To disable the new Token Ring adapter detection, add the new notr switch to the device command for EMM386.EXE.

Quiet Loading

By default, EMM386 version 4.45 now loads without displaying any status messages. To instruct EMM386 to display status messages as well as warning and error messages, edit your CONFIG.SYS file and add the verbose switch to the device command for EMM386.EXE. (You can also display startup information by pressing the ALT key while your computer is starting.)

If EMM386 encounters an error during initialization, it switches to verbose mode and displays the error message and all remaining startup information.

Alternate CTRL+ALT+DEL Handling

EMM386 now provides the altboot switch, which can help avoid problems when you restart a computer with the key combination CTRL+ALT+DEL. If your computer stops responding when you press CTRL+ALT+DEL, try adding the altboot switch to the device command for EMM386.EXE.

The CTRL+ALT+DEL handling routine changed when EMM386 was upgraded in Microsoft Windows version 3.1. The altboot parameter tells EMM386 to handle CTRL+ALT+DEL the same way it does in Microsoft MS-DOS version 5.0.

Larger Default DMA Buffer Size

EMM386's default direct memory access (DMA) buffer size has increased from 16 to 32 kilobytes. All DMA buffers are stored in extended memory regardless of size.

HIMEM.SYS is Quiet by Default

By default, the MS-DOS 6 version of HIMEM.SYS loads without displaying any status messages. To instruct Himem to display status messages (for example, A20 line information) as well as warning and error messages, edit your CONFIG.SYS file and add the /verbose (/v) switch to the device command for HIMEM.SYS. (You can also display startup information by pressing the ALT key while your computer is starting.)

If Himem encounters an error during initialization, it switches to verbose mode and displays the error message and all remaining startup information.