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