; ; PUT_LIST & PUT_SKIP_LIST - PL/I symbolic debugger routines to do PUTs to the ; console and possibly mirror to a log file. ; this is an assembly language interface to allow variable number of arguments ; - it just calls SKIP1 and PUT1 to do the real work (the equivalent of a ; PUT SKIP or PUT LIST of one item respectively). ; ; calling sequence: ; ; CALL PUT_SKIP_LIST(a, b, c, ...) is equivalent to PUT SKIP LIST(a,b,c,...) ; CALL PUT_LIST(a, b, c, ...) is equivalent to PUT LIST(a,b,c,...) ; ; don't forget to %INCLUDE 'PUTDEF.PLI' to ensure that non-CHARACTER arguments ; get properly converted, as in regular PUT. ; .title PUTLIST .psect PUTLIST ; ; displacements into stack after SAVRG$: ; narg = 16 arg1 = narg+2 ; ; registers we use (procedures written in PL/I, namely SKIP1 & PUT1, ; preserve all registers across call) ; nextarg = %2 argsremaining = %3 PUT.SKIP.LIST:: jsr r0,SAVRG$ clr -(sp) ;SKIP1 has zero arguments jsr r5,SKIP1 br put PUT.LIST:: jsr r0,SAVRG$ put: mov narg(sp),argsremaining mov sp,nextarg add #arg1,nextarg ;address of next arg pointer putnext: dec argsremaining blt done mov (nextarg)+,-(sp) ;pass an arg to PUT1 mov #1,-(sp) ;PUT1 takes one arg jsr r5,PUT1 br putnext done: rts pc .end