.TITLE FTPADEVEN ROUTINE WHICH WILL PAD/EVEN AN OUTPUT BLOCK .IDENT /11-MAY-83 V01.A/ ; ; V01.A 11-MAY-83 TWD INITIAL RELEASE. ; ; ROUTINE WHICH PADS AND/OR EVENS AN OUTPUT BLOCK. USED FOR BOTH ; THE PLAIN COPY ROUTINE AND THE CODE TRANSLATION ROUTINE. ; ; CALLING SEQUENCE IS: ; PUSHL ADDRESS OF OUTPUT CHARACTER STRING. ; PUSHL # BYTES TO BE PADDED INTO OUTPUT BLOCK. ; CALLS #2,G^FT_PADEVEN ; ; REGISTERS USED: ; All registers are maintained as in the FT_PCOPY and FT_TRANS ; routines except R3 which is used as a pointer into the output ; routine and R0-R5 which may be modified by the move character ; routines. Registers R2-R5 are saved on entry to this routine. ; The contents of R0-R1 should be saved in the calling program. ; SPECIFIC REGISTER USAGE: ; R0 - Not used. ; R1 - Not used. ; R2 - Not used. ; R3 - Used as pointer into the output string. ; R4-R9 - Not used. ; R10 - Pointer to the FTCB. ; R11 - Pointer to the FT I/O block. ; ; FTCBDEF ; .PAGE .SUBTITLE PAD OUTPUT BLOCK AND/OR EVEN THEM. ; .ENTRY FT_PADEVEN,^M ; SAVE REGISTERS AFFECTED ; BY MOVE CHARACTER. ; MOVL 8(AP),R3 ; SET UP THE DESTINATION ADDRESS. ; P_PAD: TSTL 4(AP) ; CHECK FOR NUMBER OF CHARACTERS WHICH ; NEED TO BE PADDED TO FILL THE BLOCK. BEQL 10$ ; IF NONE, GO EVEN BLOCK. ; MOVC5 #0,DUMMY,FTCB_B_PBLK(R10),4(AP),(R3) ; FILL WITH PAD CHAR. ; 10$: BBC #FLAG_V_EVEN,FTCB_W_FLAG(R10),20$ ; CHECK ON EVENING? ; BLBC FTCB_L_ACT_OUTBLK(R10),20$ ; IS BLOCK EVEN? ; ; EVEN REQUIRED BY CONDITIONS. ; MOVB FTCB_B_EVEN(R10),(R3) ; MOVE THE EVEN CHARACTER TO ; THE OUTPUT BLOCK USING THE ADDRESS ; LEFT OVER FROM THE MOVE INSTRUCTIONS. INCL FTCB_L_ACT_OUTBLK(R10) ; 20$: RET ; RETURN TO CALLING ROUTINE. ; DUMMY: .LONG 0 ; DUMMY MOVE LOCATION. .END