13 22FL ... SEG GETDIR,860,SECTION FILE,OPEN 4 22_= ...[ 4 23DW ...[ 11 23YG ... SEGENTRY K1GETDIR,XGETDIR0 11 25CB SEGENTRY K9GETDIR,WORKTAPE 12 25X2 SEGENTRY K10GETDIR,XGETDIR0 12 26BL SEGENTRY K11GETDIR,XGETDIR1 12 26W= SEGENTRY K12GETDIR,XGETDIR2 12 27*W SEGENTRY K13GETDIR,XGETDIR3 12 27TG SEGENTRY K14GETDIR,XGETDIR4 12 28*6 SEGENTRY K15GETDIR,XGETDIR5 12 28SQ SEGENTRY K16GETDIR,XGETDIR6 12 294J ... SEGENTRY K17GETDIR,XGETDIR7 4 29#B # 21 29S2 ...[ THIS SEGMENT IMPLEMENTS THE MACRO GETDIR AND LOCATES A SPECIFIC ENTRY 11 2?QG # ENTRY PTS ARE AS FOLLOWS :- 21 2#=6 ...[ K9GETDIR - RE-ENTRY FROM GETDIRX TO POSITION DIRECTORY FOR CREATI 14 2#PQ [ FILE CALLED 'WORK TAPE'. 21 2*9B [ K10GETDIR - GETDIR0. (IGNORE ERASEES AND POSITION DIRECTORY HAVING 21 2*P2 ...[ K1GETDIR JUST READ THE BLOCKS RECORD OF THE ENTRY, IF 21 2B8L [ K11GETDIR - GETDIR1. (IGNORE ERASEES AND POSITION DIRECTORY HAVING 20 2BN= [ JUST READ THE NAME RECORD OF THE ENTRY.) 21 2C7W [ K12GETDIR - GETDIR2. (NOTICE ERASEES AND POSITION DIRECTORY HAVING 21 2CMG ...[ JUST READ THE BLOCKS RECORD OF THE ENTRY, IF 21 2D76 [ K13GETDIR - GETDIR3. (NOTICE ERASEES AND POSITION DIRECTORY HAVING 20 2DLQ [ JUST READ THE NAME RECORD OF THE ENTRY.) 21 2D_7 ...[ K14GETDIR - GETDIR4. SPECIAL FACILITY FOR USEROPEN TO LOCATE ALL D 21 2F?J ...[ SPECIFIC NAME (ONLY USED IF TAPE REQUIRED). I 21 2FL2 [ K15GETDIR - GETDIR5. (AS GETDIR1 BUT ALSO INDICATE ANY OCCURRENCES 21 2G5L ...[ OF SINGLE AND MULTI FILES OF SAME NAME AS ENT 21 2GK= [ REQUIRED,VIA SUBSIDIARY REPLY WORD, THIS IS A 18 2H4W [ SPECIAL ENTRY FOR USERDIR ONLY.) 21 2HJG [ K16GETDIR - GETDIR6. (AS GETDIR3 BUT IF MULTIFILE PLUS 'ANY GEN' 21 2J46 [ REQUESTED DO NOT RESET GENERATION NUMBER TO 1 20 2JHQ [ THIS IS A SPECIAL ENTRY FOR ERASE ONLY.) 21 2JRJ ...[ K17GETDIR - GETDIR7. AS GETDIR5 BUT NOTICES ERASEES. USED BY FILE- 4 2K3B [ 4 2K?8 ...[ 21 2KH2 # THIS ROUTINE FINDS A DIRECTORY ENTRY IN AN OPEN DIRECTORY, DEALING 20 2L2L # WITH THE SPECIAL SETTING OF REEL NOS, FILE GENERATION NOS AND 7 2LG= # LANGUAGE. 21 2L_W # INPUT IS A FILE/FLOCNB. OUTPUT IS AN UPDATED FILE/FLOCNB AND THE 21 2MFG # DIRECTORY ENTRY IN A FILE/ENT BLOCK. THE FILE IS POSITIONED EITHER 21 2M_6 ...[ HAVING JUST READ THE BLOCKS RECORD OR HAVING JUST READ THE NAME RE 21 2NDQ # IF THE DIRECTORY ENTRY CANNOT BE FOUND, THE FILE/FLOCNB IS UPDATED 21 2NYB # READY FOR CREATING EXCEPT IN SOME OF THE CASES WHERE CREATION IS 8 2PD2 # IMPOSSIBLE. 20 2PXL # EACH DIRENT HAS A KEY FORMED BY SUMMING ITS LOCAL NAME,AND THE 21 2QC= # ENTRIES ARE KEPT IN ASCENDING KEY ORDER. EACH BLOCK HAS A HIGHEST 21 2QWW # KEY(THE BLOCK KEY),WHICH IS STORED IN A FILE/FINDEXF BLOCK IN THE 21 2RBG ...# FILE CHAIN. TO FIND THE DIRENT REQUIRED WE THEREFORE FIND THE FIRS 21 2RW6 # BLOCK WHOSE BLOCK KEY IS GREATER THAN OR EQUAL TO THE KEY OF THE 17 2S*Q # ENTRY AND STEP THROUGH IT LOOKING FOR THE ENTRY. 20 2STB # WITHIN EACH KEY ENTRIES ARE ALSO KEPT IN ORDER OF DESCENDING 21 2T*2 # GENERATION NUMBER(SUBKEY) AND ASCENDING REEL NUMBER(SUB-SUBKEY), 21 2TSL ...# SO TO FIND OUR ENTRY WE MUST FIND ONE WHICH MATCHES THE REQUIREMEN 20 2W#= # OF KEY,SUBKEY,SUB-SUBKEY WITH ALSO THE RIGHT NAMEAND LANGUAGE. 21 2WRW # SINCE DIRECTORIES ARE INDEXED BY LOCAL NAME AN INDEX SEARCH IS NOT 21 2X?G # POSSIBLE IF ONLY A TSN,USERNAME OR WORKTAPE NAME IS PRESENT IN THE 21 2XR6 # FLOCNB, IN WHICH CASE AFTER CHECKING THE FLOCNB DETAILS WE EXIT TO 19 2Y=Q # GETDIR WHICH PERFORMS A SERIAL SEARCH TO FIND THE ENTRY. 4 2YQB # 10 2_=2 # USES OF AWORK WORDS :- 18 2_PL # AWORK1 - CONTAINS THE KEY OF THE ENTRY TO BE FOUND. 18 329= # AWORK2 - CONTAINS A NUMBER OF SWITCHES AND MARKERS. 15 32NW # B0 : NOTICE ERASEES (GETDIR2 & 3) 21 338G ...# B1 : POSITION HAVING JUST READ NAME RECORD (RATHER THAN B 15 33N6 # B2 : SPECIAL ENTRY FROM USERDIR. 13 347Q # B3 : USERNAME IN FLOCNB. 13 34MB # B4 : SEARCHING BY T.S.N. 21 3572 # B5 : GETDIR4 - SET UP LIST OF TSN'S IN AONBS/GLIST BLOCK 16 35LL # & CORRESPONDING STACK OF TABS. 15 366= # B6 : LOOK FOR 'ANY' GENERATION. 21 36KW # B7 : TAB BLOCK SET UP AND WE HAVE FOUND A NAME MATCH AND 19 375G # A TSN HAS BEEN PUT IN THE AONBS/GLIST BLOCK. 21 37K6 # B8 : GETDIR FINISHED. NOW SEARCHING FOR OTHER SINGLE AND 21 384Q # MULTIFILES OF SAME NAME AS ENTRY REQD.,FOR USERDIR 21 38JB # B9 : ZERO GENERATION SPECIFICALLY REQUESTED.(B2 IN FLOCNB 17 3942 # B10: REQUIRED ENTRY IS A WORKTAPE NAME. 21 39HL ...# B11: SEARCHING BY KEY FORMED FROM USERNAME IN FLOCNB IN T 21 3=3= ...# CHANCE THAT USERNAME AND LOCAL NAME OF FILE ARE THE 21 3=GW # B12: LOOK FOR EITHER REEL 0 OR REEL 1(I.E. DEFAULT VALUE) 21 3?2G ...# DEPENDING ON WHETHER MATCHING ENTRY FOUND IS A MT OR 21 3?G6 ...# B13: NO 2ND SEARCH REQD. TO REPOSITION FOR CREATION IF NO 19 3?_Q # B14: AN ENTRY WITH THE RIGHT KEY HAS BEEN FOUND. 21 3#FB # B15: AN ENTRY WITH RIGHT NAME AND LANGUAGE HAS BEEN FOUND 21 3#_2 ...# B16: MORE THAN ONE ENTRY FOUND WITH RIGHT NAME AND LANGUA 17 3*DL # BITS 15 AND 16 ARE FOR USERDIR ONLY. 17 3*Y= # B17: SPECIAL ENTRY FROM ERASE - GETDIR6 21 3BCW # B18 TO B23: PRESERVES REPLY WHILE CONTINUING SEARCH AFTER 19 3BXG # GETDIR FINISHED.(FOR USERDIR ONLY) 14 3CC6 # AWORK3 - GENERAL PURPOSE WORK WORD. 13 3CWQ # AWORK4 - REPLY WORD FOR STREAMS. 4 3DBB # 4 3DW2 WORK 6 3F*L 4HWORK 6 3FT= 4H TAP 6 3G#W 4HE 5 3GSG ZGEOER1 9 3H#6 GEOERR 1,FLOCNB? 5 3KQ= ZBENT 10 3L9W GEOERR 1,FILEBENT 21 3L*R ...XGETDIR7 [SPECIAL ^FILE HANDLER ON DIRECTORY^ 8 3LFN ... LDCT 7 #700 8 3LKK ... BRN PGDE 17 3LPG XGETDIR6 [SPECIAL ERASE ENTRY 8 3M96 LDCT 7 #600 8 3MNQ ADN 7 #100 8 3N8B BRN PGDE 18 3NN2 XGETDIR5 [SPECIAL USERDIR ENTRY 8 3P7L LDCT 7 #300 8 3PM= BRN PGDE 14 3Q6W XGETDIR4 [GETDIR4 8 3QLG LDCT 7 #10 8 3R66 #SKI K6GETDIR>3-3 4 3RKQ ( 19 3S5B MHUNTW 3,AONBS,GLIST [CHECK LIST BLOCK PRESENT. 8 3SK2 BPZ 3 PGDE 10 3T4L GEOERR 1,NO GLIST 4 3TJ= ) 8 3W3W BRN PGDE 5 3WHG XGETDIR3 8 3X36 LDCT 7 #600 8 3XGQ BRN PGDE 5 3Y2B XGETDIR2 8 3YG2 LDCT 7 #400 8 3Y_L BRN PGDE 5 3_F= XGETDIR1 8 3_YW LDCT 7 #200 8 42DG BRN PGDE 5 42Y6 XGETDIR0 7 43XB LDN 7 0 4 44C2 PGDE 10 44WL ADDSKIP I516A,ILOCA 18 45B= STO 7 AWORK2(2) [ENTRY BITS FOR GETDIR. 19 45TW STOZ AWORK4(2) [SUBSIDIARY REPLY FOR STREAMS 20 46*G # CHECK THAT A DIRECTORY IS OPEN AT TOP LEVEL AND REPLY NAME IF NOT. 15 46T6 TOPFCB2 3 [X3 -> FCB 16 47#Q JBS YESDIR,3,BFDIR [J IF DIRECTORY. 15 47SB ... TRACEIF K6GETDIR,99,399,FLOC1(3),NAMEGD 8 48RL SETREP2 NAME 5 49?= UP 5 49QW YESDIR 13 4==G # NOW EXAMINE THE DETAILS OF THE FLOCNB. 10 4=Q6 MHUNT 3,FILE,FLOCNB 9 4=X# ...#SKI K6GETDIR>499-499 10 4?4G ... BLOCKTRA 3,FLOCNBEG 20 4?9Q LDX 0 ATYPE(3) [CHECK ATYPE FORMAT IN FLOCNB. 18 4?PB ANDN 0 #77 [MASK OFF SYNTAX BITS. 21 4#92 ... SBN 0 5 [ERROR IF BITS 18-20 SET OR ILLEGAL C 21 4#NL ... BPZ 0 ZGEOER1 [ARE SET (ALLOW BITS 22 & 23 TOGETHER 21 4*8= ... [ FNORM SETS BITS 16 & 23 FOR A WORKT 21 4*MW ... [ TS !WORK CAN ONLY WORK BY THIS FRIG 17 4B7G ... JBC NOTSN,3,BFABTSN [J IF NO TSN GIVEN 17 4BM6 # TEST FORMAT OF FLOCNB IS CORRECT FOR A TSN PRESENT. 14 4C6Q ... TRACEIF K6GETDIR,99,399,AWORK2(2),TSN 8 4D62 LDCT 0 #10 9 4DKL ANDX 0 AWORK2(2) 17 4F5= ... BNZ 0 ZGEOER1 [ERROR IF GETDIR4. 21 4FJW ... JMBAC ZGEOER1,3,BFABANY,BFABLIB [GEOERR IF NOT REQUESTING A TAPE 16 4H3Q LDX 0 ALOGLEN(3) [TSN -> ALOGLEN=8 7 4HHB SBN 0 8 18 4J32 BNZ 0 ZGEOER1 [J IF FLOCNB WRONG SIZE. 20 4JGL LDX 0 A1+7(3) [SERIAL NO MUST BE +VE IF THERE. 17 4K2= BNG 0 ZGEOER1 [ERROR IF XENOTAPE. 16 4KFW BZE 0 ZGEOER1 [ERROR IF NO TSN. 19 4K_G TESTUSER A1(3),ZGEOER1 [ERROR IF USERNAME IN FLOCNB. 21 4LF6 # WE NOW SET BIT 4 IN AWORK2 TO INDICATE THAT WE WILL BE SEARCHING BY 19 4LYQ # TSN WHEN WE EVENTUALLY ENTER THE SEARCH LOOP FOR THE DIRENT. 8 4MDB LDCT 0 #20 9 4MY2 ORS 0 AWORK2(2) 20 4NCL BRN TSHRIEK [J TO CHECK REEL & GENERATION NO. 19 4NX= [BEFORE ENTERING SEARCH LOOP. 5 4PBW NOTSN 17 4PWG # TEST FORMAT OF FLOCNB IS CORRECT WHEN NO TSN PRESENT. 15 4QB6 ... TRACEIF K6GETDIR,199,399,AWORK2(2),NOTSN 7 4R*B LDN 0 8 18 4RT2 BXL 0 ALOGLEN(3),ZGEOER1 [J IF LENGTH OF FLOCNB>8 18 4S#L TESTUSER A1(3),USERBIT [J IF USERNAME IN FLOCNB 5 4SS= ...TSHRIEK 21 4T?W ... JMBAS SHRIEKMT,3,BFABWORK,BFABLIB [J IF WORK TAPE (! + LIB) 20 4YP= BRN REELGEN [J TO LAST STAGE OF FLOCNB TESTS. 5 4_8W USERBIT 20 4_NG LDCT 0 #40 [SET USERNAME IN FLOCNB MARKER. 9 5286 ORS 0 AWORK2(2) 16 52MQ ... TRACEIF K6GETDIR,199,399,AWORK2(2),USERBIT 21 53M2 ... JMBS ZGEOER1,3,BFABEXO,BFABLIB [GEOERR IF EXOFILE OR MT REQUESTE 8 555W LDCT 0 #10 9 55KG ANDX 0 AWORK2(2) 20 5656 BNZ 0 ZGEOER1 [ERROR IF GETDIR4 WITH USERNAME. 19 56JQ LDX 4 A1+1(3) [MOVE USERNAME INTO X4,5 &6 9 574B LDX 5 A1+2(3) 9 57J2 LDX 6 A1+3(3) 19 583L LDX 0 A1+5(3) [TEST IF KEY GIVEN IN FLOCNB. 14 58H= BNZ 0 YESKEY [J IF SO. 19 592W LDX 0 BIT11 [INDICATES SEARCHING BY KEY 18 59GG ORS 0 AWORK2(2) [FORMED FROM USERNAME. 9 59NQ ... BRN XINDEX 5 59X2 ...SHRIEKMT 8 5=5= ... LDX 0 BIT10 21 5=?G ... ORS 0 AWORK2(2) [SET WORKTAPE MARKER IN SWITCH WORD 5 5=FQ REELGEN 21 5=_B # LAST STAGE OF FLOCNB TESTS. WE NOW CHECK THAT THE REEL AND GENERATION 13 5?F2 # NOS GIVEN ARE IN THE CORRECT FORMAT. 16 5?YL ... TRACEIF K6GETDIR,199,399,AWORK2(2),REELGEN 17 5#XW LDX 0 A1+3(3) [PICK UP REEL NUMBER 20 5*CG BXGE 0 ZERBITPLUS1(1),ZERR [REEL NO. MUST BE LESS THAN THIS. 10 5*X6 ANDX 0 MASKREEL(1) 21 5B9H ... BZE 0 REELOK [SOME BITS NOT ALLOWED IN REEL NO. 8 5BHY ... BRN ZERR 17 5BWB MASKREEL #67777000 [BITS NOT PERMITTED. 17 5CB2 ZERBITPLUS1 #10000001 [MAX REEL NO PLUS 1 5 5CTL REELOK 9 5D*= LDX 0 A1+3(3) 20 5DSW BNZ 0 NANY [J IF NOT DEFAULT VALUE FOR REEL. 8 5F#G LDN 0 #4000 19 5FS6 ORS 0 AWORK2(2) [SET 'DEFAULT REEL' MARKER. 8 5G?Q BRN NZERO 4 5GRB NANY 8 5H?2 LDCT 0 #100 9 5HQL ANDX 0 A1+3(3) 17 5J== BZE 0 NZERO [J IF NOT ZERO REEL 19 5JPW STOZ A1+3(3) [ZEROISE REEL NO. INFLOCNB 5 5K9G NZERO 19 5KP6 LDX 0 A1+4(3) [PICK UP GENERATION NUMBER. 21 5L8Q ANDX 0 MASKGEN(1) [SOME BITS NOT ALLOWED IN GEN. NO. 16 5LNB BZE 0 MGEN [J IF BITS OK. 20 5M82 LDX 0 A1+4(3) [GEN=4096 LEGAL FOR EXOFILES, NOT 16 5MML BXE 0 MB11XUDAS(1),WRGEN [FOR ENTRANTS. 4 5N7= ZERR 9 5NLW GEOERR 1,REELGEN 9 5P6G MASKGEN #07770000 15 5PL6 MB11XUDAS #00010000 [GEN. 4096 19 5Q5Q MGEN LDX 2 A1+4(3) [PICK UP GENERATION AGAIN. 19 5QKB LDN 0 0(2) [RID OF PLUS & MINUS BITS. 18 5R52 BXGE 0 ZERBITPLUS1(1),ZERR [ZERO BIT MUST BE ALONE. 18 5RJL SRL 2 21 [3 BITS OF GEN WORD LEFT. 8 5S4= LDCT 0 #720 21 5SHW SLL 0 0(2) [ERROR IF ANY BITS OTHER THAN 0,1 OR 21 5T3G BPZ 0 ZERR [2 ARE SET IN TOP HALF OF GEN WORD. 8 5TH6 LDX 2 FX2 9 5W2Q LDX 0 A1+4(3) 19 5WGB BNZ 0 NOTANY [J IF ANY GEN NOT SPECIFIED. 8 5X22 LDCT 0 #4 18 5XFL ORS 0 AWORK2(2) [SET 'ANY GEN' MARKER. 9 5X_= BRN NOTZERO 5 5YDW NOTANY 8 5YYG LDCT 0 #100 9 5_D6 ANDX 0 A1+4(3) 19 5_XQ BZE 0 NOTZERO [J IF NOT ZERO GENERATION. 19 62CB STOZ A1+4(3) [ZEROISE GEN. WORD IN FLOCNB. 8 62X2 LDX 0 BIT9 18 63BL ORS 0 AWORK2(2) [ZERO GENERATION MARKER. 5 63W= NOTZERO 20 64*W # ALL DETAILS OF THE FLOCNB HAVE NOW BEEN TESTED AND AWORK2 CONTAINS 21 64TG # THE VALUES USED THROUGHOUT THE SEGMENT. WE NOW TEST IF A SERIAL SEARCH 21 65*6 # IS NECESSARY TO FIND THE DIRENT(I.E. NO LOCAL NAME IN FLOCNB WHEN A 21 65SQ # TSN IS PRESENT,OR THE ENTRY IS A WORKTAPE). IF SO WE EXIT TO GETDIR. 8 66#B LDX 4 A1(3) 20 66S2 BZE 4 SERIAL [EXIT TO GETDIR IF NO LOCAL NAME 17 67?L LDX 5 A1+1(3) [X4,X5,X6 NOW CONTAIN 15 67R= LDX 6 A1+2(3) [LOCAL NAME 8 68=W LDX 0 BIT10 9 68QG ANDX 0 AWORK2(2) 19 69=6 BNZ 0 SERIAL [EXIT TO GETDIR IF WORKTAPE. 15 69PQ TOPFCB2 3 [X3 -> FCB 8 6=9B LDN 0 #77 9 6=P2 ANDX 0 FINFC(3) 17 6?8L BNZ 0 XINDEX [J IF FILE INDEXED 9 6?N= GEOERR 1,NOINDEX 5 6#7W SERIAL 15 6#MG ... TRACEIF K6GETDIR,99,399,A1(3),GDSERIAL 10 6BL2 ADDSKIP I516A,IGDIR 21 6C5L ACROSS GETDIRX,1 [EXIT TO GETDIRX FOR SERIAL SEARCH. 4 6CK= [ 21 6D4W ...WORKTAPE [RE-ENTRY FROM GETDIRX,TO POSITION FO 21 6DJG [ CREATING FILE CALLED - WORK TAPE. 9 6F46 LDN 1 WORK(1) 7 6FHQ SUM 0 3 9 6G3B BRN YESKEY 5 6GH2 XINDEX 13 6H2L ... TRACEIF K6GETDIR,199,399,4,LOCDIR 21 6H_W LDN 1 4 [CALCULATE KEY OF ENTRY BY SUMMING 19 6JFG SUM 0 3 [THE LOCAL NAME(OR USERNAME). 5 6J_6 YESKEY 15 6KDQ STO 0 AWORK1(2) [STORE KEY. 15 6KYB ... TRACEIF K6GETDIR,199,399,AWORK1(2),KEYDIR 21 6LXL CALL 7 XBLOCK [X3 -> 1ST REC. IN BLOCK WITH RT KEY. 17 6MC= BRN NOFILEB [J IF NO SUCH BLOCK 19 6MWW CALL 7 SFIRSTENT [X3 -> 1ST ENTRY IN BLOCK. 8 6NBG LDCT 0 #20 17 6NW6 ANDX 0 AWORK2(2) [J IF FILENAME SEARCH 8 6P*Q BZE 0 XFILE 16 6PKJ ... TRACEIF K6GETDIR,199,399,AWORK1(2),TSNSERCH 8 6PTB BRN XTSN 5 6Q*2 TSNXENT 9 6QSL CALL 7 NEXTENT3 21 6R#= BZE 3 TSNOFILE [J IF END OF DIRECTORY AND NO FILE. 4 6RRW XTSN 9 6S?G LDN 0 ELOC1N(3) 7 6SR6 ... SUM 7 3 18 6T=Q BXL 7 AWORK1(2),TSNXENT [J IF NOT UP TO KEY REQD. 18 6TQB BXE 7 AWORK1(2),XCHECK [J IF RIGHT KEY VALUE. 19 6W=2 BRN TSNOFILE [J IF NO REC. WITH KEY REQD. 5 6WPL XCHECK 8 6X9= LDN 0 #1000 18 6XNW ORS 0 AWORK2(2) [SET 'KEY FOUND' MARKER. 19 6Y8G ... LDX 0 ESERN(3) [IS ENTRY A FILE OR EXOFILE? 18 6YN6 BZE 0 NOTLIB [IF SO CHECK FOR VRYWRONG 9 6_7Q SBX 0 A1+7(1) 21 6_MB BNZ 0 TSNXENT [J IF TSN'S UNEQUAL & GET NEXT ENTRY 9 7272 CALL 7 NMATCH1 18 72LL BRN NDISAGREE [J IF NAMES DON'T MATCH 8 72MK ... LDCT 0 #004 9 72NJ ... ANDX 0 AWORK2(2) 19 72PH ... BNZ 0 XGENOK [J IF ^ANY^ GEN. SPECIFIED 8 72QG ... LDCT 0 #600 9 72RF ... ANDX 0 A1+4(1) 19 72SD ... BNZ 0 XGENOK [J IF +N OR -N GEN. REQUESTED 9 72TC ... LDX 0 A1+4(1) 19 72WB ... BXU 0 EGENN(3),NDISAGREE [J IF GEN. NO. DOESN'T MATCH 5 72X* ...XGENOK 8 72Y# ... LDN 0 #4000 9 72_? ... ANDX 0 AWORK2(2) 19 732= ... BNZ 0 XREELOK [J IF DEFAULT REEL REQUESTED 9 7339 ... LDX 0 A1+3(1) 19 7348 ... BXU 0 EREELN(3),NDISAGREE [J IF REEL NO. DOESN'T MATCH 5 7357 ...XREELOK 21 736= CALL 7 QUERAS [EXIT TO OK UNLESS ENTRY IS AN ERASEE 21 73KW BRN TSNXENT [AND ^NOTICE ERASEES^ BIT NOT SET. 21 745G # EXIT PLUS 1 REPORTS A MATCH. WE DON'T CHECK GEN.,REEL AND LANGUAGE AS 18 74K6 # WE HAVE A MAG. TAPE FILE WITH TSN AND LOCAL NAME MATCH. 4 754Q OK 21 75JB # NOW THE ENTRY IS FOUND,THE LOCAL NAME BLOCK IS UPDATED FROM THE ENTRY. 20 7642 # THE ENTRY IS LEFT IN CORE IN A FILE/ENT BLOCK AND THE FILE IS THEN 14 76HL # POSITIONED ACCORDING TO THE MACRO USED. 12 773= ... TRACEIF K6GETDIR,199,399,3,OK 21 77GW ... LDX 0 EGENN(3) [COPY GENERATION FROM ENTRY INTO FLOC 9 78G6 STO 0 A1+4(1) 16 78_Q LDX 0 EREELN(3) [COPY REEL NO. 9 79FB STO 0 A1+3(1) 16 79_2 LDX 0 ELANN(3) [COPY LANGUAGE. 9 7=DL STO 0 A1+5(1) 16 7=Y= LDN 7 ELOC1N(3) [COPY LOCAL NAME. 8 7?CW LDN 0 A1(1) 7 7?XG MOVE 7 3 8 7#C6 LDCT 0 #100 9 7#WQ ANDX 0 AWORK2(2) 19 7*BB BNZ 0 XTAB [J IF SPECIAL USERDIR ENTRY. 4 7*W2 ZOK 18 7B*L READAGAIN [GET NAME RECORD IN CORE. 10 7BT= MHUNTW 1,FILE,FRB 15 7C#W NAME 1,FILE,ENT [RENAME IT. 8 7CSG LDCT 0 #200 9 7D#6 ANDX 0 AWORK2(2) 20 7DRQ BNZ 0 UP [J IF POS. ON BLOCKS REQUESTED 9 7F?B LDEX 4 ECOPS(1) 17 7FR2 BZE 4 UP [J IF NO BLOCKS REC. 5 7G=L TCOPS 19 7GQ= STEP [SKIP PAST BLOCKS RECORD(S). 8 7H9W BCT 4 TCOPS 4 7HPG UP 6 7J96 ANSOK2 4 7JNQ UP2 16 7K8B LDX 0 AWORK4(2) [SUBSIDIARY REPLY 7 7KN2 PTREP2 0 4 7KSD ...NFUP 9 7KYW ...#SKI K6GETDIR>599-599 4 7L5# ...( 10 7L9Q ... MHUNT 3,FILE,FLOCNB 10 7LB8 ... BLOCKTRA 3,FLOCNEND 4 7LGL ...) 5 7LM= UP 5 7M6W NOTLIB 17 7MLG # CHECK FOR VRYWRONG IF FILE AND SHOULD BE LICRARIAN. 9 7N66 CALL 7 NMATCH 21 7NKQ ... BRN TSNXENT [J IF NAMES DONT MATCH-ERROR IF EXOFI 19 7P5B [FILE WITH SAME NAME AS TSN. 5 7PK2 VRYWRONG 15 7Q4L # THE ENTRANT FOUND IS ENTIRELY THE WRONG SORT. 14 7QJ= ... TRACEIF K6GETDIR,199,399,3,VRYWRONG 10 7RHG KEEPREP 7,VRYWRONG 4 7S36 ZOUT 17 7SGQ LDCT 0 #2 [TAB BLOCK SET UP? 15 7T2B ANDX 0 AWORK2(2) [J IF NOT. 8 7TG2 BZE 0 OUT 7 7T_L FREETAB 4 7WF= OUT 17 7WYW PUTREP2 7 [STORE REPLY IN EXEC3 5 7XDG UP 6 7XY6 NDISAGREE 14 7YCQ ... TRACEIF K6GETDIR,199,399,3,DISAGREE 19 7_C2 KEEPREP 7,DISAGREE [REPORT IF SERIAL MATCHES BUT 16 7_WL BRN OUT [NAME DOESN'T. 5 82B= NOFILEB 6 82F4 ... WIND 21 82HW ...# NEXT 5 LINES OR SO ARE A FRIG BECAUSE WIND FLOLLOWED BY STEP DOESN'T 7 82LN ...# ALWAYS WORK 14 82PG ... TOPFCB2 3 [X3->FCB 9 82S# ... LDN 0 FBLKS-A1 17 82X6 ... BXE 0 FBLMOD(3),XEMPTYFILE [J IF FILE EMPTY 21 82_Y ... STEPAGAIN [DEALS WITH FREADBLOCK BEING OFF END 18 834Q ... [ WHEREAS STEP DOESN'T 6 837J ...XEMPTYFILE 4 83=B ...# 6 83*G STEP 10 83T6 MHUNT 1,FILE,FLOCNB 8 84#Q LDN 0 #2000 19 84SB ORS 0 AWORK2(2) [SET 'NO 2ND SEARCH ' MARKER. 9 85#2 BRN NOFILEDF 5 85RL TSNOFILE 21 86?= # AN ENTRANT WITH MATCHING FILENAME AND TSN (OR KEY) HAS NOT BEEN FOUND. 21 86QW # WE MUST CALCULATE GENERATION AND REEL REQUIRED FOR THE GIVEN NAME AND 21 87=G ...# POSITION CORRECTLY FOR CREATING AN ENTRY BEFORE EXITING TO GETDIRX TO 13 87Q6 # TEST WHETHER NOFILE OR DISAGREE CASE. 8 889Q LDCT 0 #4 9 88PB ORS 0 AWORK2(2) 20 8992 ERS 0 AWORK2(2) [UNSET 'ANY GEN.' MARKER,IF SET. 21 89NL CALL 7 XBLOCK [X3->1ST REC. IN BLOCK WITH RT. KEY. 9 8=8= BRN NOFILEB 18 8=MW CALL 7 SFIRSTENT [X3->1ST ENTRY IN BLOCK. 8 8?7G BRN XFILE 5 8?M6 NXEFILE 9 8#6Q CALL 7 NEXTENT3 21 8#LB BZE 3 NOFILEDF [J IF END OF DIRECTORY AND NO FILE. 5 8*62 XFILE 21 8*KL ...# SEARCH FOR ENTRANT WITH REQUIRED KEY. IF A SPECIFIED GENERATION(SUBKEY 21 8B5= ...# AND SPECIFIED REEL(SUB-SUBKEY)ARE GIVEN IN THE FLOCNB WE THEN SEARCH F 21 8BJW # AN ENTRY WHICH HAS THESE REQUIREMENTS AND THE RIGHT NAME. IF NOT WE DO 21 8C4G # A PRELIMINARY SEARCH THROUGH ENTRIES WITH THE RIGHT NAME TO CALCULATE 21 8CJ6 # THE GENERATION AND REEL BEFORE SEARCHING FOR THE ACTUAL ENTRY REQUIRED 18 8D3Q LDN 0 ELOC1N(3) [CALCULATE KEY OF DIRENT. 7 8DHB SUM 7 3 19 8F32 BXL 7 AWORK1(2),NXEFILE [J IF NOT UP TO KEY REQD. YET 8 8FGL LDX 0 BIT10 9 8G2= ANDX 0 AWORK2(2) 16 8GFW BNZ 0 NOUT [J IF WORKTAPE 11 8G_G BXE 7 AWORK1(2),SCHECK 19 8HF6 BRN NOFILEDF [J IF NO REC. WITH KEY REQD. 5 8HYQ SCHECK 8 8JDB LDN 0 #1000 18 8JY2 ORS 0 AWORK2(2) [SET 'KEY FOUND' MARKER. 8 8KCL LDCT 0 #40 9 8KX= ANDX 0 AWORK2(2) 19 8LBW BZE 0 NOTUSER [J IF NO USERNAME IN FLOCNB 9 8LWG TXU 4 EUSE1N(3) 9 8MB6 TXU 5 EUSE2N(3) 19 8MTQ BXU 6 EUSE3N(3),NXEFILE [J IF USERNAMES DO NOT MATCH. 21 8N*B CALL 7 QUERAS [EXIT TO OK UNLESS ENTRY IS AN ERASEE 21 8NT2 BRN NXEFILE [AND ^NOTICE ERASEES^ BIT NOT SET. 5 8P#L NOTUSER 8 8PS= LDCT 0 #4 9 8Q?W ANDX 0 AWORK2(2) 19 8QRG BNZ 0 NOGEN [J IF 'ANY GEN' SPECIFIED. 8 8R?6 LDCT 0 #600 21 8RQQ ANDX 0 A1+4(1) [J IF LATEST PLUS/MINUS N GENERATION 15 8S=B BNZ 0 NOGEN [SPECIFIED. 8 8SQ2 LDN 0 #4000 9 8T9L ANDX 0 AWORK2(2) 19 8TP= BNZ 0 NOGEN [J IF 'ANY REEL' SPECIFIED. 8 8W8W LDN 0 #2000 19 8WNG ORS 0 AWORK2(2) [SET 'NO 2ND SEARCH' MARKER. 21 8X86 CALL 7 NMATCH [IF NAMES DON'T MATCH WE DON'T CHECK 17 8XMQ BRN NOSTREAM [STREAMS OR SYNTAX. 9 8Y7B BRN SYNCHECK 5 8YM2 NOGEN 9 8_6L CALL 7 NMATCH 18 8_L= BRN NXEFILE [J IF NAMES DONT MATCH 5 924J ...SYNCHECK 18 92GW ... JFNZ SYNNFILE,1,FFABTYPE [J IF NOT REQUESTING FILE 20 92_8 ... JMBS VRYWRONG,3,BNLIB,BNEXO [ERROR IF FOUND TAPE OR EXOFILE 9 93CG ... BRN SYNTOK 5 93TS ...SYNNFILE 18 94#6 ... JBC SYNNLIB,1,BFABLIB [J IF NOT REQUESTING TAPE 20 94QD ... JBC VRYWRONG,3,BNLIB [ERROR IF FOUND FILE OR EXOFILE 9 958Q ... BRN SYNTOK 5 95M4 ...SYNNLIB 19 965B ... JBC SYNTOK,1,BFABEXO [J IF NOT REQUESTING EXOFILE 19 96HN ... JBC VRYWRONG,3,BNEXO [ERROR IF FOUND FILE OR TAPE 5 9726 SYNTOK 16 97FQ CALL 7 XCHSTR [STREAMS CHECKING 5 97_B NOSTREAM 7 98F2 LDCT 0 1 21 98YL ANDX 0 AWORK2(2) [J IF IN SEARCH LOOP FOR SINGLE AND 21 99D= BNZ 0 NXEFILE [MULTIFILES AFTER GETDIR FINISHED. 20 99XW ...# WE HAVE AN ENTRY WITH A KEY MATCH. WE NOW CHECK IF THE GENERATION 20 9=CG # GIVEN IN ENTRY MATCHES OUR REQUIREMENTS. ENTRIES ARE STORED IN THE 21 9=X6 ...# DIRECTORY IN DESCENDING GENERATION NO. ORDER,SO IF 'ANY' OR 'HIGHEST' 20 9?BQ # HAS BEEN REQUESTED WE ALREADY HAVE THE ENTRY WE NEED OTHERWISE WE 9 9?WB # CONTINUE THE SEARCH. 14 9#B2 ... TRACEIF K6GETDIR,199,399,4,KEYMATCH 8 9**= LDCT 0 #4 17 9*SW ANDX 0 AWORK2(2) [GEN. NO IN FLOCNB. 19 9B#G BNZ 0 POSGEN1 [J IF 'ANY' GEN. REQUESTED. 14 9BS6 LDCT 0 #600 [B0,B1 21 9C?Q ANDX 0 A1+4(1) [J IF HIGHEST OR HIGHEST PLUS/MINUS N 16 9CRB BNZ 0 ULTGEN [GEN. REQUESTED. 9 9D?2 # SPECIFIC GEN. GIVEN 5 9DQL NOWGEN 9 9F== LDX 0 EGENN(3) 17 9FPW BXE 0 A1+4(1),TGENOK [J IF GEN NOS EQUAL 21 9G9G BXL 0 A1+4(1),NOFILEDF [J IF GEN. IN ENTRY CURRENT REC. 9 ??*L BRN NXEFILE 21 ??T= # END OF SEARCH. UNSUCCESSFUL (UNLESS GETDIR4 WHERE A TSN MAY ALREADY 12 ?##W # HAVE BEEN FOUND AT SOME STAGE). 5 ?#SG NOFILEDF 7 ?*#6 LDCT 0 1 20 ?*RQ ANDX 0 AWORK2(2) [J IF IN SEARCH LOOP FOR SINGLE 21 ?B?B BNZ 0 YTAB [AND MULTIFILES AFTER GETDIR FINISHED 8 ?BR2 LDCT 0 #10 9 ?C=L ANDX 0 AWORK2(2) 17 ?CQ= BZE 0 NOFILEF [J IF NOT GETDIR4. 13 ?D9W ... TRACEIF K6GETDIR,99,399,7,GDE4END 8 ?F96 LDCT 0 #2 20 ?FNQ ANDX 0 AWORK2(2) [HAS A MATCHING ENTRY BEEN FOUND 15 ?G8B BNZ 0 UP [EXIT IF SO. 8 ?GN2 BRN ZGEN2 5 ?H7L NOFILEF 14 ?HM= ... TRACEIF K6GETDIR,199,399,3,NOFILEF 21 ?JLG LDX 0 BIT11 [EXIT TO GETDIR AND SERIAL SEARCH FOR 21 ?K66 ... ANDX 0 AWORK2(2) [FILENAME IF NOT FOUND BY USERNAME KE 9 ?KKQ BNZ 0 SERIAL 8 ?L5B LDCT 0 #40 8 ?LK2 ADX 0 BIT10 19 ?M4L ANDX 0 AWORK2(2) [J IF USERNAME OR WORKTAPE AS 21 ?MJ= BNZ 0 NOUT [FLOCNB ALREADY UPDATED BY GETDIRX. 5 ?N3W ZGEN2 20 ?NHG LDCT 0 #600 [TEST IF LATEST OR LATEST PLUS OR 18 ?P36 ANDX 0 A1+4(1) [MINUS N GEN REQUESTED. 14 ?PDR ... BZE 0 ZGEN [J IF NOT 9 ?PWF ... LDX 7 A1+4(1) 7 ?Q=8 ... LDX 0 7 8 ?QKX ... ANDN 0 #7777 19 ?Q_L BPZ 7 YPOS [J IF 'HIGHEST +N' REQUESTED. 7 ?RF= ... STOZ 0 4 ?RYW YPOS 18 ?SDG ... STO 0 A1+4(1) [X0 CONTAINS +N OR ZERO. 16 ?SY6 ... BZE 0 ZGEN [J IF N IS ZERO 17 ?TCQ ... JFZ NOTZGN,1,FFABTYPE [J IF REQUESTING FILE 21 ?TXB ... LDN 0 1 [SUBTRACT 1 SINCE MINIMUM GEN. NO. FO 19 ?WC2 ... SBS 0 A1+4(1) [ OR EXOFILE IS ZERO, NOT 1 4 ?YT6 ...ZGEN 18 ?_7H ... JBS NOTZGN,1,BFABEXO [J IF REQUESTING EXOFILE 20 ?_FY ... JFNZ NLANG,1,FFABTYPE [J IF NOT REQUESTING FILE (LEAVE 21 ?_SB ... [ GEN. NO. AS ZERO FOR EXOFILE OR TAP 19 #2#2 ... LDX 0 A1+4(1) [IF FILE & GEN 0, UPDATE TO 1 9 #2RL ... BNZ 0 NOTZGN 7 #692 LDN 0 1 9 #6NL STO 0 A1+4(1) 5 #78= NOTZGN 21 #7MW ... LDN 0 1 [SET REEL TO 1,FOR A FILE OR EXOFILE 9 #87G STO 0 A1+3(1) 5 #8M6 NLANG 17 #96Q LDX 0 A1+5(1) [PICK UP LANGUAGE. 16 #9LB BNZ 0 NOUT2 [J IF NONZERO. 18 #=62 LDX 0 ACES [SET EQUAL TO 4 SPACES. 9 #=KL STO 0 A1+5(1) 5 #?5= NOUT2 8 #?JW LDCT 0 #4 9 ##4G ORS 0 AWORK2(2) 18 ##J6 ERS 0 AWORK2(2) [UNSET 'ANY GEN.' MARKER. 8 #*3Q LDN 0 #4000 9 #*HB ORS 0 AWORK2(2) 19 #B32 ERS 0 AWORK2(2) [UNSET 'DEFAULT REEL' MARKER. 8 #BGL LDN 0 #1000 9 #C2= ANDX 0 AWORK2(2) 20 #CFW BZE 0 NOUT1 [J IF 'KEY FOUND' NARKER NOT SET. 21 #C_G LDN 0 #2000 [GO THROUGH SEARCH AGAIN TO POSITION 21 #DF6 ANDX 0 AWORK2(2) [CORRECTLY FOR CREATING AN ENTRY IF 20 #DYQ BZE 0 TSNOFILE ['NO 2ND SEARCH' MARKER NOT SET. 5 #FDB NOUT1 8 #FY2 LDCT 0 #20 9 #GCL ANDX 0 AWORK2(2) 16 #GX= BNZ 0 SERIAL [J IF TSN SEARCH. 4 #HBW NOUT 9 #HWG SETREP2 NOFILE 9 #JB6 ORS 0 AWORK2(2) 8 #JTQ LDCT 0 #100 9 #K*B ANDX 0 AWORK2(2) 17 #KT2 BZE 0 NFUP [J IF NOT USERDIR. 15 #L#L BZE 3 UP2 [J IF E.O.F. 4 #N?6 XTAB 14 #NKH ... TRACEIF K6GETDIR,199,399,2,GDTABBL 21 #NXY ... LDCT 0 1 [INDICATES FINISHED GETDIR BUT LOOKIN 21 #P=B ORS 0 AWORK2(2) [MORE FILES OF THE SAME NAME AS ENTRY 21 #PQ2 ... SETUPTAB [PRESERVE CURRENT READ POSITION IN FI 9 #Q9L CALL 7 TABSET 16 #QP= BRN NXEFILE2 [GET NEXT ENTRY. 4 #R8W YTAB 13 #RDN ... TRACEIF K6GETDIR,199,399,2,GDTAB 20 #RNG TABULATE [READJUST READ POINTERS OF FILE. 16 #S86 FREETAB [FREE TAB BLOCK. 9 #SMQ LDN 0 ANSNOFILE 9 #T7B ANDX 0 AWORK2(2) 8 #TM2 BZE 0 ZOK1 9 #W6L STO 0 EXEC3(2) 20 #WL= BRN UP2 [IF NOFILE NOTHING FURTHER TO DO. 4 #X5W ZOK1 8 #XKG LDN 0 #200 9 #Y56 ANDX 0 AWORK2(2) 8 #YJQ BNZ 0 ZOK 21 #_4B STOZ AWORK4(2) [ZEROISE SUBSIDIARY REPLY FOR USERDIR 21 #_J2 BRN ZOK [IF ONLY ONE ENTRY FOUND IN OK CASE. 4 *23L # 19 *2H= # THIS SUBROUTINE POSITIONS THE FILE ON THE FIRST RECORD OF THE 18 *32W # BLOCK WITH HIGH ENOUGH KEY TO CONTAIN THE REQUIRED ENTRY. 4 *3GG # 5 *426 XBLOCK 16 *4FQ SBX 7 FX1 [DECROMENT LINK 18 *4_B FINDEXB ,3 [X3 -> FI/FINDEXF BLOCK. 8 *5F2 LDX 2 A1(3) 17 *5YL SBN 2 3 [X2 IS NO OF BLOCKS. 18 *6D= BZE 2 TEXIT [J IF NO BLOCKS IN FILE. 7 *6XW STOZ 0 5 *7CG XLOOP 21 *7X6 ADN 0 1 [X0 INDICATES CURRENT BLOCK OF FILE. 10 *8BQ LDX 1 INDEXREC(3) 8 *8WB SMO FX2 20 *9B2 BXGE 1 AWORK1,YEXIT [J IF FOUND A BLOCK WITH LARGE 15 *9TL ADN 3 1 [ENOUGH KEY. 20 *=*= BCT 2 XLOOP [BRANCH IF MORE BLOCKS IN FILE. 5 *=SW TEXIT 16 *?#G ADX 7 FX1 [INCREMENT LINK. 8 *?S6 LDX 2 FX2 16 *#?Q EXIT 7 0 [EXIT NOT FOUND. 5 *#RB YEXIT 13 **?2 ... TRACEIF K6GETDIR,199,399,1,YBLOCK 8 *B== LDX 2 FX2 7 *BPW LDX 1 0 7 *C9G TOPFCA2 3 19 *CP6 ADN 1 FBLKS-1 [F'BLK PTS TO REQUIRED BLOCK. 20 *D8Q STO 1 FREADBLOCK(3) [F'WORD -VE IMPLIES ABOUT TO READ 19 *DNB NGS 1 FREADWORD(3) [1ST. RECORD OF THIS BLOCK. 19 *F82 STEP [X3 -> FIRST REC. IN FURB. 16 *FML ADX 7 FX1 [INCREMENT LINK. 15 *G7= EXIT 7 1 [EXIT OKAY 4 *GLW # 21 *H6G # ON ENTRY TO SFIRSTENT X3 -> 1ST RECORD IN 1ST BLOCK OF DIRECTORY WITH 21 *HL6 ...# HIGH ENOUGH KEY TO CONTAIN THE SOUGHT DIRENT. THIS SUBROUTINE POSITION 16 *J5Q # THE DIRECTORY ON THE FIRST DIRENT IN THIS BLOCK 4 *JKB # 6 *K52 SFIRSTENT 16 *KJL SBX 7 FX1 [DECREMENT LINK. 6 *L4= SFIRSTENT1 17 *LHW LDX 0 ERESN(3) [ZERO IF NAME RECORD. 14 *M3G BZE 0 SEXIT [J IF SO 16 *MH6 STEP [GET NEXT RECORD. 18 *N2Q BZE 3 ZBENT [J IF END OF DIRECTORY. 10 *NGB BRN SFIRSTENT1 21 *P22 # THIS SUBROUTINE GETS THE NEXT DIRENT IN THE DIRECTORY BY SKIPPING OVER 21 *PFL # THE BLOCKS AND TRAPS RECORDS OF THE CURRENT ENTRY. ON ENTRY X3 POINTS 9 *P_= # TO THE CURRENT ENTRY. 5 *QDW NEXTENT3 16 *QYG SBX 7 FX1 [DECREMENT LINK 18 *RXQ LDEX 1 ECOPSN(3) [BLOCKS RECORD (=0 OR 1) 14 *SCB ADX 1 ENUSEN(3) [TRAPS 17 *SX2 JBC NOIX,3,BNINDEX [J IF NO INDEX RECORD 16 *TBL ADN 1 1 [INDEX RECORD. 4 *TW= NOIX 17 *W*W ADN 1 1 [CURRENT NAME RECORD 20 *WTG STO 1 AWORK3(2) [STORE NO OF RECS TO BE SKIPPED. 5 *X*6 SKIPCT 16 *XSQ STEP [GET NEXT RECORD 9 *Y#B LDX 0 AWORK3(2) 16 *YS2 SBN 0 1 [DECREMENT COUNT 9 *_?L STO 0 AWORK3(2) 16 *_R= BNZ 3 STEPOK [J IF NOT E.O.F. 16 B2=W BZE 0 SEXIT [J IF COUNT ZERO. 20 B2QG BRN ZBENT [ERROR IF NOT FINISHED SKIPPING. 5 B3=6 STEPOK 17 B3PQ LDX 1 ERESN(3) [ZERO IF NAME RECORD. 15 B49B BNZ 1 SKIPCT [J IF NOT. 21 B4P2 BNZ 0 ZBENT [ERROR IF NAME REC. & COUNT NON-ZERO. 5 B58L SEXIT 16 B5N= MHUNT 1,FILE,FLOCNB [SET X1 -> FLOCNB 5 B67W TABEXIT 16 B6MG ADX 7 FX1 [INCREMENT LINK. 7 B776 EXIT 7 0 4 B7LQ # 21 B86B # THIS SUBROUTINE CHECKS WHETHER ERASEES SHOULD BE NOTICED,BRAN.ING TO 21 B8L2 # LABEL OK IF THEY SHOULD,OR IF THE ENTRY POINTED TO BY X3 IS NOT MARKED 18 B95L # TO BE ERASED. OTHERWISE IXITS NORMALLY(TO GET NEXT ENTRY). 4 B9K= # 5 B=4W QUERAS 9 B=JG LDX 0 AWORK2(2) 19 B?46 BNG 0 OK [J IF ERASEES TO BE NOTICED. 21 B?HQ JBC OK,3,BNERASE [J IF ENTRY NOT MARKED TO BE ERASED. 15 B#3B EXIT 7 0 [TRY AGAIN. 4 B#H2 # 21 B*2L # THIS SUBROUTINE IS ENTERED WITH X3 -> A DIRECTORY ENTRY AND X4,X5,X6 21 B*G= # CONTAINING A LOCAL NAME. IT EXITS PLUS 1 IF THE NAME MATCHES THAT IN 12 B*_W # THE ENTRY AND PLUS 0 OTHERWISE. 4 BBFG # 5 BB_6 NMATCH1 9 BCDQ LDX 0 ELOC1N(3) 8 BCYB BZE 0 XIT 5 BDD2 NMATCH 9 BDXL TXU 4 ELOC1N(3) 9 BFC= TXU 5 ELOC2N(3) 10 BFWW BXU 6 ELOC3N(3),(7) 4 BGBG XIT 7 BGW6 EXIT 7 1 4 BH*Q # 15 BHTB # THIS SUBROUTINE SETS A TAB IN THE TAB BLOCK. 5 BJ*2 TABSET 8 BJSL SBX 7 FX1 6 BK#= TABSET 9 BKRW BRN TABEXIT 4 BL?G # 12 BLR6 # SUBROUTINE FOR STREAMS CHECKING. 4 BM=Q # 5 BMQB XCHSTR 9 BN=2 LDX 0 A1+5(1) 18 BNPL BZE 0 X [J IF FLOCNB LANGUAGE ZERO. 19 BP9= BXU 0 ELAN-A1(3),(7) [EXIT IF WRONG LANGUAGE GIVEN. 4 BPNW X 21 BQ8G JMBAC Y,3,BNMDF,BNMULT [J IF NOT MDF OR MULTIFILE COMPONENT. 14 BQN6 KREPC 0,MULTI [MULTI-FILE. 7 BR7Q BRN Z 4 BRMB Y 15 BS72 KREPC 0,SINGLE [SINGLE FILE. 4 BSLL Z 9 BT6= ORS 0 AWORK4(2) 8 BTKW LDCT 0 #100 9 BW5G ANDX 0 AWORK2(2) 8 BWK6 BZE 0 NGDUS 8 BX4Q LDN 0 #400 9 BXJB ANDX 0 AWORK2(2) 19 BY42 BZE 0 NOTSET [J IF 1ST ENTRY TO BE FOUND. 20 BYHL SRL 0 1 [IF NOT,SET MARKER TO INDICATE 19 B_3= ORS 0 AWORK2(2) [MORE THAN ONE ENTRY FOUND. 8 B_GW BRN NGDUS 5 C22G NOTSET 8 C2G6 LDN 0 #400 9 C2_Q ORS 0 AWORK2(2) 5 C3FB NGDUS 7 C3_2 EXIT 7 0 4 C4DL [ 10 C4Y= MENDAREA 50,K99GETDIR 4 C5CW [ 4 C5XG #END 8 ____ ...44554273001300000000