{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LEXIFIND5)}}
====== LEXIFIND5 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETAFURB|GETAFURB]], [[george:macro:HUNT|HUNT]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:OPEN|OPEN]], [[george:macro:PHOTO|PHOTO]], [[george:macro:PUTREP|PUTREP]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:SCURFUB|SCURFUB]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:STEPFBLOCK|STEPFBLOCK]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TESTNAME|TESTNAME]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCA|TOPFCA]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]]
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