home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / DOS / DOSINC / DEFDBUG.INC < prev    next >
Text File  |  1995-04-14  |  2KB  |  154 lines

  1. ;*DDK*************************************************************************/
  2. ;
  3. ; COPYRIGHT    Copyright (C) 1995 IBM Corporation
  4. ;
  5. ;    The following IBM OS/2 WARP source code is provided to you solely for
  6. ;    the purpose of assisting you in your development of OS/2 WARP device
  7. ;    drivers. You may use this code in accordance with the IBM License
  8. ;    Agreement provided in the IBM Device Driver Source Kit for OS/2. This
  9. ;    Copyright statement may not be removed.;
  10. ;*****************************************************************************/
  11. ;       SCCSID = @(#)defdbug.inc    6.1 90/11/17
  12. ;      SCCSID = @(#)defdbug.inc    13.2 89/02/01
  13. ;**    DEFDBUG.INC - Debugging Macro Definitions
  14. ;
  15. ;
  16.  
  17.  
  18. AsmVars <Debug>
  19.  
  20. IFDEF    DEBUGPRT
  21.     Debug = 0FFFFh
  22. ENDIF
  23.  
  24.  
  25. ;**    DBPRT    n,m,<format string>, <arg list>
  26. ;
  27.  
  28. DBPRT    MACRO    N,M,fmts,args
  29.     LOCAL    a,b,c,cnt
  30. IFDEF    DEBUGPRT
  31. .xlist
  32.     pushf
  33. IFNB    <N>
  34.     DBTST    N,M
  35.     jz    c
  36. ENDIF
  37.  
  38. Table    SEGMENT
  39. a    db    '&fmts',0
  40. Table    ENDS
  41.  
  42.     push    offset DOSGROUP:a
  43.     cnt = 2
  44.  
  45. IRP    Y,<args>
  46.     push    Y
  47.     cnt = cnt + 2
  48. ENDM
  49.     push    bp
  50.     mov    bp,sp
  51.     add    bp,cnt        ;; make BP point to format string addr
  52.     GENCALL    DPRINTF
  53.     pop    bp
  54.     add    sp,cnt        ;; remove arguments and format string addr
  55. c:    POPFF
  56. .list
  57. ENDIF
  58. ENDM
  59.  
  60.  
  61. ;**    DBBEG - Start debugging range
  62. ;
  63.  
  64. DBBEG    MACRO    N,M
  65.  LOCAL    lab
  66.  IF    Debug
  67.   pushf
  68.   DBTST N,M
  69.   jnz    lab    ;; am to do it
  70.   DBJMP      %DBCNT
  71. lab:
  72. ENDM
  73.  
  74.  
  75. ;**    DBJMP - jump to debugging label
  76. ;
  77.  
  78. DBJMP    MACRO    N
  79.  jmp DBLAB&N
  80. ENDM
  81.  
  82.  
  83. ;**    DBLAB - generate debugging label
  84. ;
  85.  
  86. DBLAB    MACRO    N
  87. DBLAB&N:
  88. ENDM
  89.  
  90.  
  91. ;**    DBEND - end debugging range
  92. ;
  93.  
  94. DBEND    MACRO
  95.  IF    Debug
  96.   DBLAB    %DBCNT
  97.   DBCNT = DBCNT+1
  98.   POPFF
  99.  ENDIF
  100. ENDM
  101.  
  102. DBCNT = 1
  103.  
  104.  
  105. ;**    DBTST - test debug flags
  106. ;
  107. ;    DBTST    n,m
  108. ;
  109. ;    Where N and M are bit masks.
  110. ;
  111. ;    If one or more of the bits in N is set in the high byte
  112. ;    of BUGBITS, and one or more of the bits in M is set in
  113. ;    the low byte of BUGBITS then clear the Z flag.
  114. ;
  115. ;    In other words:
  116. ;
  117. ;    If both masks show a "hit" clear 'Z' else set 'Z'
  118. ;
  119. ;    USES    FLAGS
  120.  
  121. DBTST    MACRO    n,m
  122.     push    ax
  123.     mov    ax,(m shl 8)+n
  124.     GENCALL    dbtest
  125.     pop    ax
  126. ENDM
  127.  
  128.  
  129. ;**    DBPRTC - debug print if carry set
  130. ;
  131.  
  132. DBPRTC    MACRO    N,M,fmt,args
  133.     LOCAL    a
  134. IFDEF DEBUGPRT
  135.     jnc    a
  136.     DBPRT    N,M,<fmt>,<args>
  137. a:
  138. ENDIF
  139. ENDM
  140.  
  141.  
  142. ;**    DBPRTNC - debug print if carry clear
  143. ;
  144.  
  145. DBPRTNC    MACRO    N,M,fmt,args
  146.     LOCAL    a
  147. IFDEF DEBUGPRT
  148.     jc    a
  149.     DBPRT    N,M,<fmt>,<args>
  150. a:
  151. ENDIF
  152. ENDM
  153.  
  154.