home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
maclib
/
debug.mac
< prev
next >
Wrap
Text File
|
1983-09-09
|
2KB
|
136 lines
;; **** DEBUG MACRO LIBRARY ****
;; Routines Length (Bytes)
;; EXIT 275, 263+ (if argument specified)
;; PRINT 19+
;; PRINTC 17+
;; REGS 241
IF1
.PRINTX ! DEBUG MACRO Library Included !
ENDIF
;; PRINT -- PRINT STRING IN ARGUMENT LIST
;; E.G., PRINT <THIS IS A TEST>
;; STRING IS FOLLOWED BY A <CR> <LF>
PRINT MACRO TEXT
LOCAL PRNT,STR
JMP PRNT
STR: DB '&TEXT'
DB 0DH,0AH,'$'
PRNT: PUSH PSW
PUSH B
PUSH D
PUSH H
MVI C,9
LXI D,STR
CALL 5
POP H
POP D
POP B
POP PSW
ENDM
;; PRINTC -- PRINT CHARS IN ARGUMENT LIST
;; E.G., PRINTC <'THIS IS A TEST',0DH,0AH>
;; CHARS ARE NOT FOLLOWED BY A <CR> <LF>
PRINTC MACRO TEXT
LOCAL PRNT,STR
JMP PRNT
STR: DB TEXT
DB '$'
PRNT: PUSH PSW
PUSH B
PUSH D
PUSH H
MVI C,9
LXI D,STR
CALL 5
POP H
POP D
POP B
POP PSW
ENDM
;; REGS -- PRINT VALUES OF ALL REGISTERS ON ONE LINE
REGS MACRO
LOCAL PRNTA,PRNTA0,PRNTA1,REGS1
JMP REGS1
PRNTA: PUSH PSW
PUSH B
PUSH D
PUSH H
PUSH PSW ; SAVE A
RLC ; EXCHANGE NYBBLES
RLC
RLC
RLC
CALL PRNTA0 ; PRINT HIGH NYBBLE OF A AS HEX
POP PSW ; GET A
CALL PRNTA0 ; PRINT LOW NYBBLE OF A AS HEX
MVI E,' ' ; PRINT <SP>
MVI C,2
CALL 5
POP H
POP D
POP B
POP PSW
RET
PRNTA0: ANI 0FH ; LOW-ORDER NYBBLE FIRST
ADI '0' ; CONVERT TO ASCII
CPI '9'+1 ; A-F?
JC PRNTA1
ADI 7 ; CONVERT TO A-F
PRNTA1: MOV E,A ; CHAR IN E
MVI C,2 ; PRINT
CALL 5
RET
REGS1: PUSH B ; SAVE BC
PUSH PSW ; SAVE A
POP B ; GET OLD PSW IN BC
PUSH B ; PLACE BACK ON STACK
PRINTC <'A= '>
MOV A,B ; HIGH FIRST
CALL PRNTA
PRINTC <' Flags= '>
MOV A,C ; LOW
CALL PRNTA
PRINTC <' BC= '>
POP PSW ; RESTORE A
POP B ; RESTORE BC
PUSH PSW ; SAVE A
MOV A,B
CALL PRNTA
MOV A,C
CALL PRNTA
PRINTC <' DE= '>
MOV A,D
CALL PRNTA
MOV A,E
CALL PRNTA
PRINTC <' HL= '>
MOV A,H
CALL PRNTA
MOV A,L
CALL PRNTA
PRINTC <0DH,0AH>
POP PSW ; RESTORE A
ENDM
;; EXIT -- PRINT REGISTER VALUES AND RETURN TO CP/M
;; OPTIONAL MESSAGE MAY BE PRINTED
EXIT MACRO MESSAGE
IFB <MESSAGE>
PRINT <Exit to CP/M>
ELSE
PRINT <MESSAGE>
ENDIF
REGS
JMP 0 ; RETURN TO CP/M
ENDM