Dec 142017
 
EMM386.EXE: No Expanded Memory Available - Tech Note from the Microsoft BBS.
File PD0459.ZIP from The Programmer’s Corner in
Category Tutorials + Patches
EMM386.EXE: No Expanded Memory Available – Tech Note from the Microsoft BBS.
File Name File Size Zip Size Zip Type
PD0459.TXT 15589 4594 deflated

Download File PD0459.ZIP Here

Contents of the PD0459.TXT file


======================================================================
Microsoft(R) Product Support Services Application Note (Text File)
PD0459: NO EXPANDED MEMORY AVAILABLE AFTER INSTALLING EMM386.EXE
======================================================================
Revision Date: 4/93
NO DISK INCLUDED

The following information applies to Microsoft MS-DOS, versions 5.0
and 6.0.

--------------------------------------------------------------------
| INFORMATION PROVIDED IN THIS DOCUMENT AND ANY SOFTWARE THAT MAY |
| ACCOMPANY THIS DOCUMENT (collectively referred to as an |
| Application Note) IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY |
| KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO |
| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A |
| PARTICULAR PURPOSE. The user assumes the entire risk as to the |
| accuracy and the use of this Application Note. This Application |
| Note may be copied and distributed subject to the following |
| conditions: 1) All text must be copied without modification and |
| all pages must be included; 2) If software is included, all files |
| on the disk(s) must be copied without modification [the MS-DOS(R) |
| utility DISKCOPY is appropriate for this purpose]; 3) All |
| components of this Application Note must be distributed together; |
| and 4) This Application Note may not be distributed for profit. |
| |
| Copyright 1991-1993 Microsoft Corporation. All Rights Reserved. |
| Microsoft and MS-DOS are registered trademarks and Windows |
| is a trademark of Microsoft Corporation. |
| IBM and PS/2 are registered trademarks of International Business |
| Machines Corporation. |
--------------------------------------------------------------------


INTRODUCTION
============

After you install EMM386.EXE to provide access to the upper memory
area (UMA), Windows versions 3.0 and 3.1 no longer provide expanded
memory to your MS-DOS-based applications. This change can cause
certain problems to occur.

SYMPTOMS
--------

If expanded memory is no longer provided, your MS-DOS-based
applications may exhibit some of the following common symptoms:

- When you start an MS-DOS-based application from within Windows, the
application displays an "Out of Memory" message and then quits.

- When you start an MS-DOS-based application from within Windows, the
application behaves erratically, and displays "Out of Memory"
messages when you try to perform certain functions.

- Windows stops responding (hangs) when you start some MS-DOS-based
applications, but you can start and run other MS-DOS-based
applications without any problems.

CAUSE
-----

The DEVICE command line for EMM386.EXE contains the NOEMS switch,
which tells EMM386.EXE and Windows not to provide expanded memory to
MS-DOS-based applications.

SOLUTION
--------

To correct this problem, edit your CONFIG.SYS file so that the DEVICE
command for EMM386.EXE uses the RAM switch instead of the NOEMS
switch. Procedure 1 explains how to do this. After you complete
Procedure 1, if some of your memory-resident programs or device
drivers fail to load into upper memory blocks (UMBs), continue with
Procedure 2 and, if necessary, Procedure 3.

NOTE: In the following three procedures, c represents your hard disk
drive.


PROCEDURE 1: CHANGING THE DEVICE COMMAND
========================================

To use the RAM switch instead of the NOEMS switch, use the following
steps:

1. Use a text editor to open your CONFIG.SYS file. To edit the file
using MS-DOS Editor, type the following at the MS-DOS command
prompt, and press the ENTER key:

edit c:\config.sys

2. Locate the DEVICE command for EMM386.EXE. It should look similar to
the following:

device=c:\dos\emm386.exe noems

3. Substitute RAM for NOEMS. The corrected DEVICE command for
EMM386.EXE should look similar to the following:

device=c:\dos\emm386.exe ram

4. Save your CONFIG.SYS file and quit the text editor. If you're using
MS-DOS Editor, choose Exit from the File menu. When MS-DOS Editor
displays a dialog box prompting you to save your file, choose the
Yes button or press ENTER.

5. Restart your computer by pressing CTRL+ALT+DEL.

6. Start Windows and try to reproduce the problem. If your application
runs normally, using the NOEMS switch caused the problem and
replacing it with the RAM switch corrected it. If the problem still
occurs, call Microsoft Product Support Services for further
assistance.

