BMQUEST866

(George Source)

Macros used: ACROSS, ALTLENG, ALTLENGD, BXE, BXGE, BXL, BXU, CHAIN, CLOSEFRBS, COOR3, DEMMESS, DEMMEX, EMSCONWT, FILENUMB, FREECORE, GEOERR, GEOSTOP, HUNTMISB, JBC, JBS, MBS, MFREE, MHUNTW, MONOUT, MONOUTX, OUTPACK, OUTPACKX, POP, PRQUERY, SEG, SEGENTRY, SETNCORE, STEPAGAIN, STEPREWRITE, TESTNAMX, UP, UPPLUS, VFREE, VOP

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