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