{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: INCPTRES864)}}
====== INCPTRES864 ======
(George Source)
**Macros used:** [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BSXD|BSXD]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:GETDIR|GETDIR]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:INSERT|INSERT]], [[george:macro:JBS|JBS]], [[george:macro:MBS|MBS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:OPEN|OPEN]], [[george:macro:REWIND|REWIND]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETBIT|SETBIT]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:UP|UP]]
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