LEXIFIND5

(George Source)

Macros used: ALTLEN, BXE, BXGE, BXL, CLOSETOP, FREECORE, GEOERR, GETAFURB, HUNT, KEEPREP, MENDAREA, MFREE, MHUNT, OPEN, PHOTO, PUTREP, PUTREP2, SCURFUB, SEGENTRY, SETNCORE, STEPFBLOCK, TESTMOVE, TESTNAME, TESTRPN2, TOPFCA, TOPFCB, TOPFCB2, TRACE, UP

LEXIFIND5.txt
22FL    #OPT  K0LEXIFIND=0  
22^=    #OPT  K6LEXIFIND=K6LEXICON  
23DW    #LIS  K0LEXIFIND>K0LEXICON  
23YG    #SEG    LEXIFIND                  [ JUDY BIDGOOD
24D6                   8HLEXIFIND   
24XQ          SEGENTRY K1LEXIFIND,XFINDNAME 
25CB          SEGENTRY K2LEXIFIND,XPROPUSER 
25X2          SEGENTRY K3LEXIFIND,XPROPTEST 
26BL    [   
26W=    #OPT  APAT=0
27*W    #   
27TG    #  GIVEN A FILE/FABSNB BLOCK ,LEXIFIND EXPANDS IT TO A FULL FILE/FABSNB 
28*6    #  STARTING AT MASTER USING THE LEXICON .   
28SQ    #  THE LEXICON IS OPENED AND THE RECORD OF THE NAME CORRESPONDING TO THE
29#B    #  TOP USER NAME IN THE FABSNB IS FOUND . USING THE POINTER WORD IN THIS
29S2    #  RECORD THE SUPERIOR USERS NAME IS FOUND AND THIS NAME IS PLACED IN   
2=?L    #  THE EXPANDED FABSNB .
2=R=    #  THE PROCESS IS REPEATED UNTIL THE TOP USER NAME IN THE FABSNB IS 
2?=W    #  MASTER . 
2?QG    #   
2#=6    # THIS VERSION IS FOR USE IN CONJUNCTION WITH THE FILESTORE RING SYSTEM 
2#PQ    MASTER         10,12HMASTER 
2*9B                   12HLEXICON   
2*P2                   1,1,4HB1 
2B8L    ZCOL           4H   :   
2BN=    SETFABSNB   
2C7W          SBX   7  FX1  
2CMG          LDN   4  4
2D76          SETUPCOR 4,3,FILE,FABSNB  
2DLQ          STO   4  HDREC(3) 
2F6B          ADX   7  FX1  
2FL2          EXIT  7  0
2G5L    [   
2GK=    XPROPUSER      [ENTRY FOR PROPUSER MACRO
2H4W    [   
2HJG          STOZ     AWORK4(2)           [REMEMBER ENTRY  
2J46          CALL  7  SETFABSNB
2JHQ          LDN   4  CPREFIX(2)   
2K3B          BRN      XMERGE   
2KH2    [   
2L2L    XPROPTEST      [ENTRY FOR PROPTEST MACRO
2LG=    [   
2L^W          STO   1  AWORK4(2)           [SET +VE TO REMEMBER ENTRY   
2MFG          CALL  7  SETFABSNB
2M^6          TOPFCB2  2
2NDQ          LDN   4  FME1(2)  
2NYB    XMERGE  
2PD2          LDN   5  HDREC+1(3)   
2PXL          MOVE  4  3
2QC=          BRN      ZMERGE   
2QWW    [   
2RBG    XFINDNAME      [ENTRY FOR FINDNAME MACRO
2RW6    [   
2S*Q          NGS   1  AWORK4(2)           [SET -VE TO REMEMBER ENTRY   
2STB          HUNT     3,FILE,FABSNB       [X3-> TO FABSNB  
2T*2    ZMERGE  
2TSL          PHOTO    6
2W#=    #SKI  K6LEXIFIND>599-599
2WRW    (   
2X?G          TRACE    A1+1(3),LEXIFIND 
2XR6          TRACE    6,LEXINBL1   
2Y=Q    )   
2YQB          TESTNAME 3,MASTER+1(1),A1+1(3)
2^=2          BZE   7  ZSTART              [J IF DOES NOT START WITH MASTER 
2^PL          KEEPREP  7,OK 
329=          BRN      ZUP  
32NW    ZSTART  
338G    #  OPEN LEXICON CHECKING WHETHER MASTER OPEN
33N6          SETNCORE 10,2,FILE,FABSNB    [GET CORE FOR BLOCK TO OPEN LEXICON  
347Q          ADN   1  MASTER   
34MB          ADN   2  A1   
3572          MOVE  1  10                  [SET UP FABSNB   
35LL          OPEN     ZBRK,READR          [OPEN LEXICON FOR READING
366=          TESTRPN2 OK,ZBRK  
36KW          MFREE    FILE,FABSNB  
375G    #  FIND THE USER NAME RECORD
37K6          LDN   5  0
384Q          TOPFCB2  2
38JB          LDX   0  FBLMOD(2)           [CHECK THAT LEXICON  
3942          SBN   0  FBLKS-A1            [HAS SOME BLOCKS 
39HL          BNZ   0  ZBAK 
3=3=          GEOERR   1,EMPTYLEX   
3=GW    ZBAK
3?2G          SCURFUB  2,,ZGET  
3?G6          ADN   5  1                   [ADD ONE TO BLOCK COUNT  
3?^Q    ZTW 
3#FB          TESTMOVE 6,Z2 
3#^2          PHOTO    6
3*DL    #SKI  K6LEXIFIND>599-599
3*Y=          TRACE    6,LEXINBL2   
3BCW          HUNT     3,FILE,FABSNB
3BXG    Z2    LDN   1  127                 [LOAD COUNT OF RECORDS IN BLOCK  
3CC6    ZRTN  ADN   2  4                   [MOVE TO NEXT RECORD 
3CWQ          TESTNAME 3,GLUSER(2),A1+1(3)  
3DBB          BNZ   7  ZFD                 [J IF USER NAMES EQUAL   
3DW2          BCT   1  ZRTN                [J IF MORE RECORDS TO READ   
3F*L          SBN   2  508                 [X2-> TO FRB 
3FT=          STEPFBLOCK   ,ZNU            [STEP READ PTRS ON A BLOCK   
3G#W          BRN      ZBAK                [J TO READ NEW BLOCK 
3GSG    ZNU 
3H#6          KEEPREP  7,NOUSER            [USER NOT FOUND BEFORE E.O.F.
3HRQ          BRN      ZFREE
3J?B    ZGET
3JR2          GETAFURB                     [READ NEXT BLOCK FROM BACKING STORE  
3K=L          BRN      ZBAK 
3KQ=    ZFD 
3L9W          SBN   5  1                   [SUBTRACT ONE FROM BLOCK COUNT   
3LPG    #  FIND POINTER TO SUPUSER  
3M96    ZFN   LDX   7  GSUPUSER(2)         [LOAD POINTER WORD   
3MNQ          BZE   7  ZLEN                [J IF REACHED MASTER 
3N8B          LDX   0  7
3NN2          SRL   0  9                   [SHIFT TO GET BLOCK POINTER  
3P7L          ANDN  0  #777                [MASK OUT REST OF WORD   
3PM=    #  FIND BLOCK OF SUPUSER
3Q6W          BXE   0  5,ZLEN              [J IF SAME BLOCK AS IN CORE  
3QLG          STO   0  5                   [STORE -> TO NEXT BLOCK TO BE READ IN
3R66          BNG   0  ZST                 [J IF ORIGINAL -> WAS ZERO   
3RKQ          ADN   0  FBLKS               [ADD FBLKS TO GIVE ->
3S5B    ZST   TOPFCA   2
3SK2          STO   0  FREADBLOCK(2)
3T4L    ZSCU
3TJ=          SCURFUB  2,,ZNOB             [GET PTR TO CURRENT BLOCK
3W3W    #  LENGTHEN FABSNB  
3WHG    ZLEN  TESTMOVE 6,Z3 
3X36          PHOTO    6
3XGQ    #SKI  K6LEXIFIND>599-599
3Y2B          TRACE    6,LEXINBL3   
3YG2          HUNT     3,FILE,FABSNB
3Y^L    Z3    LDX   6  ALOGLEN(3)   
3^F=          ADN   6  6                   [ADD SIX TO LOGICAL LENGTH   
3^YW          ALTLEN   3,6  
42DG    # MOVE SIX WORD USER NAMES DOWN FABSNB  
42Y6          PHOTO    6
43CQ    #SKI  K6LEXIFIND>599-599
43XB          TRACE    6,LEXINBL4   
44C2          HUNT     3,FILE,FABSNB
44WL    Z4    LDN   0  6
45B=          ADS   0  A1(3)               [ADD 6 TO RECORD HEADER  
45TW          LDX   1  ALOGLEN(3)          [LOAD NEW LOGICAL LENGTH 
46*G          SBN   1  10   
46T6          BZE   1  ZONLY               [J IF ONLY ONE USER NAME AT PRESENT  
47#Q          LDN   2  A1+3(3)             [-> TO LAST WORD OF USER NAME
47SB    ZNAGA SMO      1                   [LOAD IN USER NAME CHARS STARTING
48#2          LDX   0  0(2)                [AT BOTTOM   
48RL          SMO      1
49?=          STO   0  6(2)                [STORE SIX PLACES FURTHER DOWN   
49QW          BCT   1  ZNAGA
4==G    #  MOVE TOP USER NAME DOWN FABSNB   
4=Q6    ZONLY LDN   0  A1+1(3)             [ADDRESS OF CURRENT USER 
4?9Q          LDN   1  A1+5(3)             [ADDRESS TO MOVE TO  
4?PB          MOVE  0  3
4#92          LDX   1  FX1  
4#NL          LDX   0  ZCOL(1)             [LOAD COLON  
4*8=          STO   0  A1+4(3)             [STORE IN FIRST WORD OF USER NAME
4*MW          LDN   0  0
4B7G          STO   0  A1+9(3)             [STORE ZERO IN SIXTH WORD
4BM6          BPZ   7  Z5                  [J IF NOT PSEUDO-USER
4C6Q          LDCT  0  #400                [LOAD PSUEDO-USER BIT
4CLB    Z5    STO   0  A1+8(3)  
4D62    #  MOVE IN NEW THREE WORD USER NAME TO FABSNB   
4DKL    ZTRY  SCURFUB  2,,ZGON  
4F5=          BZE   7  ZMAST               [J IF REACHED MASTER 
4FJW          ANDN  7  #777                [GET ADDRESS POINTER IN SUPUSER BLOCK
4G4G          ADS   7  2                   [ADD SUPUSER ADDRESS POINTER 
4GJ6          LDN   0  A1+HUSER(2)  
4H3Q          LDN   1  A1+1(3)  
4HHB          MOVE  0  3
4J32          BRN      ZFN  
4JGL    ZNOB
4K2=          TOPFCB   2                   [CHECK THAT NEXT BLOCK   
4KFW          LDN   0  FBLKS-A1            [WILL NOT CAUSE READING  
4K^G          ADX   0  5                   [BEYOND E.O.F.   
4LF6          SBN   0  1
4LYQ          BXL   0  FBLMOD(2),ZRED   
4MDB          GEOERR   1,LEXIBLOK   
4MY2    ZRED
4NCL          GETAFURB                     [READ NEXT BLOCK FROM BACKING STORE  
4NX=          BRN      ZSCU 
4PBW    ZGON
4PWG          GETAFURB  
4QB6          HUNT     3,FILE,FABSNB
4QTQ          BRN      ZTRY 
4R*B    #  MOVE IN MASTER   
4RT2    ZMAST LDN   0  MASTER+1(1)  
4S#L          LDN   1  A1+1(3)  
4SS=          MOVE  0  3
4T?W    ZEN   KEEPREP  7,OKAY   
4TRG    ZFREE   
4W?6          CLOSETOP                     [CLOSE LEXICON   
4WQQ    ZUP 
4X=B          LDX   2  FX2  
4XQ2          LDX   0  AWORK4(2)
4Y9L          BPZ   0  SPLIT               [J UNLESS FINDNAME   
4YP=    PUTREP  
4^8W          PUTREP2  7
4^NG    #SKI  K6LEXIFIND>599-599
5286          TRACE    7,LEXIEND
52MQ          UP
537B    SPLIT   
53M2          BNZ   7  PUTREP              [PASS NON-OK REPLY UP
546L          MHUNT    3,FILE,FABSNB
54L=          LDN   4  HDREC+4(3)          [SEARCH LIMIT
555W          LDN   1  HDREC(3) 
55KG          ADX   1  0(1) 
5656          SBN   1  2                   [ADDRESS OF WORD 5 OF LAST USERNAME  
56JQ    PSEUDO  
574B          LDX   0  0(1) 
57J2          BPZ   0  REAL                [J UNLESS PSEUDO 
583L          KEEPREP  7,PSEUDO 
58H=          SBN   1  6
592W          BXGE  1  4,PSEUDO 
59GG          GEOERR   1,FORMUSER   
5=26    REAL
5=FQ          SBN   1  3
5=^B          ADN   2  ACOMMUNE1
5?F2          MOVE  1  3
5?YL          FREECORE 3
5#D=          BRN      PUTREP   
5#XW    ZBRK
5*CG          GEOERR   1,LEXIFIND          [GEOERR BREAK IN ON OPENING LEXICON  
5*X6                                       [       OR REPLY FROM OPEN NOT OK
5BBQ    ZGR1
5BWB          GEOERR   1,LEXLOST           [GEOERR LEXICON RECORD CORRUPTED 
5CB2    ZCURRUSER   
5CTL          GEOERR   1,CURRUSER   
5D*=    [   
5DSW          MENDAREA 20,K99LEXIFIND   
5F#G    #END
^^^^ ...24506577000200000000
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1