.TITLE HDCOPY .ENABL LC ; ; CALL HDCOPY -- This subroutine outputs the required ; characters to initiate a hard copy cycle when using ; a TEKTRONIX 4631. There is an optional single ; integer argument which is the number of copies ; to make. If this argument is zero, no copy is made; ; if negative, the frame is held for that many seconds ; but no copy is made. i.e., ; ; CALL HDCOPY make 1 copy ; CALL HDCOPY(0) effectively a nop ; CALL HDCOPY(3) make 3 copies ; CALL HDCOPY(-5) wait 5 seconds before continuing ; .MCALL MRKT$S,WTSE$S ; .PSECT HDCOPY ; ; HDCOPY:: MOV R5,-(SP) CALL HDTIM ;CHECK THAT 16 SEC HAS ELAPSED BEFORE NEXT COPY MOV (SP)+,R5 CMP IDev,#3 ;ABLE TO MAKE COPIES? BEQ RETURN ;RETURN IF NOT ; TST (R5) ;IS THERE AN ARGUMENT? BEQ NONE ;BRANCH IF TRUE ; MOV @2(R5),IARG ;GET THE ARGUMENT BEQ RETURN ;RETURN IF ZERO BGT MANY ;BRANCH IF MULTIPLE COPIES ; NEG IARG ;SET ABSOLUTE VALUE MRKT$S #2,IARG,#2 ;WAIT FOR IARG SECONDS WTSE$S #2 ;STILL WAITING BR RETURN ;BRANCH TO RETURN ; NONE: MOV R5,-(SP) ;SAVE R5 MOV #LIST,R5 ;SET ARGUMENT LIST FOR COPY JSR PC,TOUTPT ;OUTPUT HARD COPY CHARACTERS MOV (SP)+,R5 ;RESTORE R5 BR RETURN ;BRANCH TO RETURN ; MANY: MOV R5,-(SP) ;SAVE R5 MOV #LIST,R5 ;SET ARGUMENT LIST FOR COPY DOIT: JSR PC,TOUTPT ;OUTPUT HARD COPY CHARACTERS MRKT$S #2,#12.,#2 ;WAIT 12 SECONDS WTSE$S #2 ;STILL WAITING DEC IARG ;DECREMENT COUNTE BGT DOIT ;BRANCH IF NOT DONE MOV (SP)+,R5 ;RESTORE R5 ; RETURN: RTS PC ;RETURN TO CALLING PROGRAM ; IARG: .WORD LIST: .WORD 2,COPY,LIST ;ARGUMENT LIST FOR TOUTPT COPY: .BYTE 33,27 ;