TITLE FAILSAFE READER .MLLIT==1 A=1 B=2 C=3 D=4 E=5 T=6 TT=7 I=10 J=11 Q=12 P=17 MTIC=13 DKOC=14 TYOC=15 PDL: -40,,. BLOCK 40 SNM: SIXBIT/REV.7/ ;SNAME TO READ INTO MTO: .BII,,'MT0 DKO: .BIO,,'DSK FN1: 0 FN2: 0 GO: MOVE P,PDL .OPEN TYOC,[.UAO,,'TTY] .VALUE MOVE TT,[.FNAM1] PUSHJ P,SIXTYO .IOT TYOC,[".] MOVE TT,[.FNAM2] PUSHJ P,SIXTYO PUSHJ P,CRLF .SUSET [.SSNAME,,SNM] .OPEN MTIC,MTO ;SKIP FIRST TWO FILES .VALUE HRROI TT,BUF .IOT MTIC,TT .OPEN MTIC,MTO .VALUE HRROI TT,BUF .IOT MTIC,TT .OPEN MTIC,MTO ;THIRD FILE IS WHOLE TAPE .VALUE NXF: MOVE TT,[-43,,BUF] ;READ HEADER .IOT MTIC,TT JUMPL TT,EOT SKIPL Q,BUF .VALUE MOVEI Q,-42(Q) ;NUMBER OF DATA WORDS IN THIS RECORD MOVE TT,BUF+4 MOVEM TT,FN1 PUSHJ P,SIXTYO .IOT TYOC,[" ] HLLZ TT,BUF+5 MOVEM TT,FN2 PUSHJ P,SIXTYO MOVE E,BUF+7 ;LENGTH CAMGE E,Q .VALUE ;SCREWED UP .OPEN DKOC,DKO .VALUE .CALL [ SETZ ;DON'T BOTHER IDUMPING 'SDMPBT MOVEI DKOC SETZI 1 ] JFCL RFL: JUMPN Q,EOR HRROI TT,Q ;GOBBLE HEADER OF NEXT RECORD .IOT MTIC,TT JUMPGE Q,EOR .VALUE ;UNEXPECTED HEADER EOR: MOVEI D,LBUF CAIGE E,LBUF MOVE D,E ;D HAS NUMBER OF WORDS TO READ FROM FILE CAMGE Q,D ;DON'T TAKE MORE THAN IN RECORD MOVE D,Q SUB E,D SUB Q,D MOVNS D,D MOVSS D,D HRRI D,BUF MOVE C,D .IOT MTIC,D SKIPGE D .VALUE .IOT DKOC,C JUMPN E,RFL .CLOSE DKOC, PUSHJ P,CRLF JRST NXF EOT: MOVE TT,[SIXBIT/E-O-T/] PUSHJ P,SIXTYO .BREAK 16,160000 CRLF: .IOT TYOC,[15] CPOPJ: POPJ P, SIXTYO: MOVEI T,0 LSHC T,6 ADDI T,40 .IOT TYOC,T JUMPN TT,SIXTYO POPJ P, LBUF==200 BUF: BLOCK LBUF BUFP: -LBUF,,BUF END GO