.TITLE FINDFL .SBTTLE RSX11M ROLLIN .PSECT IMPURE,D,LCL,OVR ; ; ; SYSTEM MACRO DEFINITIONS ; ; ; .MCALL QIOW$S ; ; ; DATA ; ; ; ENDFLG: .BYTE 0 .NLIST BEX ERM1: .ASCII /ERROR WHEN SPACING BACK TWO EOF MARKS/ ERM1S =<.-ERM1> .EVEN ERM2: .ASCII /CANNOT FIND FILENAME ON THIS TAPE/ ERM2S =<.-ERM2> .EVEN ERM3: .ASCII /CANNOT HAVE DUPLICATE FILENAME ON TAPE/ ERM3S =<.-ERM3> .EVEN ERM4: .ASCII /ERROR DURING FIND WHEN SKIPPING FILES/ ERM4S =<.-ERM4> .EVEN ERM5: .ASCII /MAGNETIC TAPE READ ERROR DURING FIND FILE ROUTINE/ ERM5S =<.-ERM5> .EVEN .LIST BEX .PSECT ; ; ; PROGRAM PROPER ; ; ; FINDFL::CALL $SAVAL ;SAVE REGISTERS CLR ENDFLG MOVB F.LUN(R0),R4 ;LUN TO R4 MOV F.BKST(R0),R5 ;I/O STATUS WORD TO R5 ADD #F.FNB,R0 ;GET FILENAME CMP N.DVNM(R0),#"MT ;IS DEVICE MAG TAPE BEQ READMT ;YES DEVICE MAG TAPE JMP EXIT ;NO,EXIT READMT: QIOW$S #IO.RLB,R4,R4,,R5,,<#FLABL,#BIMSIZ> CMPB #IS.SUC,(R5) ;CHECK FOR END OF VOLUME BEQ READHD CMPB #IE.EOF,(R5) BNE READER JMP SKIPF READER: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM5,#ERM5S,#60> JMP RSTART READHD: CMP #14.,2(R5) ;WAS 14 BYTES READ BNE SKIPF ;NO SKIP A FILE CMP FLABL,N.FNAM(R0) ;ARE FILENAMES THE SAME BNE SKIPF ;NO, SKIP FILE CMP FLABL+2,N.FNAM+2(R0) ;ARE THESE CHARACTERS THE SAME BNE SKIPF ;NO, SKIP FILE CMP FLABL+4,#^RROL ;SEE IF EXTENSION .ROL BEQ EQUAL ;YES,SAME FILENAME BR SKIPF ENDVOL: CMPB #INPLUN,R4 ;IS THIS AN INPUT TAPE BNE BACKUP ;NO READY TO WRITE QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM2,#ERM2S,#60> JMP RSTART ;ERROR EXIT EQUAL: CMPB #INPLUN,R4 ;IS THIS AN INPUT TAPE BEQ EXIT ;YES READY TO READ QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM3,#ERM3S,#60> JMP RSTART ;ERROR EXIT SKIPF: QIOW$S #IO.SPF,R4,R4,,R5,,<#1> CMPB #IS.SUC,(R5) ;WAS IT A SUCCESS BNE MTEOV JMP READMT MTEOV: CMPB #IE.EOV,(R5) BEQ ENDVOL QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM4,#ERM4S,#60> JMP RSTART ;ERROR EXIT BACKUP: QIOW$S #IO.SPF,R4,R4,,R5,,<#-1>;SPACE BACK TWO EOF MARKS CMP #IS.SUC,(R5) ;WAS IT A SUCCESS BEQ EXIT ;YES QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM1,#ERM1S,#60.> JMP RSTART EXIT: RETURN ;RETURN TO MAIN PROGRAM .END