=

AST RESEARCH, INC.          TECHNICAL BULLETIN # 1256               7-19-95

=


UNABLE TO LOAD GAMES IN SYSTEMS EQUIPPED WITH CD-ROM DRIVERS


PROBLEM

When attempting to load games on systems which are shipped with drivers 
such as MSCDEX.EXE, some of the following failure symptoms may occur:

	The system may hang.
	The game may not play.
	Memory errors may be generated by EMM386.


CAUSE

The systems are not failing and are operating as designed.  However, the 
systems may be experiencing a lack of memory environment to load the 
games or other programs, with drivers in their current configuration.


SYSTEMS AFFECTED
AST PART NUMBER AND DESCRIPTION

All systems equipped with CD-ROMs or other memory intensive devices.


SOLUTION

The memory condition can be handled in one of two methods:

1) Bypassing the startup files.
2) Using the MEMMAKER command or other third-party memory manager.

If the system is experiencing problems that can be related to commands in the 
CONFIG.SYS or AUTOEXEC.BAT files, you may want to temporarily 
bypass both files.

To bypass the CONFIG.SYS and AUTOEXEC.BAT files do the following:

1. Start or restart the system.  After the system starts, MS-DOS displays the 
following text:

Starting MS-DOS...

2. While the above text is on the screen, press and release the <F5> key or 
press and hold down the <Shift> key.  MS-DOS will display the following 
text:

MS-DOS is bypassing your CONFIG.SYS and AUTOEXEC.BAT files.

The computer will then start with a basic configuration instead of the usual 
configuration.  
Note: Some parts of the system may not work as they usually do.

Confirming each CONFIG.SYS and AUTOEXEC.BAT file.

1. Start or restart the system.  After the system starts, MS-DOS displays the 
following text:

Starting MS-DOS...

2. While the above text is on the screen, press and release the <F8>key.  
MS-DOS will display the following text:

MS-DOS will prompt you to confirm each CONFIG.SYS and 
AUTOEXEC.BAT command

One at a time, MS-DOS displays each command in your CONFIG.SYS and 
AUTOEXEC.BAT file followed by the prompt.  For example, when 
MS-DOS reaches the DOS=HIGH command, it displays the following 
prompt: DOS=HIGH [Y,N]?

To carry out the current command, press "Y" for yes.  
To bypass that command, press "N" for no.  
To carry out all remaining startup commands, press <Esc>.  
To bypass all remaining startup commands, press <F5>.

3. When MS-DOS finishes processing the CONFIG.SYS file, the following 
prompt appears:

Process AUTOEXEC.BAT [Y,N]?

To carry out all the commands in your AUTOEXEC.BAT file, press "Y" for 
yes.  
To bypass your AUTOEXEC.BAT file completely, press "N" for no.


Using the MEMMAKER command or other third-party memory managers.

The MS-DOS User's Manual chapter named "Making More Memory 
Available" documents how to use the MEMMAKER utility.  

Below are some tips to follow (from Microsoft TechNet) when using third-
party memory managers and optimizing memory with the MSCDEX.EXE 
driver for your CD-ROM.

For complete compatibility, Windows 3.2 and MS-DOS 5.0 both provide 
HIMEM.SYS and EMM386.EXE as memory management drivers.  
The overriding objective Microsoft has for these drivers is to avoid hanging 
any computer during or after memory configuration.  Optimization, while 
important, is secondary.

To allocate upper memory blocks (UMBs) through a third-party memory manager, 
you need both a UMB provider and a UMB loader:

A UMB provider is the memory manager that makes UMBs available.  
For MS-DOS 5.0, the UMB provider is the combination of EMM386.EXE plus 
HIMEM.SYS.  In QEMM386 and 386MAX, for example, the UMB providers are 
QEMM386.SYS and 386MAX.SYS, respectively.