After you finish this procedure, you may find some programs or device
drivers now fail to load into UMBs. If so, continue with Procedure 2.
To see if your programs and device drivers successfully loaded into
UMBs, type the following at the MS-DOS command prompt and press ENTER:

mem /c | more

This command displays the contents of your computer's conventional and
upper memory, and shows where each program is running in memory. (For
more information about the MEM /C command and UMBs, see page 320 of
the "Microsoft MS-DOS User's Guide and Reference for MS-DOS 5.0". If
you are using MS-DOS 6.0, type HELP at the MS-DOS command prompt.)


PROCEDURE 2: MAKING MORE ROOM IN THE UMA
========================================

Certain address ranges in the UMA are normally reserved for use by
hardware adapters. EMM386.EXE usually ignores these ranges and does
not use them for UMBs. On most systems, however, adapters do not use
all the reserved address ranges. You can instruct EMM386.EXE to use
these empty address ranges, thereby increasing the number of programs
and device drivers that you load into UMBs.

If you have MS-DOS 6.0, you can use the MemMaker program to maximize
EMM386.EXE's use of the UMA. To do so, use the following steps:

1. Start MemMaker by typing "MEMMAKER" at the MS-DOS command prompt and
pressing ENTER.

2. When you are prompted to choose express or custom setup, choose
Custom Setup.

3. When you are asked if you use any programs that need expanded
memory, choose Yes.

4. In the Advanced Options screen make the following choices:

Specify which drivers and TSRs to include in No
optimization?

Scan the upper memory area aggressively? Yes

Optimize upper memory for use with Windows? No

Use monochrome region (B000-B7FF) for running No
programs?

Keep current EMM386 memory exclusions and Yes
inclusions?

Move Extended BIOS Data Area from conventional Yes
to upper memory?


NOTE: If your computer does not have a monochrome monitor, choose
Yes in response to the question "Use monochrome region (B000-B7FF)
for running programs?"

5. After MemMaker restarts your computer the last time, use the MEM /C
| MORE command to see if your programs successfully loaded into
UMBs.

If your programs and device drivers are running in UMBs, and your
MS-DOS-based application works properly and is receiving the
expanded memory it needs, you have corrected the problem. If not,
continue with Procedure 3.

If you have MS-DOS 5.0, use the following steps to configure
EMM386.EXE's use of the UMA:

1. Create an MS-DOS 5.0 startup disk. To do so, insert a formatted
floppy disk in drive A, type the following at the MS-DOS command
prompt, and press ENTER:

sys c: a:

2. Copy your CONFIG.SYS file to the startup disk by typing the
following:

copy c:\config.sys a:\

3. Use a text editor to open your original CONFIG.SYS file. To edit the
file using MS-DOS Editor, type the following at the MS-DOS command
prompt and press ENTER:

edit c:\config.sys

4. Locate the DEVICE command for EMM386.EXE, and insert the i switch
before the RAM switch. The i switch instructs EMM386.EXE to use an
address range in the UMA for UMBs. The value you specify for the i
switch depends on your computer and monitor type.

NOTE: In the following examples, hexadecimal addresses consist of
the letters A-F and numbers. All "0"s represent zeros, not
letters.

- If your computer has a monochrome monitor but is not an IBM(R)
PS/2(R), add the i=E000-EFFF switch before the RAM switch, as
follows:

device=c:\dos\emm386.exe i=E000-EFFF ram

- If your computer is an IBM PS/2 but does not have a monochrome
monitor, add the i=B000-B7FF switch before the RAM switch, as
follows:

device=c:\dos\emm386.exe i=B000-B7FF ram

- If your computer is not an IBM PS/2 and does not have a
monochrome monitor, add the i=E000-EFFF and the i=B000-B7FF
switches before the switch, as follows:

device=c:\dos\emm386.exe i=E000-EFFF i=B000-B7FF ram

- If your computer is an IBM PS/2 with a monochrome monitor, skip
to Procedure 3.

5. Save your changes and exit the text editor. If you're using MS-DOS
Editor, choose Exit from the File menu. When MS-DOS Editor displays
a dialog box prompting you to save your file, choose the Yes button
or press ENTER.

6. Restart your computer by pressing CTRL+ALT+DEL.

If your computer fails when you start it, the memory range you
specified for EMM386.EXE is probably being used by hardware
adapters. In this case, insert your startup disk in drive A and
restart your computer. Then, edit your CONFIG.SYS file and remove
the i switch(es) you added to the DEVICE command for EMM386.EXE.
Call Microsoft Product Support Services for further assistance.

