TITLE TAPTST TO WRITE ONES ONTO MAGTAPE SUBTTL AUTHOR A.J.COPANAS, DEC, MAYNARD MLON SIZE=^D800*6 AC0=0 AC1=1 TAC=2 TAC1=TAC+1 NUM=4 CNT=5 CNT1=6 LOC 124 XWD 0,ST RELOC ;SET REENTER ADDRESS ST: SETZ AC0, HRRZI 17,AC1 BLT 17,17 ;CLEAR ALL AC'S CALLI REPT: TTCALL 3,[ASCIZ/DO YOU WANT ONE PASS AT 556 BPI? (Y OR C.R.) /] TTCALL 11, TTCALL 0,AC0 CAIN AC0,"Y" ;TEST FOR YES JRST BPI5 TTCALL 3,[ASCIZ/DO YOU WANT ONE PASS AT 800 BPI? (Y OR C.R.) /] TTCALL 11, TTCALL 0,AC0 XCT .-5 JRST BPI8 TTCALL 3,[ASCIZ/DO YOU WANT 2 PASSES, ONE AT 556, THEN AT 800? (Y OR C.R.) /] TTCALL 11, TTCALL 0,AC0 XCT .-12 JRST BPI58 JRST REPT GO: OPEN 1,SPEC JRST NOTAVL MOVE AC0,[XWD 400000,BUF1+1] MOVEM AC0,MAGBUF MTAPE 1,1 MTAPE 1,0 SETOM NUM WLP: TTCALL 3,[ASCIZ/NOW WRITING TAPE /] SETOM AC1 JSR PUTCHR JRST .-1 VERIF: MOVEI TAC,VERIF+6 JRST ERRTST SETZ NUM, CLOSE 1, MTAPE 1,1 MTAPE 1,0 RLP: TTCALL 3,[ASCIZ/NOW VERIFYING TAPE /] JSR GETCHR CAMN AC1,[-1] JRST .-2 COMERR: TTCALL 3,[ASCIZ /VERIF ERROR ON DATA WORD /] MOVEI CNT,^D12 MOVE TAC1,[POINT 3,AC1] JSR TOCT JSR RECNUM JRST SIZ RECNUM: 0 TTCALL 3,[ASCIZ/ RECORD NUMBER (IN OCTAL) /] MOVEI CNT,4 MOVE TAC1,[POINT 3,NUM,23] JSR TOCT JRST @RECNUM SIZ: TTCALL 3,[ASCIZ/ REC SIZE (IN OCTAL) = /] MOVEI CNT,^D6 MOVE TAC1,[POINT 3,BUF1+2,17] JSR TOCT TTCALL 3,[ASCIZ / POSITION WITHIN THIS RECORD = /] HRRZ TAC,BUF1+2 AOS TAC SUB TAC,MAGBUF+2 MOVE TAC1,[POINT 3,TAC,17] MOVEI CNT,6 JSR TOCT TTCALL 3,[ASCIZ/ /] JRST RLP+1 TOCT: 0 ILDB AC0,TAC1 ADDI AC0,60 TTCALL 1,AC0 SOJN CNT,.-3 JRST @TOCT PUTCHR: 0 SOSG MAGBUF+2 JRST PUTBUF PUTNXT: IDPB AC1,MAGBUF+1 JRST @PUTCHR PUTBUF: OUT 1, JSP TAC,ERRTST GETSTS 1,TAC TRNE TAC,2000 ;EOT? JRST LAST1 JSR TEST TRNN TAC,400000 JRST PUTNXT TTCALL 3,[ASCIZ/TAPE IS WRITE-LOCKED, TYPE "REEN" TO RESTART /] EXIT GETCHR: 0 SOSG MAGBUF+2 JRST GETBUF GETNXT: ILDB AC1,MAGBUF+1 JRST @GETCHR GETBUF: IN 1, JSP TAC,ERRTST GETSTS 1,TAC TRNE TAC,2000 ;EOT? JRST LAST2 JSR TEST JRST GETBUF TEST: 0 TRNE TAC,300000 ;DATA OR TAPE BAD? JRST REWR TRNN TAC,40000 ;BLK TOO LG? JRST @TEST TTCALL 3,[ASCIZ !TAPE ERROR, BLOCK TOO LARGE. BAD!] AOS NUM JSR RECNUM TTCALL 3,[ASCIZ/ THIS RECORD NOT VERIFIABLE, WILL CONTINUE /] JRST @TEST REWR: AOS CNT1 ;BUMP ERROR COUNT CAIGE CNT1,^D10 ;ALLOW 10 TRIES FOR I/O JRST SPACE TTCALL 3,[ASCIZ!READ/WRITE FAILED AFTER 10 TRIES ON!] AOS NUM JSR RECNUM TTCALL 3,[ASCIZ/ /] SETZ CNT1, JRST @TEST SPACE: MTAPE 1,7 MTAPE 1,0 JUMPLE NUM,@TEST MTAPE 1,7 MTAPE 1,0 MTAPE 1,6 MTAPE 1,0 JRST @TEST LAST1: TRNN TAC,300000 JRST VERIF JRST PUTBUF+5 LAST2: TRNN TAC,300000 JRST RDEOF JRST GETBUF+5 ERRTST: AOS NUM CAIG CNT1,0 JRST -4(TAC) AOS CNT1 MOVEI CNT,4 MOVE TAC1,[POINT 3,CNT1,23] JSR TOCT TTCALL 3,[ASCIZ! ATTEMPTS TO READ/WRITE ON TAPE!] JSR RECNUM TTCALL 3,[ASCIZ/ /] SETZ CNT1, JRST -4(TAC) BPI5: MOVEI AC0,600 HRRM AC0,RDEOF+2 BPI58: TTCALL 3,[ASCIZ/ 556 BPI /] MOVEI AC0,510 MOVEM AC0,SPEC JRST GO BPI8: MOVEI AC0,710 HRRM AC0,SPEC TTCALL 3,[ASCIZ/ 800 BPI /] JRST GO RDEOF: MOVEI TAC,RDEOF+6 JRST ERRTST TROE TAC,200 JRST ENDS SETSTS 1,@TAC MTAPE 1,1 MTAPE 1,0 TTCALL 3,[ASCIZ /800 BPI /] JRST WLP ENDS: MOVEI AC0,200 HRRM AC0,RDEOF+2 MTAPE 1,1 TTCALL 3,[ASCIZ /DONE /] CALLI 12 NOTAVL: TTCALL 3,[ASCIZ /TRY "AS MTA- TAPTST", THEN TYPE "REEN" /] EXIT SPEC: 0 SIXBIT /TAPTST/ XWD MAGBUF,MAGBUF MAGBUF: BLOCK 3 BUF1: 0 XWD SIZE+1,BUF1+1 BLOCK SIZE+1 END ST