ASMB,R,Q,C * NAME: PTAPE * SOURCE: 92070-18235 * RELOC: 92070-1X235 * PGMR: HLC * * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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 PTAPE,7 92070-1X235 REV.1941 790205 ENT PTAPE EXT REIO,.ENTR * * * CALLING SEQUENCE * CALL PTAPE(UNIT, #FILES, #RECORDS) * * UNIT ------ RTE LOGICAL UNIT NUMBER * #FILES ---- > 0 FOR FORWARD * < 0 FOR REVERSE * #RECORDS -- > 0 FOR FORWARD * < 0 FOR REVERSE * (A FILE MARK ENCOUNTERED DURING RECORD * SPACING COUNTS AS ONE RECORD) * * A BACKSPACE FILE LEAVES THE TAPE AT THE BEGINNING OF THE FILE. * AN END-OF-TAPE CONDITION CAUSES IMMEDIATE RETURN TO THE USER. * * UNIT NOP LOGICAL UNIT NUMBER FILES NOP RECS NOP * * PTAPE NOP JSB .ENTR TRANSFER DEF UNIT PARAMETERS LDA UNIT,I AND =B77 ISOLATE UNIT NUMBER SZA,RSS JMP PTAPE,I BIT BUCKET IOR =B40200 CONFIGURE BACKSPACE CONTROL WORD STA BSR IOR =B100 CONFIGURE FORWARD SPACE STA FSR XOR =B500 CONFIGURE DYNAMIC STATUS REQUEST STA DSTAT * LDA RECS,I GET NUMBER OF RECORDS STA RECS AND SAVE IT LDB FILES,I GET NUMBER OF FILES JSB ABS SET UP FOR FILE SPACING JMP RCRD NO FILES JSB SPACE SPACE A RECORD JMP *-1 FILE MARK NOT FOUND: DO ANOTHER ISZ COUNT FILE MARK FOUND: ENOUGH SPACED? JMP *-3 NO: REPEAT LDA FILES,I GET ORIGINAL FILE COUNT AGAIN SSA HAVE WE BEEN BACKSPACING? ISZ RECS YES: ADD 1 TO THE RECORD COUNT RSS IF NOT ZERO, SPACE RECORDS JMP PTAPE,I ELSE RETURN TO USER * * RCRD LDB RECS GET NUMBER OF RECORDS JSB ABS SET UP FOR RECORD SPACING JMP PTAPE,I NO RECORDS: RETURN TO USER JSB SPACE SPACE A RECORD OR TO FILE MARK NOP FILE MARK NOT FOUND ISZ COUNT ENOUGH RECORDS SPACED? JMP *-3 NO: SPACE ANOTHER JMP PTAPE,I RETURN TO USER * * SPACE NOP ENTRY POINT TO TAPE MOTION SECTION JSB REIO GET DYNAMIC STATUS DEF *+3 RETURN ADDRESS DEF RCODE I/O CONTROL REQUEST CODE DEF DSTAT DYNAMIC STATUS CONTROL WORD RRR 5 SLA END OF TAPE? JMP PTAPE,I YES: RETURN IMMEDIATELY TO USER * * JSB REIO NO: SPACE THE TAPE DEF *+3 RETURN ADDRESS DEF RCODE CONTROL REQUEST DEF FUNCT FUNCTION CONTROL WORD RRR 4 SHIFT SOT BIT TO POSITION 15 SLA START OF TAPE? JMP PTAPE,I YES: RETURN TO USER RRR 3 SLA NO: END OF FILE MARK FOUND? ISZ SPACE JMP SPACE,I * * ABS NOP ENTRY TO SPACE SET UP ROUTINE LDA FSR GET FORWARD SPACE CONTROL WORD SSB IS COUNT NEGATIVE? LDA BSR YES: GET BACKSPACE CONTROL WORD STA FUNCT SSB,RSS IS COUNT POSITIVE? CMB,INB YES: TAKE 2'S COMPLIMENT STB COUNT STORE NEGATIVE COUNT SZB IS COUNT ZERO? ISZ ABS NO: INCREMENT RETURN ADDRESS JMP ABS,I RETURN * * FSR NOP FORWARD SPACE CONTROL WORD BSR NOP RCODE DEC 3 I/O CONTROL REQUEST CODE DSTAT NOP DYNAMIC STATUS CONTROL WORD FUNCT NOP DEFINED CONTROL WORD COUNT EQU UNIT 'UNIT' DOUBLES AS RECORD COUNT END