A UMB loader loads a program into the proper UMB.  The UMB loader in 
MS-DOS 5.0 is in the MS-DOS kernel, accessed through the "devicehigh" and 
"loadhigh" commands.  The equivalents in 386LOAD.SYS and 386LOAD.COM; in 
QEMM386, they are LOADHI.SYS and LOADHI.COM.


The arguments "for" using third-party memory managers include:

Most third-party memory managers have a wider range of options for loading 
into the UMBs.  For example, you can specify a particular UMB for loading a 
program.

Third-party memory managers typically require 3K to 5K of conventional 
memory, while HIMEM.SYS with EMM386.EXE may take up to 10K.  
However, some memory managers also require overhead in the UMBs, but 
neither HIMEM.SYS nor EMM386.EXE require any.


The arguments "against" using third-party memory managers include:

Third-party memory managers can be more difficult to configure properly 
than EMM386.EXE, and they are often geared toward more sophisticated 
users.

Third-party memory managers are supplemental to HIMEM.SYS and 
EMM386.EXE, so they require additional costs and resources to support.  
Unless you absolutely require 100 percent optimization, a third-party 
manager may be superfluous.


If you decide to use a third-party memory manager, follow these guidelines:

Don't use either HIMEM.SYS or EMM386.EXE.

Use dos=high to load MS-DOS 5.0 into the HMA.

Don't use the dos=umb, devicehigh, or loadhigh commands.

Don't use the third-party commands that relocate the MS-DOS buffers into 
the UMBs.  MS-DOS 5.0 automatically puts its buffers into the HMA, saving 
the UMBs for other programs.

Use both the third-party UMB provider (such as 386MAX.SYS) and the 
third-party UMB loader (such as 386LOAD.SYS and 386LOAD.COM).

Use the third-party commands to relocate MS-DOS file handles and drive space 
(from the files and lastdrive commands in your CONFIG.SYS) into the UMBs.

You can also use third-party memory drivers as alternatives to HIMEM.SYS, 
SMARTDRV.EXE, and RAMDRIVE.SYS.  However, the memory drivers provided with 
Windows 3.1 have been specifically designed and tested to provide maximum 
compatibility between MS-DOS 5.0 and Windows.


Optimizing memory with MSCDEX.EXE

When combined with a CD-ROM device driver, Microsoft CD-ROM Extensions 
(MSCDEX.EXE) allows you to connect a CD-ROM drive to an MS-DOS-based personal 
computer (PC).  Outlined below are the various parameters available for the 
Microsoft CD-ROM Extensions and their usage:

Usage:      MSCDEX.EXE /D:<name> /M:<value> /L:<drive> /E /S /V /K
Example:    MSCDEX.EXE /D:MSCD001 /M:12 /L:D /E /S /V /K

/M: and /E are the two parameters that can be modified to change the amount 
of memory that MSCDEX.EXE uses.


/M: Parameter

The /M: parameter defines how many memory buffers MSCDEX.EXE uses.
Each buffer occupies 2K of memory.  Decreasing this value decreases the amount 
of conventional memory that MSCDEX.EXE uses (and will decrease the performance 
when running software that accesses the CD-ROM drive). 

/E: Parameter

The /E: parameter instructs MSCDEX.EXE to load a portion of the MSCDEX.EXE 
memory buffers into expanded memory, if it exists.

/D: Parameter

The /D: parameter is used to locate the device driver.

/L: Parameter

The /L: parameter allows the user to specify a particular drive letter for the 
CD-ROM unit.  If this is not specified, MSCDEX.EXE assigns the next 
available drive letter on the system.

/S: Parameter

The /S: parameter specifies that MSCDEX.EXE should modify MS-DOS to allow 
the CD-ROM drive to be shared on MS-NET based servers.

/V: Parameter

The /V: parameter instructs MSCDEX.EXE to display additional information 
about memory usage during initialization.

/K: Parameter

The /K: parameter tells MSCDEX to use Kanji (Japanese) file structures, if 
present, rather than the default alphanumeric file structures.