Document 1302
Troubleshooting

Description:

 Troubleshooting

Isolating the Problem

If you encounter memory conflicts after you have arranged your
device drivers and TSRs in the manner described in the previous
chapter, your next step should be to isolate and identify the
offending conflict. The best way to do this is to methodically
load each of your drivers, TSRs, and application programs one at
a time until you encounter the problem driver or program.

Note:
To complete the following steps, you should be familiar with
editing your config.sys and autoexec.bat files with a
wordprocessor or text editor such as the DR DOS EDITOR, and with
the REM command. Refer to Chapters 7 and 11 of the DR DOS 6.0
User Guide.

Whenever you experiment with and change your config.sys and
autoexec.bat files, you should always have a separate bootable
floppy disk available containing the unedited, original versions
of your config.sys and autoexec.bat files in case you need to
reboot your computer from the A: drive. Then, if you need to go
back to your original configuration, you can copy the original
config.sys and autoexec.bat files from your backup diskettes
onto your boot disk. (See Chapter 10 in the DR DOS 6.0 User
Guide for information on how to create a bootable floppy disk.)

To isolate the source of your memory conflict, turn off those
lines in your config.sys or autoexec.bat file that might be
causing the problem.  Do this by editing the config.sys or
autoexec.bat file and placing a REM comment at the beginning of
each line you want to turn off. For example, to turn off the
following config.sys line:

DEVICE = C:\DRDOS\EMM386.SYS /F=AUTO /K=2024

add the REM comment to the beginning of the line:

REM DEVICE = C:\DRDOS\EMM386.SYS /F=AUTO /K=2024

If you find a particular line is not causing a problem, you can
reactivate it by simply removing the REM statement.

Note:
You can also use the DR DOS conditional "?" statement to
activate/deactivate config.sys line commands. See Chapter 11 of
the DR DOS 6.0 User Guide for details. If you use this option,
make careful note of whether you said "yes" or "no" to loading
each line.

After turning off the suspect lines with a REM statement, reboot
your computer to retest the driver/application with which you
first encountered your memory problem. If the system runs
correctly, reenter your config.sys or autoexec.bat file and
remove the REM command from one line and then reboot and reload
the application. Continue this process until you again encounter
the memory problem. When it recurs, you will have isolated the
line in the config.sys or autoexec.bat file that is causing the
memory conflict.  You can now take action to resolve the
conflict, as described in the following sections.

Possible Problems

After you have isolated the problem driver or program, you can
use the techniques described below to make the appropriate
corrections to your computer's configuration. 

Some problems that you might encounter after installing the
MemoryMAX drivers include:

*Insufficient conventional memory to load a particular driver or
program.

*HILOAD, HIINSTALL, or HIDEVICE features do not seem to operate
correctly

*Computer locks up

*Upper memory conflicts

*Video problems

*Error message: "Packed file is corrupt."

Each of these problems, and the techniques to correct them, are
described below.

Insufficient Conventional Memory

After using the DR DOS 6.0 memory management system to increase
conventional memory, there should not be a problem due to
insufficient memory.  However, if a large number of device
drivers or TSRs are in use, this problem might still occur. 
Review Chapter 1 of this guide to ensure you have taken the
proper steps to optimize system memory. Try the MEMMAX +L
command in case an earlier command or batch file disabled
available low memory.  Finally, if the application does not use
the graphics display area, try the /V switch of the DR DOS 6.0
memory manager, followed by MEMMAX +V before loading your
application.

HILOAD, HIINSTALL, or HIDEVICE Considerations

Each of these commands requires the availability of upper memory
blocks (UMBs). You can verify that the UMBs are available by
using the DR DOS MEM /B or /U commands to see a report of your
memory usage (see Chapter 10 of the DR DOS 6.0 User Guide for a
full description of the MEM command). Available UMB blocks will
be marked as FREE under the Type column in the MEM listing.

The HILOAD, HIINSTALL, and HIDEVICE commands require prior
installation of the EMM386.SYS or HIDOS.SYS driver. If the MEM
report shows that upper memory is not being utilized, check your
config.sys to make sure the driver has been properly installed
and that the option switches have been entered correctly. If
they are set, pay particular attention to the /FRAME, /AUTOSCAN,
/INCLUDE, /BDOS, and /EXCLUDE switches to ensure that any upper
memory address specified by these switches have been correctly
set (a common error is using an "oh" instead of a zero).

