summaryrefslogtreecommitdiffstats
path: root/private/nw/vwipxspx/tsr/debugmac.inc
diff options
context:
space:
mode:
Diffstat (limited to 'private/nw/vwipxspx/tsr/debugmac.inc')
-rw-r--r--private/nw/vwipxspx/tsr/debugmac.inc356
1 files changed, 356 insertions, 0 deletions
diff --git a/private/nw/vwipxspx/tsr/debugmac.inc b/private/nw/vwipxspx/tsr/debugmac.inc
new file mode 100644
index 000000000..45fe236e5
--- /dev/null
+++ b/private/nw/vwipxspx/tsr/debugmac.inc
@@ -0,0 +1,356 @@
+;++
+;
+;Copyright (c) 1991 Microsoft Corporation
+;
+;Module Name:
+;
+; debugmac.inc
+;
+;Abstract:
+;
+; Contains debugging macros:
+;
+; DbgBreakPoint
+; DbgUnsupported
+; DbgDEBUG
+; DbgPrint
+; DbgPrintTty
+; DbgPrintString
+; DbgPrintHexDword
+; DbgPrintHexWord
+; DbgPrintHexByte
+; DbgPrintNearPointer
+; DbgPrintFarPointer
+;
+;Author:
+;
+; Richard L Firth (rfirth) 13-Sep-1991
+;
+;Environment:
+;
+; DOS application mode only
+;
+;[Notes:]
+;
+; optional-notes
+;
+;Revision History:
+;
+; 13-Sep-1991 rfirth
+; Created
+;
+;--
+
+
+;*** DbgBreakPoint
+;*
+;* Same as NT routine of same name. No-op in non-DEBUG version
+;*
+;* ENTRY
+;*
+;* EXIT
+;*
+;* RETURNS
+;*
+;* ASSUMES
+;*
+;***
+
+DbgBreakPoint macro
+if DEBUG
+ int 3
+endif
+endm
+
+;*** DbgUnsupported
+;*
+;* Causes the 32-bit support code to display a message about an unsupported
+;* service code, and dumps the 16-bit registers. Used to discover when an
+;* unsupported int 2f/11 call or int 21/5f call is being made
+;*
+;* ENTRY
+;*
+;* EXIT
+;*
+;* RETURNS
+;*
+;* ASSUMES
+;*
+;***
+
+DbgUnsupported macro
+if DEBUG
+ SVC -1
+endif
+endm
+
+;*** DbgDEBUG
+;*
+;* Prints the string "DEBUG: " to console using Bios Int 10h/ah=0eh
+;*
+;* ENTRY nothing
+;*
+;* EXIT nothing
+;*
+;* USES ax
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgDEBUG macro
+ mov ax,(14 shl 8) + 'D'
+ int 10h
+ mov al,'E'
+ int 10h
+ mov al,'B'
+ int 10h
+ mov al,'U'
+ int 10h
+ mov al,'G'
+ int 10h
+ mov al,':'
+ int 10h
+ mov al,' '
+ int 10h
+endm
+
+
+
+;*** DbgCrLf
+;*
+;* Prints CR,LF to console using Bios Int 10h/ah=0eh
+;*
+;* ENTRY nothing
+;*
+;* EXIT nothing
+;*
+;* USES nothing
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgCrLf macro
+ push ax
+ mov ax,(14 shl 8) + 13
+ int 10h
+ mov al,10
+ int 10h
+ pop ax
+endm
+
+
+
+;*** DbgPrint
+;*
+;* Prints an ASCIZ string to console using Bios Int 10h
+;*
+;* ENTRY string - address of ASCIZ string to print
+;*
+;* EXIT nothing
+;*
+;* USES nothing
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgPrint macro string
+if DEBUG ;; no macro if not debug version
+ pushf ;; save regs used by DbgPrintTty
+ push ax
+ push bx
+ push si
+ push ds
+ mov ax,seg string
+ mov ds,ax
+ mov si,offset string;; ds:si = address of string
+ DbgPrintTty ;; display it on console
+ pop ds
+ pop si
+ pop bx
+ pop ax
+ popf
+endif
+endm
+
+
+
+;*** DbgPrintTty
+;*
+;* Prints an ASCIZ string in ds:si to console using Bios Int 10h
+;*
+;* ENTRY page - if present defines which Bios video page to use
+;* Defaults to 0
+;* ds:si - address of ASCIZ string to print
+;*
+;* EXIT nothing
+;*
+;* USES al, bh, si, flags
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgPrintTty macro page
+ local l1,l2
+
+if DEBUG ;; no macro if not debug version
+ mov ah,14 ;; Bios Int write character as TTY function
+ifb <page>
+ sub bh,bh
+else
+ mov bh,page
+endif
+ cld ;; autoincrement lodsb
+l1: lodsb ;; al := next character; si := next character addr
+ or al,al ;; eof string?
+ jz l2 ;; yes
+ int 10h ;; display it to console
+ jmp short l1 ;; go round again
+l2:
+endif
+endm
+
+
+
+;*** DbgPrintString
+;*
+;* Prints a string to console using Bios Int 10h. Note that this macro
+;* does not do printf style substitutions. The string "DEBUG: " will be
+;* displayed if the banner parm is not blank
+;*
+;* ENTRY string - character string. Needn't be zero-terminated
+;* banner - the "DEBUG: " banner will be printed if not blank
+;*
+;* EXIT nothing
+;*
+;* USES nothing
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgPrintString macro string, banner
+ local s1
+ local l1
+
+if DEBUG ;; no macro if not debug version
+ jmp short l1
+s1 db &string,0
+l1: pushf ;; don't destroy direction flag
+ pusha ;; save gp regs
+ifb <banner>
+ DbgDEBUG ;; Display "DEBUG: "
+endif
+ push ds ;; save user's data seg
+ push cs
+ pop ds ;; ds == cs
+ mov si,offset cs:s1 ;; si := string offset
+ DbgPrintTty ;; display ds:si to console
+ pop ds ;; restore user's data seg
+ popa ;; restore gp regs
+ popf ;; restore direction flag+
+endif
+endm
+
+
+
+;*** DbgPrintHexDword
+;*
+;* Prints a dword to console in hex notation using Bios Int 10h
+;*
+;* ENTRY dword - dword to print
+;*
+;* EXIT nothing
+;*
+;* USES nothing
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgPrintHexDword macro dword
+if DEBUG ;; no macro if not debug version
+ DbgPrint <"DbgPrintHexDword not implemented yet",13,10>
+endif
+endm
+
+
+
+;*** DbgPrintHexWord
+;*
+;* Prints a word to console in hex notation using Bios Int 10h
+;*
+;* ENTRY word - to print. Can be memory or register
+;*
+;* EXIT nothing
+;*
+;* USES nothing
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgPrintHexWord macro word
+ local l1, l2
+if DEBUG ;; no macro if not debug version
+ pushf ;; don't use any registers
+ push ax
+ push cx
+ push dx
+ifdifi <word>,<ax>
+ mov ax,word
+endif
+ mov cx,4
+l1: rol ax,4
+ mov dx,ax
+ and al,0fh
+ cmp al,9
+ jle l2
+ add al,'a'-('9'+1)
+l2: add al,'0'
+ mov ah,14
+ int 10h
+ mov ax,dx
+ loop l1
+ pop dx
+ pop cx
+ pop ax
+ popf
+endif
+endm
+
+
+
+;*** DbgPrintHexByte
+;*
+;* Prints a string to console using Bios Int 10h. Note that this macro
+;* does not do printf style substitutions
+;*
+;* ENTRY string - character string. Needn't be zero-terminated
+;*
+;* EXIT
+;*
+;* USES nothing
+;*
+;* ASSUMES 286+
+;*
+;***
+
+DbgPrintHexByte macro byte
+if DEBUG ;; no macro if not debug version
+ DbgPrint <"DbgPrintHexByte not implemented yet",13,10>
+endif
+endm
+
+
+
+DbgPrintNearPointer macro nearptr
+endm
+
+
+
+DbgPrintFarPointer macro farptr
+endm