14 22FL ... SEG BMQUEST,866,EDWARD MOON,BMAP 12 22_= SEGENTRY K1BMQUEST,Z1BMQUEST 12 23DW SEGENTRY K2BMQUEST,Z2BMQUEST 12 23YG SEGENTRY K3BMQUEST,Z3BMQUEST 11 24D6 SEGENTRY K4BMQUEST,PRDIRS 11 24XQ SEGENTRY K5BMQUEST,PRQUERY 11 25CB SEGENTRY K7BMQUEST,PRERASE 12 25X2 SEGENTRY K8BMQUEST,Z8BMQUEST 16 26BL SEGENTRY K9BMQUEST,MOUT [FORCE ^RESTORE?^ 12 26W= SEGENTRY K10BMQUEST,MOUTERR 14 27*W ...[ENTRIES PRQUERY,PRERASE & Z8BMQUEST ARE NOW 9 27TG ...[CONTAINED IN BMQUESTB 8 2CMG MESS +3 10 2D76 8HRESTORE? 11 2DLQ RELOADING +12,12HRELOADING 12 2F6B XNOTDUMP 16HUSER NOT DUMPED 11 2G5L XABANDONED 16HABANDONED : 9 2GK= USEFUL 8H USEFUL 10 2H4W XESSENTIAL 12H ESSENTIAL 10 2HJG NEEDRES +BMRESUNAV 10 2J46 PRMESS +BMPARTRES 10 2JHQ MDIRUNAV +BMDIRUNAV 7 2K3B #SKI EMSJRNL<1$1 8 2KH2 NULL +2,4H 8 2L2L SP #20 8 2LG= Y #71 8 2L_W N #56 8 2MFG XCOLON #12 8 2M_6 NHYPHEN #35 8 2NDQ TEN +10 8 2NYB THIRTEEN +13 4 2PD2 [ 6 2PXL STEPREWRITE 8 2QC= STEPREWRITE 7 2QWW EXIT 7 0 5 2RBG OUTPACK 8 2RW6 SBX 7 FX1 8 2S*Q OUTPACKX 2,5,6 8 2STB ADX 7 FX1 7 2T*2 EXIT 7 0 4 2TSL SUB4 10 2W#= HUNTMISB 2,FI,FRESUNAV 7 2WRW EXIT 1 0 4 2X?G SUB3 11 2XR6 HUNTMISB 2,FI,FRESTUSER 7 2Y=Q EXIT 1 0 4 2YQB SUB2 11 2_=2 HUNTMISB 3,FI,FRESTUSER 7 2_PL EXIT 1 0 4 329= [ 19 32NW [**************************************************** Z1BMQUEST 4 338G [ 17 33N6 [ ENTRY POINT TO ASK 'RESTORE?' AND ANALYSE REPLY 4 347Q [ 20 34MB [ RE-ENTER @ K9(MOUT) TO FORCE ^RESTORE?^ IF BREAK DURING PREVIOUS 6 3572 [ BACKMAP 4 35LL [ 6 366= Z1BMQUEST 4 36KW [ 17 375G SEGENTRY K90BMQUEST [FOR THE FSLOAD MACRO 21 37K6 BRN Z91BMQUEST [ NULLED BY FSLOAD COPY,SAME OR GR 19 384Q [ RE-INSTATED BY FSLOAD OFF 19 38JB LDX 7 G3DOL [ RESTORE FLAG LEFT BY LOADER 20 3942 BZE 7 Z92BMQUEST [ J IF GENERAL RESTORE SUPPRESSED 21 39HL BRN MOUT [ ELSE ASK THE QUESTION ^RESTORE?^ 6 3=3= Z91BMQUEST 17 3=GW SEGENTRY K91BMQUEST [ FOR FSRELOAD MACRO 21 3?2G NULL [ BRN K92BMQUEST IF FSRELOAD MACRO IS 4 3?G6 [ 13 3?_Q MOUT [K9BMQUEST ENTRY POINT 4 3#FB [ 2 3#_2 21 3*DL STO 1 AWORK1(2) [ NON-ZERO TO INDICATE 'RESTORE?' OUT 6 3*Y= #SKI EMSJRNL 9 3BCW DEMMESS BMQUERY 7 3BXG #SKI EMSJRNL<1$1 8 3CC6 DEMMESS MESS 19 3CWQ MHUNTW 3,CONBUFF,EMSIN [ HUNT BLOCK CONTAINING REPLY 7 3DBB LDX 2 3 8 3DW2 LDX 4 A1(3) 20 3F*L BZE 4 NOCH [ JUMP TO REPEAT QUESTION IF NULL 9 3FT= NCH LDCH 5 A1+1(3) 16 3G#W BXE 5 SP(1),NCH1 [ IGNORE SPACES 21 3GSG BXL 5 TEN(1),RESTNUM [ IF FIRST CHAR IS DECIMAL INTEGER 18 3H#6 BXE 5 XCOLON(1),PARTRES [ IF FIRST CHAR IS ':' 7 3HRQ FREECORE 2 18 3J?B BXU 5 N(1),MOUT [ TRY AGAIN IF NOT N(O) 4 3JR2 [ 17 3K=L SEGENTRY K92BMQUEST [ FOR FSRELOAD MACRO 6 3KQ= Z92BMQUEST 19 3L9W STOZ GINCTSN [ INDICATE NOT A GEN. RES. 4 3LPG NR 9 3M96 ACROSS BACKMAP,4 7 3MNQ NCH1 BCHX 3 / 16 3N8B BCT 4 NCH [TRY NEXT CHAR 7 3NN2 NOCH FREECORE 2 16 3P7L BRN MOUT [ REPEAT QUESTION 4 3PM= [ 21 3Q6W [********************************************************************* 21 3QLG [ REPLY STARTS WITH A ':' SO WE ASSUME IT IS A STRING OF USENAMES 21 3R66 [ WHICH MUST BE ALPHA-NUMERIC,SPACE OR HYPHEN CHARS., STARTING WITH 20 3RKQ [ ALPHA CHAR., WITH NO REDUNDANT SPACES, DELIMITED BY COMMA(,)S, 21 3S5B [ INTRODUCED BY A ':' AND NOT MORE THAN 12 CHARS EACH LONG. IF NOT 10 3SK2 [ REPEAT THE QUESTION. 21 3T4L [ EACH VALID USERNAME IS PUT INTO THE FI/FRESTUSER BLOCK WITH INCR. 15 3TJ= [ NO. = -2 INDICATING REQUEST BY OPERATOR 4 3W3W [ 4 3WHG [ 5 3X36 PARTRES 18 3XGQ LDN 2 A1+1(3) [ ADDRESS OF FIRST CHAR 11 3Y2B MHUNTW 3,CONBUFF,EMSIN 9 3YG2 LDN 5 A1+1(3) 7 3Y_L SLC 5 2 21 3_F= ADX 5 A1(3) [ ADDRESS(IN CHARS) OF END OF BLOCK 18 3_YW CALL 1 SUB2 [ HUNT FRESTUSER BLOCK 8 42DG LDX 1 FX1 8 42Y6 SMO A1(3) 21 43CQ LDN 3 FRUSE(3) [ START ADDR. FOR CHARS. INTO FRESTUS 5 43XB NXTUSER 4 44C2 [ 20 44WL [******************************************************************* 14 45B= [ VALIDATE FIRST CHARACTER OF USERNAME 4 45TW [ 20 46*G BCHX 2 / [ POINTER TO NEXT CHAR. IN REPLY 18 46T6 SLC 2 2 [ CONVERT ADDR. TO CHARS. 20 47#Q BXGE 2 5,MOUTERR [ UNEXPECTED END OF REPLY WITH ':' 18 47SB SRC 2 2 [ CONVERT BACK TO POINTER 8 48#2 LDCH 0 0(2) 8 48RL SBN 0 #41 15 49?= BNG 0 MOUTERR [ IF NOT ALPHA 9 49QW SBN 0 #73-#41 15 4==G BPZ 0 MOUTERR [ IF NOT ALPHA 18 4=Q6 ADN 0 #73 [ ELSE CHAR IS ALPHA SO WE 18 4?9Q DCH 0 0(3) [ TRANSFER IT TO FRESTUSER 21 4?PB LDN 6 1 [ INITIALISE CHAR. COUNT FOR THIS NAME 4 4#92 [ 21 4#NL [********************************************************************** 15 4*8= [ LOOP TO VALIDATE SUBSEQUENT CHARACTERS. 4 4*MW [ 5 4B7G NXCHAR 17 4BM6 BCHX 3 / [ UPDATE POINTERS 7 4C6Q BCHX 2 / 7 4CLB SLC 2 2 17 4D62 BXGE 2 5,XUSEND [ IF END OF REPLY 7 4DKL SRC 2 2 18 4F5= LDCH 0 0(2) [ PICK UP NEXT CHAR. 8 4FJW LDX 1 FX1 17 4G4G BXL 0 TEN(1),NCHAROK [ O.K. IF NUMERIC 16 4GJ6 BXE 0 SP(1),NCHAROK [ O.K. IF SPACE 17 4H3Q BXE 0 NHYPHEN(1),NCHAROK [ O.K. IF HYPHEN 8 4HHB SBN 0 #34 19 4J32 BZE 0 XUSEND [ END OF THIS NAME IF COMMA 9 4JGL SBN 0 #41-#34 21 4K2= BNG 0 MOUTERR [ ERROR IF NOT ALPHA, REPEAT QUESTION 9 4KFW SBN 0 #73-#41 17 4K_G BPZ 0 MOUTERR [ ERROR IF NOT ALPHA 8 4LF6 ADN 0 #73 5 4LYQ NCHAROK 19 4MDB DCH 0 0(3) [ CHAR IS O.K., TRANSFER IT 17 4MY2 ADN 6 1 [ UPDATE CHAR COUNT 9 4NCL BRN NXCHAR 4 4NX= [ 21 4PBW [********************************************************************* 19 4PWG [ END OF A USERNAME - CHECK LENGTH,ALTLENG FRESTUSER BLOCK 19 4QB6 [ AND SPACE FILL NEXT USERNAME FIELD. SET INCREMENT NO. = -2 17 4QTQ [ IF REPLY NOT YET EXHAUSTED, CHECK NEXT CHAR IS ':' 4 4R*B [ 4 4RT2 [ 5 4S#L XUSEND 19 4SS= STO 2 4 [ PRESERVE POINTER TO REPLY 11 4T?W MHUNTW 3,CONBUFF,EMSIN 7 4TRG SLC 3 2 20 4W?6 SBX 4 3 [ RELATIVEISE POINTER TO REPLY 20 4WQQ SBX 5 3 [ RELATIVEISE POINTER TO END 21 4X=B BXGE 6 THIRTEEN(1),MOUTERR [ CHECK LENGTH LESS THAN 13 CHARS 8 4XQ2 CALL 1 SUB2 10 4Y9L LDX 7 ALOGLEN(3) 7 4YP= ADN 7 8 18 4_8W ALTLENG 3,7,SUB3 [ LENGTHEN FRESTUSER 8 4_NG CALL 1 SUB2 7 5286 NGN 0 2 8 52MQ SMO A1(3) 18 537B STO 0 FRINC(3) [ SET INCR. NO. = -2 8 53M2 SMO A1(3) 17 546L STOZ FRFIL(3) [ ZEROISE FILE NO. 7 54L= LDN 0 8 18 555W ADS 0 A1(3) [ UPDATE RECORD HEADER 20 55KG ADS 0 FRCNT(3) [ UPDATE COUNT OF USED SPACE 8 5656 LDX 0 ACES 8 56JQ SMO A1(3) 13 574B STO 0 FRUSE(3) [ 13 57J2 SMO A1(3) [ 21 583L STO 0 FRUSE+1(3) [ SPACE FILL NEXT USERNAME FIELD 13 58H= SMO A1(3) [ 13 592W STO 0 FRUSE+2(3) [ 11 59GG MHUNTW 2,CONBUFF,EMSIN 20 5=26 SLC 2 2 [ DERELATIVEISE POINTER TO REPLY 17 5=FQ ADX 4 2 [ AND END OF REPLY 13 5=_B ADX 5 2 [ 13 5?F2 STO 4 2 [ 7 5?YL BCHX 2 / 7 5#D= SLC 2 2 17 5#XW BXGE 2 5,NRPR [ IF AT END OF REPLY 14 5*CG SRC 2 2 [ ELSE 18 5*X6 LDCH 0 0(2) [ CHECK NEXT CHARACTER 8 5BBQ SBN 0 #12 16 5BWB BNZ 0 MOUTERR [ IF NOT A ':' 8 5CB2 SMO A1(3) 21 5CTL LDN 3 FRUSE(3) [UPDATE PTR TO NXT USER IN FRESTUSER 9 5D*= BRN NXTUSER 4 5DSW NRPR 19 5F#G MFREE CONBUFF,EMSIN [ TREAT AS REPLY 'NO' IF END 19 5FS6 BRN NR [ OF REPLY AND NO ERRORS FOUND 4 5G?Q [ 21 5GRB [********************************************************************* 4 5H?2 [ 19 5HQL [ ERROR ROUTINE REINITIALISES FRESTUSER AND DISCARDS REPLY 4 5J== [ 5 5JPW MOUTERR 10 5K9G VFREE CONBUFF,EMSIN 8 5KP6 CALL 1 SUB2 8 5L8Q STOZ A1(3) 9 5LNB STOZ FRCNT(3) 8 5M82 LDX 0 ACES 9 5MML STO 0 FRUSE(3) 10 5N7= STO 0 FRUSE+1(3) 10 5NLW STO 0 FRUSE+2(3) 9 5P6G STOZ FRINC(3) 9 5PL6 ALTLENGD 3,14,SUB3 8 5Q5Q LDX 2 FX2 8 5QKB BRN MOUT 4 5R52 [ 21 5RJL [*********************************************************************** 15 5S4= [ ROUTINE TO HANDLE INCREMENT NO. REPLIES 13 5SHW [ ALL CHARACTERS MUST BE NUMERIC 4 5T3G [ 5 5TH6 RESTNO 9 5W2Q LDCH 5 A1+1(3) 10 5WGB BXGE 5 TEN(1),NOCH 5 5X22 RESTNUM 7 5XFL BCHX 3 / 9 5X_= BCT 4 RESTNO 5 5YDW RESTYES 18 5YYG ACROSS BACKMAP,3 [ TO DO A GENERAL RESTORE 4 5_D6 [ 21 5_XQ [*********************************************************** Z3BMQUEST 4 62CB [ 16 62X2 [ ENTRY POINT TO DEAL WITH UNAVAILABLE RESIDENCES 13 63BL [ ( FROM BMAPONE - 'USEFUL' FILES) 4 63W= [ 6 64*W Z3BMQUEST 9 64TG LDX 2 BSACHAPTR 20 65*6 POP Z3BMQUEST,2,FTABWAIT [ LOCKOUT ANY OTHER ACTS. WHICH 18 65SQ LDX 2 FX2 [ FIND UNAV. RESIDENCES 7 66#B NGN 0 1 20 66S2 STO 0 AWORK1(2) [ INDICATE 'USEFUL' FILE ENTRY 9 67?L BRN USEFULENT 4 67R= [ 20 68=W [********************************************************* Z2BMQUEST 17 68QG [ ENTRY POINT TO DEAL WITH UNAVAILABLE RESIDENCES 14 69=6 [ ('ESSENTIAL' FILES ENTRY FROM BACKMAP) 17 69PQ [ X4 CONTAINS RESIDENCE NO. AS FOR Z3BMQUEST ENTRY 4 6=9B [ 6 6=P2 Z2BMQUEST 21 6?8L VOP 2,FTABWAIT [CLEAR LOCKOUT SO DICT. & SER. SLAVE FINISH 19 6?N= STOZ AWORK1(2) [ INDICATE 'ESSENTIAL' FILE ENTRY 6 6#7W USEFULENT 8 6#MG CALL 1 SUB4 20 6*76 BPZ 2 NORESETUP [ IF FRESUNAV EXISTS ALREADY 17 6*LQ SETNCORE 7,2,FI,FRESUNAV [ ELSE SET ONE UP 8 6B6B STOZ A1(2) 8 6BL2 SMO FX2 21 6C5L STOZ AWORK3 [INITIALISE REL. PTR. DOWN FRESUNAV 20 6CK= CHAIN 2,BMISC+1 [ CHAIN IN MISCELLANEOUS CHAIN 19 6D4W CALL 1 SUB4 [ SO ALL SLAVES CAN FIND IT 21 6DJG STOZ 3 [ INIT. MODIFIER(PTR. TO RES. NO.) 21 6F46 BRN NOCHEX [ SKIP LENGTHENING IF JUST SET UP 6 6FHQ NORESETUP 10 6G3B LDX 0 ALOGLEN(2) 8 6GH2 SBX 0 A1(2) 7 6H2L SBN 0 2 20 6HG= BPZ 0 NOLENFR [ DONT LENGTHEN IF ROOM ENOUGH 10 6H_W LDX 7 ALOGLEN(2) 7 6JFG ADN 7 8 19 6J_6 ALTLENG 2,7,SUB4 [ ELSE LENGTHEN BY 8 WORDS 8 6KDQ CALL 1 SUB4 5 6KYB NOLENFR 18 6LD2 STOZ 3 [ INITIALISE MODIFIER 5 6LXL NXTNO 8 6MC= SMO FX2 21 6MWW STO 3 AWORK3 [ SAVE REL. PTR. TO THIS RES. NO. 7 6NBG SMO 3 21 6NW6 LDEX 0 FRESNO(2) [ PICK UP RES. NO. FROM FRESUNAV 20 6P*Q BXE 0 4,NOASK [ IS IT SAME AS ONE IN QUESTION 20 6PTB [ IF SO, DONT REPEAT QUESTION 18 6Q*2 ADN 3 1 [ UPDATE RELATIVE PTR. 8 6QSL SMO FX2 20 6R#= STO 3 AWORK3 [ SAVE REL.PTR. TO NEXT RES.NO. 18 6RRW BXL 3 A1(2),NXTNO [ IF NOT END OF BLOCK 5 6S?G NOCHEX 7 6SR6 LDN 0 1 18 6T=Q ADS 0 A1(2) [ UPDATE RECORD HEADER 14 6TQB SMO 3 [ AND 19 6W=2 STO 4 FRESNO(2) [ STORE THIS RESIDENCE NO. 4 6WPL [ 21 6X9= [*********************************************************************** 18 6XNW [ OUTPUT UNAVAILABLE RESIDENCE MESSAGES AND CHECK REPLY 4 6Y8G [ 5 6YN6 REPQUEST 7 6_7Q LDN 2 4 7 6_MB LDN 5 1 9 7272 LDN 6 JPDNUMA 16 72LL CALL 7 OUTPACK [ RESIDENCE NO. 9 736= LDX 0 AWORK1(2) 17 73KW BPZ 0 XESSMESS [ IF 'ESSENTIAL' 9 745G LDN 2 USEFUL(1) 7 74K6 LDN 5 2 16 754Q BRN USEMESS [ IF 'USEFUL' 5 75JB XESSMESS 10 7642 LDN 2 XESSENTIAL(1) 7 76HL LDN 5 3 5 773= USEMESS 10 77GW LDN 6 JPDVARCHAR 19 782G CALL 7 OUTPACK [ 'ESSENTIAL' OR 'USEFUL' 10 78G6 LDX 3 NEEDRES(1) 6 78_Q #SKI EMSJRNL 17 79FB DEMMEX 3 [ ASK FOR RESIDENCE 7 79_2 #SKI EMSJRNL<1$1 4 7=DL ( 13 7=Y= MONOUTX 3 [ 17 7?CW DEMMESS NULL [ ASK FOR RESIDENCE 4 7?XG ) 17 7#C6 MHUNTW 3,CONBUFF,EMSIN [ HUNT REPLY BLOCK 7 7#WQ LDX 2 3 18 7*BB LDX 6 A1(2) [ CHECK IF NULL REPLY 19 7*W2 BZE 6 REPFREE [ REPEAT QUESTION IF IT IS 5 7B*L NEXTCHAR 9 7BT= LDCH 5 A1+1(3) 18 7C#W BXE 5 SP(1),NEXTCHARUP [ IGNORE LEADING SPACES 15 7CSG BXE 5 N(1),RESUNAVAIL [ IF N(O) 7 7D#6 FREECORE 2 15 7DRQ BXE 5 Y(1),RELOAD [ IF Y(ES) 20 7F?B BRN REPFREE [ TO REPEAT QUESTION IF NEITHER 6 7FR2 NEXTCHARUP 7 7G=L BCHX 3 / 9 7GQ= BRN NEXTCHAR 5 7H9W REPFREE 18 7HPG BRN REPQUEST [ TO REPEAT QUESTION 5 7J96 RELOAD 21 7JNQ EMSCONWT [ WAIT FOR ALL MESSAGES TO FINISH 8 7K8B LDX 1 FX1 21 7KN2 GEOSTOP RELOADING(1) [ TO ALLOW INCLUSION OF RESIDENCE 6 7L7L RESUNAVAIL 4 7LM= [ 21 7M6W [********************************************************************* 20 7MLG [ RESIDENCE CONFIRMED TO BE UNAVAILABLE. IF FILE IS ESSENTIAL WE 19 7N66 [ HAVE TO ASK FOR A GENERAL RESTORE - MEANS REINITIALISING 15 7NKQ [ EVERYTHING AND ASKING 'RESTORE?' AGAIN. 20 7P5B [ IF THE FILE IS 'USEFUL' WE DO PARTIAL RESTORES OF DIRECTORIES. 4 7PK2 [ 8 7Q4L LDX 2 FX2 9 7QJ= LDX 0 AWORK1(2) 19 7R3W BNG 0 WANTPR [ WANT TO DO P.R. IF 'USEFUL' 7 7RHG FILENUMB 7 5 7S36 XSTART 21 7SGQ LDX 0 AMAPDEPTH(2) [ CHECK IF DICT. OR SER. SLAVE EXTANT 20 7T2B BZE 0 NXTCLOSE [ CARRY ON IF THEY'VE FINISHED 17 7TG2 COOR3 BMAPACT [ ELSE WAIT FOR THEM 9 7T_L BRN XSTART 5 7WF= NXTCLOSE 18 7WYW CLOSEFRBS [ CLOSE ALL FILES OPEN 9 7XDG BCT 7 NXTCLOSE 12 7XY6 LDX 3 BFILE [ 19 7YCQ STOZ FCOMM(3) [ REINITIALISE MASTER'S FCB 12 7YXB STOZ FINFC(3) [ 15 7_C2 FREECORE BFILE+1 [ FREE FMAPP 16 7_WL FREECORE BFILE+1 [ FREE FINDEXF 10 82B= HUNTMISB 3,FI,FRESUNAV 9 82TW BNG 3 NOWFUSER 19 83*G FREECORE 3 [ FREE FRESUNAV IF IT EXISTS 5 83T6 NOWFUSER 10 84#Q HUNTMISB 3,FI,FUSER 9 84SB BNG 3 NOWFTAPE 19 85#2 FREECORE 3 [ FREE FUSER IF IT EXISTS 5 85RL NOWFTAPE 10 86?= HUNTMISB 3,FI,FTAPE 9 86QW BNG 3 MOUTERR 19 87=G FREECORE 3 [ FREE FTAPE IF IT EXISTS ELSE 21 87Q6 BRN MOUTERR [ REINITIALISE FRESTUSER AND 'RESTORE?' 5 889Q NOASK 7 88PB SMO 3 9 8992 LDX 0 FRESNO(2) 21 89NL BNG 0 XINFORMED [ B0 SET INDICATES MESSAGE ALREADY OUTPUT 16 8=8= SMO 3 [ FOR THIS RESIDENCE 20 8=MW LDN 2 FRESNO(2) [ PICK UP RESIDENCE NO. FOR OUTPACK 9 8?7G BRN NOWINFORM 5 8?M6 WANTPR 8 8#6Q CALL 1 SUB4 8 8#LB SMO FX2 9 8*62 LDX 3 AWORK3 7 8*KL SMO 3 20 8B5= LDN 2 FRESNO(2) [ PICK UP RESIDENCE NO. FOR OUTPACK 6 8BJW NOWINFORM 7 8C4G LDN 5 1 9 8CJ6 LDN 6 JPDNUMA 9 8D3Q CALL 7 OUTPACK 19 8DHB LDX 3 MDIRUNAV(1) [ OUTPUT RESTORES INIT. MESSAGE 16 8F32 MONOUTX 3 [ FOR THIS RESIDENCE 8 8FGL CALL 1 SUB4 8 8G2= SMO FX2 9 8GFW LDX 3 AWORK3 7 8G_G SMO 3 9 8HF6 LDN 2 FRESNO(2) 8 8HYQ LDX 0 GSIGN 17 8JDB ORS 0 0(2) [ INDICATE MESSAGE OUTPUT 6 8JY2 XINFORMED 9 8KCL LDX 2 BSACHAPTR 15 8KX= VOP 2,FTABWAIT [ CLEAR LOCKOUT 7 8LBW STEPAGAIN 9 8LWG LDX 0 EUSE1N(3) 14 8MB6 BNG 0 PRDIRS [ IF DIRECTORY 17 8MTQ UPPLUS 1 [ ELSE GO BACK TO BMAPONE 4 8N*B [ 21 8NT2 [************************************************************** PRDIRS 4 8P#L [ 14 8PS= [ ROUTINE TO INITIATE A PARTIAL RESTORE 4 8Q?W [ 4 8QRG [ 5 8R?6 PRDIRS 7 8RQQ STEPAGAIN 10 8S=B CALL 7 STEPREWRITE 20 8SQ2 MBS 3,BNPARTRES,BNTEMP [ MARK PARTIAL RESTORE INITIATED 20 8T9L LDX 4 EINCN(3) [ PICK UP INCR. NO. LAST DUMPED 21 8TP= BZE 4 NOTDUMP [ TO ABANDON RESTORE IF NOT DUMPED 6 8W8W #UNS AMTGR 4 8WNG ( 6 8X86 #UNS B7739 4 8XMQ ( 18 8Y7B [********************************************************* 15 8YM2 [ FIRST CHECK IF THERE IS AN ENTRY FOR THIS USER 16 8_6L [ ALREADY. IF SO JUST UPDATE IT ELSE MAKE NEW ENTRY. 4 8_L= [ 11 925W HUNTMISB 1,FI,FRESTUSER 9 92KG LDX 0 FRCNT(1) 17 9356 BZE 0 NOTALREADY [ J. IF NONE AT ALL 7 93JQ LDX 2 1 17 944B SBN 2 8 [ INITIALISE POINTER 8 94J2 ADX 1 A1(1) 18 953L ADN 1 A1 [ AND PTR. TO END OF BLOCK 5 95H= NXTNAME 19 962W ADN 2 8 [ UPDATE PTR. TO NEXT ENTRY 17 96GG BXGE 2 1,NOTALREADY [ J. IF USER NOT FOUND 20 9726 TESTNAMX 3,EUSE1N(3),FRUSE(2),NXTNAME [ J. IF NOT THIS ONE 19 97FQ LDX 0 FRINC(2) [ ENTRY ALREADY HERE SO SEE IF 20 97_B BPZ 0 TOUP [ ALREADY COMPLETE - IF SO 'UP' 18 98F2 STO 4 FRINC(2) [ ELSE FILL IN INCR. NO. 10 98YL LDX 0 EFILNUMN(3) 15 99D= STO 0 FRFIL(2) [ AND FILE NO. 20 99XW LDN 7 EUSE1N(3) [ TAKE SUPER'S NAME FROM DIRENT 18 9=CG JBC NOTSUDUSER,3,BNPSEUDO [ UNLESS PSEUDO USER 8 9=X6 SMO FX2 19 9?BQ LDN 7 ASUPUSER [ IN WHICH CASE FROM ACT BLOCK 6 9?WB NOTSUDUSER 19 9#B2 LDN 0 FRSUP(2) [ AND UPDATE SUPERIOR'S NAME 7 9#TL MOVE 7 3 15 9**= BRN TOUP [ RETURN 'UP' 6 9*SW NOTALREADY 4 9B#G ) 4 9BS6 [ 16 9C?Q [************************************************ 17 9CRB [ NOW CHECK IF THIS IS FOR AN OFFLINE DIRECTORY (I.E. A 15 9D?2 [ MULTI-TAPE RESTORE. IF SO, FOR THE FIRST ONE 13 9DQL [ OUTPUT THE RESTORES INITIATED MESSAGE. 4 9F== [ 18 9FPW LDEX 0 ECOPSN(3) [ CHECK IF FOR OFLINE DIR. 16 9G9G BNZ 0 WTFORLEN [ J. IF IT ISN'T 11 9GP6 HUNTMISB 1,FI,FRESTUSER 17 9H8Q LDCT 0 #200 [ ELSE CHECK IF THE 18 9HNB ANDX 0 FRNXT(1) [ MESSAGE ALREADY SENT. 17 9J82 BNZ 0 WTFORLEN [ J. IF WE HAVE ELSE 8 9JML LDCT 0 #200 18 9K7= ORS 0 FRNXT(1) [ SET BIT TO SHOW WE HAVE 17 9KLW MONOUT BMPROFF [ AND OUTPUT MESSAGE 4 9L6G ) 5 9LL6 WTFORLEN 9 9M5Q LDX 2 BSACHAPTR 21 9MKB POP WTFORLEN,2,FTABWAIT [ LOCKOUT FOR LENGTHENING FRESTUSER 8 9N52 CALL 1 SUB2 10 9NJL LDX 7 ALOGLEN(3) 7 9P4= ADN 7 8 19 9PHW ALTLENG 3,7,SUB3 [ MAKE ROOM FOR THIS ENTRY 9 9Q3G LDX 2 BSACHAPTR 16 9QH6 VOP 2,FTABWAIT [ CLEAR LOCKOUT 7 9R2Q STEPAGAIN 17 9RGB LDX 5 EFILNUMN(3) [ PICK UP FILE NO. 17 9S22 LDN 6 EUSE1N(3) [ POINTER TO USERNAME 8 9SFL CALL 1 SUB2 8 9S_= SMO A1(3) 9 9TDW LDN 7 FRUSE(3) 16 9TYG MOVE 6 3 [ STORE USERNAME 8 9WD6 SMO A1(3) 16 9WXQ STO 4 FRINC(3) [ INCREMENT NO. 8 9XCB SMO A1(3) 19 9XX2 STO 5 FRFIL(3) [ AND FILE NO. IN FRESTUSER 7 9YBL STEPAGAIN 21 9YW= LDN 4 ASUPUSER(2) [ TAKE SUPERIOR PROPER USERNAME FROM 20 9_*W JBS SUDUS,3,BNPSEUDO [ ASUPUSER IF THIS IS A PSEUDO 16 9_TG LDN 4 EUSE1N(3) [ ELSE FRON EUSE1 5 =2*6 SUDUS 8 =2SQ CALL 1 SUB2 21 =3#B SMO A1(3) [ STORE SUPERIOR PROPER USERNAME IN 21 =3S2 LDN 5 FRSUP(3) [ FRESTUSER FOR LATER USE IN MAPPING 16 =4?L MOVE 4 3 [ RESTORED LIMB 7 =4R= LDN 0 8 18 =5=W ADS 0 A1(3) [ UPDATE RECORD HEADER 18 =5QG ADS 0 FRCNT(3) [ AND USED SPACE COUNT 6 =6=6 #UNS B7739 4 =6PQ TOUP 5 =79B UP 4 =7P2 [ 21 =88L [********************************************************************* 17 =8N= [ IF USER TO BE RESTORED WAS NOT DUMPED, THE RESTORE 19 =97W [ MUST BE ABANDONED, IF THIS IS ALLOWED, OTHERWISE WE RELOAD 4 =9MG [ 5 ==76 NOTDUMP 17 ==LQ LDN 2 EUSE1N(3) [ PICK UP USERNAME 7 =?6B LDN 5 3 10 =?L2 LDN 6 JPDUSERNAME 9 =#5L CALL 7 OUTPACK 10 =#K= LDN 2 XABANDONED(1) 7 =*4W LDN 5 4 10 =*JG LDN 6 JPDVARCHAR 9 =B46 CALL 7 OUTPACK 10 =BHQ LDN 2 XNOTDUMP(1) 7 =C3B LDN 5 4 10 =CH2 LDN 6 JPDVARCHAR 17 =D2L CALL 7 OUTPACK [ OUTPUT ABANDONED 15 =DG= LDX 3 PRMESS(1) [ MESSAGE 7 =D_W MONOUTX 3 12 =FFG UPPLUS 1 [ 5 =F_6 ...PRQUERY 10 =GDQ ... GEOERR 1,K5BMQEST 5 =GYB ...PRERASE 10 =HD2 ... GEOERR 1,K7BMQEST 6 =HXL ...Z8BMQUEST 10 =JC= ... GEOERR 1,K8BMQEST 4 ##J6 #END 6 ____ ...151207750001