If you use Microsoft Windows 3.0, the /WINSTD switch might have
been set. The /WINSTD switch automatically blocks access to the
UMBs, making them unavailable to HILOAD, HIINSTALL, and
HIDEVICE. Windows 3.0 will not run properly in standard mode if
UMBs have been used by something else. (See the "Using
EMM386.SYS with Windows" on page 22.)

If you do not require the use of expanded memory, set the /FRAME
switch to /FRAME=NONE.

The HILOAD command must be invoked before using the MEMMAX -U
command to disable upper memory. Use the MEMMAX +U command to
re-enable upper memory, if necessary. (Note that the DR DOS
installation program automatically inserts the MEMMAX -U command
in the autoexec.bat file; therefore, you must either put HILOAD
above it, or use MEMMAX +U to enable upper memory).

If there appears to be sufficient upper memory available, but
HILOAD, HIINSTALL, or HIDEVICE fail to put a particular TSR or
driver into upper memory, some device drivers and TSR programs
when initializing might actually expand and take up considerably
more RAM than they will ultimately need. See "System Memory
Optimization" on page 9 for a complete description of this
problem.

Computer will not boot or locks up

Reboot your machine with a bootable floppy disk in drive A:.
Follow the instructions in "Isolating the Problem" above and
edit the C: drive config.sys and/or autoexec.bat files to turn
off and isolate, with the REM command, those lines in the files
that might be causing the problem.

The most probable cause is that the DR DOS 6.0 memory manager
has moved something into a region of upper memory required by a
hardware device driver attempting to use the same areas of
memory.  Use the /EXCLUDE option (see page 18) switches to
remedy the problem.

If a hardware device is not causing a conflict, and the lockup
occurs with a particular program, this program might become
confused when upper or low memory is available. Try using the
command MEMMAX -U and/or MEMMAX -L before loading the program.

Upper Memory Conflicts: Using /EXCLUDE

Your machine or the accessories in your machine might be using
upper memory addresses that are also being accessed by the DR
DOS 6.0 memory manager. To prevent this, exclude EMM386.SYS or
HIDOS.SYS access to the upper memory address range that is
causing the conflict. The following recommendations apply to the
EMM386.SYS driver for 386 and 486 computers, or the HIDOS.SYS
driver on 286 computers with shadow RAM.

Some typical symptoms of upper memory conflict include:

*inability to log onto networks

*inability to access hard or floppy disk drives

*inability to format low-density floppy disks in high density
drives

*error messages such as "card not found."

A good starting place to check for upper memory usage is the
documentation for any accessory boards or drivers you have
installed; if they require upper memory, it will usually be
indicated in the documentation.

If you encounter such problems and suspect that upper memory
conflicts can be the cause, first REM out the memory manager
line of the config.sys file completely. If the problem
disappears, you know that the memory driver is part of the
conflict and you can begin to look at changing switches to
correct the problem.  Use the DR DOS EDITOR and change the
following settings in your config.sys file:

1.If the EMM386.SYS /BDOS option is set to /BDOS=AUTO,  
switch it to /BDOS=FFFF, 

2.Save config.sys.

3.Reboot.

4.Retest.

If the problem recurs, change the /R=AUTO setting to /R=NONE,
and then save the config.sys file, and reboot the computer to
retest.

You can also use the /EXCLUDE switch to exclude an area of upper
memory that the /AUTOSCAN feature detects as being available
but, in fact, might be used by another device, such as a network
card.

The /EXCLUDE Option

If the hardware documentation does not specify a memory range to
be excluded, you can use the /EXCLUDE option to discover if
there is an upper memory conflict. This option is used to
systematically exclude sections of upper memory from being used
by EMM386.SYS by excluding upper memory "half-at-a-time." For
example, use this "halving" method to exclude the top half of
the upper memory range first, reboot the computer and test the
problem. Then, if the problem recurs, change the /EXCLUDE
setting to exclude the lower half of upper memory, reboot, and
retest.

After discovering in which half of upper memory the conflict
resides, repeat the process by dividing that memory range in
half.  You can use this technique to break down the entire upper
memory range, half-by-half, until you pinpoint the area of
conflict.

You must use the hexadecimal notation of the memory address with
the /EXCLUDE switch. The following brief explanation is provided
for those unfamiliar with using the hexadecimal system.

Hexadecimal Addresses

The 384 Kbyte range of upper memory resides between the
hexadecimal memory addresses of A000 and FFFF. The upper half of
this range lies between the addresses D000 and FFFF; the lower
half lies between A000 and CFFF.  Because A000 to BFFF is
typically reserved for video display, you will normally work
only with addresses C000 to FFFF.

To exclude the lower half of the C000 to FFFF range, enter the
following /EXCLUDE command in your EMM386.SYS or HIDOS.SYS line
in the config.sys file:

/E=C000-DFFF

Then, reboot your computer to test the exclusion. If the problem
persists, edit the /EXCLUDE statement to exclude the other half
of the C000 to FFFF range by entering the following in the
config.sys file:

/E=E000-FFFF

Continue excluding a smaller and smaller range of memory until
you have found the smallest possible exclusion, which still
permits proper functioning.

Note:
The first address in each range of memory (EXCLUDE, INCLUDE,
etc.) must end in "00" and the second must end in "FF."

Note that you can also exclude multiple memory ranges with the
/EXCLUDE statement by separating the ranges with a comma, e.g.,
/E=D000-D7FF,DA00-DBFF. 

The chart below shows how this process works, and shows the
memory address for the 64 Kbyte range in the "D" segment of
upper memory.

D000-DFFF = 64K = D000-D7FF = 32K + D800-DFFF = 32K = 64K TOTAL
D000-D7FF = 32K = D000-D3FF = 16K + D400-D7FF = 16K = 32K TOTAL
D800-DFFF = 32K = D800-DBFF = 16K + DC00-DFFF = 16K = 32K TOTAL
D000-D1FF = 8K + D200-D3FF = 8K = 16K TOTAL
D400-D5FF = 8K + D600-D7FF = 8K = 16K TOTAL
D800-D9FF = 8K + DA00-DBFF = 8K = 16K TOTAL
DC00-DDFF = 8K + DE00-DFFF = 8K = 16K TOTAL

(The first "D" in each hex address above can be replaced with C,
E, or F when working with those segments.)

Once you find the conflicting range of upper memory, permanently
exclude it from being used by EMM386.SYS or HIDOS.SYS by using
the /EXCLUDE statement.

Video Problems

If you experience problems with your video display after
installing MemoryMAX drivers, a possible cause is that your
video adapter is attempting to use some of the same upper memory
addresses being allocated by EMM386.SYS or HIDOS.SYS.

A quick way to determine if your current memory setup is causing
a conflict with a video (or other device) board is to "turn off
the entire memory driver line in your config.sys file by using
the REM command or the "?" technique discussed previously in
"Isolating the Problem."  If the problem does not recur with the
memory driver "turned off," the cause of the problem is probably
an upper memory conflict.

See "The DR DOS MemoryMAX System" on page 2 for information
abouthow to determine if upper memory is being used by drivers
and hardware boards.

Use the EMM386.SYS or HIDOS.SYS /VIDEO option to reserve
graphics memory addresses normally occupied by video display
adapters (see Chapter 11 of the DR DOS 6.0 User Guide). 

If the /VIDEO option is set, and the video corruption is
occurring with a graphics program, be sure that the MEMMAX -V
switch is operative. When only text displays are required, the
MEMMAX +V switch can borrow some of the graphics memory areas
and add it to conventional memory, providing more space for text
applications. However, if an application requires graphical
displays, you must be sure this memory area is available to
video by issuing the MEMMAX -V command.

If the video display is corrupted only during use with the DR
DOS TaskMAX task switcher, refer to the readme file (in the DR
DOS directory) or the Release Note for instructions on how to
use the TaskMAX /F switch.

Network Hardware Interfacing

It is common for network hardware to utilize areas of upper
memory and thus conflict with MemoryMAX allocations of that
memory.  If this occurs, you might be unable to log onto the
network or random lockups might occur. See "Upper Memory
Conflicts" on page 17, and "Using Network Software" on page 30,
for a full discussion of how to deal with upper memory conflicts
such as these and how to use the EMM386.SYS /EXCLUDE switch to
exclude the conflicting areas of upper memory.

Another possible cause of network problems is that your network
driver is designed for use with MS-DOS versions other than
versions 3.3+. Network drivers designed for use with MS-DOS
versions 4.0+ and 5.0 would not be appropriate for the DR DOS
6.0 operating system. (See "Using Network Software" on page 30)

Floppy Drive Does Not Work

If you have installed Super PC-Kwik and have enabled the /D+
switch, your disk controller must be 100% IBM compatible. Reset
the /D+ switch to /D- (the /D# switch works on some controllers)
to turn off PC-Kwik's advanced caching for the floppy drives
(advanced caching for your hard drive remains in effect).

SCSI Disk Drive Problems

The DR DOS 6.0 operating system supports virtual DMA and bus
master controllers. Any problem with SCSI drives is probably due
to a memory conflict (see "Upper Memory Conflicts" on page 17).

Expanded (EMS) Memory Problems

If a program that requires EMS memory reports that no EMS is
available or locks up when executed, the problem might be that
the application assumes that the LIM page frame starts at a
specified address. 

Remedy this problem by ensuring that the LIM page frame defined
in the application's SETUP program or documentation matches the
settings in EMM386.SYS or EMMXMA.SYS. The /F= switch defines the
start of the LIM page frame.

Another cause of insufficient LIM memory occurs if you are using
TaskMAX in expanded memory and too many tasks have been loaded.
Unload a few of the tasks and restart the program.

Error message: "Packed file is corrupt."

This error might occur when the first 64 Kbytes of conventional
memory (called low memory) have been made available through the
use of MemoryMAX. Normally, the operating system occupies this
entire area.  Some applications were written using packing
utilities that become confused when run in this low memory.  If
this happens, the following message appears:
Packed file is corrupt.

For an easy workaround, use the MEMMAX -L command to disable low
memory before running the application.  Then load and run your
application.  After exiting the application, use MEMMAX +L to
enable the low memory area once again.

Because this problem can occur with other memory managers,
including QEMM.386, your application vendor might be able to
supply you with an updated application that does not exhibit
this problem.
