14 22FL SEG BMCNTRL,864,EDWARD MOON,BMAP 11 22_= SEGENTRY K1BMCNTRL,START 12 23DW SEGENTRY K3BMCNTRL,NEXTFTAB 11 23YG SEGENTRY K4BMCNTRL,MASTENT 11 24D6 SEGENTRY K2BMCNTRL,QSTEPC 11 24MY ... SEGENTRY K5BMCNTRL,QSTEPC1 4 24XQ [ 4 25CB [ 5 25X2 TYPEFURB 8 26BL #HAL +FILE+FURB,0 5 26W= TYPEFUWB 8 27*W #HAL +FILE+FUWB,0 4 27TG NSYS 9 28*6 12HSYSTEM 10 28SQ NUMDIRMES +BMNUMPRDIR 10 29#B PRMESS +BMPARTRES 10 29S2 PRUSER +BMRESTUSER 11 2=?L STRINGABAND 16HABANDONED : 10 2=R= STRINGSTART 12HSTARTING 10 2?=W STRINGFIN 12HFINISHED 11 2?QG STRUSNOTFND 16HUSER NOT FOUND 12 2#=6 STRNOTDUMP 16HUSER NOT DUMPED 13 2#PQ STRNOINC 20HINCREMENT NOT FOUND 5 2*9B OUTPACK 8 2*P2 SBX 7 FX1 8 2B8L OUTPACKX 4,5,6 8 2BN= ADX 7 FX1 7 2C7W EXIT 7 0 5 2CMG MONOUT 8 2D76 SBX 7 FX1 7 2DLQ MONOUTX 3 8 2F6B ADX 7 FX1 7 2FL2 EXIT 7 0 5 2G5L XLINK 9 2GK= LINK BMAPONE,2 5 2H4W MLINK 9 2HJG LINK BMCNTRL,4 4 2J46 [ 6 2JHQ TOHUNTFLIST 10 2K3B HUNTMISB 3,FI,FLIST 7 2KH2 EXIT 7 0 4 2L2L [ 5 2LG= START 4 2L_W [ 18 2MFG [***************************************************** START 4 2M_6 [ 11 2NDQ [ ENTRY FOR MASTER ACTIVITY 4 2NYB [ 21 2PD2 POP START,2,FTABWAIT [SEMAPHOR SET SHOWS MASTER ACTIVE 9 2PXL STO 1 AWORK1(2) 16 2QC= TRACEIF K6BMCNTRL,99,299,AWORK3(2),MASTEND 10 2QWW CALL 7 TOHUNTFLIST 9 2RBG STOZ A1+1(3) 9 2RW6 BRN MASTACT 4 2S*Q [ 18 2STB [************************************************** NEXTFTAB 4 2T*2 [ 11 2TSL [ ENTRY FOR SLAVE ACTIVITIES 4 2W#= [ 5 2WRW NEXTFTAB 9 2X?G STOZ AWORK1(2) 5 2XR6 MASTACT 10 2Y=Q HUNTW 3,FILE,FTAB 20 2YQB BNG 3 UPALEVEL [IF NO SLAVES TO BE SET UP NOW. 19 2_=2 LDX 0 A1+1(3) [LEVEL @ WHICH TABS APPLY 21 2_PL LDX 7 AWORK1(2) [NO NEED TO CHECK DEPTH IF MASTER 21 329= BNZ 7 NODPTHCHEK [(MUST BE 0) & 'AMAPDEPTH' USED FOR 21 32NW ['FTABWAIT' SEMAPHOR IN MASTER ACT. 21 338G [ SO CHECK WOULD GIVE WRONG RESULT 18 33N6 BXU 0 AMAPDEPTH(2),UPALEVEL [J. UNLESS @ THIS LEVEL 6 347Q NODPTHCHEK 17 34MB LDX 7 A1(3) [USED SPACE IN FTAB 9 3572 STO 7 AWORK3(2) 17 35LL LDX 5 A1+1(3) [DEPTH OF THIS FTAB 19 366= ADN 5 1 [ DEPTH FOR NEW DIRECRORY 7 36KW STOZ 4 6 375G NEXTENTRY 19 37K6 TOPFCA2 1 [FILE THAT PAIRS WITH FTAB 10 384Q HUNTW 3,FILE,FTAB 7 38JB SMO 4 9 3942 LDX 0 A1+2(3) 18 39HL BZE 0 RESUME [J. IF ENTRY ALREADY USED 7 3=3= SMO 4 16 3=GW STOZ A1+2(3) [ELSE MARK IT USED 10 3?2G STO 0 FREADBLOCK(1) 7 3?G6 SMO 4 9 3?_Q LDX 0 A1+3(3) 20 3#FB STO 0 FREADWORD(1) [TAB POINT FOR DIRECTORY ENTRY 7 3#_2 SMO 4 9 3*DL LDN 6 A1+4(3) 19 3*Y= LDN 7 ASUPUSER(2) [ TRANSFER SUPERIOR PROPER 15 3BCW MOVE 6 3 [ USERS NAME 17 3BXG HUNT 3,FILE,FLOCNB [ NEEDED FOR OPENRELN 16 3CC6 BPZ 3 NSETFLOCNB [J. IF ONE HERE 16 3CWQ SETNCORE 6,3,FILE,FLOCNB [ ELSE GET ONE 6 3DBB NSETFLOCNB 7 3DW2 READAGAIN 10 3F*L ... MHUNTW 1,FILE,FRB 10 3FT= ... NAME 1,FILE,ENT 16 3G#W BMOPENRE XBR,CLEAN [ OPEN DIRECTORY 9 3GSG TESTRPN2 OK,XBR 15 3H#6 CALL 7 TOHUNTFLIST [X3-> FLIST 9 3HRQ LDX 0 A1+2(3) 17 3J?B ANDX 0 BITS22LS [MAX. ALLOWED SLAVES 15 3JR2 SBX 0 A1+1(3) [ NO. RUNNING 7 3K=L NGX 0 0 19 3KQ= BNG 0 NEWACT [ J. IF CAN SET UP ANOTHER 17 3L9W LDX 0 AWORK1(2) [ OR IF MASTER ACT. 9 3LPG BNZ 0 NEWACT 4 3M96 [ 15 3MNQ [ CAN'T SET UP SLAVE SO MAP NEXT DIR YOURSELF 4 3N8B [ 18 3NN2 STO 5 AMAPDEPTH(2) [ LEVEL OF NEW DIRECTORY 14 3P7L ACROSS BMAPONE,2 [ RECURSE 4 3PM= [ 5 3Q6W NEWACT 10 3QLG CALL 7 TOHUNTFLIST 7 3R66 LDN 0 1 19 3RKQ ADS 0 A1+1(3) [ INCREMENT COUNT OF SLAVES 17 3S5B GETACT BSA,AUTOMAP [ SET UP NEW SLAVE 9 3SK2 LDX 3 BPTR(2) 12 3T4L JBC NOTPARTR,2,AW2PARTRES 19 3TJ= BS 3,AW2PARTRES [ IF MAPPING RESTORED LIMB 5 3W3W NOTPARTR 10 3WHG LDN 6 ASUPUSER(2) 10 3X36 LDN 7 ASUPUSER(3) 19 3XGQ MOVE 6 3 [ TRANSFER SUPERIOR USERNAME 19 3Y2B STO 5 AMAPDEPTH(3) [DEPTH OF THIS NEW ACTIVITY 10 3YG2 LINKSET 3,XLINK(1) 16 3Y_L LOCK 3 [AUTOMAP BLOCK 20 3_F= CHANGEFI 3 ['SUPERIOR'DIRECTORY TO NEW ACT 9 3_YW LDX 3 BPTR(2) 16 42DG UNLOCK 3 [AUTOMAP BLOCK 7 42Y6 LDX 2 3 6 43CQ FPUT 5 43XB RESUME 20 44C2 ADN 4 6 [RELATIVE POINTER FOR NEXT ENT 21 44WL BXU 4 AWORK3(2),NEXTENTRY [ J. UNLESS ALL FTAB ENTS DEALT WITH 9 45B= MFREEW FILE,FTAB 20 45TW UPALEVEL [FINISHED WITH DIR.@ THIS LEVEL 9 46*G LDX 0 AWORK1(2) 17 46T6 BNZ 0 NOFTABS [J. IF MASTER ACT. 7 47#Q CLOSEFRBS 10 47SB MHUNTW 3,FILE,FTAB 9 48#2 BNG 3 NOFTABS 19 48RL LDN 0 1 [DECREMENT FILESTORE LEVEL 17 49?= SBS 0 AMAPDEPTH(2) [ & POCESS NEXT FTAB 17 49QW BRN NEXTFTAB [ IMPLIES DIR. OPEN 4 4==G [ 5 4=Q6 NOFTABS 9 4?9Q LDX 0 AWORK1(2) 9 4?PB BZE 0 SLAVEND 20 4#92 VOP 2,FTABWAIT [ CLEAR SEMAPHOR - MASTER DORMANT 10 4#NL CALL 7 TOHUNTFLIST 9 4*8= LDX 0 A1+1(3) 9 4*MW BZE 0 MASTENT 6 4B7G COOR1 20 4BM6 BRN MASTENT [ ALL SLAVES FINISHED : TIDY UP 4 4C6Q [ 5 4CLB SLAVEND 10 4D62 CALL 7 TOHUNTFLIST 7 4DKL LDN 0 1 21 4F5= SBS 0 A1+1(3) [ DECREENT COUNT OF SLAVES RUNNING 5 4FJW WAKEUP 10 4G4G CALL 7 TOHUNTFLIST 21 4GJ6 LDX 0 A1+1(3) [ CHECK COUNT TO SEE IF ANY OTHERS 18 4H3Q BNZ 0 SUICIDE [ J. IF THER ARE OTHERS 9 4HHB LDX 2 BSACHAPTR 21 4J32 POP WAKEUP,2,FTABWAIT [ CHECK SEM. TO SEE IF MASTER ACTIVE 18 4JGL VOP 2,FTABWAIT [ LEAVE SEMAPHOR CLEAR 9 4JQD ... LDX 2 BSACHAPTR 6 4K2= FPUT 5 4KFW SUICIDE 7 4K_G SUICIDE 4 4LF6 [ 4 4LYQ [ 4 4MDB [ 18 4MY2 [*************************************************** MASTENT 16 4NCL [ ALL SLAVES HAVE FINISHED - NOW CHECK IF REPEAT OF 17 4NX= [ SEARCH IS NECESSARY OR IF PARTIAL RESTORES ARE NEEDED 4 4PBW [ 5 4PWG MASTENT 12 4QB6 JBS SFSTSFIN,2,AW2PARTRES 18 4QTQ BSOFF BMBLKTWICE,XISITWICE [J. IF ON FIRST PASS 9 4R*B BRN PASSEND 20 4RT2 SFSTSFIN [ MOVE DIRECTORY (TOP OF LIMB) 17 4S#L FILEMOVE 0,-1 [ TO BOTTOM OF STACK 5 4SS= PASSEND 11 4T?W HUNTMISB 3,FI,FRESTUSER 9 4TRG LDX 0 FRCNT(3) 18 4W?6 BNZ 0 RESTUSER [ J. IF RESTORES NEEDED 9 4WQQ LDX 0 FRTSN(3) 9 4X=B BZE 0 PHREEIT 19 4XQ2 DOWN RESTOREA,4 [ TO REWIND TAPE IF LOADED 5 4Y9L PHREEIT 11 4YP= HUNTMISB 3,FI,FRESTUSER 7 4_8W FREECORE 3 10 4_NG MHUNTW 3,FILE,APROC 9 5286 BNG 3 NOAPROC 7 52MQ FREECORE 3 5 537B NOAPROC 10 53M2 HUNTMISB 3,FI,FRESUNAV 9 546L BNG 3 NOFRUNAV 7 54L= FREECORE 3 5 555W NOFRUNAV 10 55KG HUNTMISB 3,FI,FONCE 9 5656 BNG 3 NOWFREEBS 8 56JQ LDX 0 A1(3) 9 574B BNZ 0 NOWFREEBS 17 57J2 FREECORE 3 [ FREE FONCE IF EMPTY 6 583L NOWFREEBS 18 58H= JBC NOPRS,2,AW2PARTRES [ J. IF NO P.R. INITIATED 9 592W LDN 1 BTHREE 17 59GG LDN 2 ADMASTDIR [ ELSE SET BEPARTRES 19 5=26 BACKREAD ,BSBS,,1 [ IN BOTH HALVES OF :MASTTR'S 16 5=FQ MHUNTW 3,BSTB,BREAD [ DIRECTORY ENTRY 10 5=_B BS 3,BEPARTRES 8 5?F2 LDCT 0 #200 9 5?YL ERS 0 EREC(3) 8 5#D= LDN 4 A1(3) 10 5#XW LDN 5 GSBS/2+A1(3) 9 5*CG MOVE 4 GSBS/2 8 5*X6 LDX 3 BFILE 19 5BBQ BS 3,BFPARTRES [ AND BFPARTRES IN HIS FCB 9 5BWB BACKWRIT FREE,BSBS 5 5CB2 NOPRS 6 5CTL #UNS AMTGR 20 5D*= JBC NEXTFBSIB,,BFREEBS [ J. IF B.S. ALREDY FREED ELSE 19 5DSW DOWN BACKROOM,11 [ FREE SPARE BACKING STORE 6 5F#G NEXTFBSIB 10 5FS6 HUNT 1,BSTB,FBSIB 9 5G?Q BNG 1 SFTSENDED 7 5GRB FREECORE 1 9 5H?2 BRN NEXTFBSIB 6 5HQL SFTSENDED 17 5J== ACROSS ADDICT,1 [ TO CHECK DICTIONARY 4 5JPW [ 19 5K9G [*************************************************** XISITWICE 4 5KP6 [ 16 5L8Q [ CHECK IF ANY DOUBLY ALLOCATED BLOCKS WERE FOUND 17 5LNB [ IN THE FIRST PASS OF THE FIRST FILESTORE TREE SEARCH 4 5M82 [ 6 5MML XISITWICE 10 5N7= HUNTMISB 3,FI,FONCE 15 5NLW LDX 0 A1(3) [ IS FONCE EMPTY 18 5P6G BZE 0 PASSEND [ J. IF NO BLOCKTWICES FOUND 17 5PL6 ON BMBLKTWICE [ INDICATE ON SECOND PASS 21 5Q5Q ACROSS BMFIXIT,4 [ TO REINITIALISE AND REPEAT TREE SEA 5 5QKB RESTUSER 4 5R52 [ 18 5RJL [************************************************** RESTUSER 4 5S4= [ 16 5SHW [ THERE ARE USERS TO BE RESTORED - CHECK IF ANY HAVE 16 5T3G [ -VE. INCREMENT NO.. SELECT HIGHEST INCREMENT NO. 14 5TH6 [ AND LOWEST FILE NUMBER FOR NEXT RESTORE 4 5W2Q [ 9 5WGB LDN 7 FRUSE(3) 8 5X22 ADX 7 A1(3) 21 5XFL STOZ AWORK4(2) [ SWITCH FOR 'N RESTORES STARTING' ME 12 5X_= JBS NOSWITCH,2,AW2PARTRES 19 5YDW NGS 2 AWORK4(2) [ SET -VE. FIRST TIME, ELSE 0 6 5YG7 ...#UNS AMTGR 4 5YHD ...( 19 5YJP ... BWNZ GINCTSN,PRNOTFORB [ J. IF MULTI-TAPE GEN. RES. 20 5YL2 ... SEGENTRY K80BMCNTRL [ FOR SWAPPR AND NOPARTRES R.T.M. 21 5YM? ... BRN PRNOTFORB [ NULLED BY BOTH - REINSTATED BY *OFF 19 5YNJ ... DOWN BMPRCHEK,1 [ TO CHECK IF P.R. ALLOWED 6 5YPT ... NULL 18 5YR6 ... BRN PRNOTFORB [ IF ALLOWED OR SWAPPED 17 5YSC ... SEGENTRY K82BMCNTRL [ FOR NOPARTRES *OFF 6 5YTN ...PRNOTFORB 4 5YW_ ...) 5 5YYG NOSWITCH 20 5_D6 STOZ AWORK1(2) [ INITIALISE INCREMENT NO. TO 0 14 5_XQ NGNC 0 1 [ AND 21 62CB STO 0 AWORK2(2) [ FILE NO. TO HIGHEST POSITIVE NO. 5 62X2 NEXTINC 9 63BL LDX 0 FRINC(3) 19 63W= BNG 0 REPEAT [ J. IF -VE. TO REPEAT SEARCH 9 64*W LDX 4 AWORK1(2) 20 64TG BXL 0 4,TRYNEXT [ J. IF INCR. NO. NOT > SO FAR 9 65*6 BXE 0 4,WHATFNO 19 65SQ NGNC 6 1 [ RESET FILE NO. IF HIGHER 16 66#B STO 6 AWORK2(2) [ INCR. NO. FOUND 5 66S2 WHATFNO 9 67?L LDX 4 AWORK2(2) 9 67R= LDX 5 FRFIL(3) 19 68=W BXGE 5 4,TRYNEXT [ J. IF FILE NO. NOT < SO FAR 5 68QG THISINC 20 69=6 STO 0 AWORK1(2) [ REMEMBER HIGHEST INCR. NO. AND 18 69PQ STO 5 AWORK2(2) [ LOWEST FILE NO. SO FAR 17 6=9B STO 3 AWORK3(2) [ AND POINTER TO IT 5 6=P2 TRYNEXT 7 6?8L ADN 3 8 9 6?N= LDN 0 FRUSE(3) 21 6#7W BXU 0 7,NEXTINC [ J. IF ALL ENTRIES NOT YET LOOKED AT 11 6#MG HUNTMISB 3,FI,FRESTUSER 9 6*76 LDX 0 AWORK3(2) 7 6*LQ SBX 0 3 6 6B6B #UNS AMTGR 4 6BL2 ( 18 6C5L LDCT 7 #600 [ MASK FOR BITS 0 AND 1 19 6CK= ANDX 7 FRNXT(3) [ NEED TO KEEP THEM IF SET 19 6D4W ADX 0 7 [ ADD IN POINTER TO NEXT USER 4 6DJG ) 9 6F46 STO 0 FRNXT(3) 6 6F?Y ...#UNS AMTGR 4 6FHQ ...#SKI 4 6FRJ ...( 19 6G3B BWNZ GINCTSN,PRNOTFORB [ J. IF MULTI-TAPE GEN. RES. 20 6GH2 SEGENTRY K80BMCNTRL [ FOR SWAPPR AND NOPARTTES R.T.M. 21 6H2L BRN PRNOTFORB [ NULLED BY BOTH - REINSTATED BY *OFF 18 6HG= DOWN BMPRCHEK,1 [ TO CHECK IF PR ALLOWED 16 6H_W BRN PRNOTFORB [ ALLOWED IF UP 16 6JFG BRN PASSEND [ SWAPPED IF UP+1 17 6J_6 SEGENTRY K82BMCNTRL [ FOR NOPARTRES *OFF 6 6KDQ PRNOTFORB 4 6KNJ ...) 11 6KYB HUNTMISB 3,FI,FRESTUSER 9 6LD2 LDX 3 FRCNT(3) 8 6LXL SMO FX2 9 6MC= LDX 0 AWORK4 19 6MWW BZE 0 MESSENT [ J. IF 'N RESTORES STARTING' 16 6NBG SRL 3 3 [ ALREADY OUTPUT 14 6NW6 LDN 4 3 [ ELSE 16 6P*Q LDN 5 1 [ OUTPUT MESSAGE 9 6PTB LDN 6 JPDNUMA 9 6Q*2 CALL 7 OUTPACK 10 6QSL LDX 3 NUMDIRMES(1) 9 6R#= CALL 7 MONOUT 5 6RRW MESSENT 4 6S?G [ 17 6SR6 [****************************************************** 14 6T=Q [ WE HAVE SELECTED THE NEXT RESTORE BE DONE 16 6TQB [ NOW OBTAIN TSNS FOR THE RESTORE FROM INCINDEX. 4 6W=2 [ 11 6WPL HUNTMISB 3,FI,FRESTUSER 9 6X9= SMO FRNXT(3) 17 6XNW LDX 7 FRINC(3) [ INCR. NO. WANTED 10 6Y8G HUNTW 3,FILE,APROC 10 6YN6 BNG 3 NOAPROCHERE 19 6_7Q BXE 7 AINCNO(3),SAMEASLAST [ ALREADY HAVE TSNS SO JUMP. 7 6_MB FREECORE 3 6 7272 NOAPROCHERE 15 72LL REWIND 3 [ INCINDEX 21 736= FINDREC 3,AINCNO-A1,7,XINCREMENT [ LOCATE RECORD FOR INCREMENT 15 73KW READAGAIN 3 [ AND READ IT 10 745G MHUNTW 3,FILE,FRB 10 74K6 NAME 3,FILE,APROC 6 754Q SAMEASLAST 4 75JB [ 17 7642 [******************************************************* 14 76HL [ OUTPUT 'RESTORE OF %A STARTING' MESSAGE 4 773= [ 11 77GW HUNTMISB 3,FI,FRESTUSER 9 782G SMO FRNXT(3) 9 78G6 LDN 4 FRUSE(3) 7 78_Q LDN 5 3 10 79FB LDN 6 JPDUSERNAME 9 79_2 CALL 7 OUTPACK 11 7=DL LDN 4 STRINGSTART(1) 7 7=Y= LDN 5 3 10 7?CW LDN 6 JPDVARCHAR 9 7?XG CALL 7 OUTPACK 9 7#C6 LDX 3 PRMESS(1) 9 7#WQ CALL 7 MONOUT 4 7*BB [ 17 7*W2 [***************************************************** 13 7B*L [ GO DOWN TO RESTOREA TO DO THE RESTORE 4 7BT= [ 10 7C#W DOWN RESTOREA,3 18 7CSG LOCKC 2,/ [ RE-LOCK MASTER ACTIVITY 13 7D#6 LDX 2 FX2 [ AND 17 7DRQ STO 2 BSACHAPTR [ STORE PTR. TO IT 18 7F?B TESTRPN2 OK,RESFAIL [ J. IF RESTORE FAILED 4 7FR2 [ 17 7G=L [***************************************************** 14 7GQ= [ OUTPUT 'RESTORE OF %A FINISHED' MESSAGE 4 7H9W [ 7 7HPG TOPFCB2 3 9 7J96 LDN 4 FME1(3) 7 7JNQ LDN 5 3 10 7K8B LDN 6 JPDUSERNAME 9 7KN2 CALL 7 OUTPACK 10 7L7L LDN 4 STRINGFIN(1) 7 7LM= LDN 5 3 10 7M6W LDN 6 JPDVARCHAR 9 7MLG CALL 7 OUTPACK 9 7N66 LDX 3 PRMESS(1) 9 7NKQ CALL 7 MONOUT 4 7P5B [ 17 7PK2 [***************************************************** 16 7Q4L [ OUTPUT '%A RESTORED' MESSAGE FOR TOP DIR. OF LIMB 4 7QJ= [ 6 7R3W #UNS AMTGR 19 7RHG BWNZ GINCTSN,NOTIFMTGR [ NOT IF FOR MULTI-TAPE G.R. 7 7S36 TOPFCB2 3 9 7SGQ LDN 4 FME1(3) 7 7T2B LDN 5 3 10 7TG2 LDN 6 JPDUSERNAME 9 7T_L CALL 7 OUTPACK 9 7WF= LDX 3 PRUSER(1) 9 7WYW CALL 7 MONOUT 6 7XDG #UNS AMTGR 6 7XY6 NOTIFMTGR 4 7YCQ [ 17 7YXB [***************************************************** 15 7_C2 [ DELETE FRESTUSER ENTRY BY SETTING FRINC=0 AND 19 7_WL [ REDUCING FRCNT BY 8 - THEN SET ABOUT MAPPING RESTORED LIMB 4 82B= [ 11 82TW HUNTMISB 3,FI,FRESTUSER 9 83*G SMO FRNXT(3) 9 83T6 STOZ FRINC(3) 7 84#Q LDN 0 8 9 84SB SBS 0 FRCNT(3) 9 85#2 SMO FRNXT(3) 18 85RL LDN 6 FRSUP(3) [ MOVE SUPERIOR PROPER 18 86?= LDN 7 ASUPUSER(2) [ USER NAME INTO ACTIVITY 19 86QW MOVE 6 3 [ BLOCK FOR USE IN MAPPING 9 87=G STOZ AWORK2(2) 5 87Q6 NEXTFWB 10 889Q MHUNTW 3,FILE,FWB 21 88PB BNG 3 NOMORFWB [ FREE ALL FILE/FWB BLOCKS SO THEY 19 8992 FREECORE 3 [ WON'T CONFUSE CREALEX LATER 20 89NL BRN NEXTFWB [ (MAY HAVE BEEN LEFT BY RESTORE) 5 8=8= NOMORFWB 20 8=MW BS 2,AW2PARTRES [ INDICATE MAPPING RESTORED LIMB 18 8?7G ACROSS BMAPONE,11 [ TO MAP RESTORED LIMB 4 8?M6 [ 18 8#6Q [************************************************** RESFAIL 17 8#LB [ RESTORE HAS FAILED SO DELETE FRESTUSER ENTRY - LOOK 13 8*62 [ FOR NEXT USER TO BE RESTORED IF ANY 4 8*KL [ 5 8B5= RESFAIL 11 8BJW HUNTMISB 3,FI,FRESTUSER 9 8C4G SMO FRNXT(3) 9 8CJ6 STOZ FRINC(3) 7 8D3Q LDN 0 8 9 8DHB SBS 0 FRCNT(3) 9 8F32 BRN PASSEND 4 8FGL [ 18 8G2= [************************************************ XINCREMENT 16 8GFW [ INCREMENT NO. NOT FOUND IN INCINDEX.(SHOULD NEVER 18 8G_G [ HAPPEN - MAY BE DUE TO CORRUPTION) OUTPUT 'ABANDONED' 18 8HF6 [ MESSAGE AND CHECK IF USER CAN BE ERASED, THEN DELETE 9 8HYQ [ FRESTUSER ENTRY 4 8JDB [ 6 8JY2 XINCREMENT 11 8KCL HUNTMISB 3,FI,FRESTUSER 9 8KX= SMO FRNXT(3) 9 8LBW STOZ FRINC(3) 9 8LWG SMO FRNXT(3) 9 8MB6 LDN 4 FRUSE(3) 7 8MTQ LDN 5 3 10 8N*B LDN 6 JPDUSERNAME 9 8NT2 CALL 7 OUTPACK 11 8P#L LDN 4 STRINGABAND(1) 7 8PS= LDN 5 3 10 8Q?W LDN 6 JPDVARCHAR 9 8QRG CALL 7 OUTPACK 10 8R?6 LDN 4 STRNOINC(1) 7 8RQQ LDN 5 5 10 8S=B LDN 6 JPDVARCHAR 9 8SQ2 CALL 7 OUTPACK 9 8T9L LDX 3 PRMESS(1) 9 8TP= CALL 7 MONOUT 20 8W8W ... DOWN BMQUESTB,7 [ TO CHECK IF ERASURE ALLOWED 6 8WNG NXTRESTUSER 11 8X86 HUNTMISB 3,FI,FRESTUSER 9 8XMQ SMO FRNXT(3) 9 8Y7B STOZ FRINC(3) 7 8YM2 LDN 0 8 9 8_6L SBS 0 FRCNT(3) 9 8_L= BRN PASSEND 4 925W [ 17 92KG [************************************************ REPEAT 14 9356 [ -VE. INCR. NO. HAS BEEN FOUND. CHECK IF 15 93JQ [ NOMINATION BY OPERATORS(= -2). IF NOT CHECK IF 17 944B [ PREVIOUSLY CORRUPT DIR. WHICH IS O.K. ON THIS PASS 17 94J2 [(FRFIL -VE.) - IF SO IGNORE ENTRY. ELSE REPEAT SEARCH 4 953L [ 5 95H= REPEAT 7 962W ADN 0 2 17 96GG BNZ 0 REPEATSRCH [ J. IF NOT NOMINATED 11 9726 HUNTMISB 1,FI,FRESTUSER 7 97FQ SBX 3 1 20 97_B STO 3 AWORK3(2) [ DATUMISE POINTER AND SAVE IT 7 98F2 SMO 3 9 98YL LDN 4 FRUSE(1) 7 99D= LDN 5 3 14 99XW LDN 6 JPDUSERNAME [ OUTPUT 12 9=CG CALL 7 OUTPACK [ 15 9=X6 LDN 4 STRINGABAND(1) [ ABANDONED 12 9?BQ LDN 5 3 [ 15 9?WB LDN 6 JPDVARCHAR [ MESSAGE 9 9#B2 CALL 7 OUTPACK 11 9#TL LDN 4 STRUSNOTFND(1) 7 9**= LDN 5 4 10 9*SW LDN 6 JPDVARCHAR 9 9B#G CALL 7 OUTPACK 9 9BS6 LDX 3 PRMESS(1) 9 9C?Q CALL 7 MONOUT 5 9CRB NOREPEAT 9 9D38 ... STOZ FRINC(3) 11 9D?2 HUNTMISB 3,FI,FRESTUSER 14 9DQL LDN 0 8 [ DELETE 15 9F== SBS 0 FRCNT(3) [ FRESTUSER 9 9GP6 BRN PASSEND 6 9H8Q REPEATSRCH 19 9HNB LDX 0 FRFIL(3) [ CHECK IF PREVIOUS FAILURE 17 9J82 BNG 0 NOREPEAT [ BUT O.K. THIS TIME 18 9JML ACROSS BMFIXIT,4 [ IF NOT REPEAT SEARCH 4 9K7= [ 20 9KLW ...[************************************************* QSTEPC/QSTEPC1 4 9L6G [ 16 9L9# ...[ QSTEPC(K2) AND QSTEPC1(K5) READ THE NEXT BLOCK 9 9L#6 ...[ FROM BACKING STORE 4 9LBY ...[ 17 9LFQ ...[ K2 IS USED FROM BMAPONE AND BMAPDIR WHEN CHECKING A 16 9LJJ ...[DIRECTORY - IN THIS CASE EXISTING FURBS ARE FREED 13 9LMB ...[AND FUWBS ARE WRITTEN AWAY THEN FREED. 4 9LQ8 ...[ 16 9LT2 ...[ K5 IS USED FROM BMINDEX WHEN CHECKING INDEXING OF 16 9LXS ...[VARIOUS SYSTEM FILES. BUFFER BLOCKS ARE NOT FREED. 4 9M2L ...[ 9 9M5D ...[ IN BOTH CASES EXIT IS: 11 9M8= ...[ UP IF TRANSFER OKAY 12 9M?4 ...[ UP+1 IF CORRUPTION DETECTED 10 9M*W ...[ UP+2 IF EOF REACHED 16 9MDN ...[IF A READ FAIL OCCURS EXIT IS ACROSS TO BMAPONE,14 15 9MHG ...[IF K2 ENTRY SO THAT A PARTIAL RESTORE CAN BE 17 9ML# ...[INITIATED, BUT FOR K5 ENTRY EXIT IS UPPLUS 3 SO THAT 16 9MP6 ...[THE CALLING SEGMENT CAN TAKE APPROPRIATE ACTION. 4 9MRY ...[ 5 9MWQ ...QSTEPC1 7 9M_J ... NGNC 0 1 4 9N52 [ 5 9NJL QSTEPC 7 9NPS ... LDN 0 0 9 9NX2 ... STO 0 AWORK1(2) 16 9P4= STOZ AWORK2(2) [ NO OF REPEATS 20 9P#4 ... BNZ 0 NOUBL [DO NOT FREE BUFFER BLOCKS IF K5 5 9PHW NXTUBL 7 9Q3G TOPFCA2 3 10 9QH6 ADX 3 FBACKPOINT(3) 9 9R2Q LDX 3 FPTR(3) 9 9RGB LDX 0 ATYPE(3) 14 9S22 BXE 0 TYPEFURB(1),READFREE[ FURB ? 17 9SFL BXU 0 TYPEFUWB(1),NOUBL [ J. IF NOT A FUWB 7 9S_= TOPFCB2 1 18 9TDW CHECKBL 1,3,WRITEIT [ CHECK RECORD HEADERS 9 9TYG GEOERR 1,WRITE! 13 9WD6 WRITEIT [ AND 16 9WXQ LDX 2 FX2 [ WRITE IT AWAY 8 9XCB CHAIN 3,2 12 9XX2 WRITEAUTO FREE,BSBS,,BACK1(3) 9 9YBL BRN NXTUBL 5 9YW= READFREE 15 9_*W FREECORE 3 [ FREE FURB 9 9_TG BRN NXTUBL 4 9__C ...[ 15 =25# ...[ ALL EXISTING USAGE BLOCKS HAVE BEEN FREED. 4 =299 ...[ 5 =2*6 NOUBL 7 =4R= TOPFCA2 3 6 =5=W TRYNXTBLK 10 =5QG LDX 3 FREADBLOCK(3) 7 =6=6 TOPFCB2 1 9 =6PQ LDX 2 FBLMOD(1) 8 =79B ADN 2 A1 7 =7P2 SBX 2 3 9 =88L BNZ 2 NOTEOF 18 =8N= UPPLUS 2 [ IF END OF FILE REACHED 5 =97W NOTEOF 7 =9MG SMO 3 16 ==76 LDX 3 0(1) [ BLOCK NUMBER 16 ==LQ LDX 2 BSPRE(1) [ RESIDENCE NO. 21 =?6B BACKREAD ,BSBS,READFAIL,2 [ READ BLOCK FROM B.S. - J. IF FAIL 10 =?L2 MHUNTW 3,BSTB,BREAD 19 =#5L BNG 3 READFAIL [ J. IF NO BREAD BLOCK FORMED 7 =#K= TOPFCB2 1 20 =*4W CHECKBL 1,3,NOTCORUPT [ CHECK RECORD HEADERS- J. IF O.K 8 =*JG LDX 2 FX2 9 =B46 LDX 6 BACK1(3) 19 =BHQ LDX 7 BACK2(3) [ SAVE RES. NO. AND BLOCK NO. 18 =C3B STO 6 ACOMMUNE2(2) [ FOR READFAIL SEGMENT 20 =CH2 STO 7 ACOMMUNE3(2) [ ( WOULD BE CORRUPTED BY CHAPTER 20 =D2L TOPFCA2 3 [ TRANSFER OF SEGMENT READFAIL) 9 =DG= LDX 0 AWORK2(2) 18 =D_W SBN 0 5 [ CHECK NO. OF REPEATS 18 =FFG BZE 0 XRECHEAD [ J. IF 5 ALREADY DONE 10 =F_6 MFREE BSTB,BREAD 18 =GDQ LDN 0 1 [ ELSE INCREMENT COUNT 9 =GYB ADS 0 AWORK2(2) 16 =HD2 BRN TRYNXTBLK [ AND TRY AGAIN 4 =HXL [ 18 =JC= [************************************************** XRECHEAD 17 =JWW [ IN SPITE OF REPEATS RECORD HEADERS ARE STILL CORRUPT 4 =KBG [ 5 =KW6 XRECHEAD 21 =L*Q DOWN READFAIL,3 [ TO SEND 'CORRUPT' MESSAGE TO JOURNA 10 =LTB MFREE BSTB,BREAD 20 =M*2 UPPLUS 1 [ TO SHOW CORRUPT RECORD HEADERS 4 =MSL [ 18 =N#= [************************************************** READFAIL 18 =NLM ...[ TRANSFER HAS FAILED SO NEED TO DO A P.R. FOR DIRECTORY 18 =N_4 ...[ OR OUTPUT MESSAGE AND RETURN UPPLUS 3 FOR OTHER CASES. 4 =P?G [ 5 =PR6 READFAIL 9 =PY# ... LDX 0 AWORK1(2) 8 =Q5G ... BNZ 0 XUP3 18 =Q=Q ACROSS BMAPONE,14 [ TO DO P.R. IF REQUIRED 15 =Q#_ ...XUP3 STO 3 ACOMMUNE3(2) [STORE BLK NO 7 =QC8 ... TOPFCB2 1 18 =QFC ... LDX 0 BSPRE(1) [AND RES NO FOR READFAIL 10 =QHL ... STO 0 ACOMMUNE2(2) 10 =QKT ... DOWN READFAIL,4 7 =QN4 ... UPPLUS 3 4 =QQB [ 18 =R=2 [************************************************ NOTCORUPT 15 =RPL [ TRANSFER O.K. SO RENAME BREAD BLOCK TO BE A 12 =S9= [ FURB AND CHAIN IN FRONT OF FSTACK 4 =SNW [ 6 =T8G NOTCORUPT 10 =TN6 NAME 3,FILE,FURB 7 =W7Q TOPFCA 2 10 =WMB ADX 2 FBACKPOINT(2) 8 =X72 CHAIN 3,2 18 =XLL UP [ TO SHOW TRANSFER O.K. 4 =Y6= XBR 9 =YKW GEOERR 1,BMCNTRL 4 =_5G [ 4 =_K6 #END 6 ____ ...203034720002