; > &.Hdr.NdrDebug ; GBLL debug GBLL true GBLL false true SETL 1=1 false SETL 1=0 MACRO Debug1 $dbg,$string [ debug$dbg Debug $dbg,"$string" ] MEND MACRO Debug2 $dbg,$p1,$p2,$p3,$p4,$p5,$p6,$p7 [ debug$dbg Debug $dbg,"",$p1,$p2,$p3,$p4,$p5,$p6,$p7 ] MEND MACRO Debug2a $dbg,$p1,$p2,$p3,$p4,$p5,$p6,$p7 [ debug$dbg Debuga $dbg,"",$p1,$p2,$p3,$p4,$p5,$p6,$p7 ] MEND MACRO DebugS $dbg,$string,$reg [ debug$dbg Push "R0-R12,LR,PC" [ hostvdu BL Neil_HostVdu ] SWI XOS_WriteS DCB "$string",0 ALIGN SWIVC XOS_WriteI+"'" [ $reg > sp LDRVC R0,[sp,#:INDEX:$reg * 4 - 4] ; R13 is not stacked | LDRVC R0,[sp,#:INDEX:$reg * 4] ] SWIVC XOS_Write0 SWIVC XOS_WriteI+"'" SWIVC XOS_NewLine [ hostvdu BL Neil_TubeVdu ] Pull "R0-R12" LDR LR,[sp,#4] TEQP LR,#0 ; restore flags LDR LR,[sp],#8 ; correct stack ] MEND MACRO Debug $dbg,$string,$p1,$p2,$p3,$p4,$p5,$p6,$p7 [ debug$dbg Push "R0-R12,LR,PC" [ hostvdu BL Neil_HostVdu ] SWI XOS_WriteS DCB "$string",0 ALIGN [ "$p1"<>"" Dreg $p1 ] [ "$p2"<>"" Dreg $p2 ] [ "$p3"<>"" Dreg $p3 ] [ "$p4"<>"" Dreg $p4 ] [ "$p5"<>"" Dreg $p5 ] [ "$p6"<>"" Dreg $p6 ] [ "$p7"<>"" Dreg $p7 ] SWI XOS_NewLine [ hostvdu BL Neil_TubeVdu ] Pull "R0-R12" LDR LR,[sp,#4] TEQP LR,#0 ; restore flags LDR LR,[sp],#8 ; correct stack ] MEND MACRO Debuga $dbg,$string,$p1,$p2,$p3,$p4,$p5,$p6,$p7 [ debug$dbg Push "R0-R12,LR,PC" [ hostvdu BL Neil_HostVdu ] SWI XOS_WriteS DCB "$string",0 ALIGN [ "$p1"<>"" Dreg $p1 ] [ "$p2"<>"" Dreg $p2 ] [ "$p3"<>"" Dreg $p3 ] [ "$p4"<>"" Dreg $p4 ] [ "$p5"<>"" Dreg $p5 ] [ "$p6"<>"" Dreg $p6 ] [ "$p7"<>"" Dreg $p7 ] [ hostvdu BL Neil_TubeVdu ] Pull "R0-R12" LDR LR,[sp,#4] TEQP LR,#0 ; restore flags LDR LR,[sp],#8 ; correct stack ] MEND MACRO Dreg $reg [ "$reg":LEFT:1 = "#" LCLS locn locn SETS "$reg":RIGHT:(:LEN:"$reg"-1) LDR R0,$locn | [ $reg > sp LDR R0,[sp,#:INDEX:$reg * 4 - 4] ; R13 is not stacked | LDR R0,[sp,#:INDEX:$reg * 4] ] ] BL Neil_ConvertHex8 MEND MACRO InsertNDRDebugRoutines Neil_ConvertHex8 ; prints number in R0 Push "LR" ; SWI XOS_WriteI+" " SUB sp,sp,#12 MOVVC R1,sp MOVVC R2,#9 ; includes room for terminator SWIVC XOS_ConvertHex8 SWIVC XOS_Write0 ADD sp,sp,#12 ; Pull "PC" Neil_HostVdu Push "LR" ; ADR R0,%FT01 SWI XOS_CLI ; Pull "PC" 01 DCB "HostVdu",0 ALIGN Neil_TubeVdu Push "LR" ; ADR R0,%FT01 SWI XOS_CLI ; Pull "PC" 01 DCB "TubeVdu",0 ALIGN MEND END