{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: GETDIRX860)}} ====== GETDIRX860 ====== (George Source) **Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:ANSOK2|ANSOK2]], [[george:macro:BXU|BXU]], [[george:macro:FREETAB|FREETAB]], [[george:macro:GEOERR|GEOERR]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JFNZ|JFNZ]], [[george:macro:JMBAC|JMBAC]], [[george:macro:KREPC|KREPC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:NEXTENT|NEXTENT]], [[george:macro:PTREP2|PTREP2]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:REWIND|REWIND]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SETUPTAB|SETUPTAB]], [[george:macro:SKIP|SKIP]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TABSET|TABSET]], [[george:macro:TABULATE|TABULATE]], [[george:macro:TRACEIF|TRACEIF]], [[george:macro:UP|UP]] 22FL ... SEG GETDIRX,860,SECTION FILE,OPEN 22^= ...[ 23DW ...[ 23YG ... SEGENTRY K1GETDIRX 24D6 ...[ 25CB # THIS ROUTINE IS ENTERED FROM LOCATE TO FIND A DIRECTORY ENTRY IN 25X2 # AN OPEN DIRECTORY VIA A SERIAL SEARCH. THE INPUT FLOCNB HAS ALREAD 26BL # BEEN EXAMINED BY LOCATE AND RELEVANT BITS SET IN A MARKER WORD 26W= # PASSED DOWN FROM LOCATE IN ACOMMUNE2. 27*W # USES OF AWORK WORDS :- 27TG # AWORK1 - DURING LATEST GEN. SEARCH, HOLDS BEST YET. ALSO HOLDS INF 28*6 # OVER COORDINATION WHEN WE ALTLEN THE GLIST BLOCK 28SQ # AWORK2 - CONTAINS A NUMBER OF SWITCHES AND MARKERS. 29#B # B0 : NOTICE ERASEES (GETDIR2 & 3) 29S2 # B1 : POSITION ON BLOCKS RATHER THAN TRAPS. 2=?L # B2 : CURRENTLY UNUSED. 2=R= # B3 : USERNAME IN FLOCNB. 2?=W # B4 : SEARCHING BY TSN. 2?QG # B5 : GETDIR4 - SET UP LIST OF TSN'S IN AONBS/GLIST BLOCK 2#=6 # & CORRESPONDING STACK OF TABS. 2#PQ # B6 : LOOK FOR 'ANY' GENERATION. 2*9B # B7 : TAB BLOCK SET UP AND WE HAVE FOUND A NAME MATCH AND 2*P2 # A TSN HAS BEEN PUT IN THE AONBS/GLIST BLOCK. 2B8L # B8 : CURRENTLY UNUSED. 2BN= # B9 : ZERO GENERATION SPECIFICALLY REQUESTED.(B2 IN FLOCNB 2C7W # B10: REQUIRED ENTRY IS A WORKTAPE NAME. 2CMG # AWORK3 - GENERAL PURPOSE WORK WORD. 2D76 # AWORK4 - REPLY WORD FOR STREAMS. 2G5L STOZ AWORK4(2) [INITIALIZE SUBSID. REPLY FOR STREAMS 2GK= MHUNT 1,FILE,FLOCNB 2H4W LDCT 0 #40 2HJG ANDX 0 AWORK2(2) 2J46 BNZ 0 USER [J IF USERNAME IN FLOCNB. 2JHQ ... TRACEIF K6GETDIRX,199,399,A1(1),GDIRLOC 2KH2 LDX 4 A1(1) [PICK UP LOCAL NAME. 2L2L LDX 5 A1+1(1) 2LG= LDX 6 A1+2(1) 2L^W BRN TRACK 2MFG USER 2M^6 ... TRACEIF K6GETDIRX,199,399,A1+1(1),GDIRUSE 2NYB LDX 4 A1+1(1) [PICK UP USERNAME. 2PD2 LDX 5 A1+2(1) 2PXL LDX 6 A1+3(1) 2QC= TRACK 2QWW # X4,X5,X6 AND AWORK2 NOW HAVE THE VALUES USED THROUGHOUT THE CHAPTER. 2RBG # NOW SEE IF THIS IS A SERIAL NUMBER SEARCH AND IF IT IS PROCEED. 2RW6 LDCT 0 #20 [THIS BIT INDICATES TSN SEARCH. 2S*Q ANDX 0 AWORK2(2) 2STB BZE 0 NOTSN [IF NOT USE OTHER ROUTINE. 2T*2 BZE 4 ZNAME 2TSL LDX 0 BIT10 2W#= ANDX 0 AWORK2(2) 2WRW BNZ 0 XRSTENT [J IF WORKTAPE NAME IN FLOCNB. 2X?G BRN NOWTAB 2XR6 ZNAME 2Y=Q REWIND 2YQB STEP 2^=2 NOWTAB 2^PL SETUPTAB [STORE POSITION OF READ POINTERS FOUN 329= TABSET [LOCATE,FOR ADJUSTMENT IF NOFILE. 32NW XRSTENT 338G CALL 7 RSTENT [GET FIRST DIRECTORY ENTRY. 33N6 BRN XENTRY 347Q NEXTENTA 34MB CALL 7 NEXTENT [X3 -> NEXT ENTRY. 3572 XENTRY [X1 -> FLOCNB 35LL BZE 3 NOTSN1 [J IF END OF FILE 366= LDX 0 ESERN(3) [IS THIS A FILE? 36KW BZE 0 NEXTENTA [IF SO, NO NEED TO CHECK FOR VRYWRONG 375G [AS LOCATE CHECKS FOR THIS. 37K6 SBX 0 A1+7(1) [COMPARE SERIAL NUMBER 384Q BNZ 0 NEXTENTA [IF WRONG GET NEXT ENTRY. 38JB CALL 0 NM1 [CALL NAME CHECKIN 3942 BRN NDISAGREE [EXIT 0,REPORT A DISAGREEMENT 394^ ... LDX 0 BIT10 395Y ... ANDX 0 AWORK2(2) 396X ... BNZ 0 OK 397X ... FREETAB 39?S ... MHUNT 1,FILE,FLOCNB 39CP ...[ 39HL [EXIT PLUS 1 REPORTS A MATCH. DONT CHECK DETAILS IN SERIAL NUMBER CASE. 3=3= [I.E. WE DO NOT CHECK SUCH THINGS AS GENERATION,REEL,&=LANGUAGE 3=GW [FOR MAG.TAPE FILES WHERE WE HAVE A TSN & LOCAL NAME MATCH 3?2G [ 3?G6 [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 3?^Q [ 3#FB OK 3#^2 [WHEN THE ENTRY IS FOUND, THE LOCAL NAME BLOCK IS UPDATED FROM THE ENTRY 3*DL [THE ENTRY IS LEFT IN CORE, AND THE FILE IS POSITIONED ACCORDING TO THE 3*Y= [MACRO USED. 3BCW [WE ALSO IN GETDIR 4 CASE SET A TAB MARKING OUR POSITION & GO FOR 3BXG [ANOTHER TSN 3CC6 LDX 0 EREELN(3) [COPY REEL NUMBER INTO FLOCNB. 3CWQ STO 0 A1+3(1) 3DBB LDX 0 EGENN(3) [COPY GENERATION 3DW2 STO 0 A1+4(1) 3F*L LDX 0 ELANN(3) [COPY LANGUAGE 3FT= STO 0 A1+5(1) 3G#W LDN 4 ELOC1N(3) [COPY NAME IN CASE - 3GSG LDN 5 A1(1) [ONLY SERIAL NUMBER WAS GIVEN 3H#6 MOVE 4 3 3HRQ ZOK 3J?B READAGAIN [[GET NAME RECORD IN CORE 3JR2 MHUNTW 1,FILE,FRB 3K=L NAME 1,FILE,ENT [NAME IT APPROPRIATELY. 3KQ= LDCT 0 #200 3L9W ANDX 0 AWORK2(2) [J IF POS. ON BLOCKS REQUESTED. 3LPG BNZ 0 UP 3M96 LDEX 4 ECOPS(1) [IF GETDIR 1 OR GETDIR3 3MNQ BZE 4 UP [POSN. AFTER BLOCKS RECORD 3N8B T974 3NN2 STEP [SKIP PAST COPIES RECORD(S) 3P7L BCT 4 T974 3PM= UP 3Q6W LDX 0 AWORK4(2) [STORE SUBSIDIARY REPLY. 3QLG PTREP2 0 3R66 ANSOK2 3RKQ UP 3S5B [GETDIR 4 - ENTRY FOUND.ADD A T.S.N. TO AONBS/GSLIST BLOCK, ADD A TAB TO 3SK2 [STACK,AND SET UP TAB BLOCK IF BIT 6 OF X7 NOT SET 3T4L YGET4 3TJ= LDX 0 ESERN(3) [STORE T.S.N. IN 3W3W STO 0 AWORK3(2) [AWORK3 3WHG ... TRACEIF K6GETDIRX,99,399,0,SN 0NLIN 3XGQ LDCT 0 #2 3Y2B ANDX 0 AWORK2(2) 3YG2 BNZ 0 TAB4IS [J IF TAB BLOCK SET UP 3Y^L SETUPTAB 3^F= LDCT 0 #2 [SET SWITCH 3^YW ORS 0 AWORK2(2) 42DG TAB4IS 42Y6 TABSET [SET TAB 43CQ MHUNTW 3,AONBS,GLIST [LIST BLOCK 43XB LDX 0 ALOGLEN(3) 44C2 STO 0 A1(3) [COUNT OF T.S N'S 44WL ADN 0 1 45B= STO 0 AWORK1(2) [NEW LENGTH OF LIST BLOCK 45TW ALTLEN 3,AWORK1(2) ,AONBS,GLIST [LDNGTHEN LIST BLOCK 46*G MHUNTW 3,AONBS,GLIST [LIST BLOCK 46T6 ADX 3 ALOGLEN(3) 47#Q LDX 0 AWORK3(2) 47SB STO 0 A1-1(3) 48#2 STEPAGAIN [RESET X3 -> RECORD 48RL BRN NEXTENTC [GO & GET ANOTHER ENTRY 49?= VRYWRONG 49QW [THE ENTRANT FOUND IS ENTIRELY THE WRONG SORT. 4==G LDCT 0 #2 4=Q6 ANDX 0 AWORK2(2) [TAB BLOCK SET UP? 4?9Q BZE 0 VROUT 4?PB FREETAB [NO 4#92 VROUT 4#NL SETREP2 VRYWRONG 4*8= UP 4*MW NDISAGREE 4B7G FREETAB 4BM6 SETREP2 DISAGREE [REPORT IF SERIAL MATCHES BUT 4C6Q UP [NAME DOESNT. 4CLB [ 4D62 [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 4DKL [ 4F5= [EXCEPT IN THE OK & NOFILE CASES THE DETAILS OF THE FLOCNB ARE NOT 4FJW [UPDATED. 4G4G NOFILE1 4GJ6 [CHECK 1ST THAT IT'S NOT GETDIR 4. IF IT IS,CHECK IF WE'VE FOUND A TSN 4H3Q [WITH A NAME MATCH. IF SO EXIT WITHOUT UPDATING THE FLOCNB 4HHB LDCT 0 #10 4J32 ANDX 0 AWORK2(2) 4JGL BNZ 0 ZENDG4 [J IF GETDIR 4 4K2= T53Q 4KFW LDX 0 A1+5(1) [PICK UP LANGUAGE 4K^G BNZ 0 OUT [IF ZERO, 4LF6 LDX 0 ACES [CHANGE IT 4LYQ STO 0 A1+5(1) [TO SPACES 4MDB OUT 4MY2 LDX 0 BIT10 4NCL ANDX 0 AWORK2(2) 4NX= BZE 0 ZOUT 4PBW ACROSS GETDIR,9 4PWG ...ZOUT 4QB6 ... JBC YOUT,1,BFABTSN [J IF NOT SEARCHING BY TSN 4RT2 TABULATE [RE-SET READ POINTERS TO POSITION 4S#L FREETAB [FOUND BY LOCATE. 4SS= YOUT 4T?W SETREP2 NOFILE 4TRG UP 4W?6 ZENDG4 4WQQ ... TRACEIF K6GETDIRX,99,399,7,GDE4END 4XQ2 LDCT 0 #2 4Y9L ANDX 0 AWORK2(2) 4YP= BNZ 0 UP [EXIT IMMEDIATELY IF TAB BLOCK SET UP 4^8W BRN T53Q 4^NG [ 5286 [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 52MQ [ 537B NOTSN1 53M2 BZE 4 OUT 546L NOTSN 54L= [IF NO TSN WE MAY NEED TO SEARCH FOR LATEST GENERATION. 555W LDCT 0 #40 55KG ANDX 0 AWORK2(2) 5656 BNZ 0 USERHAP [J IF USERNAME 56JQ LDCT 0 #600 [B0,B1 574B ANDX 0 A1+4(1) [J IF LATEST OR LATEST PLUS/MINUS N 57J2 BZE 0 POSGEN [GEN. NOT REQUESTED. 58H= [ FIND HIGHEST GENERATION. USE AWORK1 TO HOLD BEST YET. 592W STOZ AWORK1(2) 59GG CALL 7 RSTENT [GET FIRST ENTRY. 5=26 BRN TENTRY 5=FQ NEXTENTB 5=^B CALL 7 NEXTENT [X3 -> NEXT ENTRY 5?F2 TENTRY [X1 -> FLOCNB 5?YL BZE 3 YESFIN [EXIT IF END OF DIRECTORY 5#D= CALL 0 NM2 [CHECK LOCAL NAME 5#XW ... BRN NEXTENTB [GET NEXT ENTRY UNLESS MATCH. 5*CG ... JBC SYNOK,1,BFABLIB [J IF NOT REQUESTING A TAPE 5*X6 ... JBC VRYWRONG,3,BNLIB [ERROR IF FOUND FILE OR EXOFILE 5BBQ ...SYNOK 5G?Q CALL 7 XCHSTR [STREAMS CHECKING. 5GRB LDCT 0 1 5H?2 ORS 0 AWORK1(2) [INDICATES A GENERATION HAS BEEN FOUN 5HQL LDX 7 BIT10 5J== ANDX 7 AWORK2(2) 5JPW BZE 7 NOTWORK [J IF NOT A WORKTAPE 5K9G LDX 0 AWORK1(2) 5KP6 ANDN 0 #7777 5L8Q SBX 0 EWKLEVELN(3) 5LNB BPZ 0 NEXTENTB [BRANCH IF NO BETTER. 5M82 SBS 0 AWORK1(2) [AWORK1 HOLDS NEW GEN. 5MML BRN NEXTENTB [TRY AGAIN. 5N7= NOTWORK 5NLW LDX 0 EGENN(3) [STORE HIGHEST GEN FOUND IN AWORK1. 5P6G ORS 0 AWORK1(2) 5PL6 YESFIN 5Q5Q [ HIGHEST GENERATION SEARCH COMPLETE,SO UPDATE THE FLOCNB ACCORDINGLY. 5QKB LDX 0 A1+4(1) 5R52 BPZ 0 STUFF [LATEST OR PLUS CASE JUMPS. 5RJL NGX 0 0 [MINUS CASE (B0 SET) REVERSE N. 5S4= STUFF 5SHW SLL 0 2 [TIDY UP THE TOP TWO BITS OF THE 5T3G SRA 0 2 [GENERATION ADDENDUM, 5TH6 STO 0 A1+4(1) [AND STORE IT IN A1+4 5WGB LDCT 0 1 5X22 ANDX 0 AWORK1(2) [J IF HIGHEST GENERATION FOUND. 5XFL BNZ 0 YESFOUND 5X^= NGX 0 A1+4(1) 5YDW BPZ 0 NOFILE1 [J IF N ZERO, OR 'HIGHEST -N'REQUESTE 5YYG LDX 0 BIT10 5^D6 ANDX 0 AWORK2(2) [GEN 'N' FOR WORKTAPES. 5^XQ BNZ 0 NOFILE1 62CB LDN 0 1 62X2 SBS 0 A1+4(1) [MTS START AT GEN 0 63BL BRN NOFILE1 [GO AND UPDATE REEL & LANE ,THEN 63W= [TO EXIT WITH NOFILE REPLY 64*W YESFOUND 64TG [A GENERATION HAS BEEN FOUND. ADJUST IT ACCORDING TO N, CHECK THAT THE 65*6 [RESULT IS PERMISSIBLE, THEN SEARCH FOR IT. 65SQ LDX 3 AWORK1(2) [NUMBER OF LATEST GENERATION. 66#B ANDN 3 #7777 66S2 ADX 3 A1+4(1) [ADD + OR - N. 67?L BNG 3 WRGEN [NEGATIVE GENERATION IS NAUGHT. 67R= LDX 0 3 [CALCULATED GENERATION MUST BE 68=W SRL 0 12 [BETWEEN -1 AND 4096 68QG ... BNZ 0 WRGEN [IF NOT REPORT AN ERROR 69=6 ... JFNZ STOGEN,1,FFABTYPE [J IF NOT REQUESTING FILE 6=P2 BZE 3 WRGEN [ZERO GEN OF FILE IS WRONG 6?8L STOGEN 6?N= NGX 0 A1+4(1) 6#7W STO 3 A1+4(1) [PUT GENERATION INTO FLOCNB. 6#MG BNG 0 NOFILE1 [NOFILE CASE IF 'HIGHEST + N' REQUEST 6*76 BRN POSGEN 6*LQ [ 6B6B [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 6BL2 [ 6C5L POSGEN 6CK= [ENTRY TO THE PREVIOUS ROUTINE MAY HAVE BEEN BEFORE ANY SEARCH OR AFTER 6D4W ...[A FRUITLESS TSN SEARCH. TEST WHICH AND REPORT NOFILE IN LATTER CASE. 6DJG ... JBS NOFILE1,1,BFABTSN [J IF TSN IN FLOCNB 6G3B [GENERATION NUMBER FIXED,NOW FIND THE ENTRY 6GH2 CALL 7 RSTENT [GET THE FIRST ENTRY. 6H2L BRN YENTRY 6HG= NEXTENTC 6H^W CALL 7 NEXTENT [X3 -> NEXT ENTRY. 6JFG YENTRY [X1 -> FLOCNB 6J^6 BZE 3 NOFILE1 [IF FINISHED REPORT NOFILE. 6KDQ CALL 0 NM2 [CHECK LOCAL NAME. 6KYB ... BRN NEXTENTC [IF WRONG,TRY THE NEXT. 6LD2 ... JBC SYNOK1,1,BFABLIB [J IF NOT REQUESTING A TAPE 6LXL ... JBC VRYWRONG,3,BNLIB [ERROR IF FOUND FILE OR EXOFILE 6MC= ...SYNOK1 6R#= CALL 7 XCHSTR [STREAMS CHECKING. 6RRW LDCT 0 #4 6S?G ANDX 0 AWORK2(2) 6SR6 BNZ 0 NOSGEN [ J IF 'ANY' GENERATION. 6T=Q LDX 0 A1+4(1) [CHECK THAT THE GENERATION MATCHES 6W=2 LDX 7 BIT10 6WPL ANDX 7 AWORK2(2) 6X9= BNZ 7 WKGEN [J IF WORKTAPE 6XNW SBX 0 EGENN(3) 6Y8G ZTRGN 6YN6 BNZ 0 NEXTENTC [IF NOT GET NEXT ENTRY. 6^7Q NOSGEN 6^MB LDX 0 A1+5(1) [CHECK LANGUAGE. 7272 BZE 0 REEL [IF ANY SKIP & COMPARE REEL NUMBERS. 72LL SBX 0 ELANN(3) [OTHERWISE COMPARE LANGUAGE WORDS. 736= BNZ 0 NEXTENTC 73KW REEL 745G LDX 0 A1+3(1) [REEL NUMBER FROM FLOCNB 74K6 SBX 0 EREELN(3) [COMPARE REEL NUMBERS. 754Q BNZ 0 NEXTENTC 7642 LDCT 0 #10 76HL ANDX 0 AWORK2(2) 773= BNZ 0 YGET4 [J IF GETDIR4. 77GW BRN OK 782G WKGEN 78G6 SBX 0 EWKLEVELN(3) [WORKTAPE LEVEL. 78^Q BRN ZTRGN 79FB WRGEN 79^2 [THE GENERATION GIVEN OR CALCULATED TURNS OUT TO BE WRONG 7=DL LDCT 0 #2 7=Y= ANDX 0 AWORK2(2) 7?CW BZE 0 STREP 7?XG FREETAB 7#C6 STREP 7#WQ SETREP2 WRGEN 7*BB UP 7*W2 [ 7B*L [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 7BT= [ 7C#W # THE FOLLOWING SUBROUTINE IS USED TO GET THE FIRST OR NEXT ENTRY IN 7CSG # THE DIRECTORY. ON EXIT X3 -> ENTRY AND X1 -> FLOCNB. 7D#6 RSTENT 7DRQ SBX 7 FX1 [DECREMENT LINK. 7F?B REWIND 7FR2 BRN STEP 7G=L NEXTENT 7GQ= SBX 7 FX1 7H9W NEXTENT1 7HPG LDEX 1 ECOPSN(3) [COPIES (=1 OR 0) 7J96 ADX 1 ENUSEN(3) [NO. OF TRAPS RECORD 7JNQ JBC NOIX,3,BNINDEX [J IF NO INDEX RECORD. 7K8B ADN 1 1 7KN2 NOIX 7L7L #SKI K6GETDIRX>99$99 7LM= STO 1 AWORK3(2) [NO OF RECS TO BE SKIPPED. 7M6W BZE 1 NOSKIPMK5 7MLG SKIP ,0(1) 7N66 NOSKIPMK5 7NKQ STEP 7P5B STEP [X3 -> NEW DIRENT 7PK2 BZE 3 OUTGD [EXIT IF END OF DIRECTORY. 7R3W LDEX 0 FRH(3) [PICK UP THE RECORD HEADER. 7RHG SBN 0 FRDE [CHECK RIGHT FOR FIRST RECORD OF ENT. 7S36 BZE 0 UNBENT 7T2B GEOERR BRIEFPM,FILEBENT 7TG2 UNBENT 7WF= LDX 0 AWORK2(2) 7WYW BNG 0 OUTGD [X0 -VE MEANS DONT IGNORE ENTRIES TO 7XDG [BE ERASED. 7XY6 JBS NEXTENT1,3,BNERASE [J IF ENTRY MARKED TO BE ERASED. 7YCQ OUTGD 7YXB MHUNT 1,FILE,FLOCNB [X1 -> FLOCNB 7^C2 ADX 7 FX1 [INCREMENT LINK 7^WL EXIT 7 0 82B= [THE FOLLOWING SUBROUTINE IS ENTERED WITH X3 -> A DIRECTORY ENTRY AND 82TW [X4,X5&X6 CONTAINING A LOCAL NAME. IT EXITS PLUS 1 IF THE LOCAL NAME 83*G [MATCHES AND PLUS 0 OTHERWISE. ENTRY 1 ALSO EXITS PLUS 1 IF X4 IS ZERO. 83T6 [OR IF ELOC1-A1(3) IS ZERO 84#Q NM1 84SB BZE 4 XIT 85#2 LDX 7 BIT10 85RL ANDX 7 AWORK2(2) 86?= BNZ 7 NM3 [J IF WORKTAPE. 86QW LDX 7 ELOC1N(3) 87=G BNZ 7 NLOC 87Q6 XIT 889Q EXIT 0 1 88PB NM2 8992 LDX 7 BIT10 89NL ANDX 7 AWORK2(2) 8=8= BNZ 7 NM4 [J IF WORKTAPE 8=MW NLOC 8?7G TXU 4 ELOC1N(3) 8?M6 TXU 5 ELOC2N(3) 8#6Q BXU 6 ELOC3N(3),(0) 8#LB BRN XIT 8*62 NM3 8*KL LDX 7 EWKNAME1N(3) 8B5= BZE 7 XIT 8BJW NM4 8C4G TXU 4 EWKNAME1N(3) 8CJ6 TXU 5 EWKNAME2N(3) 8D3Q BXU 6 EWKNAME3N(3),(0) 8DHB EXIT 0 1 8F32 # 8FGL # LITTLE S/R FOR STREAMS 8G2= # 8GFW XCHSTR 8G^G LDX 0 A1+5(1) 8HF6 BZE 0 X 8HYQ BXU 0 ELANN(3),(7) [EXIT IF WRONG LANGUAGE GIVEN. 8JDB X 8JY2 JMBAC Y,3,BNMDF,BNMULT [J IF NOT MDF OR MULTIFILE COMPONENT. 8KCL KREPC 0,MULTI [THERE IS A MULTI-FILE 8KX= BRN Z 8LBW Y KREPC 0,SINGLE [THERE IS A SINGLE FILE 8LWG Z ORS 0 AWORK4(2) 8MB6 EXIT 7 0 8MTQ # 8N*B # ROUTINES FOR DEALING WITH USERNAMES 8NT2 # 8P#L USERHAP 8PS= CALL 7 RSTENT [GET FIRST ENTRY IN FLOCNB 8Q?W BRN ZENTRY 8QRG NEXTENTD 8R?6 CALL 7 NEXTENT [X3 -> NEXT ENTRY. 8RQQ ZENTRY [X1 -> FLOCNB 8S=B BZE 3 OUT 8SQ2 TXU 4 EUSE1N(3) 8T9L TXU 5 EUSE2N(3) 8TP= BXU 6 EUSE3N(3),NEXTENTD [J IF USERNAME FAILS TO MATCH. 8W8W LDX 0 ELANN(3) [COPY LANGUAGE INTO FLOCNB. 8WNG STO 0 A1+5(1) 8X86 LDN 0 ELOC1N(3) [MOVE ACROSS NAME,GEN AND REEL 8XMQ LDN 1 A1(1) 8Y7B MOVE 0 5 8YM2 BRN ZOK 8^6L MENDAREA 50,K99GETDIRX 8^L= #END ^^^^ ...05065434000400000000