12.2 DOS Troubleshooting Issues
12.2.2 DOS error messages
Another common operating system troubleshooting issue is error messages. There are many things that can cause these error messages to display. As a technician's experience with troubleshooting computer systems increases, these messages become easier to recognize. Technicians will eventually learn their causes and how to address them. Error messages usually appear when the operating system identifies a problem or when an end user attempts to run an application that the operating system cannot recognize.

Bad or Missing command.com
In the DOS environment, the "Bad or Missing command.com" error message is common. The command.com file and the role it plays in the operating system were previously discussed, and it is well known that the system will not boot without this file. There are a few things that might cause this error message to appear. The first is if the command.com file cannot be found on the hard drive. The second condition is if the command.com file is not located in the hard drive root directory. This usually occurs when a new hard drive or operating system is installed. The last scenario that may also cause this message to appear is if the end user accidentally erases the command.com file from the root directory of the hard drive.

Should this error message appear, it does not mean that the operating system has been corrupted and it must be reinstalled. Instead, use the bootable disk to boot the system to a DOS prompt and then type SYS C:. The SYS command copies the io.sys, msdos.sys, and command.com system files from the boot disk to the hard drive. Remove the bootable disk and reboot the system.

Configuration File Errors
The previous section discussed the role that the autoexec.bat and the config.sys files play in the boot up process of the operating system. It was mentioned that these files are not critical to the operating system being able to boot up but that some of the applications on the operating system may not work properly without them.

Other common error messages are associated with the config.sys and the autoexec.bat files. Errors in these two files will produce the "Error in config.sys Line XX" or "Error in autoexec.bat Line XX" messages. The line specified by the XX in the error message contains a syntax error that will prevent these files from running. This means that somewhere in the files there was a spelling, punctuation, or usage error that is preventing these files from running. These types of errors can also produce an "unrecognized command" error as well. Sometimes there are missing or corrupted files in the config.sys and autoexec.bat files. To correct these files, run them from a DOS prompt and edit them by correcting the line in the specified file. Reload the indicated file and restart the computer.

REM Statements
Editing the config.sys or the autoexec.bat file requires that the administrator be familiar with the various REM statements that will be contained in the config.sys and autoexec.bat files. Essentially what these REM statements do is prevent a line from being read or executed when the config.sys and autoexec.bat files are being executed. An example would be when the computer boots up. For example, if Windows 98 is running and there are problems booting up because some DOS-based applications are causing the system to stall, reboot the computer and press the F8 key when the "Starting Windows 98" message displays. Choose to restart in MS-DOS mode and edit the autoexec.bat file from this point. Place a REM statement at the beginning of any suspect application statements that were preventing the system from booting. When the system is restarted, the lines beginning with REM will not be executed in the boot up process and the system should start up again normally.

Another instance where a REM statement might be used is in the config.sys file. Remember that the config.sys file contains configuration information about the system hardware and devices. For example, there might be a device driver that is preventing the system from booting up properly. Edit the config.sys file by placing a REM statement in the beginning of the line of the particular device driver. Temporarily prevent it from running when the config.sys file is loaded.

Extended Memory Access (HIMEM.SYS)
DOS 4.0 versions and above have a memory management program called himem.sys that manages the extended memory above the 1024 KB level. When this utility is loaded into memory it shifts most of the operating system functions into the High Memory Area of extended memory. Adding the line Device=C:\DOS\himem.sys to the config.sys file can activate this function. This will load the DOS extended memory manager (XMS) driver. This causes himem.sys to be executed automatically when the computer is started.

The first thing to do when troubleshooting a himem.sys error is to use the System Editor to check the entry in the config.sys file to see if the correct entry is present. In Windows 98, the himem.sys statement must be present and correct for the operating system to run. Also, check and make sure that the himem.sys file is the correct version and that it is in the correct location.

Expanded Memory Access (EMM386.EXE)
The emm386.exe program provides the system with access to the Upper Memory Area (UMA) of RAM. This program operates together with the himem.sys utility and provides the system with the capability to conserve conventional memory by moving device drivers and memory-resident programs into the UMA.

Some common troubleshooting issues with this program occur when conflicts exist in the allocation of the upper memory blocks. This might happen if there is a missing or incorrect himem.sys file or there are conflicting third party drivers. To detect this type of memory conflict, start Windows by using a WIN /D:X switch. This will avoid the complete upper memory portion in the boot up process. If Windows starts successfully using this switch, it has identified that an upper memory block conflict exists and needs to be resolved. To resolve the conflicting driver issue, run the msd.exe diagnostic tool to examine the drivers using the upper memory block. If a conflicting driver is located, add an EMMEXCLUDE= line to the [386Enh] section of the system.ini file. Adding this statement to the system.ini file will prevent Windows from trying to use the space to establish buffers.

Figure summaries useful information to recall about MS-DOS memory layout (see Chapter 4). Figure tests knowledge of MS-DOS memory layout.

LASTDRIVE = errors
The
LASTDRIVE= command is contained in the config.sys file and specifies the maximum number of drives the system can access. Common troubleshooting issues with this command can be easily fixed by editing the config.sys. Usually the parameter that contains the actual number of drives may be incorrect and this value might have to be manually edited. After correcting this value, restart the system and see if it boots up properly. If the available disk drives are set to a letter value that is lower than what is required of the existing system, DOS will automatically override the letter value to accommodate the drives installed in the system. Only increase the number of drives if additional drives are actually going to be used, because each drive letter above E decreases the amount of RAM available for other purposes.

DEVICEHIGH = errors
The previous section mentioned that the device driver configurations are stored in the config.sys file. Edit the file to change entries or use the REM statement feature to prevent them from running when the system is booting up. The
DEVICEHIGH= command is used to load drivers into the upper memory area instead of loading them into conventional memory. Common errors can occur when this command attempts to load a device driver file that is too large to fit in the buffer space that is available in a block of the Upper Memory Area. If this happens the system may lock up. Run the MEM /d command to determine the size of the file and then edit this value by modifying the entry in the config.sys file. This will modify the DEVICEHIGH= line to use only the buffer size that is needed.