.title INCR READ INDEX FILE AND SET UP LIST OF FILES TO DUMP .ident /x001.1/ .MCALL OPEN$R,OPEN$A,GET$R,PUT$R .MCALL OPEN$U,CLOSE$,PUT$,ALUN$C,RQST$C .MCALL FSRSZ$,FDBDF$,FDRC$A,FDOP$A,EXIT$S,FDBK$A .MCALL DIR$ .MCALL QIOW$S .mcall RUN$C .MCALL FHDOF$ FHDOF$ FSRSZ$ 4 ; 4 CHANNELS ; 1 - TTY ; 2 - INCDMPSTS ; 3 - OFFLINE ; 4 - INDEXF.SYS ; FDB: INXFDB: FDBDF$ FDRC$A FD.RWM FDBK$A INXBF,512.,,5,INXSTS FDOP$A 4,INXDST,,FO.RD!FA.SHR OFFFDB: FDBDF$ FDRC$A ,CNTBUF,16. FDOP$A 3,OFFDST,,FO.APD CNTDST: .WORD 3,SYDEV,6,DMPUIC,13.,CNTNAM INXDST: .WORD 3,SYDEV,5,SYSUIC,10.,INXNAM OFFDST: .WORD 3,SYDEV,6,DMPUIC,11.,OFFNAM SYDEV: .ASCII /SY:/ SYSUIC: .ASCII /[0,0]/ DMPUIC: .ASCII /[10,1]/ CNTNAM: .ASCII /INCDMPSTS.SYS/ INXNAM: .ASCII /INDEXF.SYS/ OFFNAM: .ASCII /OFFLINE.SYS/ RESE: .ASCII /RESET/ FNM: .ASCII <15><12>/INCR>/ .EVEN INCRNO: .WORD 0 .BLKW 7 STATS: .BLKW 5 INXBF: .BLKW 256. CNTFDB: FDBDF$ FDRC$A FD.RAN,CNTBUF,16. FDOP$A 2,CNTDST,,FO.UPD CNTBUF: .BLKW 8. INXBUF: .BLKW 8. RCCNT: .WORD 0 INXSTS: .WORD 0,0 VBN: .WORD 0,22 cngcnt: .word 0 FILMSS: .ASCII /INCR -- ERROR OPENING FILE/ FILLEN=.-FILMSS .EVEN .MCALL QIOW$ ERRDPB: QIOW$ IO.WLB,1,1,,,, START: ALUN$C 1,TI,0 ;GRAB TTY MOV #STATS,#INXFDB+F.STBK OPEN$R #INXFDB ;OPEN INDEX FILE BCS FILERR ; HERE OPEN CNTROL FILE AND GET PREV INC NO - RESET IT +1 OPEN$A #OFFFDB BCS FILERR OPEN$U #CNTFDB BCC MAINLP FILERR: DIR$ #ERRDPB JMPFIN: JMP FIN$ MAINLP: QIOW$S #IO.RVB,#4,#6,,#INXSTS,,<#INXBF,#512.,,#0,VBN+2> INC VBN+2 CMPB INXSTS,#IS.SUC ;OK BNE JMPFIN ;NO FINISH NOW CMP INXSTS+2,#512. BNE JMPFIN MOV #INXBF,R0 MOV #INXBUF,R1 CLR (R1)+ ;HERE CHECK FOR VALID BLOCK FIELDS FOR FILES 11 CLR R2 BISB H.MPOF(R0),R2 ASL R2 ADD R2,R0 TSTB M.ESQN(R0) BNE MAINLP TSTB M.ERVN(R0) BNE MAINLP TSTB M.USE(R0) ;NO BLOCKS IN FILE! BEQ MAINLP CMPB M.LBSZ(R0),#3 BNE MAINLP CMPB M.CTSZ(R0),#1 BNE MAINLP MOV #INXBF,R0 MOV H.FNUM(R0),RCCNT ;GET FILE ID FOR INDEX INTO CNTRL FIL BLE MAINLP MOV H.FSEQ(R0),(R1)+ ;STORE SEQ BLE MAINLP MOV H.FOWN(R0),(R1)+ ;STORE UIC MOVB H.IDOF(R0),R3 BIC #177400,R3 ;MAK SUR INDEX IS + ADD R3,R3 ;MAK BYTES NOT WORDS ADD R3,R0 MOV #5,R2 1$: MOV (R0)+,(R1)+ SOB R2,1$ ; COPY FILE NAME TST -(R1) BEQ MAINLP TST RCCNT BLE MAINLP ; *** HERE TST IF FILE IS DUMP CANDIDATE ; RCCNT WAS ZERO FOR A DELETED FILE MOV INXBF+S.HDHD+I.FTYP,R0 MOV INXBF+S.HDHD+I.FNAM,R1 MOV INXBF+S.HDHD+I.FNAM+2,R2 CMP #<^RDIR>,R0 BEQ MAINLP CMP #<^RTMP>,R0 BEQ MAINLP CMP #<^RLPT>,R0 BEQ MAINLP CMP #<^RLST>,R0 BEQ MAINLP CMP #<^RTES>,R1 BNE 77$ CMP #<^RT >,R2 BNE 77$ TST INXBF+S.HDHD+I.FNAM+4 BEQ MAINLP 77$: ; NOW HAVE SET UP NEW RECORD TO WRITE OUT IF IT DOES NOTMATCH ; READ CORRESPONING RECORD FROM INC DMP STS ; IF MATCH GO, TO NXT ; IF NOT WRITE RECORD TO INC DMP STS ; ;LOOK AT INC DMP RECORD - IS SEQ =0 ; YES DONT BOTHER GO NXT ; NO WRITE TO OFFLINE ; GET$R #CNTFDB,#CNTBUF,#16.,RCCNT ;GET CORRESPONDING RECORD CMP CNTBUF+2,INXBUF+2 ;SAME FILE BEQ RET ;YES - OK PUT$R #CNTFDB,#INXBUF,#16.,RCCNT ;NO SAY TO BE DUMPED inc cngcnt TST CNTBUF BEQ RET ;OLD WASNT DUMPED TST CNTBUF+2 ;OLD SEQ NO BEQ RET ;WAS ZERO = NO FILE PUT$ #OFFFDB,#CNTBUF,#16. ;#0 SO ARCHIVE RECORD. RET: JMP MAINLP ;HERE TO WIND UP FIN$: CLOSE$ #CNTFDB CLOSE$ #INXFDB CLOSE$ #OFFFDB cmp cngcnt,#10. ble agn RQST$C INC... EXIT$S agn: run$c INCR.. ,,,,,5,4 exit$s .END START