Computer debug routines
The following debug routines are listed to help test and view extended information on your computer. However, some can also damage computer components or cause them not to work properly. We are providing these routines as a reference. If these cause problems with the computer they are run on, Computer Hope is not responsible for your actions. We recommend only experienced computer users run these commands and that you are fully aware of the potential hazards of using these routines.
Debug basics
Debug is an MS-DOS command that enters machine language into the computer either to create programs or test computer peripherals by receiving back various computer machine code.
Newer versions of Windows no longer include the debug command.
Understanding responses
Several of the debug routines listed on this page and other pages return responses in hexadecimal format. To understand the code in these routines start with learning hexadecimal. Information about hexadecimal and binary is available on our binary and hexadecimal page.
Possible issues
If, you receive ^error, this indicates you incorrectly typed something in the line. Typing the line again does not cause any problems with the routine.
Entering debug
Debug is included in every version of MS-DOS, and Windows up to Windows XP. When running any of the debug routines, we recommend if you have Windows that you exit or shut down to get to a real DOS prompt.
At the MS-DOS prompt, run the example below, which is only showing port information.
Type debug and press Enter.
At the debug prompt, - (small dash) type d40:00 and to get several lines of information.
(See: Testing ports for an explanation of this feedback.)
To exit out of debug, type q and press Enter to get back to the MS-DOS prompt.
In the debug routines below, you may see a g is typed, then q. The "g" tells the computer that the code type is not self-executing and must run at this point. If completed, the program returns "Program Terminated Normally," which indicates it's safe to quit from the debug program. The "q" quits debug.
Listing of routines
Testing ports
The below debug routine checks the ports of the computer to allow you to know if ports are detected or not.
Type debug to get to the "-"
Type D40:0
Once entered several lines should appear, the first line is the only important line, which should resemble:
0040:0000 F8 03 F8 02 E8 03 E8 02 - 78 03 78 02 BC 03
F8 03 | F8 02 | E8 03 | E8 02 | 78 03 | 78 02 | BC 03 | |
---|---|---|---|---|---|---|---|
COM1 | COM2 | COM3 | COM4 | LPT1 | LPT2 | LPT3 |
The above table explains each port, so if you see F8 03, it indicates COM1 is detected. If you see 00 00, the port is not detected, which could mean that hardware is bad or that it is disabled in CMOS.
Once you have finished looking at the information, type Q and press Enter to get out of debug.
Clear CMOS
The below debug routine clears CMOS, BIOS, passwords, settings, viruses, and other items residing in the CMOS. During this process, you may get returned characters that are an indication that the string was entered. If you get an ERROR, make sure you have typed the line incorrectly and that no lines are skipped.
After typing debug, you get "-" which is where to begin by typing A and pressing Enter.
A Enter
MOV AX,0 Enter
MOV AX,CX Enter
OUT 70,AL Enter
MOV AX,0 Enter
OUT 71,AL Enter
INC CX Enter
CMP CX,100 Enter
JB 103 Enter
INT 20 Enter
Enter Note: Nothing is typed on this line
G Enter When you press G the above script executes, make sure you read and agree to the above disclaimer.Q Enter
Then reboot, and Setup Checksum Error should be seen. Go into CMOS setup, correct all the incorrect values with the time and date.
Joystick test
The joystick debug test detects if a joystick is present or not.
Type debug from the DOS prompt once at the -.
i201
If you get an FF response, hold one of the main buttons on your joystick, and while holding the button down type i201 to get a different response. Each button on the joystick should return a different response.
Joysticks with more than four to five buttons may not return a response for all extra buttons because these buttons are controlled through software.
If an FF is given for each button on the game paddle or joystick, either the joystick or port is bad. If possible, attempt these steps with another known working joystick.
However, if you are receiving different responses when pressing and holding the keys on the joystick, the computer hardware is working properly.
Type q and press Enter to quit out of debug.
Computer Hope has experienced issues where this debug routine may not work under Windows NT. If you are currently running Windows NT, refer to our page for joystick installation procedures.
Erasing sector two
Erasing sector two is useful in clearing DDO and unknown partitions. If this routine completes successfully, it erases everything in sector two.
Some computer hard drive manufacturers may void your warranty if this routine is run or in some situations, this can cause damage to the hard drive.
In the below debug routine, only type what is in bold. If you get a response continue to type the bold text as shown in the example below.
A:\>debug
-FCS:200 400 0Enter -ACS:100Enter -xxxx:0100 mov ax,302Enter -xxxx:0103 mov bx,200Enter -xxxx:0106 mov cx,2Enter -xxxx:0109 mov dx, 80Enter -xxxx:010a int 13Enter -xxxx:010c int 20Enter -xxxx:0110 Enter(without typing anything) -g Enter Program terminated normally. -q Enter
Erase all hard drive information
In the below debug routine, only type what is in bold. If you get a response to continue to type the bold text, as shown in the example below.
Some computer hard drive manufacturers may void your warranty if this routine is run or in some situations, this can cause damage to the hard drive.
A:\>debug Enter
-F 200 L1000 0 Enter
-A CS:100 Enter
xxxx:0100 MOV AX,301 Enter
xxxx:0103 MOV BX,200 Enter
xxxx:0106 MOV CX,1 Enter
xxxx:0109 MOV DX,80 Enter
(80 for hdd 0 or 81 for hdd 1 )
xxxx:010C INT 13 Enter xxxx:010E INT 20 Enter xxxx:0110 Enter -g Enter Program terminated normally -qEnter
Once this debug routine is complete, reboot the computer, and all partitions should be erased. Before anything can be installed back onto the computer, you must run fdisk and recreate the partition and format the hard drive.
- Additional information about fdisk is on our fdisk page.
- Additional information about format is on our format page.
Erase the hard drive and clear CMOS
If this routine completes successfully, it erases everything from your hard drive, and resets the CMOS values.
Some computer hard drive manufacturers may void your warranty if this routine is run or in some situations, this can cause damage to the hard drive.
In the below debug routine, type what is in bold. If you get a response to continue to type the bold text in the example below.
A:\>debug Enter -fcs:200 400 0 Enter -acs:100 Enter -xxxx:010 0mov ax, 0 Enter -xxxx:0103 mov ax, cx Enter -xxxx:0105 out 70, al Enter -xxxx:0107 mov ax, 0 Enter -xxxx:010a out 71,al Enter -xxxx:010c inc cx Enter -xxxx:010d cmp cx,100 Enter -xxxx:0111 jb 103 Enter -xxxx:0113 mov ax,302 Enter -xxxx:0116 mov bx,200 Enter -xxxx:0119 mov cx,1 Enter -xxxx:011c mov dx,80 Enter -xxxx:011f int 13 Enter -xxxx:012l int 20 Enter -xxxx:0123 Enter (without typing anything.) -g Enter program terminated normally
If you are doing this debug routine to clear out a possible virus, turn off your computer, wait, and turn it back on.
-q Enter
Once back at DOS, reboot your computer.
When your computer comes back on from doing the above, an error message such as Invalid Configuration is displayed. Enter CMOS setup and set the time and date, save, and reboot again. Once rebooted, run fdisk and recreate the partitions. Once created, format the hard drive and proceed as normal.
Discharge old laptop batteries
The below debug routine is used for older laptop batteries (i.e., batteries made from 1990-1992), we do not recommend using this routine on any newer laptop batteries or any NiMH batteries.
N DPDISCHG.COM Enter A Enter MOV DX,01E8 Enter MOV AL,F9 Enter OUT DX,AL Enter INT 20 Enter Enter RCX Enter 10 Enter W Enter Q Enter
The above script writes dpdischg.com to the current directory. To run this utility type dpdischg.
Reboot your computer
Implement this debug routine to reboot your computer.
DEBUG
E 40:72 34 12 RCS FFFF RIP 0000 G
To create a batch file that reboots your computer without having to type the above command, use the example below.
GOTO BEGIN E 40:72 34 12 RCS FFFF RIP 0000 G :BEGIN DEBUG < REBOOT.BAT
Create a sleep file
The below debug routine has also been made as a file and made available on our utility downloads page.
Type Debug
At the "-" (hyphen), type the following information. After each line, you may get a response, do not press Enter and type the next line after the response.
N SLEEP.COM A 100 MOV SI,0082 MOV AX,[SI] XCHG AH,AL XOR AX,3030 MOV BL,AL MOV AL,0A MUL AH ADD AX,BX MOV SI,AX MOV AH,2C INT 21 MOV BL,DH MOV AX,SI AAM OR AX,3030 XCHG AH,AL MOV [0160],AX MOV AH,09 MOV DX,0160 INT 21 MOV AH,06 MOV DL,FF INT 21 JZ 014C OR AL,AL JNZ 013F MOV AH,08 INT 21 MOV AL,FF MOV DX,016C PUSH AX MOV AH,09 INT 21 POP AX MOV AH,4C INT 21 MOV AH,2C INT 21 CMP BL,DH JZ 012D MOV BL,DH DEC SI JNZ 011A SUB AL,AL MOV DX,016C JMP 0142 DB "XX SECONDS", D, 24 DB " ", D, A, 24 RCX 79 W Q
You may cut and paste the above test into a notepad document and save the file with a .scr extension. Once saved from DOS, type: debug < name of scr that should create SLEEP.COM.
Check BIOS date
The below debug routine is to check the date of your BIOS. All BIOS dates on PC compatible computers is stored at memory address FFFF5h. To display the date of your BIOS, do the following:
At the C:\> Type debug
- d FFFF:5 L 8
After typing the above command, a string similar to the following line appears.
FFFF:0000 30 34 2F-33 30 2F 39 38 4/30/98
Where 4/30/98 is the current date as set in your computer BIOS.
Video card type
The below debug routine is a way of determining the chipset on the video card in your computer without opening the computer.
At the C:\> Type debug
-d c000:0040
After typing the above command, lines similar to the following text appears.
C000:0040 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | - | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | ................ | ||
C000:0050 | E9 | 63 | 7B | 00 | B4 | 10 | 49 | 27 | - | E9 | FE | 2B | E9 | F7 | 2B | 50 | 4D | .c{...I'..+..+PM | ||
C000:0060 | 49 | 44 | 58 | 00 | 5B | 00 | 00 | 00 | - | 00 | A0 | 00 | B0 | 00 | B8 | 00 | C0 | IDX.[........... | ||
C000:0070 | 00 | 5B | 53 | 54 | 42 | 20 | 6E | 56 | - | 49 | 44 | 49 | 41 | 20 | 54 | 4E | 54 | .[STB NVIDIA TNT | ||
C000:0080 | 20 | 76 | 65 | 72 | 2E | 20 | 31 | 2E | - | 31 | 30 | 20 | 0D | 0A | 00 | 1B | 43 | ver. 1.10 ....C | ||
C000:0090 | 6F | 70 | 79 | 72 | 69 | 67 | 68 | 74 | - | 28 | 43 | 29 | 31 | 39 | 39 | 38 | 20 | opyright(C)1998 | ||
C000:00A0 | 53 | 54 | 42 | 20 | 53 | 79 | 73 | 74 | - | 65 | 6D | 73 | 20 | 49 | 6E | 63 | 0D | STB Systems Inc. | ||
C000:00B0 | 0A | 00 | 22 | 6C | 2C | 0A | 01 | 00 | - | C3 | 50 | 24 | 7F | E8 | 60 | 36 | 58 | .."1,....P$..'6X |
As seen in the dump above, this gives you enough information to determine the make and year made on the video card. In line four, the make of this video card is displayed, which in this case, is an NVIDIA TNT, utilizing the Riva TNT chipset. The next line is the version of the card, and after that is the Copyright or year manufactured.
If you do not see any information that sounds like a video card, type the following command.
-d c000:0090
The line above gives you a dump similar to the above example; however, it may have additional information about the video card.