(George Source)
Macros used: ACROSS, ALTLEN, ALTLENG, BACKREAD, BACKWRITE, BBUS, BS, BWZ, BXE, BXL, BXU, CHAIN, CLEARFAIL, CLOSEFRBS, COOR1, DCA, DOWN, GETBACK, GPERI, GRINDEX, HUNT, HUNTMISB, JBC, JBCC, LOCKC, MBSXD, MENDAREA, MFREE, MHUNT, MHUNTW, MONOUT, OUTPACK, PAIR, REINDEX, RESQUERY, RESTOREN, SEG, SEGENTRY, SETNCORE, SETREP, TESTNAMX, TOPFCA, UNLOCK, UP, UPPLUS
22FL ... SEG RESTOREG,864,PETER CAMPBELL,RESTORE 22^= # 23DW SEGENTRY K1RESTOREG,RESTOREG 23L4 ... SEGENTRY K2RESTOREG,RESTOREG2 23YG # 24D6 # THE PURPOSE OF THIS SEGMENT IS TO RESTORE THE FILESTORE COMPLETELY 24XQ # FROM AN INCREMENTAL DUMP TAPE. 25CB # ENTRY ENTERED IN EARLY MORNING START FROM RESTOREA 25X2 # A TAPE HAS BEEN ENGAGED 26BL # METHOD SEGMENT USES RESTLIMB AND RESTMERG AND RESTEND 26W= # IT FIRST CHECKS THAT THE CORRECT INCREMENT DUMP TAPE HAS 27*W # BEEN ENGAGED 27TG # IT SETS UP FILE BLOCKS 28*6 # FWB USED BY RESTOREG,RESTLIMB 28SQ # FLOCNB 29#B # FAPB USED BY RESTLIMB,RESTMERG 29S2 # FRESTOR USED BY RESTMERG 2=?L # RESTLIMB IS USED TO RESTORE ALL FILES UNDER MASTER AND 2=R= # LEAVES SKELETON DIRECTORIES FOR DICTIONARY,MANAGER AND 2?=W # SYSTEM FILES 2?QG # RESTMERG IS USED TO MERGE SKELETON ENTRIES SETUP BY 2#=6 # RESTLIMB WITH THE FILE OF MASTER ON THE TAPE. 2#PQ # THE SEGMENT THEN CREATES MASTERS DIRECTORY ENTRY 2*9B # RESTEND IS USED TO INSERT THE TAPE SERIAL NUMBER INTO FILES 2*P2 # INCINDEX,SERIAL AND DUMPER. 2B8L # EXIT UP NORMAL RETURN WHEN RESTORE COMPLETED 2BN= # 2CMG SFS 12HGEORGE3DUMP 2D76 MAST 4HMAST 2DLQ SLINK [ENTRY LINK FOR REWIND ACTIVITY 2F6B PAIR LIBLOAD,1 2LG= TDUMP 12HGEO3DUMPTAPE 2L^W XTHOU +1000000 2MFG ...# ****************************************************************** 2M^6 ...# SFRESTUSER2 2NDQ ...# *********** 2NYB ...# ( LINK IN X1 ) 2PD2 ...# SUBROUTINE TO GET POINTER TO FRESTURER IN X2 2PXL ...SFRESTUSER2 2QC= ... HUNTMISB 2,FI,FRESTUSER [ SEARCH MISC CHAIN FOR FRESTUSER 2QWW ... BNG 2 (GEOERR) [ BREAK IF NOT THERE 2RBG ... EXIT 1 0 [AND BACK 2RW6 ...# 2S*Q ...# ****************************************************************** 2STB ...# SFRESTUSER3 2T*2 ...# *********** 2TSL ...# (LINK IN X1 ) 2W#= ...# SUBROUTINE TO GET POINTER TO FRESTUSER IN X3 2WRW ...# 2X?G ...SFRESTUSER3 2XR6 ... HUNTMISB 3,FI,FRESTUSER [ 2Y=Q ... BNG 3 (GEOERR) [ 2YQB ... EXIT 1 0 [ AND BACK 2^=2 ...# 2^PL ...# ****************************************************************** 329= ... 32NW ...# ****************************************************************** 338G ...# 33N6 ...# NEXTINC 347Q ...# ******* 34MB ...# USES X6 AS LINK 3572 ...# 35LL ...# THIS SUBROUTINE READS DOWN THE TAPE UNTIL IT FINDS THE 366= ...# NEXT START OF INCREMENT SENTINEL 36KW ...# IT LEAVES THE INCREMENT NUMBER IN X5 375G ...# ****************************************************************** 37K6 ...NEXTINC 384Q ... SBX 6 FX1 [ 38JB ...NEXTINC2 3942 ... CALL 5 TM [ SKIP TO TAPE MARK 39HL ... CALL 5 READP [ READ SENTINEL 3=3= ... LDX 0 ESENTYP(3) [ 3=GW ... SBN 0 7 [ 3?2G ... BZE 0 NOTINC [ JUMP IF END OF TAPE 3?G6 ... ADN 0 1 [ 3?^Q ... BNZ 0 NEXTINC2 [ JUMP UNLESS START SENTINEL 3#FB ... TESTNAMX 3,SFS(1),ESENLOC1(3),NEXTINC2 3#^2 ... [ JUMP IF NOT GEORGE3DUMP 3*DL ... BBUS 1,ESENB(3),NEXTINC2 [ JUMP IF NOT START OF INCREMENT 3*Y= ... LDX 5 ESENFG(3) [ X5 IS INCREMENT NUMBER 3BCW ... ADX 6 FX1 [ 3BXG ... EXIT 6 0 [ AND AWAY 3CC6 ...# 3CWQ ...[*********************************************************************** 3DBB ...# READHDDR 3DW2 ...# ******** 3F*L ...# LINK = X5 3FT= ...# LEAVES TSN IN X6 3G#W ...# THIS SUBROUTINE REWINDS THE TAPE,READS THE HEADER LABEL 3GSG ...# CHECKS THAT THE NAME IS GEO3DUMPTAPE AND THAT TSN IS NON-ZERO 3H#6 ...# 3HRQ ...# X6 WILL CONTAIN THE TSN ON EXOT 3J?B ...READHDDR 3JR2 ... SBX 5 FX1 [ 3K=L ... LDN 0 7 [ 3KQ= ... DCA ,STO,0,MODE [REWIND THE TAPE 3L9W ... CALL 4 PERI [ 3LPG ... LDN 6 0 [ NO TAPE READ YET 3M96 ... SETNCORE 20,3,FILE,FINTER6 3MNQ ... STOZ A1(3) [ SET UP EMPTY FINTER6 3N8B ... SETNCORE 20,3,FILE,FWB [SET UP AND LOCK FWB 3NN2 ... LOCKC 3,XLOCK [ 3P7L ... MHUNTW 3,FILE,FWB 3PM= ... LDN 0 A1(3) [ START ADDRESS 3Q6W ... DCA ,STO,0,CTSA [ SET DESTINATION ADDRESS 3QLG ... LDN 0 20 [ LENGTH OF TRANSFER 3R66 ... DCA ,STO,0,COUNT [ 3RKQ ... DCA ,STOZ,,MODE [ READ MODE 3S5B ... CALL 4 PERI [ FORE OF REPI 3SK2 ... UNLOCK 3 [UNLOCK FWB 3T4L ... LDCT 0 #440 [ 3TJ= ... ANDX 0 CPRW1(2) [ CHECK REPLY WORD 3W3W ... BNZ 0 XER19 [ JUMP IF BIT 0 OR BIT 3 SET 3WHG ... LDX 6 A1+1(3) [ PICK UP TSN 3X36 ... TESTNAMX 3,TDUMP(1),A1+2(3),NOTDTAPE 3XGQ ... [ JUMP IF NOT GEO3DUMPTAPE 3Y2B ... BZE 6 XNOTSN [ JUMP IF ZORO TSN 3YG2 ... ADX 5 FX1 3Y^L ... EXIT 5 0 [ AND AWAY 3^F= ...# ****************************************************************** 3^YW ...# XNOTSN 42DG ...# ****** 42Y6 ...# THIS SECTION IS ENTERED IN THE UNLIKELY EVENT OF A TAPE WITH 43CQ ...# A ZERO TSN BEING LOADED 43XB ...# 44C2 ...XNOTSN 44WL ... MONOUT GRZEROTSN [ TAPE HAS A ZERO TSN 45B= ... BRN XER30 45TW ...# 46*G ...# ****************************************************************** 46T6 ...# NOTDTAPE 47#Q ...# ******** 47SB ...# THIS SECTION IS ENTERED IF THE LOADED TAPE IS NOT CALLED "GEO3DUMP 48#2 ...NOTDTAPE 48RL ... OUTPACK 6,1,TSN [ 49?= ... MONOUT GRNOTDT [%A IS NOT A DUMP TAPE 49QW ... BRN XER30 4==G ...# 4=Q6 ...# ****************************************************************** 4?9Q ...# NOTINC 4?PB ...# ****** 4#92 ...# THIS SECTION IS ENTERED WHEN THE REQUIRED INC IS NOT ON THE TAPE L 4#NL ...NOTINC 4*8= ...# 4*?B ...#UNS AMTGR 4*BG ... JBC RONGTAPE,,BGENRES 4*FL ...#UNS AMTGR 4*JQ ...#SKI 4*MW ... BWZ JINCLAST,RONGTAPE2 4B7G ...# JUMP IF PARTIAL RESTORE 4BM6 ... OUTPACK JINCLAST,1,INCNUM 4C6Q ... OUTPACK GINCTSN,1,TSN 4CLB ... MONOUT GRWRONGDT [ INCREMENT %A IS NOT ON %B 4D62 ... BRN XER30 4DKL ...# 4F5= ...# ****************************************************************** 4FJW ...# NOTSUIT 4G4G ...# ******* 4GJ6 ...# THIS SECTION IS ENTERED IF AN INCREMENT IS UNSUITABLE FOR A 4H3Q ...# GENERAL RESTORE. - B0 OF WORD 19 IS SET IF IT SUITABLE 4HHB ...# 4J32 ...NOTSUIT 4JGL ... OUTPACK GINCTSN,1,TSN [ 4K2= ... MONOUT GRNOTSUIT [ MT %A IS NOT SUITABLE FOR A GENERAL 4KFW ... BRN XER30 4K^G ... 4LF6 ...# 4LYQ ...# ****************************************************************** 4MDB ...# PERI 4MY2 ...# **** 4NCL ...# THIS SUBROUTINE LOCKS THE ACTIVITY BLOCK 4NX= ...# DOES A GPERI , COORDINATES UNLOCKS THE ACTIVITY BLOCK AND EXITS 4PBW ...# IT USES X4 AS THE LINK ACCUMULATOT 4PWG ...# 4QB6 ...PERI 4QTQ ... SBX 4 FX1 [ 4R*B ... LOCKC 2,£ [LOCK THE ACTIVITY 4RT2 ... GPERI ,2 [ FIRE OFF THE PERI 4S#L ... COOR1 [ 4SS= ... UNLOCK 2 [ UNLOCK IT AGAIN 4T?W ... ADX 4 FX1 [ 4TRG ... EXIT 4 0 [ 4W?6 ...# 4WQQ ...# ****************************************************************** 4X=B ...# SFINTER 4XQ2 ...# ******* 4Y9L ...# SUBROUTINE FOR USE BY ALTLENG ( LINK X1 ) 4YP= ...SFINTER 4^8W ... MHUNTW 2,FILE,FINTER [ 4^NG ... EXIT 1 0 [ 5286 ...# 52MQ ...# ****************************************************************** 5H?L ...# 5H?N ...# RESTOREG (GENERAL RESTORE) 5H?Q ...# ******** 5H?S ...# 5H?W ...# THE FOLLOWING SECTION OF GENERAL RESTORE READS THE HEADDER 5H?Y ...# OF THE TAPE JUST LOADED ANDS WINDS DOWN UNTIL IT FINDS 5H#2 ...# THE REQUIRED INCREMENT 5H#4 ...# 5H#6 ...# 5H#8 ...RESTOREG 5H#= ... CALL 5 READHDDR [ REWIND AND READ THE HEADER LABEL 5H## ... STO 6 GINCTSN [ STORE THE TSN OF TAPE BEING USED 5H#B ... OUTPACK 6,1,TSN [OUTPUT TSN 5H#D ... MONOUT GRTAPENGD [ DUMP TAPE %A IS ENGAGED 5H#G ... SETNCORE 0,3,FILE,FINTER [ BLOCK FOR INCREMENTS ON TAPE 5H#J ... SETNCORE AMAGS-A1FINT7,3,FILE,FINTER7 5H#L ... [ BLOCK FOR ODD INFORMATION 5H#N ...# A FEW LINES OF CODE FOR PARALLEL DUMPER 5H#Q ... STOZ GRPINCSIZE(3) [ CLEAR SIZE 5H#S ... STOZ GRPINCFILES(3) [ AND NUMBER OF FILES IN PARALLEL INC 5H#W ... LDX 0 JINCLAST [ 5H#Y ... SBN 0 1 [ FINAL INCREMENT MUST BE 5H*2 ... [ > = JINCLAST - 1 5H*4 ... STO 0 GRPINCNUM(3) [ 5H*6 ...# END OF FEW LINES OF PARALLEL DUMPER CODE 5H*8 ... STO 6 CURRTSN(3) [ STORE TSN OF RESTORED TAPR 5H*= ... MHUNTW 2,FILE,FWB [ 5H*# ... LDX 0 A1+5(2) [ HEADER LABEL 5H*B ... STO 0 BMEREEL(3) [ STORE REEL NUMBER 5H*D ... LDX 0 A1+6(2) [ STORE GEN NUMBER 5H*G ... STO 0 BMEGEN(3) 5H*J ...# ****************************************************************** 5H*L ...# WE NOW READ DOWN THW TAPE UNTIL WE FIND THE REQUIRED INCREMENT 5H*N ...NEXTINCR 5H*Q ... CALL 6 NEXTINC 5H*S ... MHUNTW 3,FILE,FINTER [ 5H*W ... LDX 4 ALOGLEN(3) [ LENGTH BLOCK BY 1 WORD 5H*Y ... ADN 4 1 [ 5HB2 ... ALTLENG 3,4,SFINTER [ 5HB4 ... CALL 1 SFINTER [ RE-HUNT FINTER 5HB6 ... SMO 4 [ 5HB8 ... STO 5 FIRSTINC-1(2) [ ADD INCREMENT TO LIST 5HB= ... BXL 5 JINCLAST,NEXTINCR [ JUMP IF NOT YET REACHED INCR 5HB# ... BXU 5 JINCLAST,NOTINC [JUMP IF PAST INCREMENT 5HBB ... 5HBD ...# ****************************************************************** 5HBG ...# WE HAVE NOW FOUND THE CORRECT INCREMENT 5HBJ ...[ CLEAR :MASTERS DIRENT IN CASE OF TAPEFAILS IN GENERAL RESTORE 5HBL ... SETNCORE GSBS,3,BSTB,BWRITE 5HBN ... LDN 0 BTHREE 5HBQ ... STO 0 BACK1(3) 5HBS ... LDN 0 ADMASTDIR 5HBW ... STO 0 BACK2(3) 5HBY ... STOZ A1(3) 5HC2 ... LDN 1 A1(3) 5HC4 ... LDN 2 A1+1(3) 5HC6 ... MOVE 1 GSBS-1 5HC8 ... LDX 0 GVERSION 5HC= ... STO 0 EVERSION(3) 5HC# ... LDCT 0 1 5HCB ... STO 0 EINF1(3) 5HCD ... BACKWRITE FREE,BSBS 5HCG ... CLEARFAIL [CLEAR FAILED BLOCKS LIST 5HCJ ... LDX 3 BFILE 5HCL ... LDN 0 FBLKS-A1 5HCN ... STO 0 ALOGLEN(3) 5HCQ ... STO 0 FUSEBL(3) 5HCS ... STO 0 FBLMOD(3) 5HCW ... STOZ BSPRE(3) 5HCX ...#UNS AMTGR 5HCY ...( 5HC^ ... JBCC XLEAVBSGR,,BFREEBS 5HD2 ... DOWN BACKROOM,11 5HD3 ...XLEAVBSGR 5HD4 ...) 5HD5 ...#UNS AMTGR 5HD6 ...#SKI 5HD7 ... DOWN BACKROOM,11 5HD8 ... 5HD9 ...# NOW PLUNGE INTO GENERAL RESTORE ITSELF 5HD= ...# THE TAPE IS NOW POSITIONED BEFORE THE SFS FOR MASTER 5HD? ...# 'OPEN MASTER BY ALTERING LENGTH OF FCB AND SETTING UP IN CORRECT 5HD# ...# FORMAT AND SETTING UP FILE CONTROL AREA 5HD* ... MHUNTW 3,FILE,FWB 5HDB ... LDX 7 ESEN10(3) [ KEEP GMT OF DUMP 5HDD ... LDX 0 ESENRL(3) [ KEEP FILESTORE MARK VERSION 5HDG ... LDX 2 FX2 5HDJ ... STO 0 AWORK3(2) 5HDL ... ALTLEN 3,BSBS,FILE,FWB 5HDN ... SETNCORE GSBS,3,FILE,FAPB [SET UP BLOCKS ONE OF WHICH WILL BE 5HDQ ... SETNCORE GSBS,3,FILE,FRESTOR [NEEDED THROUGHOUT 5HDS ... SETNCORE 6,3,FILE,FLOCNB 5HDW ... CALL 5 TM [SKIP PAST TM 5HDY ... CALL 5 READP [READ QB 5HF2 ...# ASSUME :MASTER MAY BE ALLOCATED TO A SPECIAL RESIDENCE . UP TO & INCL 5HF4 ...# MARK 7 THIS IS NOT POSSIBLE(INDEED :MASTER IS PUT ON RESIDENCE 3). 5HF6 ... LDX 6 ESENAL(3) 5HF8 ... ANDN 6 #77 5HF= ... SBN 6 3 5HF# ... BPZ 6 YAL [J IF :MASTER ALLOCATED 5HFB ...Y3 LDN 6 BTHREE [PUT IT ON RESIDENCE 3 5HFD ...YGET 5HFG ... GETBACK 6 [GET 1 BLOCK ON REQUIRED RESIDENCE 5HFJP...#SKI IFS 5HFLP... MASFCB 3 5HFNP...#SKI IFS<1$1 5HFQ ... LDX 3 BFILE [X3-> MASTER'_ FCB 5HFS ... LDN 4 FBLKS-A1+1 5HFW ... ALTLENG 3,4,XALT [ALTER LENGTH OF MASTER'S FCB TO CONT 5HFYP...#SKI IFS 5HG2P... MASFCB 3 5HG4P...#SKI IFS<1$1 5HG6 ... LDX 3 BFILE [ 1 BLOCK 5HG8 ... LDN 0 FBLKS-A1 5HG= ... STO 0 FBLMOD(3) [SET UP BLOCK POINTERS 5HG# ... STO 4 FUSEBL(3) 5HGB ... STO 6 BSPRE(3) [ & RESIDENCE NO. 5HGD ... LDX 0 ACOMMUNE7(2) 5HGG ... STO 0 FBLKS(3) [ & BLOCK NO. 5HGJ ... LDCT 0 #400 5HGL ... STO 0 CTOPEN(3) [OPEN IN GENERAL MODE 5HGN ... STO 0 CMOD(3) [CMOD -IVE 5HGQ ... MBSXD 0,BFDIR,BFHALF 5HGS ... STO 0 COMM(3) [ SET APPROPRIATE BITS IN COMM 5HGW ... STOZ FWAITCOUNT(3) [NO ONE WAITING 5HGY ... LDN 0 FILESIZE 5HH2 ... STO 0 FSIZE(3) [MAX. FILE SIZE 5HH4 ... STO 7 FGMTBS(3) [GMT 5HH6 ... STO 7 FLASTJAM(3) [RESET GMT OF LAST JAM TO TIME OF 5HH8P...#SKI IFS 5HH=P...( 5HH#P... LDX 1 FPTR(3) [ X1 - MASTER'S FSTACK SET UP BY 5HHBP...[ BACKMAP 5HHDP... SETFCAGR GENERAL,1 [ RING IN NEW ELEMENT 5HHGP...) 5HHJP...#SKI IFS<1$1 5HHL ... RESTOREN GENERAL [SET UP & RING FSTACK BLOCK 5HHN ... STOZ AWORK1(2) [AWK1 AND ACOM2 = NO.OF FILES 5HHQ ... STOZ AWORK2(2) 5HHS ... STOZ ACOMMUNE2(2) [AWK2 AND ACOM3 = ACCUMULATED SIZE 5HHW ... STOZ ACOMMUNE3(2) 5HHY ...SFS0 5HJ2 ... LDX 0 ACOMMUNE2(2) 5HJ4 ... ADS 0 AWORK1(2) [NO. OF FILES IN THIS INCR. ACCUMULAT 5HJ6 ... [ IN AWORK1 5HJ8 ... LDX 0 ACOMMUNE3(2) 5HJ= ... ADS 0 AWORK2(2) [SIZE OF INCREMENT ACCUMULATED IN AWO 5HJ# ... CALL 5 TM 5HJB ...SFS1 CALL 5 READP [READ OB 5HJD ... LDN 5 6 5HJG ... BXE 5 ESENTYP(3),SFS2 [J IF START SENTINEL 5HJJ ... LDCT 5 #400 5HJL ... BXE 5 ESENTYP(3),SKEL [J IF END SENTINEL 5HJN ... ACROSS RESTERR,1 5HJQ ...YAL 5HJS ... ADN 6 3 5HJW ... RESQUERY 6,Y3 [J IF SPECIAL RESIDENCE NOT AVAILABLE 5HJY ... BRN YGET 5HK2 ...XALT [SUBROUTINE FOR ALTLEN 5HK4P...#SKI IFS 5HK6P... MASFCB 2 5HK8P...#SKI IFS<1$1 5HK= ... LDX 2 BFILE 5HK# ... EXIT 1 0 5HKB ...SFS2 5HKD ... MHUNTW 1,FILE,FINTER6 [STORE S/F SENTINEL IN FINTER6 5HKG ... LDN 0 A1(3) 5HKJ ... ADN 1 A1 5HKL ... MOVE 0 20 5HKN ... DOWN RESTLIMB,1 [RESTORE ALL FILES BENEATH THIS ONE 5HKQ ... BRN SFS0 5HKS ... BRN UPPLUS [ERROR HAS OCCURRED-RETURNING TO 5HKW ... [ RESTOREA TO CLEAR B/STORE 5HKY ...# ALL FILES UNDER MASTER HAVE BEEN RESTORED. 5HL2 ...# TAPE IS POSITIONED AFTER MASTER SENTINEL ON TAPE AND RESTMERG 5HL4 ...# WILL MERGE MASTER FILE ON TAPE WITH THE SKELETON ENTRIES SET UP BY 5HL6 ...# RESTLIMB. 5HL8 ...SKEL CALL 5 TM 5HL= ... CALL 5 READP [READ NEXT SENTINEL 5HL# ... LDN 0 #2000 5HLB ... SMO FILERING(2) [SET B13 [1ST OPEN REEL] 5HLD ... ORS 0 FGENERAL1 5HLG ... LDX 0 A1+2(3) 5HLJ ... BXE 0 MAST(1),TBM 5HLL ... ACROSS RESTERR,2 5HLN ...TBM DOWN RESTMERG,1 5HLQ ... BRN TOK 5HLS ...UPPLUS 5HLW ... UPPLUS 1 [ERROR HAS OCCURRED - RETURNING TO 5HLY ... [ RESTOREA TO CLEAR B/STORE 5HM2 ...TOK 5HM4 ... CALL 5 TM [THIS SECTION CHECKS THAT A DUMP 5HM6 ... CALL 5 READP [TAPE IS SUITABLE FOR A GENERAL 5HM8 ... HUNT 1,FILE,FINTER7 5HM= ... LDX 5 AWORK1(2) 5HM# ... ADN 5 1 5HMB ... STO 5 BMINTO1(1) 5HMD ... LDX 5 AWORK2(2) [ STORE THE SIZE OF THE DUMP IN 5HMG ... ADN 5 1 5HMJ ... STO 5 BMINTO2(1) [ BMINTO2 5HML ... BBUS 0,ESENGR(3),NOTSUIT [ERROR IF INCR. NOT GENERAL RESTOREAB 5HNL ... DOWN RESTOREA,4 [ DOWN TO RESTOREA TO SET UP 5HPL ... [ ACTIVITY TO UNLOAD TAPE 5HQL # THIS SECTION OF PROGRAM CREATES A DIRECTORY ENTRY FOR MASTER AND 5J== # STORES IT IN THE SECTION OF BACKING STORE RESERVED FOR IT 5JPW # UNIT NO. BTHREE,BLOCK NO ADMASTDIR. 5K9G # 5KP6 GRINDEX M 5L8Q CLOSEFRBS 5LNB LDX 0 AWORK3(2) 5M82 STO 0 ACOMMUNE1(2) 5MML # AFTER MASTER HAS BEEN CLOSED VARIOUS ROUTINES ARE ENTERED 5N7= # TO TIDY UP THE FILESTORE. 5NLW # RESTEND INSERTS THE TAPE NO. OF THE TAPE USED INTO 5P6G # INCINDEX,SERIAL AND DUMPER 5PL6 # INCEND CLEARS UNRELIABLE INCREMENTS FROM INCINDEX. 5PYY ... 5Q?Q ... 5QLJ ...MFREE 5Q^B ... 5R#8 ... MFREE FILE,FLOCNB 5RM2 ... MFREE FILE,FRESTOR 5R^S ... MFREE FILE,FAPB 5S#L ... MFREE FILE,FWB 5SMD ... UP 5T2= ...# 5T*4 ...# 5TMW ...# THIS SUBROUTINE READS A BLOCK FROM TAPE (UNIT IN X4) AND TESTS ITS 5W2Q # REPLY 5WGB READP 5X22 SBX 5 FX1 5XFL MHUNTW 3,FILE,FWB 5X^= LOCKC 3,XLOCK [LOCK FWB 5YDW MHUNTW 3,FILE,FWB 5YYG LDN 0 A1(3) 5^D6 DCA ,STO,0,CTSA [SET DESTINATION ADDRESS 5^XQ LDN 0 20 62CB DCA ,STO,0,COUNT [ TRANSFER LENGTH 62X2 DCA ,STOZ,,MODE [SET 'READ& MODE 63BL CALL 4 PERI [READ PERI (FROM MT) 63W= UNLOCK 3 64*W LDCT 0 #640 64TG ANDX 0 CPRW1(2) 65*6 BNZ 0 XER19 [J IF B0,B1 OR B3 SET IN REPLY WORD 65SQ ADX 5 FX1 66#B EXIT 5 0 66S2 XLOCK [SUBROUTINE ENTERED IF FWB MOVED WHIL 67?L MHUNTW 2,FILE,FWB [BEING LOCKED 67R= EXIT 1 0 68=W # 68QG # THIS SUBROUTINE POSITIONS THE TAPE AFTER THE NEXT TAPEMARK 69=6 # (UNIT IN X4) 69PQ TM SBX 5 FX1 [FOR CO-ORDINATION 6=9B LDX 2 FX2 6=P2 LDN 0 4 [SKIP TO TAPE-MARK MODE 6?8L DCA ,STO,0,MODE 6?N= CALL 4 PERI [SKIP TO TAPE-MARK 6#7W ADX 5 FX1 6#MG EXIT 5 0 6*76 # 6*D? ...# 6*PD ...# ****************************************************************** 6B2K ...# 6B?Q ...# RESTOREG2 6BJX ...# ********* 6BW4 ...# 6C79 ...# THIS THE ENTRY POINT FOR PARTIAL RESTORE 6CDB ...# 6CPH ...RESTOREG2 6D2N ...# SET UP BLOCKS NEEDE FOR RESTORE 6D?T ...# 6DK2 ... SETNCORE GSBS,3,FILE,FAPB 6DW7 ... SETNCORE GSBS,3,FILE,FRESTOR 6F7# ... SETNCORE 6,3,FILE,FLOCNB 6FDF ... SETNCORE 20,3,FILE,FWB 6FPL ... CALL 1 SFRESTUSER3 6G2R ...# 6G?Y ...# 6GK5 ... SMO FRNXT(3) [ POINTER TO NEXT LIMB 6GW= ... LDX 0 FRINC(3) [ INCREMENT NUMBER OF NEXT 6H7C ... [ LIMB TO BE RESTORED 6HDJ ... BXE 0 FRLST(3),RIGHTINC [ JUMP IF ALREADY ON INC 6HPP ...# 6J2W ...# EITHER THE TAPE HAS JUST BEEN LOADED OR IT IS 6J#3 ...# POSITIONED ON A LATER INCREMENT ON THE TAPE 6JK8 ...# IN EITHER CASE WE REWIND THE TAPE AND CHECK THE HEADDED 6JW* ...# 6K7G ... CALL 5 READHDDR [ REWIND AND READ 6KDM ... MFREE FILE,FWB 6KPS ... MHUNTW 2,FILE,APROC [ 6L2^ ... LDX 0 AMTS(2) [ COUNT OF NUMBER OF TAPES 6L#6 ...NEXTAPE [ 6LK? ... BXE 6 AMAG(2),RIGHTTAPE [ JUMP IF A SUITABLE TAPE IS UP 6LWD ... ADN 2 INCMAGLEN [ OTHERWISE COMPARE 6M7K ... BCT 0 NEXTAPE [WITH NEXT TAPE IN RECORD 6MDQ ...RONGTAPE [ 6MPX ...# THE TAPE LOADED DOES NOT CONTAIN THE INCREMENT 6N34 ... OUTPACK 6,1,TSN [ OUTPUT TSB 6N#9 ... MONOUT GRPRNOTSUIT [MT %A NOT SUITABLE FOT THIS PARTIA 6NKB ... [ RESTORE 6NWH ... DOWN RESTOREA,4 [ DOWN TO UNLOAD TAPE 6P7N ... CALL 1 SFRESTUSER3 [ POINTER TO FRESTUSER IN X3 6PDT ... STOZ FRTSN(3) [ CLEAR TSN LOADED WORD 6PQ2 ... STOZ FRLST(3) [ CLEAR INCREMENT NUMBER AND 6Q37 ... STOZ FRLST+1(3) [ FILE NUMBER OF LIMB LAST RESTOERED 6Q## ... BRN XER30 [ ACCROSS TO RESTERR TO FREE BLOSCKS 6QKF ...# 6QWL ...RONGTAPE2 6R7R ... CALL 1 SFRESTUSER3 6RDY ... LDX 6 FRTSN(3) 6RQ5 ... BRN RONGTAPE 6S3= ...# SET UP TSN FOR MESSAGE 6S#C ...# 6SKJ ...# ****************************************************************** 6SWP ...# 6T7W ...# THE RIGHT TAPE IS NOW LOADED - TSN IN X6 6TF3 ...RIGHTTAPE [ 6TQ8 ... CALL 1 SFRESTUSER3 6W3* ... BXE 6 FRTSN(3),OLREADYUP [ J IF THIS TAPE USED LAST TIME 6W#G ... STO 6 FRTSN(3) [ OTHERWISE UPDATE TSN WORD 6WKM ... OUTPACK 6,1,TSN [ DUMPTAPE %A IS ENGAGED 6WWS ... MONOUT GRTAPENGD [ 6X7^ ...OLREADYUP 6XF6 ...# ****************************************************************** 6XQ? ...# OLREADYUP 6Y3D ...# ********* 6Y#K ... CALL 6 NEXTINC [SKIP TO NEXT START OF INCREMENT SENT 6YKQ ... CALL 1 SFRESTUSER3 [ 6YWX ... SMO FRNXT(3) [ POINTER TO NEXT INC 6^84 ... LDX 4 FRINC(3) [ 6^F9 ... STO 5 FRLST(3) 6^QB ... BXL 5 4,OLREADYUP [ JUMP IF NOT YET REACHED INCREMENT 723H ... BXE 5 4,RIGHTINC [ JUMP IF INC 72#N ...# WE APPEAR TO HAVE MISSED THE INCREMENT 72KT ... OUTPACK 4,1,INCNUM [ 72X2 ... CALL 1 SFRESTUSER3 7387 ... OUTPACK FRTSN(3),1,TSN [ 73F# ... MONOUT GRWRONGDT [ INCREMENT %A NOT ON %B 73QF ... BRN RONGTAPE [JUMP TO OUTPUT 743L ...# MT %A NOT SUITABLE FOR THIS PARTIAL RESTORE 74#R ...# ****************************************************************** 74KY ...# WE ARE NOW POSITIONED AT THE CORRECT INCREMENT 74X5 ...# WE NOW HAVE TO READ TO FIND THE CORRECT SUBFILE 758= ...# RIGHTINC 75FC ...# ******** 75QJ ...RIGHTINC [ 763P ... CALL 5 TM [ SKIP TO NEXT TM 76#W ... CALL 5 READP [AND READ QB 76L3 ... LDN 0 7 [ 76X8 ... BXE 0 ESENTYP(3),RONGTAPE2 [ JUMP IF EOT 778* ... LDN 0 6 [ 77FG ... BXU 0 ESENTYP(3),RIGHTINC [ JUMP IF NOT START SENT 77QM ...# IS THIS THE CORRECT START OF SUBFILE ? 783S ... CALL 1 SFRESTUSER2 [ POINTER TO FRESTUSER IN X2 78#^ ... ADX 2 FRNXT(2) [ POINTER TO NEXT USER 78L6 ... TESTNAMX 3,FRUSE(2),ESENUSE1(3),RIGHTINC 78X? ...# JUMP IF THIS NOT THE TO BE RESTORED SUBFILE 798D ...# 79FK ...# ****************************************************************** 79QQ ...# 7=3X ...# WE HAVE FOUND THE REQUIRED LIMB 7=*4 ...# THE TAPE IS POSITIONED JUST AFTER THE START OF SUBFILE SENTINEL 7=L9 ... LDX 6 ESENFN(3) [ PICK UP FILE NUMBER 7=XB ...# 7?8H ... 7?FN ...# 7?QT ... MHUNT 3,FILE,FWB [ 7#42 ... ALTLEN 3,BSBS,FILE,FWB [ 7#*7 ...# ****************************************************************** 7#L# ...# SET DOING PARTIAL RESTORE BIT IN MASTER'S DIR ENT 7#XF ... LDN 1 BTHREE 7*8L ... LDN 2 ADMASTDIR 7*FR ... BACKREAD ,BSBS,,1 [ READ MASTER'S DIR ENT 7*QY ... MHUNTW 3,BSTB,BREAD 7B45 ... BS 3,BEPARTRES [ INDICATE PR'S INITIATED AND BS FREE 7B*= ... LDCT 0 #200 [ 7BLC ... ERS 0 EREC(3) [ INVERT SWITCH 7BXJ ... LDN 4 A1(3) 7C8P ... LDN 5 GSBS/2+A1(3) [ COPY FIRST HALF INTO SECOND 7CFW ... MOVE 4 GSBS/2 [ 7CR3 ... BS BFILE,BFPARTRES [ SET PR'S BIT IN MASTER'S FCB 7D48 ... BACKWRIT FREE,BSBS [ REWRITE DIRENT 7D** ...# 7DB* ...#UNS AMTGR 7DC* ...( 7DD* ... JBCC XLEAVBSPR,,BFREEBS 7DF* ... DOWN BACKROOM,11 7DG* ...XLEAVBSPR 7DH* ...) 7DJ* ...#UNS AMTGR 7DK* ...#SKI 7DLG ... DOWN BACKROOM,11 [ CLEAR BS 7DXM ... DOWN RESTLIMB,1 [ DOWN TO RESTORE THE LIMB 7F8S ... BRN RESTORED [ J IF SUCCESSFUL 7FF^ ... UPPLUS 1 [ NO GOOD TRY AGAIN 7FR6 ...RESTORED 7G4? ...# ****************************************************************** 7G*D ...# RESTORED 7GLK ...# ******** 7GXQ ...# 7H8X ...# THE LIMB HAS NOW BEEN RESTORED 7HG4 ... 7HR9 ... REINDEX [ INDEX THE TOP FILE OPEN 7J4B ... [ AND SET UP A FI FINFEXF FOR IT IN A 7J*H ... TESTREPN OK,(GEOERR) 7JLN ... TOPFCA 3 [ FIND PLACE FOR FINDEXF IN FILE CHAI 7JXT ... ADX 3 FBACKPOINT(3) [ 7K92 ... MHUNT 2,FI,FINDEXF [ 7KG7 ... CHAIN 2,3 [ CHIAN IN THE FILE CHAIN 7KR# ... SETREP OK [SET OK REPLY 7L4F ... BRN MFREE [ JUMP TO FREE BLOCKS AND UP TO BAC 7L*L ...UP [ AND BACK UP TO BACKMAP 7LLR ... UP 7LXY ...# AND BACK TO BACKMAP 7M95 ...# ****************************************************************** 7MG= ...# 7MRC ...# 7N66 XER19 7NKQ ACROSS RESTERR,19 [B0, B1 OR B3 SET IN REPLY WORD ON RE 7P5B XER30 7PK2 ACROSS RESTERR,30 [GO TO CLOSE FILES OPEN & FREE BLOCKS 7Q4L # 7QJ= MENDAREA 30,K99RESTOREG 7R3W # 7RHG #END ^^^^ ...26613111000100000000