Troubleshooting in DOS

 Document 1302

Troubleshooting


Initials:

        11/26/91

DRDOS 6.0


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

DOOO-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 about 

how 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.


Comments

Popular posts from this blog

BOTTOM LIVE script

Fawlty Towers script for "A Touch of Class"