CREALEX864

(George Source)

Macros used: BACKSPACE, BC, BS, BXGE, CHAIN, CLOSEFRBS, CLOSETOP, CREATEB, DELETE, FFINDEXB, FILEMOVE, FILENUMB, FIND, FINDNAME, FREEBAX, FREECORE, GEOERR, GETDIR, HUNT, INSERT, JMBS, MBS, MENDAREA, MFREE, MHUNT, MHUNTW, NAME, OPEN, OPENDIR, OPENRELN, READ, READAGAIN, REPLACE, SEG, SEGENTRY, SETNCORE, SFCA, SFCB, SKIP, STEP, TESTNAMX, TESTREP2, TESTRPN2, TOPFCB, TOPFCB2, UP, VOP, WRITEB

CREALEX864.txt
22FL          SEG      CREALEX,864,EDWARD MOON,BMAP 
22^=    [   
23DW          SEGENTRY K1CREALEX,START  
23YG          SEGENTRY K2CREALEX,OPENLEX
24D6    [     THE NEXT SECTION SETS UP THE LEXICON  
24XQ    [ READING THROUGH THE DICTIONARY WE SET UP    FILE/FWB.BLKS WITH THE LEX
25CB    [ RECORDS IN THE SAME ORDER AS IN THE DICTIONARY BUF,COMPLETE EXCEPT FOR
25X2    [ THE SUPERIOR USER POINTER 
26BL    [ CORRESPONDING TO EACH    LEXICON RECORD THERE IS A RECORD WITH THE SUP
26W=    [ USERS NAME IN A FILE/FRB  
27*W    [ HAVING SET UP ALL THE FRBS AND FWBS THE DICTIONARY IS CLOSED AND THE F
27TG    [ BLOCK OF EACH KIND IS PUT AT THE END OF THE CHAIN SO THAT    UNUSED LE
28*6    [ RECORDS WILL BE IN THE LAST BLOCK 
28SQ    [ THE LEXICON IS THEN OPENED (CREATED OR EMPTIED)   
29#B    [ STARTING WITH THE FIRST SUPERIOR USER IN THE FRBS WE SEARCH FOR HIS   
29S2    [ LEXICON RECORD, CALCULATE THE POINTER AND THEN SEARCH THROUGH THE FRBS
2=?L    [ FOR ALL OCCURRENCES OF THIS SUPERIOR USER.EACH TIME,THE POINTER IS
2=R=    [ PUT IN AND THE SUPERIORS NAME STOZED TO AVOID TREATING HIM AGAIN  
2?=W    [ AT THE END OF EACH FRB     IT IS FREED
2?QG    #DEF  NR=127                       [NO OF LEXICON RECS/BLK  
2#=6    #DEF  SR=4                         [NO OF WDS/LEX REC.  
2#PQ    #DEF  SG=4                         [SIZE OF GAP AT START OF LEX B.S. BLK
2*9B    WNR   +SR*NR+SG 
2*P2    SYST
2B8L                   12HSYSTEM
2BN=    XFMAPP  
2C7W    #HAL +FILE+FMAPP,0  
2CMG    NLEX           +10  
2D76    NMAS
2DLQ                   12HMASTER
2F6B    NLEX2   
2FL2          12HLEXICON
2G5L          1,1,4HB1  
2GK=    NFB 
2H4W          LDX   3  FPTR(3)  
2HJG    NFB1
2J46          LDX   0  ATYPE(3) 
2JHQ          BXGE  0  CACT,(4)            [J IF NO MORE FWBS   
2K3B          SRL   0  12   
2KH2          SBN   0  FILE+FWB 
2L2L          BNZ   0  NFB  
2LG=          EXIT  4  1
2L^W    START   
2MFG    [   
2M^6    [**************************************************** START 
2NDQ    [  ENTRY POINT DOWN FROM ADDICT TO SET UP THE FRB'S 
2NYB    [  AND FWB'S FOR CREATING THE LEXICON.  
2PD2    [   
2PXL          FASTREWI 1
2QC=          STEP                         [DUMMY RECORD
2QWW    NBS 
2RBG          LDN   7  2                   [SET UP ZEROIZED FRB & FWB   
2RW6    NOTHER  
2S*Q          SETNCORE GSBS,2,FILE,FWB  
2STB          STOZ     A1(2)
2T*2          LDN   0  A1(2)
2TSL          LDN   1  A1+1(2)  
2W#=          MOVE  0  GSBS-1   
2WRW          BCT   7  NOTHER   
2X?G          NAME     2,FILE,FRB   
2XR6          LDN   5  SG                  [X5 -> TO POS IN FRB AND FWB 
2Y=Q    ST  
2YQB          STEP  
2^=2          BZE   3  STX  
2^PL          LDX   0  CUSER-A1(3)  
329=          BPZ   0  ST                  [IGNORE UPDATE RECORDS   
32NW          MHUNTW   1,FILE,FRB   
338G          LDN   6  CSUPUSER-A1(3)   
33N6          SMO      5
347Q          LDN   7  A1+HUSER(1)  
34MB          MOVE  6  3                   [SUPERIOR USER IN FRB
3572          MHUNTW   2,FILE,FWB   
35LL          LDN   6  CUSER-A1(3)  
366=          SMO      5
36KW          LDN   7  A1+HUSER(2)  
375G          MOVE  6  3                   [USER IN FWB 
37K6          LDCT  0  #400                [PSEUDO-USER BIT 
384Q          ANDX  0  CPSEU-A1(3)  
38JB          SMO      5
3942          STO   0  A1+HSUPUSER(2)   
39HL          ADN   5  SR   
3=3=          SMO      FX1  
3=GW          TXU   5  WNR  
3?2G          BCS      ST   
3?G6          BRN      NBS  
3?^Q    STX 
3#FB          CLOSETOP                     [DICTIONARY  
3#^2          MHUNTW   2,FILE,FWB   
3*DL          LDCT  0  #400 
3*Y=          STO   0  A1+1(2)  
3BCW          LDN   7  0
3BXG    P1  
3CC6          LDX   3  FPTR(2)  
3CWQ          CALL  4  NFB1                [GET NEXT FWB
3DBB          BRN      PEND 
3DW2          DEX   7  ATYPE(3) 
3F*L          ADN   7  1
3FT=          LDX   2  3                   [KEEP PTR TO LAST FWB
3G#W          BRN      P1   
3GSG    PEND
3H#6          BZE   7  NSUP2                 [ONLY ONE BLOCK
3HRQ          HUNT     3,FILE,FRB   
3J?B          CHAIN    3,2  
3JR2          HUNT     2,FILE,FWB   
3K=L          DEX   7  ATYPE(2)            [PUT IN NO. OF LAST BLOCK
3KQ=          CHAIN    2,3  
3L9W          BRN      NSUP2
3LPG    [   
3M96    [*********************************************** OPENLEX
3MNQ    [  ENTRY POINT DOWN FROM ADDICT TO OPEN THE LEXICON 
3N8B    [  EMPTYING OR RECREATING IT AS NECESSARY.  
3NN2    [   
3P7L    OPENLEX 
3PM=          SETNCORE 10,2,FILE,FABSNB 
3Q6W          ADN   2  A1   
3QLG          ADN   1  NLEX 
3R66          MOVE  1  10   
3RKQ          OPENDIR  XBR,GENERAL,QUERY   [ GET :MASTER OPEN AT
3S5B          TESTREP2 NOFILE,NOFILE,NAME,XBR [ ENTRY FOR LEXICON   
3SK2          MHUNTW   1,FILE,ENT   
3T4L          LDEX  4  ECOPS(1) 
3TJ=          JMBS     UNCLEAN,1,BEBM,BEBMUWB   
3W3W          BZE   4  NBSPACE  
3WHG          BACKSPACE 
3X36    NBSPACE 
3XGQ          SETNCORE 6,2,FILE,FLOCNB  
3Y2B          ADN   1  NLEX2
3YG2          ADN   2  A1   
3Y^L          MOVE  1  6
3^F=          OPENRELN XBR,WRITE,EMPTY     [LEXICON 
3^YW    #SKI  K6ADDICT>199-199  
42DG          TESTRPN2 OK,XBR   
42Y6          BRN      NOBLOCKS 
43CQ    UNCLEAN 
43XB          LDX   3  ENUSE(1) 
44C2          ADN   4  1(3) 
44WL          FREECORE 1
45B=          BZE   3  NDEL 
45TW          SKIP     ,0(3)
46*G    NDEL
46T6          DELETE                       [ DELETE EXISTING ENTRY SO   
47#Q          BCT   4  NDEL                [ WE CAN CREATE NEW ONE  
47SB    NCLOS   
48#2          CLOSETOP                     [:MASTER 
48RL    NOFILE  
49?=          CREATEB  1                   [SET KEEP ONLINE 
49QW          LDCT  0  #104                [AND DO NOT BREAK IN ON BIT  ARE SET 
4==G          STO   0  CEINF2(1)
4=Q6          LDN   0  FILESIZE 
4?9Q          STO   0  CEINF3(1)
4?PB          OPEN     XBR,WRITE,CREATE 
4#92    #SKI  K6ADDICT>199-199  
4#NL          TESTRPN2 OK,XBR   
4*8=    NOBLOCKS
4*MW          VOP      2,FTABWAIT          [ CLEAR SEMAPHOR TO LET 'SERIAL' 
4B7G          TOPFCB2  1                   [ SLAVE RUN.'FRIG' FCB TO GET CLOSE  
4BM6          LDN   0  FCBLEN              [  TO ALTER LENGTH OF FILE TO NO.
4C6Q          STO   0  FBLMOD(1)           [ OF BLOCKS ACTUALLY USED BY 
4CLB          MBS      1,BFALTB,BFALTR     [ SETTING REEL & BLOCKS ALTERED  
4D62          UP
4DKL    [   
4F5=    [********************************************  NSUP2
4FJW    [  WE NOW GO ON TO  FILL IN EACH USER'S POINTER 
4G4G    [  TO HIS SUPERIOR USER.
4GJ6    [   
4H3Q    NSUP2   
4HHB          LDX   2  FX2  
4J32          LDN   5  SG   
4JGL    NSUP1   
4K2=          HUNT     1,FILE,FRB   
4KFW          BNG   1  STOP                [FINISHED
4K^G          SMO      5
4LF6          LDX   0  A1+HUSER(1)  
4LYQ          BZE   0  NSUP                [THIS USER DEALT WITH
4MDB          SMO      5
4MY2          LDN   6  A1+HUSER(1)  
4NCL          LDN   7  ACOMMUNE7(2) 
4NX=          MOVE  6  3                   [KEEP NEXT SUPERIOR USER 
4PBW          HUNT     3,FILE,FWB          [X3 -> CURRENT FWB   
4PWG    PNAM
4QB6          LDN   7  SG                  [X7 IS WD ADDRESS IN CURRENT FWB 
4QTQ    TNAM
4R*B          ADX   3  7
4RT2          TESTNAMX 3,A1+HUSER(3),ACOMMUNE7(2),NSAM,4
4S#L                   [JUMP TO NSJM IF NOT LEXICON RECORD FOR SUPERIOR 
4SS=          SBX   3  7
4T?W          LDEX  6  ATYPE(3) 
4TRG          SLL   6  9                   [NO OF CURRENT BLOCK 
4W?6          ADX   6  7                   [SET UP HSUPUSER 
4WQQ    PP1 
4X=B          HUNT     3,FILE,FWB          [FIND FIRST FWB AGAIN FOR ORIGIONAL  
4XQ2          LDX   7  5
4Y9L    [FIND ALL INFERIORS OF CURRENT SUPERIOR USER
4YP=    PP  
4^8W          SMO      7
4^NG          ORS   6  A1+HSUPUSER(3)      [PUT SUP USER PTR IN LEX RECORD  
5286          SMO      7
52MQ          STOZ     A1+HUSER(1)         [MARK SUPERSOR AS DEALT WITH 
537B    NSU1
53M2          ADN   7  SR   
546L          SMO      FX1  
54L=          TXU   7  WNR  
555W          BCS      SIU                 [NOT END OF BLOCK
55KG    NSU2
5656          LDX   1  FPTR(1)  
56JQ          LDX   0  ATYPE(1) 
574B          BXGE  0  CACT,NSUP
57J2          SRL   0  12   
583L          SBN   0  FILE+FRB 
58H=          BNZ   0  NSU2 
592W          CALL  4  NFB                 [GET NEXT FWB
59GG          BRN      XBR  
5=26          LDN   7  SG   
5=FQ    SIU 
5=^B          ADX   1  7
5?F2          TESTNAMX 3,ACOMMUNE7(2),A1+HUSER(1),NSU,4 
5?YL          SBX   1  7
5#D=          BRN      PP                  [ANOTHER INFERIOR.FOUND  
5#XW    NSU 
5*CG          SBX   1  7
5*X6          BRN      NSU1 
5BBQ    NSAM
5BWB          SBX   3  7
5CB2          ADN   7  SR   
5CTL          SMO      FX1  
5D*=          TXU   7  WNR  
5DSW          BCS      TNAM 
5F#G          CALL  4  NFB  
5FS6          BRN      NSAM1
5G?Q          BRN      PNAM 
5GRB    NSAM1   
5H?2          LDX   1  FX1  
5HQL          TESTNAMX 3,NMAS(1),ACOMMUNE7(2),NOSUP,4   
5J==    [IF SUPERIOR IS MASTER SET POINTER TO ZERO  
5JPW          LDN   6  0
5K9G          HUNT     1,FILE,FRB   
5KP6          BRN      PP1  
5L8Q    NSUP
5LNB          ADN   5  SR   
5M82          SMO      FX1  
5MML          TXU   5  WNR  
5N7=          BCS      NSUP1               [NOT END OF BLOCK
5NLW          MFREE    FILE,FRB            [FREE SUP USERS  
5P6G          HUNT     1,FILE,FWB          [PUT FWB BEHIND OTHER FWBS   
5PL6          LDEX  4  ATYPE(1) 
5Q5Q          BZE   4  NSUP3               [FIRST TIME  
5QKB          LDX   4  ATYPE(1) 
5R52          SBN   4  1
5RJL          FIND     2,4  
5S4=    NSUP4   
5SHW          CHAIN    1,2  
5T3G          BRN      NSUP2
5TH6    NSUP3   
5W2Q          LDX   2  1
5WGB    NS    LDX   3  FPTR(2)  
5X22          CALL  4  NFB1                [NEXT FUB
5XFL          BRN      NSUP4               [WHEN FINISHED   
5X^=          LDX   2  3
5YDW          BRN      NS   
5YYG    [   
5^D6    [************************************************   
5^XQ    [  ALL POINTERS HAVE BEEN FILLED IN AND THE FRB'S FREED 
62CB    [ - NOW WE WRITE AWAY THE FWB'S AND CLOSE THE LEXICON.  
62X2    [   
63BL    STOP
63W=          HUNT     1,FILE,FWB   
64*W          BNG   1  STOP1               [ALL WRITTEN AWAY
64TG          WRITEB                       [WRITE AWAY COMPLETE BLOCK OF LEXICON
65*6          BRN      STOP                [WRITE NEXT BLOCK
65SQ    STOP1   
66#B          CLOSETOP                     [LEXICON 
66S2    [   
67?L    [   
67R=    [*************************************************  
68=W    [  NOW THAT THE LEXICON IS AVAILABLE WE CAN JOIN UP ANY 
68QG    [  RESTORED LIMBS - COULDN'T BEFORE BECAUSE THEIR SUPERIORS 
69=6    [  WEREN'T KNOWN.  JOINING UP A LIMB INVOLVES UPDATING THE NAME 
69PQ    [  RECORD TO SHOW CURRENT SIZE OF RESTORED DIRECTORY
6=9B    [  (FROM THE FCB) AND THAT IT IS INDEXED,THE BLOCKS 
6=P2    [  RECORD TO CONTAIN THE BLOCK NOS. FROM THE FCB
6?8L    [  AND REPLACING THE INDEX RECORD WITH THE FINDEXF DETAILS  
6?N=    [   
6#7W    [  IF AUTONOMOUS ACTIVITY IS PROCESSING SERIAL,NO FILES 
6#MG    [  WILL BE OPEN ELSE P. R. HAS BEEN DONE AND AT LEAST   
6*76    [  TWO FILES WILL BE OPEN - IF ONLY TWO OPEN THERE  
6*LQ    [  ARE NO MORE LIMBS TO BE JOINED UP.   
6B6B    [   
6BL2          SETNCORE 6,3,FILE,FLOCNB  
6C5L ...      SETNCORE 10,3,FILE,FABSNB 
6CK=          STOZ     AWORK1(2)
6D4W          NGN   0  1
6DJG          STO   0  AWORK2(2)
6F46    NEXTPRUSER  
6FHQ          FILENUMB 7
6G3B          BZE   7  NOPRUSELEFT  
6GH2          SBN   7  2
6H2L          BZE   7  NOPRUSELEFT  
6HG=    #UNS AMTGR  
6H^W          FILEMOVE 2,0                 [ MVE. NXT. RESTORED USER TO TOP 
6JFG    #UNS AMTGR  
6J^6    #SKI
6KDQ          FILEMOVE -1,0                [ MVE. NXT. RESTORED USER TO TOP 
6KYB          TOPFCB2  2
6LD2          MHUNT    3,FILE,FABSNB
6LXL          LDN   4  FME1(2)  
6MC=          LDN   5  A1+1(3)  
6MWW          MOVE  4  3                   [ PUT USERNME. IN FABSNB FOR OPEN
6NBG          LDN   0  4
6NW6          STO   0  A1(3)
6P*Q          TOPFCB   3
6PTB    [   
6Q*2    [*************************************************  
6QSL    [  NOW CHECK IF RESTORED LIMB IS :SYSTEM - IF IT IS 
6R#=    [  WE MUST FIRST REPLACE THE RESTORED SERIAL AND
6RRW    [  INCINDEX BY THE UP-TO-DATE VERSIONS OPEN TO THIS 
6S?G    [  ACTIVITY(JOIN THEM UP TO :SYSTEM JUST AS 
6SR6    [  :SYSTEM IS JOINED UP TO ITS SUPERIOR).   
6T=Q    [   
6TQB          TESTNAMX 3,SYST(1),FME1(3),NOWOPDIR,4 
6W=2          LDX   2  FX2  
6WPL          LDN   6  2                   [ 2 FILES - SERIAL + INCINDEX
6X9=          STO   6  AWORK2(2)           [ TO UPDATE. COUNT IS USED   
6XNW    NXTUPDATE                          [ FOR DEPTH ( 1 AND 2)   
6Y8G          BZE   6  NOWOPDIR            [ J. IF BOTH FILES UPDATED   
6YN6          MHUNT    3,FILE,FLOCNB
6^7Q    #UNS AMTGR  
6^MB          SBS   2  AWORK1(2)           [ SHOW SERIAL & INCIND. ONLINE   
7272          LDX   2  AWORK2(2)
72LL          SFCB     2,1  
736=          LDN   4  FLOC1(1) 
73KW          LDN   5  A1(3)
745G          MOVE  4  6
74K6          GETDIR   3                   [ POSTION ON ENTRY IN :SYSTEM
754Q          MFREE    FILE,ENT 
75JB          BRN      NOWDOUPDAT          [  TO UPDATE NAME + BLKS. RECS.  
7642    NOWOPDIR
76HL          LDX   2  FX2  
773=          NGN   0  1
77GW          STO   0  AWORK2(2)           [ TO SHOW NOT SERIAL OR INCINDEX 
782G          FINDNAME  
78G6          OPENDIR  XBR,GENERAL,ERASING [ OPEN SUPERIOR  
78^Q          TESTRPN2 OK,XBR   
79FB    #UNS AMTGR  
79^2    (   
7=DL          MHUNTW   3,FILE,ENT   
7=Y=          LDEX  0  ECOPS(3)            [ CHECK IF OFFLINE DIR FROM GEN RES  
7?CW          SBS   0  AWORK1(2)           [ SET MARKER IF IT IS
7?XG          BZE   0  NOWDOUPDAT          [ AND JUMP IF NO BLOCKS RECORD   
7#C6    )   
7#WQ          BACKSPACE 
7*BB    NOWDOUPDAT  
7*W2          READAGAIN                    [ UPDATE RECORD IN FRB   
7B*L          LDX   4  AWORK2(2)           [ USE COUNT FOR DEPTH IF 
7BT=          BPZ   4  USECOUNT            [ SERIAL OR INCINDEX UPDATE  
7C#W          LDN   4  1                   [ ELSE DEPTH OF DIR. IS 1
7CSG    USECOUNT
7D#6          SFCB     4,3  
7DRQ          LDX   5  FINFC(3) 
7F?B          ANDN  5  #77                 [ SEE IF INDEXED 
7FR2          LDX   7  FBLMOD(3)
7G=L          SBN   7  FBLKS-A1 
7GQ=          ADN   7  INDEXREC-A1  
7H9W          SETUPCOR 7,2,FILE,FWB        [ LONG ENOUGH FOR INDEX REC. 
7HPG          SBN   7  INDEXREC-A1  
7J96          MHUNTW   3,FILE,FRB   
7JNQ          SLL   7  15                  [ SIZE OF FILE   
7K8B          ADN   7  1                   [ AND ONLINE MARK
7KN2          STO   7  ECOPS(3)            [ PUT IN ECOPS   
7L7L          BZE   5  NOINDX              [ J. IF NOT INDEXED  
7LM=          STO   5  EINDEX(3)           [ ELSE PUT IN INDEX NO.  
7M6W          BS       3,BEINDEX           [ AND MARK AS INDEXED
7MLG    NOINDX                             [(RESTORE LEFT IT UNINDEXED) 
7N66          LDX   2  FX2  
7NKQ          LDX   0  AWORK2(2)           [ CHECK IF SER. OR INCI. 
7P5B          BPZ   0  NOPRBITS            [ J. IF N0T  
7PK2          BC       3,BETEMP            [ ELSE CLEAR TEMP BIT TO SHOW
7Q4L    NOPRBITS                           [ RESTORE SUCCESSFULL
7QJ=          NAME     3,FILE,FWB          [ THE NAME RECORD
7R3W          MHUNTW   3,FILE,FWB            [THE FIRST ONE !!! 
7RHG          NAME     3,FILE,FTAB         [ SO REPLACE IGNORES IT  
7S36          REPLACE                      [ NAME RECORD
7SGQ          MFREE    FILE,FWB            [     "  
7T2B    [   
7TG2    [************************************************** 
7T^L    [  THE RESTORED SERIAL AND INCINDEX WILL HAVE BEEN  
7WF=    [  MAPPED SO THEIR BLOCKS RECORD ARE FREEBAXED TO   
7WYW    [  AVOID A BACKING STORE LEAK. DIRECTORIES WILL 
7XDG    [  NOT HAVE BEEN MAPPED.
7XY6    [   
7YCQ          LDX   5  AWORK2(2)
7YXB          BNG   5  NOFRBWANTD          [ J. IF A DIRECTORY  
7^C2          READ                         [ BLOCKS RECORD  
7^WL          MHUNTW   3,FILE,FRB   
82B=          NAME     3,BSTB,FULLB 
82TW          FREEBAX                      [ UNWANTED BLOCKS
83*G          MFREE     BSTB,EMPTYB 
83T6          BRN      NOSTEP   
84#Q    NOFRBWANTD  
84SB          STEP                         [  PAST BLOCKS RECORD
85#2    NOSTEP  
85RL          SFCB     4,3  
86?=          MHUNTW   2,FILE,FTAB  
86QW          NAME     2,FILE,FWB          [ FOR NEW BLOCKS RECORD  
87=G          LDN   5  BSPRE(3) 
87Q6          LDN   6  ERES(2)  
889Q          SRL   7  15   
88PB          ADN   7  1                   [ MOVE IN RESIDENCE NO. AND  
8992          SMO      7                   [ BLOCK NUMBERS FROM 
89NL          MOVE  5  0                   [ FCB AND THEN   
8=8=          ADN   7  1
8=MW          STO   7  A1(2)
8?7G    #UNS AMTGR  
8?M6    (   
8#6Q          LDX   2  FX2  
8#LB          LDX   0  AWORK1(2)           [ CHECK IF OFFLINE DIR   
8*62          BZE   0  NSERTFOROFF         [ WANT TO DO INSERT IF IT IS 
8*KL    )   
8B5=          REPLACE                      [ REPLACE NEW BLOCKS RECORD  
8BJW    #UNS AMTGR  
8C4G    (   
8CJ6          BRN      REPDONE  
8D3Q    NSERTFOROFF 
8DHB          INSERT                       [ NEW BLOCKS RECORD  
8F32    REPDONE 
8FGL    )   
8G2=          SFCB     4,2  
8GFW          LDX   0  FINFC(2) 
8G^G          ANDN  0  #77  
8HF6          BZE   0  NOTIND              [ J. IF FILE NOT INDEXED 
8HYQ          NGN   6  1
8JDB          SBN   0  INDEXDIR            [ SET X6 -VE. IF DIRECTORY   
8JY2          BZE   0  NDEXDIR             [ ELSE ZERO  
8KCL          LDN   6  0                   [ (DIRECTORY WILL ALREADY BE 
8KX=    NDEXDIR                            [ INDEXED-SERIAL WILL NOT
8LBW    #UNS AMTGR  
8LWG    (   
8MB6          SMO      FX2  
8MTQ          LDX   0  AWORK1   
8N*B          BZE   0  NOTIFOFF           [ J. IF OFFLINE DIR- NO IND. REC  
8NT2    )   
8P#L          STEP  
8PS=    #UNS AMTGR  
8Q?W    NOTIFOFF
8QRG          SFCA    4,2   
8R?6          FFINDEXB 2,2  
8RQQ          MHUNTW   3,FILE,FWB   
8S=B          LDN   5  A1(3)
8SQ2          LDN   4  A1(2)               [ MOVE INDEX RECORD FROM 
8T9L          SMO      ALOGLEN(3)          [ FINDEXF TO FWB 
8TP=          MOVE  4  0
8W8W    #UNS AMTGR  
8WNG    (   
8X86          LDX   2  FX2  
8XMQ          LDX   0  AWORK1(2)           [ CHECK IF OFFLINE DIR   
8Y7B          BZE   0  NEEDNSERT           [ INSERT NEEDED IF IT IS 
8YM2    )   
8^6L          BNG   6  REPFORDIR
8^L=    #UNS AMTGR  
925W    NEEDNSERT   
92KG          INSERT                       [ INSERT INDEX RECORD FOR
9356          BRN      NOTIND              [ SERIAL - ELSE  
93JQ    REPFORDIR                          [ REPLACE DIRECTORY'S INDEX RECORD   
944B          REPLACE   
94J2    NOTIND  
953L          MFREE    FILE,FWB 
95H=          LDX   6  AWORK2(2)
962W          BNG   6  NOWCLOSE            [ J. IF JUST UPDATED DIR.
96GG          LDN   0  1                   [ ELSE REDUCE COUNT FOR  
9726          SBS   0  AWORK2(2)           [ SERIAL AND INCINDEX
97FQ          SBN   6  1                   [ AND JUMP TO DO 
97^B          BRN      NXTUPDATE           [ NEXT UPDATE
98F2    NOWCLOSE
98YL          MFREE    FILE,ENT            [ TIDY UP.   
99D=    #UNS AMTGR  
99XW          STOZ     AWORK1(2)           [ RESET OFFLINE DIR MARKER   
9=CG          CLOSETOP                     [ SUPERIOR   
9=X6          CLOSEFRBS                    [ CLOSEFRBS RESTORED DIR AS IT'S 
9?BQ          BRN      NEXTPRUSER          [ FCB IS INCOMPLETE  
9?WB    NOPRUSELEFT 
9#B2          MFREE    FILE,FLOCNB  
9#TL          UP
9**=    [   
9*SW    [   
9B#G    NOSUP GEOERR   1,NOSUPER
9BS6    XBR 
9C?Q          GEOERR   1,CREALEX
9CRB    [   
9D?2          MENDAREA BMAPGAP,K99CREALEX   
9DQL    #END
^^^^ ...622706770002