INCPTRES864

(George Source)

Macros used: BC, BS, BSXD, BXE, BXL, BXU, CLOSETOP, GETDIR, HUNTMISB, INSERT, JBS, MBS, MENDAREA, MFREE, MFREEW, MHUNT, MHUNTW, NAME, OPEN, REWIND, SEG, SEGENTRY, SETBIT, SETNCORE, STEP, STEPAGAIN, TESTNAMX, TESTRPN2, TOPFCB2, UP

INCPTRES864.txt
22FL          SEG      INCPTRES,864,FILESTORE   
22^=    #   
23DW    #  THIS SEGMENT IS ENTERED DOWN AT EMS WHEN :DUMPER HAS BEEN PARTIAL
23YG    #  RESTORED. ITS FUNCTION IS TO DETECT TAPES WHICH EXIST IN INCINDEX
24D6    #  AND SYSTEM.SERIAL BUT WHICH HAVE HAD THEIR :DUMPER ENTRIES LOST DUE  
24XQ    #  TO THE PARTIAL RESTORE. FOR EACH SUCH TAPE IT CONCOCTS A DIRECTORY   
25CB    #  ENTRY AND INSERTS IT INTO :DUMPER.   
25X2    #   
26BL          SEGENTRY K1INCPTRES,X1
26W=    #   
27*W    #  SUNDRY CONSTANTS 
27TG    #   
28*6    MDUMPER        12HDUMPER
28SQ    MGEO3PROC      12HGEO3PROCTAPE  
29#B    MGEO3DUMP      12HGEO3DUMPTAPE  
29S2    #   
2=?L    #  ******************************************************************** 
2=R=    #   
2?=W    #  THE MAIN PATH STARTS HERE. ON ENTRY :SYSTEM.INCINDEX IS OPEN AT  
2?QG    #  DEPTH -1 AND THE MISCELLANEOUS CHAIN CONTAINS THE FI/FTAPES BACKMAP  
2#=6    #  BLOCK WHICH GIVES DETAILS OF WHAT TAPES HAVE WHICH DIRECTORY ENTRIES.
2#PQ    #   
2*9B    #  FIRST WE PREPARE FOR THE JOB. WE OPEN :DUMPER AND EXAMINE ITS FCB
2*P2    #  TO SEE IF IT HAS BEEN PARTIAL RESTORED. IF IT HAS NOT WE JUMP STRAIGH
2B8L    #  TO THE END OF THE SEGMENT AS THERE IS NOTHING FOR INCPTRES TO DO.
2BN=    #   
2C7W    X1  
2CMG          SETNCORE 4,2,FILE,FABSNB     [X2-> 4 WORD FABS.   
2D76          LDN   0  4                   [SET UP RECORD HEADER
2DLQ          STO   0  A1(2)
2F6B          ADN   1  MDUMPER             [X1->12HDUMPER   
2FL2          ADN   2  A1+1                [X2->DESTINATION 
2G5L          MOVE  1  3                   [MOVE NAME IN
2GK=          OPEN     (GEOERR),GENERAL    [OPEN :DUMPER
2H4W          MFREE    FILE,FABSNB         [FREE FABS.  
2HJG          TOPFCB2  3                   [X3->:DUMPER'S FCB   
2HQQ ...      JBS      X1A,3,BFPARTRES      [J IF NOT PARTIAL RESTORED  
2H^2 ...      LDX   0  GINCTSN  
2J7= ...      BZE   0  UP   
2J*G ...X1A 
2JHQ    #   
2K3B    #  WE HAVE OPENED :DUMPER AND ESTABLISHED THAT THERE IS WORK FOR US 
2KH2    #  TO DO. WE REWIND INCINDEX ( AT DEPTH -1) AND SET UP A FLOCNB,
2L2L    #  ENT, AND FTRAP WHICH WILL COME IN USEFUL WHEN AN ENTRY HAS TO BE 
2LG=    #  INSERTED INTO :DUMPER. THE ENT AND FLOCNB ARE SET UP WITH ALL THE
2L^W    #  NECESSARY DETAILS EXCEPT LOCAL NAME AND TSN. WE HAVE TO ASSUME THAT  
2MFG    #  THE TAPES HAVE REEL/GEN OF 0/0 AND WE SET THE TIMES AND DATES TO 
2M^6    #  THE CURRENT TIME AND DATE.   
2NDQ    #   
2NYB          REWIND   -1                  [REWIND INCINDEX 
2PD2          SETNCORE 8,3,FILE,FLOCNB     [SET UP TAPE TYPE FLOCNB 
2PXL          MBS      3,BFABTSN,BFABLIB
2QC=          SETNCORE FRDE,3,FILE,ENT     [SET UP ENT  
2QWW          LDN   6  A1(3)               [X6->START OF ENT
2RBG          LDN   7  A1+1(3)             [X7->NEXT WORD   
2RW6          STOZ     A1(3)               [ZERO FIRST WORD 
2S*Q          MOVE  6  FRDE-1              [AND MOVE ZEROES THRU BLOCK  
2STB          LDN   0  FRDE                [SET UP REC HEADER   
2T*2          STO   0  EREC(3)  
2TSL          LDN   0  1                   [ONE TRAP
2W#=          STO   0  ENUSE(3) 
2WRW          LDCT  0  #405                [T/M FOR TAPES   
2X?G          STO   0  ETM(3)   
2XR6          BS       3,BELIB             [INDICATE TAPE ENTRANT   
2Y=Q          LDX   0  EDATE               [INITIALISE DATE/TIME OF ACCESS ETC  
2YQB          STO   0  EDLA(3)             [TO NOW  
2^=2          STO   0  EWRITDAY(3)  
2^PL          LDX   0  CLEANCT  
329=          STO   0  ETLA(3)  
32NW          STO   0  EWRITTIME(3) 
338G          LDX   0  GMTNOW   
33N6          STO   0  EGMTLA(3)
347Q          SETNCORE ETRAP,3,FILE,FTRAP  [SET UP A TRAP BLOCK 
34MB          LDN   0  ETRAP               [SET UP RECORD HEADER
3572          STO   0  ETRAPRH(3)   
35LL          LDN   0  CALL                [SET UP 'ALL' TRAP   
366=          STO   0  ETRAPMODES(3)
36KW          LDN   6  MDUMPER(1)          [X6->12HDUMPER   
375G          LDN   7  ETRUSER1(3)         [X7->DESTINATION 
37K6          MOVE  6  3                   [MOVE NAME INTO TRAP RECORD  
384Q    #   
38JB    #  NOW WE STEP THROUGH INCINDEX A RECORD AT A TIME. 
3942    #   
39HL    STEP  STEP     -1                  [X3->NEXT INCINDEX RECORD
3=3=          BZE   3  YESEOF              [J IF FINISHED   
3=GW          JBS      STEP,3,BIOBSR       [IGNORE OBSOLETE INCREMENTS  
3?2G          LDX   5  AMTSR(3)            [AND INCS WITH NO TAPES  
3?G6          BZE   5  STEP 
3?^Q    #   
3#FB    #  WE HAVE AN INCREMENT WITH TAPES. X5= NO OF TAPES. WE EXAMINE EACH
3#^2    #  TAPE ENTRY IN THE RECORD.
3*DL    #   
3*Y=          LDN   4  0                   [OFFSET DOWN REC TO CURRENT ENTRY
3BCW    NEXTENTRY   
3BMN ...      STEPAGAIN     -1             [ RESET POINTER IN INCINDEX  
3BXG          STO   4  AWORK1(2)           [SAVE OFFSET OVER REUSE OF X4
3CC6          STO   5  AWORK2(2)           [DITTO: COUNT OF ENTRIES 
3CWQ          SMO      4
3DBB          LDX   6  AMAGR(3)            [X6=TSN  
3DW2          BNG   6  NOTSN               [IGNORE IF DUMMY ENTRY   
3F*L    #   
3FT=    #  HAVING FOUND A TAPE WE HUNT FOR THE FI/FTAPE BLOCK SET UP WITH ALL   
3G#W    #  SYSTEM.SERIAL ENTRIES BY BACKMAP. IT LIVES IN THE MISC CHAIN.
3GSG    #  ONCE WE HAVE FOUND IT WE LOOK FOR AN ENTRY FOR THE TAPE USING A  
3H#6    #  BINARY CHOP. IF NO ENTRY EXISTS WE IGNORE THIS ENTRY - THE DISCREPANC
3HRQ    #  CANNOT BE RECTIFIED AND DIDN'T ARISE FROM THE PARTIAL RESTORE.   
3J?B    #   
3JR2          HUNTMISB 2,FI,FTAPE          [X2->FTAPE   
3K=L          LDX   0  A1(2)
3KQ=          LDX   4  2
3L9W          ADX   4  0
3LPG          ADN   4  A1+1                [DISTANCE MARKER FOR CHOP
3M96          LDN   5  A1+1(2)             [HOME MARKER FOR CHOP
3MNQ    NEXTCHOP
3N8B          SRL   0  3
3NN2          SLL   0  2
3P7L          STO   0  2
3PM=          NGNC  7  1                   [MASK OUT B0 OF INDICATED ENTRY  
3Q6W          SMO      5
3QLG          ANDX  7  0(2) 
3R66          BXE   7  6,WEHAVEIT          [J IF ENTRY FOUND
3RKQ          BZE   2  NOACTION            [[J IF NEXT CHOP WOULD GIVE SAME ENTR
3S5B          BXL   7  6,MOREBIG
3SK2          STO   5  4
3T4L          ADX   4  0
3TJ=          BRN      NEXTCHOP 
3W3W    MOREBIG 
3WHG          ADX   5  0
3X36          LDX   0  4
3XGQ          SBX   0  5
3Y2B          BRN      NEXTCHOP 
3YG2    WEHAVEIT
3Y^L          ADX   2  5                   [X2->ENTRY   
3^F=    #   
3^YW    #  WE HAVE FOUND AN ENTRY. IF IT IS MARKED 'FOUND' BY BACKMAP (B0 OF
42DG    #  TSN SET) WE TAKE NO ACTION - THERE IS A DIRECTORY ENTRY FOR IT.  
42Y6    #  IF IT IS MARKED 'NOT FOUND' (B0 CLEAR) BUT DOES NOT BELONG TO
43CQ    #  :DUMPER WE TAKE NO ACTION - THE DISCREPANCY CANNOT BE REPAIRED, AND  
43XB    #  WASN'T CAUSED BY THE PARTIAL RESTORE ANYWAY. OTHERWISE WE SET UP 
44C2    #  THE FLOCNB AND ENT TO INDICATE THE TAPE, LOCATE THE ENTRY POSITION   
44WL    #  IN :DUMPER AND INSERT IT.
45B=    #   
45TW          LDXC  0  0(2) 
46*G          BCS      NOACTION            [IGNORE IF 'FOUND'   
46T6          TESTNAMX 3,1(2),MDUMPER(1),NOACTION[IGNORE IF NOT :DUMPER 
47#Q ...      SETBIT   0,0(2)              [INDICATE ENTRY NOW 'FOUND'  
47SB          MHUNT    2,FILE,FLOCNB       [X2->FLOCNB  
48#2          STO   6  A1+7(2)  
48RL          STOZ     A1+6(2)  
49?=          STOZ     A1+5(2)  
49QW          STOZ     A1+4(2)  
4==G          STOZ     A1+3(2)  
4=Q6          BSXD     0,BMPROCTR          [BIT IN MAGSTATE IDENTIFYING PROCTS  
4=^Y ...      SMO      FX2  
4?9Q ...      LDX   5  AWORK1   
4?FJ ...      SMO      5
4?PB          ANDX  0  AMAGSTATER(3)
4#92          BNZ   0  PROCTAPE            [J IF A PROCTAPE 
4#NL          LDN   4  MGEO3DUMP(1)        [X4->12HGEO3DUMPTAPE 
4*8=          BRN      MOVENAME 
4*MW    PROCTAPE
4B7G          LDN   4  MGEO3PROC(1)        [X4->12HGEO3PROCTAPE 
4BM6    MOVENAME
4C6Q          LDN   5  A1(2)               [X5->DESTINATION OF NAME 
4CLB          MOVE  4  3                   [MOVE IN NAME
4D62          MHUNTW   2,FILE,ENT          [X2->ENT 
4DKL          LDN   5  ELOC1(2)            [X5->LOCAL NAME POSITION 
4F5=          MOVE  4  3                   [MOVE LOCAL NAME INTO ENT
4FJW          STO   6  ESER(2)             [STORE TSN   
4FLK ...      LDX   0  MGEO3DUMP+1(1)      ['DUMP'  
4FN# ...      BXU   0  ELOC2(2),PROCTAPE2  [J IF NOT A DUMP TAPE
4FQ3 ...      BS       2,BEUSEDUMP         [FOR DUMP TAPES ENSURE 'IN USE' BIT  
4FRQ ...                                   [SET 
4FTF ...      BRN      NPROCTAPE2   
4FX8 ...PROCTAPE2   
4FYX ...      BC        2,BEUSEDUMP        [BIT NEVER SET FOR PROC TAPES
4G2L ...NPROCTAPE2  
4G4G          NAME     2,FILE,FWB          [RENAME READY FOR INSERT 
4GJ6          GETDIR   3                   [POSITION DIR
4H3Q          TESTRPN2 NOFILE,(GEOERR)     [REPLY MUST BE NOFILE
4HHB          INSERT                       [INSERT THE ENT  
4J32          MHUNTW   3,FILE,FWB   
4JGL          NAME     3,FILE,ENT          [RENAME ENT BACK 
4K2=          MHUNTW   3,FILE,FTRAP        [TRAPS TURN NOW  
4KFW          NAME     3,FILE,FWB   
4K^G          INSERT                       [INSERT IT   
4LF6          MHUNTW   3,FILE,FWB   
4LYQ          NAME     3,FILE,FTRAP        [RENAME IT BACK  
4MDB    #   
4MY2    #  WE NOW MOVE ONTO A NEW ENTRY.
4NCL    #   
4NX=    NOTSN   
4PBW    NOACTION
4PWG          LDX   2  FX2  
4QB6          LDX   4  AWORK1(2)           [OFFSET TO ENTRY 
4QTQ          LDX   5  AWORK2(2)           [COUNT OF TSNS   
4R*B          ADN   4  INCMAGLEN           [UPDATE OFFSET   
4RT2          BCT   5  NEXTENTRY           [LOOP IF MORE ENTRIES IN RECORD  
4S#L          BRN      STEP                [OTHERWISE LOOK FOR NEW RECORD   
4SS=    #   
4T?W    #  THAT'S THE LOT. WE CLOSE :DUMPER AND EXIT UP.
4TRG    #   
4W?6    YESEOF  
4WQQ          MFREE    FILE,FLOCNB  
4X=B          MFREEW   FILE,ENT 
4XQ2          MFREEW   FILE,FTRAP   
4Y9L    UP  
4YP=          CLOSETOP  
4^8W          UP
4^NG    #   
5286    #   
52MQ          MENDAREA 30,K99INCPTRES   
537B    #   
53M2    #END
^^^^ ...472642130001