|
|
1.1 ! root 1: ; ! 2: ; _DBG88.EQU 5.20A June 8, 1995 ! 3: ; ! 4: ; The Greenleaf Comm Library ! 5: ; ! 6: ; Copyright (C) 1991-94 Greenleaf Software Inc. All Rights Reserved. ! 7: ; ! 8: ; NOTES ! 9: ; ! 10: ; This file contains the macros used to provide debug output services ! 11: ; for the standard DOS ISR. Debug output services are fully ! 12: ; defined in DEBUG88.ASM. ! 13: ; ! 14: ; MODIFICATIONS ! 15: ; ! 16: ; December 1, 1994 5.10A : Initial release. ! 17: ; ! 18: ! 19: ; ! 20: ; The funny segment stuff is here so I can call this code from all ! 21: ; different memory models. Segments are confusing. ! 22: ; ! 23: ifndef _DEBUG88 ! 24: ! 25: IFDEF ISR_DEBUG ! 26: IF _LCODE NE 0 ! 27: .CODE DEBUG88_TEXT ! 28: ELSE ! 29: .CODE ! 30: ENDIF ! 31: EXTRN C _VidGoto:proc ! 32: EXTRN C _VidPutc:proc ! 33: EXTRN C _VidPutDat:proc ! 34: EXTRN C _VidPuts:proc ! 35: .CODE ! 36: ENDIF ! 37: ! 38: endif ! 39: ! 40: ; ! 41: ; Macro: VIDPUTWORD data ! 42: ; ! 43: ; ! 44: ; ARGUMENTS ! 45: ; ! 46: ; data : Any 16 bit value that can be moved into ax with ! 47: ; a mov ax, data instruction. ! 48: ; ! 49: ; DESCRIPTION ! 50: ; ! 51: ; This macro is used in the DOS ISR to display a single binary ! 52: ; word in hex. The real work is done by _VidPutDat, the macro just ! 53: ; takes care of setting things up to facilitate the call. ! 54: ; ! 55: ; SIDE EFFECTS ! 56: ; ! 57: ; None. ! 58: ; ! 59: ; RETURNS ! 60: ; ! 61: ; Nothing. ! 62: ; ! 63: ; AUTHOR ! 64: ; ! 65: ; SM October 17, 1994 ! 66: ; ! 67: ; MODIFICATIONS ! 68: ; ! 69: ; ! 70: ! 71: VIDPUTWORD MACRO dat ; Tag: Debug private ! 72: push ax ! 73: push cx ! 74: mov cl,8 ! 75: mov ax,dat ;Get the word to display ! 76: ror ax,cl ;Get the upper eight bits ! 77: push ax ;Send the upper bits to _VidPutDat ! 78: call _VidPutDat ! 79: add sp,2 ! 80: mov ax,dat ! 81: push ax ;Now send the lower bits ! 82: call _VidPutDat ! 83: add sp,2 ! 84: pop cx ! 85: pop ax ! 86: ENDM ! 87: ! 88: ; ! 89: ; Macro: VIDGOTO row,col ! 90: ; ! 91: ; ARGUMENTS ! 92: ; ! 93: ; row : The row to go to on the screen. This can be any sort ! 94: ; of identifier that can be accessed with a mov ax,row ! 95: ; instruction, loading 16 bits. ! 96: ; ! 97: ; col : The column to go to on the screen. This can be any sort ! 98: ; of identifier that can be accessed with a mov ax,col ! 99: ; instruction, loading 16 bits. ! 100: ; ! 101: ; DESCRIPTION ! 102: ; ! 103: ; This macro is used in the DOS ISR to move the cursor, or current ! 104: ; output location, to a specific location on the screen. ! 105: ; ! 106: ; SIDE EFFECTS ! 107: ; ! 108: ; None. ! 109: ; ! 110: ; RETURNS ! 111: ; ! 112: ; Nothing. ! 113: ; ! 114: ; AUTHOR ! 115: ; ! 116: ; SM October 17, 1994 ! 117: ; ! 118: ; MODIFICATIONS ! 119: ; ! 120: ! 121: VIDGOTO MACRO row,col ; Tag: Debug private ! 122: push ax ! 123: mov ax,col ! 124: push ax ! 125: mov ax,row ! 126: push ax ! 127: call _VidGoto ! 128: add sp,4 ! 129: pop ax ! 130: ENDM ! 131: ! 132: ; ! 133: ; Macro: VIDPUTC char ! 134: ; ! 135: ; ! 136: ; ARGUMENTS ! 137: ; ! 138: ; char : A single character that needs to be displayed on the screen. ! 139: ; ! 140: ; DESCRIPTION ! 141: ; ! 142: ; This macro is used in the MS-DOS ISR to display a single character ! 143: ; at the current cursor position on the screen. It does this with ! 144: ; a single call to _VidPutc. Note that the argument can be anything ! 145: ; that can load a 16 bit value with mov ax,value. ! 146: ; ! 147: ; SIDE EFFECTS ! 148: ; ! 149: ; None. ! 150: ; ! 151: ; RETURNS ! 152: ; ! 153: ; Nothing. ! 154: ; ! 155: ; AUTHOR ! 156: ; ! 157: ; SM October 17, 1994 ! 158: ; ! 159: ; MODIFICATIONS ! 160: ; ! 161: ; ! 162: ! 163: VIDPUTC MACRO Char ; Tag: Debug private ! 164: push ax ! 165: mov ax,Char ! 166: push ax ! 167: call _VidPutc ! 168: add sp,2 ! 169: pop ax ! 170: ENDM ! 171: ! 172: ; ! 173: ; Macro: VIDPUTS str ! 174: ; ! 175: ; ! 176: ; ARGUMENTS ! 177: ; ! 178: ; str : A string that needs to be displayed on the screen. Note ! 179: ; that this doesn't have to be a null terminated string, we ! 180: ; make a copy of it here and then null terminate the copy. ! 181: ; ! 182: ; DESCRIPTION ! 183: ; ! 184: ; This macro is used in the DOS ISR to display an entire string ! 185: ; on the screen. We make a local copy of the string in our code ! 186: ; segment, and null terminate it. Then we push a pointer to the copy ! 187: ; on the stack and call _VidPuts. ! 188: ; ! 189: ; SIDE EFFECTS ! 190: ; ! 191: ; None. ! 192: ; ! 193: ; RETURNS ! 194: ; ! 195: ; Nothing. ! 196: ; ! 197: ; AUTHOR ! 198: ; ! 199: ; SM October 17, 1994 ! 200: ; ! 201: ; MODIFICATIONS ! 202: ; ! 203: ! 204: VIDPUTS MACRO s ; Tag: Debug private ! 205: LOCAL skip, string ! 206: jmp short skip ! 207: string db s, 0 ! 208: skip: push ax ! 209: push cs ! 210: mov ax, offset string ! 211: push ax ! 212: call _VidPuts ! 213: add sp,4 ! 214: pop ax ! 215: ENDM ! 216: ! 217:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.