ASMB,R,L,C HED (FMGR) LL.UT: LIST FILE UTILITY ROUTINES * NAME: LL.UT * SOURCE: 92071-18217 * RELOC: 92071-16217 * MOD: E.D.B. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM LL.UT,7 92071-1X217 REV.2041 800807 * ENT L.OPN, L.HED, L.WRT, L.SPC, L.WEF * EXT O.BUF, TMP., CR.L, SC.L, .E.R EXT JER. EXT OPENF, WRITF EXT .ENTR, EXEC, FTIME SUP SKP * * DESCRIPTION * * THESE ROUTINES PROVIDE A STANDARD ACCESS THE THE FMGR LIST * FILE * * * L.OPN OPENS THE LIST FILE (USING O.BUF FOR THE DCB) * * CALLING SEQUENCE: L.OPN * * L.HED WRITES A BUFFER TO THE LIST FILE * CONCATENATED WITH THE CURRENT TIME (IN COLUMNS 40:65) * * CALLING SEQUENCE: L.HED(BUF) * * WHERE: * * BUF IS THE BUFFER TO BE WRITTEN (36-WORD ARRAY). * THE FIRST WORD IS RESERVED FOR CARRIAGE CONTROL, * IF THE LIST FILE IS A LINE PRINTER. * WORDS 21 THROUGH 36 WILL BE REPLACED WITH THE * CURRENT TIME. * * * L.WRT WRITES A BUFFER TO THE LIST FILE * * CALLING SEQUENCE: * * L.WRT(BUF,LEN) * * WHERE: * * BUF IS THE BUFFER TO BE WRITTEN (LEN-WORD ARRAY). * THE FIRST WORD IS RESERVED FOR CARRIAGE CONTROL, * IF THE LIST FILE IS A LINE PRINTER. * * LEN IS THE LENGTH (IN WORDS) OF BUF * * * L.SPC SPACES THE LIST FILE. * * * L.WEF WRITES AN EOF MARK ON THE LIST FILE. SKP * * L.OPN SUBROUTINE * L.OPN NOP * JSB OPENF OPEN LIST FILE DEF *+7 DEF O.BUF DEF .E.R DEF TMP. DEF ZERO DEF SC.L DEF CR.L * JSB JER. CHECK FOR BREAK OR ERROR * LDA .E.R GET FILE TYPE SZA,RSS IF TYPE ZERO, JMP TYP0 THEN DO TYPE ZERO STUFF * CLA INDICATE STA LP NOT LINE PRINTER STA TTY AND NOT TERMINAL JMP L.OPN,I RETURN * TYP0 LDA O.BUF+3 GET DEVICE LU FROM DCB AND B77 ISOLATE LU STA LLU AND SAVE * JSB EXEC ISSUE STATUS REQUEST DEF *+4 TO GET DEVICE TYPE DEF NAB13 DEF LLU DEF DVT6 JMP L.OPN,I ERROR RETURN * LDA DVT6 GET STATUS WORD ALF,ALF MOVE TYPE INTO POSITION AND B77 ISOLATE DEVICE TYPE CLB PRESET B-REG CPA B12 IF LINE PRINTER, CCB THEN INDICATE SO STB LP SAVE LP STATUS * CLB PRESET B-REG ADA N7 TEST FOR TERMINAL SSA IF TERMINAL, CCB THEN INDICATE SO STB TTY SAVE TTY STATUS JMP L.OPN,I AND RETURN SKP * * L.HED SUBROUTINE * HEADR NOP * L.HED NOP JSB .ENTR GET PARAMETER DEF HEADR * LDA HEADR GET HEADER ADDRESS ADA .21 POINT TO TIME AREA STA LEN1 * JSB FTIME GET CURRENT TIME DEF *+2 DEF LEN1,I * JSB L.WRT NOW WRITE OUT LINE DEF *+3 DEF HEADR,I DEF .36 * JMP L.HED,I RETURN * * L.WRT SUBROUTINE * BUF NOP LEN NOP * L.WRT NOP JSB .ENTR GET PARAMETERS DEF BUF * CLA CLEAR LINE TWO LENGTH STA LEN1 * LDA LP GET LP STATUS LDB LEN,I GET BUFFER LENGTH SZA IF LINE PRINTER, JMP L.WR1 THEN CONTINUE * ISZ BUF START BUFFER AT SECOND WORD ADB N1 SUBTRACT ONE FROM BUFFER LENGTH * LDA TTY GET TTY STATUS SZA,RSS IF NOT TTY, JMP L.WR1 THEN CONTINUE * L.WR2 CLA CLEAR LINE TWO LENGTH STA LEN1 LDA N36 SUBTRACT 36 FROM ADA B LENGTH SZA IF LENGTH EQUAL OR SSA LESS THAN 72 CHARACTERS, JMP L.WR1 THEN CONTINUE * STA LEN1 SAVE LINE TWO LENGTH LDB .36 AND GET LINE ONE LENGTH * L.WR1 STB LEN SAVE LENGTH FOR WRITF JSB WRITF WRITE BUFFER TO LIST FILE DEF *+5 DEF O.BUF DEF .E.R DEF BUF,I DEF LEN * JSB JER. CHECK FOR BREAK OR ERROR * LDB LEN1 CHECK IF ANOTHER LINE SZB,RSS IF ZERO, JMP L.WRT,I THEN RETURN * STB LEN SAVE LENGTH LDA BUF FIND NEW BUFFER ADDRESS ADA .36 STA BUF JMP L.WR2 DO ANOTHER LINE SKP * * L.SPC SUBROUTINE * L.SPC NOP * JSB WRITF WRITE A BLANK LINE TO LIST FILE DEF *+5 DEF O.BUF DEF .E.R DEF BLANK DEF .1 * JSB JER. CHECK FOR BREAK OR ERROR * JMP L.SPC,I RETURN SKP * * L.WEF SUBROUTINE * L.WEF NOP * LDA TTY GET TTY STATUS SZA,RSS IF NOT TTY, JMP WEOF THEN GO WRITE ACTUAL EOF * JSB L.SPC SPACE DOWN TWO LINES JSB L.SPC JMP L.WEF,I RETURN * WEOF JSB WRITF WRITE AN EOF TO LIST FILE DEF *+5 DEF O.BUF DEF .E.R DEF BLANK DEF N1 * JSB JER. CHECK FOR BREAK OR ERROR * JMP L.WEF,I RETURN SKP * * STORAGE AREA * ZERO NOP .1 DEC 1 .21 DEC 21 .36 DEC 36 * N1 DEC -1 N7 DEC -7 N36 DEC -36 * B12 OCT 12 B77 OCT 77 * NAB13 OCT 100015 * BLANK ASC 1, * LP NOP LINE PRINTER STATUS FLAG TTY NOP TERMINAL STATUS FLAG * LEN1 NOP REMAINING WORDS TO BE WRITTEN LLU NOP DEVICE LOGICAL UNIT NUMBER DVT6 NOP DEVICE STATUS WORD * A EQU 0 B EQU 1 * END EQU * * END