; ;UNDER - MULTIPLE UNDERLINING ON THE PRINTRONIX ; ; ; ; UNDER ; ; UNDER - MULTIPLE UNDERLINING ON THE PRINTRONIX ; ;ROUTINE NAME: UNDER ; ;PURPOSE: UNDER simply underlines the most recently printed ; line according to the parameter specifications. ; UNDER will work only on files or devices opened by ; FORTRAN. ; ;CALLABLE: From FORTRAN ; ;PARAMETERS: ; ; S1-------S1 is the first of n acceptable spacing ; parameters. S(n) and B(n) must always be given in ; pairs. the limit to the number of pairs is half ; the task stack size -- but since the PRINTRONIX ; will only allow 132 characters per line 66 ; argument pairs is the practical maximum. ; ; B1------The number of bytes of underlines to follow the ; previously defined number of spaces. ; ; ; NLINES---the number of lines of underlining. 2**16 is the ; maximum. ; ; LUN------The logical unit number currently assigned to the ; PRINTRONIX or the spooler file. ; ; ; ;ROUTINES USED: PUT$; $FDOF; $FCHNL; ; ;EXAMPLE: ; C************************************************** ; C ; C UNDER THE FOUR FIELDS WITH DOUBLE UNDERLINES ; C ; C****************************************************** ; WRITE(6,230)BALNCE,TOTAL,AMOUNT,N ; 230 FORMAT(//T50,4F12.2) ; CALL UNDER(51,11,1,11,1,11,1,11,2,6) ; RETURN ; END ; ;AUTHOR: JACK MARTINELLI CETUS CORPORATION ; ;WRITTEN: JULY 1978 ; ;SOURCE LANGUAGE: MACRO-11 (SUPERMAC) ; ; ;UNDER - MULTIPLE UNDERLINING ON THE PRINTRONIX PAGE 2 ; ; ; ;OBJECT MODULE NAME: UNDER ; ;LIBRARY: DP:[60,60]CETUS ; ;MAINTENANCE: SEE SOMEONE ; .TITLE UNDER .MCALL FDOF$L,SUPER,PUT$ ; ; SUBROUTINE TO UNDER LINE VIA PLOT COMMANDS TO THE ; PRINTRONIX. ANY NUMBER OF UNDERLINES MAY BE DONE ; PER LINE IE SEVERAL WORDS CAN BE UNDERLINED. IN ; ADDITION MULTIPLE UNDERLINING IS ALSO POSSIBLE SUPER UNDER:: PUSH R5 LET R3 := #BUF LET (R3)+ :B= #53 ;'+' LET (R3)+ :B= #05 ;PLOT COMMAND LET R0 := (R5) - #2 ;2 LESS ARGUMENTS NLINES LUN. TST (R5)+ ;POINT TO FIRST ARG WITH R5 LET R4 := #2 ;USE R4 TO COUNT BYTES TO SEND TO LP. WHILE R0 NE #0 ;DEC R0 IN ARGUMENT PAIRS LET R1 := @(R5)+ ;PICKUP # OF BLANKS THAT PRECEED UNDERLINES WHILE R1 NE #0 LET R4 := R4 + #1 ;CONTINUE TO ACCUMULATE BYTES TO SEND. LET (R3)+ :B= #100 ;SET BIT 7 SO LP KNOWS TO PRINT A BLANK IN PLOT MODE LET R1 := R1 - #1 ;ONLY R1 BLANKS LEFT BEFORE NEXT UNDERLINE. END LET R1 := @(R5)+ ;PICKUP # OF BYTES OF UNDERLINES. WHILE R1 NE #0 ;AND COUNT DOWN # OF BYTES OF UNDERLINES LET R4 := R4 + #1 ;ACUMULATE TOTAL # OF BYTES TO PRINT. LET (R3)+ :B= #377 ;SET ALL BITS TO PLOT. LET R1 := R1 - #1 ;CONTINUE THE COUNTDOWN. END LET R0 := R0 - #2 ;DECRMENT BY ARGUMENT PAIRS. END ; FDOF$L ;DEFINE FORTRAN FDB STUFF. LET R1 := @(R5)+ ;GET # OF UNDERLINES TO PRINT. LET R2 := @(R5) ;GET LUN PUSH R1,R4 ;WE'LL NEED THIS LATER. LET R3 := @#$OTSV JSR PC,$FCHNL ;TO GET ADDERESS OF FDB. LET R0 := R0 + #14 ;GET TO RSX FDB. POP R4,R1 PUT$ R0,#CR,#1,IOERR ;FINISH THE LINE JUST PRINTED. WHILE R1 NE #0 PUT$ R0,#BUF,R4,IOERR ;PRINT THE BLANKS AND UNDERLINES PUT$ R0,#SUPLF,#4,IOERR ;BLANK LINE IN PLOT MODE. PUT$ R0,#SUPLF,#4,IOERR ;BLANK LINE IN PLOT MODE. LET R1 := R1 - #1 ;DECREMENT MULTIPLE UNDERLINES UNTIL 0. END PUT$ R0,#CR,#1,IOERR ;FINISH THE LINE JUST PRINTED. POP R5 RTS PC CR: .BYTE 40 .EVEN SUPLF: .BYTE 53,15,12,05 ;'+',CR,LF,PLOT MODE .EVEN BUF: .BLKB 132. .END