7. After your computer restarts, see if your programs successfully
loaded into UMBs by using the "MEM /C | MORE" command.

You have corrected the problem if your programs and device drivers
are running in UMBs and your MS-DOS-based application still works
properly and is receiving the expanded memory it needs.
If you still cannot load programs into UMBs, continue with
Procedure 3.


PROCEDURE 3: REDUCING THE SPACE ALLOCATED FOR EXPANDED MEMORY
=============================================================

If you start EMM386.EXE with the RAM switch and programs or device
drivers do not load into UMBs when your computer starts, your system
may not have enough UMBs to run those programs or device drivers. The
RAM switch sets aside 64 kilobytes (K) of the UMA as a page frame for
use with expanded memory. The remaining UMBs may not be large enough
to run your programs, even if you were able to include additional
addresses by following Procedure 2. In such cases, you can instruct
EMM386.EXE to reduce the 64K page frame to 16K, making more UMBs
available.

NOTE: Use this procedure only if your applications use expanded
memory according to the Lotus-Intel-Microsoft Expanded Memory
Specification (LIM EMS) version 4.0. Applications that follow the
LIM EMS version 3.2 need the full 64K page frame, and cannot use
expanded memory if you follow this procedure. If you are not sure
which LIM EMS version your application needs, contact your
application manufacturer.

To reduce the size of the 64K page frame and increase the number of
available UMBs, use the following steps:

1. Type EMM386 at the MS-DOS command prompt and press ENTER:

EMM386.EXE displays information about its current memory management
activities. Locate the line that reads "Page frame segment" and
write down the hexadecimal address that appears on that line. In
the following example, the page frame segment address starts at
E000:

Page frame segment . . . . . . . . . E000 H

2. Use a text editor to open your original CONFIG.SYS file. To edit the
file using MS-DOS Editor, type the following at the MS-DOS command
prompt and press ENTER:

edit c:\config.sys

3. Locate the DEVICE command for EMM386.EXE, and insert the P0 switch
before the RAM switch. The P0 switch should specify the address you
noted in step 1. For example, if the page-frame segment address
starts at E000, the DEVICE command appears similar to the
following:

device=c:\dos\emm386.exe p0=E000 ram

NOTE: In the P0=E000 switch, the "0"s represent zeros.

4. Save your changes and quit the text editor. If you're using MS-DOS
Editor, choose Exit from the File menu. When MS-DOS Editor displays
a dialog box prompting you to save your file, choose the Yes button
or press ENTER.

5. Restart your computer by pressing CTRL+ALT+DEL.

If your computer fails when you start it and you have MS-DOS 5.0,
insert your startup disk in drive A and restart your computer. Edit
your CONFIG.SYS file and remove the P0 switch you added to the
DEVICE command for EMM386.EXE. Then, save the file, restart your
computer, and repeat Procedure 3. Be sure to carefully note the
page-frame segment address.

If your computer fails when you start it and you have MS-DOS 6.0,
restart your computer and press the F8 key. When you are asked if
you want to load EMM386.EXE, choose No. Edit your CONFIG.SYS file
and remove the P0 switch you added to the DEVICE command for
EMM386.EXE. Then, save the file, restart your computer, and repeat
Procedure 3. Be sure to carefully note the page-frame segment
address.

6. After your computer starts, see if your programs were successfully
loaded into UMBs by using the MEM /C | MORE command.

You have corrected the problem if your programs and device drivers are
running in UMBs and your MS-DOS-based applications still work properly
and are receiving the expanded memory they need.

If your programs and device drivers still do not load into UMBs, it is
possible that your system simply does not have enough UMBs available
to run those programs. See your hardware documentation for information
about which addresses in the UMA are in use, or call Microsoft Product
Support Services for further assistance.

If your applications do not seem to be receiving the expanded memory
they need, they may require LIM EMS version 3.2. If this is the case,
you should remove the P0 switch.

ADDITIONAL INFORMATION
======================

For MS-DOS 5.0
==============

For more information about the "MEM /C" command and UMBs, see page 320
of the "Microsoft MS-DOS User's Guide and Reference".

For more information about EMM386.EXE and its startup parameters, see
pages 605-609 of the "Microsoft MS-DOS User's Guide and Reference."

For MS-DOS 6.0
==============

Type HELP at the MS-DOS command prompt and search on Mem, Emm386, or
EMM386.EXE.

Also
====

"Microsoft Windows User's Guide" explains how to use Windows program
information files (PIFs) to provide expanded memory to MS-DOS-based
applications.



 December 14, 2017  Add comments

Leave a Reply