INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER AH = 40h BX = handle for character device "TDHDEBUG" CX = number of bytes to write DS:DX -> hardware breakpoint command (see #01418) Return: CF clear if successful AX = number of bytes actually written CF set on error AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h) Note: results are retrieved by reading from the device SeeAlso: AH=3Fh"Turbo Debug" Format of Turbo Debugger hardware breakpoint commands: Offset Size Description (Table 01418) 00h BYTE command code 00h install interrupt vectors 01h get hardware capabilities 02h enable hardware breakpoints 03h disable hardware breakpoints 04h set hardware breakpoint 05h clear hardware breakpoint 06h set I/O base address and reset hardware 07h restore interrupt vectors ---command code 00h--- 01h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. pointer to Turbo Debugger entry point to be jumped to on hardware breakpoint; call with CPU(Central Processing Unit) The microprocessor which executes programs on your computer. state the same as on the breakpoint except for pushing AX and placing an entry code (FFh if breakout button or breakpoint handle) in AH ---command code 04h--- 01h BYTE breakpoint type 00h memory read 01h memory write 02h memory read/write 03h I/O read 04h I/O write 05h I/O read/write 06h instruction fetch 02h BYTE address matching mode (see #01419) 03h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. 32-bit linear low address 07h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. 32-bit linear high address 0Bh WORD pass count 0Dh BYTE data size (01h, 02h, or 04h) 0Eh BYTE source of matched bus cycle (01h CPU(Central Processing Unit) The microprocessor which executes programs on your computer., 02h DMAsee Direct Memory Access, 03h either) 0Fh BYTE data-matching mode (see #01419) 10h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. low data value 14h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. high data value 18h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. data mask specifying which bits of the data are tested ---command code 05h--- 01h BYTE handle of breakpoint to clear (breakpoint returned from command 04h) ---command code 06h--- 01h WORD base address of hardware debugger board (Table 01419) Values for Turbo Debugger address/data matching mode: 00h match any 01h equal to test value 02h different from test value 03h above test value 04h below test value 05h below or equal to test value 06h above or equal to test value 07h within inclusive range 08h outside specified range