14 22FL SEG OPENFILE,8,JUDY BIDGOOD,OPEN 4 22KH ...[ 15 22PD ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 4 22T* ...[ 12 22_= SEGENTRY K1OPENFILE,OPENFILE 10 23DW SEGENTRY K2OPENFILE 7 23YG LDN 4 0 9 24D6 BRN OPENSYS 10 24XQ SEGENTRY K3OPENFILE 7 25CB LDN 4 3 9 25X2 BRN OPENSYS 10 26BL SEGENTRY K4OPENFILE 7 26W= LDN 4 6 9 27*W BRN OPENSYS 10 27TG SEGENTRY K5OPENFILE 7 28*6 LDN 4 9 9 28SQ BRN OPENSYS 10 29#B SEGENTRY K7OPENFILE 8 29S2 LDN 4 12 9 2=?L BRN OPENSYS 10 2=R= SEGENTRY K8OPENFILE 8 2?=W LDN 4 15 9 2?QG BRN OPENSYS 10 2#=6 SEGENTRY K9OPENFILE 8 2#PQ LDN 4 18 9 2*9B BRN OPENSYS 10 2*P2 SEGENTRY K10OPENFILE 8 2B8L LDN 4 21 9 2BN= BRN OPENSYS 10 2C7W SEGENTRY K11OPENFILE 8 2CMG LDN 4 24 9 2D76 BRN OPENSYS 10 2DLQ SEGENTRY K12OPENFILE 8 2FL2 LDN 4 27 9 2H4W BRN OPENSYS 4 2HJG [ 19 2J46 [ ENTERED FROM THE OPEN,OPEND,OPENDIR,OPENTHAW & OPENSYS MACROS. 21 2JHQ # THIS SEGMENT TRIES TO OPEN THE FILE SPECIFIED BY THE FIRST FILE/FABSN 21 2K3B # ACT.CHAIN.IT TRIES TO OPEN AS FEW DIRECTORIES ABOVE THE NAMED FILE 8 2KH2 # AS POSSIBLE. 4 2L2L # 20 2LG= # BASICALLY IT HAS TO OPEN FILES ABOVE A GIVEN FILE,TO A MINIMUM 18 2L_W # LEVEL,AND IN CERTAIN MODES,AS GIVEN IN THIS TABLE :- 4 2MFG # 17 2M_6 # MODE FOR BOTTOM FILE : NEXT FILE UP : NEXT FILE UP 19 2NDQ # ---------------------------------------------------------- 16 2NYB # READ ) : (READ) : (READ) 19 2PD2 # READR > OBLIGATORY ONLY (NOT OBLIGATORY) 15 2PXL # EXECUTE > FOR TERMINAL FILES 7 2QC= # CLEAN ) 4 2QWW # 8 2RBG # GENERAL ) 16 2RW6 # WRITE ) : CLEAN :, (READ) 18 2S*Q # APPEND > (NOT OBLIGATORY) 8 2STB # (OVERLAY) ) 6 2T*2 # THAW 4 2TSL # 16 2W#= # CREATE : GENERAL : CLEAN 21 2WRW # (IF WE HAVE TO START FURTHER UP THE BLOCK,WE USE READ MODE) 4 2X?G # 21 2XR6 # FIRSTLY WE WORK OUT IF WE HAVE ENOUGH INFORMATION TO OPEN THE FILE 21 2Y=Q # DIRECTLY,I.E. HAVE WE ENOUGH NAMES IN THE BLOCK TO OPEN FILES TO 21 2YQB # THE MINIMUM LEVEL.FOR EXAMPLE,WE NEED AT LEAST 3 NAMES TO OPEN A 16 2_=2 # FILE IN CREATE MODE(16-WORD ABS.NAME.BLOCK) 4 2_PL # 21 329= # IF NOT WE 1ST SEARCH THE FILE & 1/2-OPEN FILE CHAINS FOR THE FCB 16 32NW # OF THE TOP NAME,WHICH MUST BE A USERNAME. 20 338G # IF WE FIND IT,WE ^PUSH DOWN^THE FABSNB & SHOVE IN THE SUPERIOR 15 33N6 # USER-NAME.IF THIS FAILS WE DO A FINDNAME. 21 347Q # IN ALL CASES WE SET A PTR IN X5 TO THE LOWEST USER-NAME WE CAN USE 18 34MB # (OR THE TOP LOCAL NAME IF THIS IS AT TIE RIGHT LEVEL) 20 3572 # SET THE APPROPRIATE MODE IN X3. HAVING SORTED OUT THESE USEFUL 20 35LL # PIECES OF INFORMATION WE EXIT TO OPENTWO WHICH SETS ABOUT THE 12 366= # BUSINESS OF OPENING THE FILE 4 36KW # 4 375G # 4 37K6 # 8 384Q NAMESYS +10 9 38JB 12HSYSTEM 8 3942 12H 8 39HL +0 8 3=3= +1 8 3=GW 4HB1 8 3?2G NAMEMAS +10 9 3?G6 MASTER 12HMASTER 8 3?_Q 12H 8 3#FB +0 8 3#_2 +1 8 3*DL 4HB1 10 3*Y= XLOCNAME 12HDICTIONARY 10 3BCW 12HLEXICON 10 3BXG 12HDOCUMENT 9 3CC6 12HSERIAL 10 3CWQ 12HINCINDEX 9 3DBB 12HOUTPUT 9 3DW2 12HIDF 10 3F*L 12HPROPERTY 10 3FT= 12HJOBLIST 10 3GSG 12HPARAMINDEX 4 3GYC ...# 9 3H#6 MODESILL #11040000 5 3HRQ SIX +6 8 3J?B THREE +3 20 3JR2 # THIS SUB-ROUTINE SETS A POINTER IN X5 TO THE NTH NAME FROM THE 21 3K=L # BOTTOM OF A FILE/FABSNB (WHERE N=[X1]) & THE MODE TO CLEAN MODE 21 3KQ= # UNLESS THIS NAME IS A LOCAL NAME,WHICH DOES NOT HAVE A USER-NAME 21 3L9W # ABOVE IT ,IN WHICH CASE IT SETS THE POINTER TO THE TOP LOCAL-NAME 10 3LPG # & THE MODE TO READ. 4 3M96 # 10 3MNQ # ENVIRONMENT ON ENTRY 13 3N8B # [X7] = RECORD HEADER OF FABSNB 21 3NN2 # [X1] = THE HEIGHT OF THE FILE-NAME WE WANT TO POINT.BOTTOM FILE 11 3P7L # IS AT HEIGHT 1 12 3PM= # [X2] = CALLING ACCUMULATOR 11 3Q6W # [X3] = PTR. TO FABSNB 4 3QLG # 4 3R66 QFI 19 3RKQ # WE STORE A1(3) IN X5 BECAUSE WE'VE NOWHERE ELSE TO PRESERVE IT 21 3S5B # X7 IS USED AS A VARIABLE POINTER RELATIVE TO A1 OF THE FABSNB TO THE 13 3SK2 # NAME WE'RE CONTEMPLATING AT ANY MOMENT 8 3T4L LDX 5 A1(3) 7 3TJ= QFL SBN 1 1 7 3W3W SBN 7 6 21 3WHG BNG 7 QFR [J IF WE'VE REACHED THE TOP-WE'VE FINISHED,IT REMAIN 19 3X36 [ONLY TO ESTIMATE THE MODE 7 3XGQ SMO 7 8 3Y2B LDX 0 A1(3) 18 3YG2 BXU 0 HCOLUSER,QFL [TRY NEXT UNLESS :USER 18 3Y_L QFJ BZE 1 QFN [IT'S A ^:USER^ AND AT THE RIGHT LEVEL! 19 3_F= BNG 1 QFP [WE'VE FOUND A ^:USER^ BUT MAYBE TOO LATE 18 3_YW QFS SBN 1 1 [TO LOOP ROUND IF COUNT UNEXPIRED,UNTIL 13 42DG SBN 7 6 [WE'VE ZEROISED IT 20 42Y6 BNG 7 QFW [TO ADJUST POINTER FOR TOP (3WD) NAME-BUT MAY BE 15 43CQ [AN ERROR IF X1 NOT YET ZERO 13 43XB BNZ 1 QFS [CARRY ON LOOPING 4 44C2 QFN 9 44WL SETMODE 3,CLEAN 21 45B= QFM SBX 5 7 [ADJUST X5 FOR EXTERNAL CONSUMPTION 7 45TW EXIT 2 0 4 46*G QFR 13 46T6 ADN 7 3 [TO ADJUST POINTER 13 47#Q BRN QFJ [BACK INTO THE FRAY 4 47SB QFK 9 48#2 SETMODE 3,READ 21 48RL BRN QFM [LOCAL-UNDER-USER AT THE MIN. LEVEL 4 49?= QFP 8 49QW SMO FX1 9 4==G BXGE 7 THREE,QFT 7 4=Q6 ADN 7 3 8 4?9Q BRN QFU 4 4?PB QFT 7 4#92 ADN 7 6 4 4#NL QFU 21 4*8= ADN 1 1 [ALL IS NOT YET LOST,THIS USER-NAME 21 4*MW BNZ 1 QFK [NO ITS NOT] [MAY BE JUST OVER A LOCAL NAME AT THE 8 4B7G BRN QFN 4 4BM6 QFW 19 4C6Q BNZ 1 ZGEOERR [GEOERR IF COUNT UNEXPIRED 7 4CLB ADN 7 3 8 4D62 BRN QFN 15 4DKL # AFTER LENGTHENING THE FABSNB BY SIX WORDS, 20 4F5= # THIS SUBROUTINE FIRST SEARCHES THE 1/2-OPEN & FILE CHAINS FOR 20 4FJW # THE FCB OF THE FILE POINTED TO. IF IT FINDS IT,IT^SHOVES DOWN^ 20 4G4G # THE FABSNB,INSERTS THE SUPERIOR USERNAME & EXITS. O/W WE DO A 18 4GJ6 # FINDNAME, EXPANDING THE FABSNB UP TO MASTER & EXITS 4 4H3Q # 10 4HHB # ENVIRONMENT ON ENTRY 21 4J32 # X0 CONTAINS THE PTR RELATIVE TO THE BOTTOM OF THE FABSNB TO THE 13 4JGL # NAME OF THE FILE WHOSE FCB WE WANT 11 4K2= # X3 POINTS TO THE FABSNB 10 4KFW # X7 CONTAINS THE LINK 5 4K_G QFIND 8 4LF6 SBX 7 FX1 17 4LYQ LDX 6 ALOGLEN(3) [LENGTHEN FABSNB BY 6 7 4MDB ADN 6 6 11 4MY2 ALTLEN 3,6,FILE,FABSNB 21 4NCL ... FINDFCB 5,5,NC [LOOK FOR FCB IN FILE & HALFOPEN CHAI 11 4NX= TESTREP2 NOTFOUND,ROGETIT 21 4PWG # THIS IS WHERE WE RESHUFFLE THE FABSNB. X5 CONTAINS THE POINTER 21 4QB6 # TO THE FCB IN THE ACT. CHAIN.SOME OF THE CONTORTIONS ARE DUE TO TH 16 4QTQ # FACT THAT WE CAN ONLY USE ACCUMULATORS 0,1,2 10 4R*B MHUNT 3,FILE,FABSNB 16 4RT2 LDN 0 6 [ADJUST REC.HDR. 8 4S#L ADS 0 A1(3) 7 4SS= LDN 0 0 10 4T?W LDX 1 ALOGLEN(3) 7 4TRG SBN 1 4 8 4W?6 SMO FX1 8 4WQQ DVD 0 SIX 21 4X=B STO 0 2 [IF [ALOGLEN(3)]=6N+4+M,PRESERVE M 10 4XQ2 LDX 1 ALOGLEN(3) 8 4Y9L ADN 1 A1(3) 19 4YP= SBX 1 2 [PTS TO WD.UNDER BOTTOM NAME 7 4_8W LDX 0 1 19 4_NG SBN 0 6 [PTS TO TOP WD.OF BOTTOM NAME 8 5286 BZE 2 NOMO 16 52MQ MOVE 0 0(2) [MOVE THE M WORDS 4 537B NOMO 20 53M2 SBX 2 ALOGLEN(3) [PUT ALOGLEN IN X2 & SUBTRACT 4+M 21 546L NGS 2 2 [FIRST,SO WE CAN SUBTRACT 6 IN ALOOP 19 54L= SBN 2 10 [SUBTRACT 10,USE X2 AS COUNT 17 555W BZE 2 MOVLASTL [J IF ONLY ONE NAME 4 55KG ZIZI 15 5656 SBN 0 6 [ADJUST FROM 19 56JQ SBN 1 6 [ & TO POINTERS 7 574B MOVE 0 6 7 57J2 SBN 2 6 8 583L BNZ 2 ZIZI 5 58H= MOVLASTL 9 592W LDX 0 HCOLUSER 9 59GG STO 0 A1+4(3) 9 5=26 LDN 0 A1+1(3) 9 5=FQ LDN 1 A1+5(3) 7 5=_B MOVE 0 3 8 5?F2 LDX 0 ACES 9 5?YL STO 0 A1+8(3) 7 5#D= LDX 2 5 21 5#XW LDN 1 FLOC1(2) [STORE KEY OF USER NAME BEING MOVED 21 5*CG SUM 0 3 [FROM TOP POSITION IN ITS LOCAL NAME 9 5*X6 STO 0 A1+9(3) 9 5BBQ LDN 1 A1+5(3) 9 5BWB LDN 0 FUSER1(2) 9 5CB2 LDN 1 A1+1(3) 7 5CTL MOVE 0 3 8 5D*= LDX 1 FX1 8 5DSW LDX 2 FX2 8 5F#G ADX 7 FX1 7 5FS6 EXIT 7 0 5 5G?Q ROGETIT 12 5GRB # MISERABLY,WE DO A FINDNAME. 10 5H?2 MHUNT 3,FILE,FABSNB 7 5HQL LDN 0 6 10 5J== SBS 0 ALOGLEN(3) 7 5JPW FINDNAME 10 5K9G TESTREP2 NOUSER,WREPLY 10 5KP6 TESTRPN2 OK,ZGEOERR 10 5L8Q MHUNT 3,FILE,FABSNB 8 5LNB ADX 7 FX1 7 5M82 EXIT 7 1 4 5MML # 21 5N7= # THIS IS THE ENTRY POINT FOR THE OPENSYS MACRO. THE APPROPRIATE FABSNB 18 5NLW # IS SET UP AND THEN THE MAIN OPENFILE ROUTINE IS ENTERED. 5 5P6G OPENSYS 10 5PL6 LDX 7 ACOMMUNE7(2) 11 5Q5Q SETNCORE 10,6,FILE,FABSNB 10 5QKB STO 7 ACOMMUNE7(2) 18 5R52 LDN 5 NAMEMAS(1) [X5->USERNAME :MASTER. 7 5RJL LDX 0 4 7 5S4= SBN 0 6 21 5SHW BNG 0 TNAMAS [J IF SUPERIOR OF REQUIRED FILE IS MA 18 5T3G SBN 5 10 [X5->USERNAME :SYSTEM. 5 5TH6 TNAMAS 8 5W2Q ADN 6 A1 20 5WGB MOVE 5 10 [MOVE SUPERIOR DIRECTORY USERNAME 15 5X22 SMO 4 [INTO FABSNB. 10 5XFL LDN 5 XLOCNAME(1) 7 5X_= ADN 6 4 20 5YDW MOVE 5 3 [MOVE IN APPROPRIATE LOCAL NAME. 19 5YYG NGS 6 AWORK2(2) [SWITCH TO INDICATE OPENSYS 9 5_D6 BRN OPENFILE1 21 5_XQ # THIS IS THE ENTRY POINT TO THE ROUTINE . WE DO SOME CHECKING FOR 21 62CB # ILLEGAL MODES & COMBINATIONS THEREOF.WE CHECK WE ARE NOT OPENING 21 62X2 # MASTER IN CREATE OR DIR MODE,OR A COMBINATION OF DIR & CREATE FOR 14 63BL # ANY FILE,OR CREATE FOR A DIRECTORY. 4 63W= # 5 64*W OPENFILE 9 64TG STOZ AWORK2(2) 6 65*6 OPENFILE1 17 65SQ TRACEIF K6OPENFILE,99,299,ACOMMUNE7(2),OPENFILE 10 66#B LDX 0 ACOMMUNE7(2) 21 66S2 ... STO 0 AWORK1(2) [RETAIN MODES IN AWORK1 THROUGHOUT 10 67?L ANDX 0 MODESILL(1) 20 67R= BNZ 0 MODEWR [GEOERR IF UNLIKELY MODES GIVEN 10 68=W MHUNT 3,FILE,FABSNB 21 68QG LDX 0 A1(3) [CHECK REC. HEADER OF FABSNB REASONAB 9 69=6 BNG 0 RECHEAD 8 69PQ SBN 0 512 21 6=9B BPZ 0 RECHEAD [GEOERR IF RIDICULOUS RECORD HEADER 20 6=P2 ... JBC NWRKF,3,BFABWORK [J IF NOT WORKFILE OR WORKTAPE 21 6?8L ... JBC WORKF,3,BFABLIB [IF ENTRANT IS NON-FILESTORE (I.E.WOR 21 6?N= ... [ WE TREAT AS NON-WORKFILE SINCE MODE 13 6#7W ... [ DIR 5 6*LQ NWRKF 12 6B6B # TEST FOR :USER/CREATE CLASH 14 6BL2 TESTMODE AWORK1(2),NOCRU,NOT,CREATE 8 6C5L LDX 0 A1(3) 7 6CK= SBN 0 7 17 6D4W BNG 0 MODEWR [GEOERR IF USER ONLY 8 6DJG SMO A1(3) 9 6F46 LDX 0 A1-6(3) 9 6FHQ TESTUSER 0,MODEWR 5 6G3B NOCRU 21 6GH2 # IF WE ARE OPENING MASTER,SET THE MODE &PTR IMMEDIATELY & EXIT TO 11 6H2L # OTHER 1/2 OF THE ROUTINE. 8 6HG= LDX 0 A1(3) 7 6H_W SBN 0 6 17 6JFG BPZ 0 QOK [J UNLESS :USER ONLY 17 6J_6 TESTNAMX 3,MASTER(1),A1+1(3),QOK [J IF NOT MASTER 12 6KDQ TESTMODE AWORK1(2),MODEWR,,DIR 11 6KYB ADDMODE AWORK1(2),CAREFUL 11 6LD2 OPENMASD ZGEOERR,AWORK1(2) 18 6LXL TESTRPN2 OK,ZGEOERR [ OR NOT OK 9 6MC= BRN STATISTIC 4 6MWW QOK 20 6NBG # THIS SECTION CHECKS FOR DIR/CREATE CLASH,AND THEN ADJUSTS THE 21 6NW6 # FABSNB'S REC;HDR. IF THE FABSNB IS ONLY 4 WDS LONG WE EXPAND IT 16 6P*Q # USING QFIND (SEE ABOVE) AND ADJUST THE HEADER 4 6PTB # 13 6Q*2 TESTMODE AWORK1(2),MODER,NOT,DIR 13 6QSL TESTMODE AWORK1(2),MODEWR,,CREATE 7 6R#= LDN 7 6 8 6RRW SBS 7 A1(3) 20 6S?G LDX 0 A1(3) [J IF NOT JUST :USER IN FLOCNB 8 6SR6 BPZ 0 MODER 16 6T=Q LDN 5 3 [PTR. FOR FINDFCB 16 6TQB ADS 7 A1(3) [READJUST R.H. 8 6W=2 CALL 7 QFIND 6 6WPL NULL 7 6X9= LDN 0 6 8 6XNW SBS 0 A1(3) 5 6Y8G MODER 4 6YN6 # 20 6_7Q # NOW WE DECIDE WHICH OF THE THREE MAIN PATHS WE HAVE TO FOLLOW 20 6_MB # (ONE FOR EACH OF THE GROUPS IN THE TABLE AT THE HEAD OF THE 7 7272 # ROUTINE) 19 72LL # A) ALL CASES WITH CREATE SUB-MODE-GO TO LABEL^XREATIS^ 19 72WD ...# B) FOR DIRECTORIES USE CLEAN PATH UNLESS LEAVE SPECIFIED 21 736= # C) ALL CASES WITH WRITE,GENERAL,OR APPEND MAIN MODE OR THAW SUB- 19 73KW # MODE (UNCLEAN MODES),GO,TO LABEL ^THAWIS^(OR^UNCLIS^) 21 745G # D) READ(R),CLEAN,(&EXECUTE) (THE CLEAN MODES) CARRY STRAIGHT THRU 4 74K6 # 13 754Q TESTMODE AWORK1(2),XREATIS,,CREATE 14 75JB TESTMODE AWORK1(2),THAWIS,,THAW,REOPEN 21 75L5 ... TESTMODE AWORK1(2),TUNCLEAN,,LEAVE [IF LEAVE THEN UNCLEAN PATH 8 75MS ... LDX 0 A1(3) 19 75PH ... SBN 0 6 [ELSE IF A DIRECTORY 18 75R= ... BNG 0 XYDIR [TAKE CLEAN PATH 7 75S_ ... SMO 0 8 75WN ... LDX 0 A1(3) 20 75YC ... BXE 0 HCOLUSER,XYDIR [IF DIRECTORY THEN CLEAN 5 7626 ...TUNCLEAN 13 7642 TESTMAIN AWORK1(2),UNCLIS,,UNCLEAN 5 76?S ...XYDIR 4 76HL # 21 773= # NOW,BY ELIMINATION WE ONLY HAVE CLEAN MODES. WE CALL QFI, TO SET 20 77GW # (IF POSSIBLE) THE PTR.TO THE BOTTOM FILE &THE MODE TO CLEAN. 21 782G # NOW,DUE TO COMPLEX INTERLOCKS,WE MAY NOT OPEN A TERMINAL FILE IN 21 78G6 # EITHER READ OR CLEAN MODE DIRECTLY,SO IF WE ARE POINTING TO THE 21 78_Q # BOTTOM FILE OF A FABSNB WHICH IS NOT A ^:USER^ WE SET THE PTR.TO 20 79FB ...# THE FILE ABOVE & THE MODE TO READ.IN THE CASE WHERE THE BOTTOM 21 79_2 # FILE IS ^:USER^ OR THE FABSNB IS ONLY 4WDS LONG,WE SET THE MODE TO 21 7=DL # THAT IN X6 & EXIT IMMEDIATELY ANY OTHER CASE WE EXIT IMMEDIATELY A 4 7=Y= # 7 7?CW LDN 1 1 8 7?XG LDX 7 A1(3) 8 7#C6 CALL 2 QFI 8 7#WQ LDX 2 FX2 7 7*BB LDX 0 5 7 7*W2 SBN 0 3 19 7B*L BZE 0 ZB1 [J IF FABSNB IS :USER ONLY 7 7BT= SBN 0 3 20 7C#W BNZ 0 ZB [J IF NOT POINTING TO BOTTOM FILE 10 7CSG MHUNT 3,FILE,FABSNB 7 7D#6 SMO 7 8 7DRQ LDX 0 A1(3) 19 7F?B TESTUSER 0,ZB1 [J IF BOTTOM FILE IS :USER 21 7FR2 TESTMODE AWORK1(2),ZB1,,DIR [IF B IN :A.B IS -> X5 DIR IMPLIES B 18 7G=L [DIRECTORY SO 1/2OPEN IT 7 7GQ= ADN 5 6 11 7H9W BXL 5 A1(3),NOTPLUS3 7 7HPG SBN 5 3 5 7J96 NOTPLUS3 9 7JNQ SETMODE 3,READ 21 7K8B BRN ZB [FCB OF THE BOTTOM FILE,INCASE WE HAV 21 7KN2 ZB1 [:A.B,WHERE B IS THE LOCAL NAME OF A 9 7L7L LDX 3 AWORK1(2) 8 7LM= BRN ZB 5 7M6W THAWIS 5 7MLG UNCLIS 21 7N66 # HERE-IF WE ONLY HAVE A 4WD FABSNB,WE SHALL HAVE TO EXPAND IT BY AT 21 7NKQ # LEAST ONE MORE NAME,SO WE CALL QFIND,SET THE PTR TO THE 2ND BOTTOM 15 7P5B # NAME IN THE FABSNB,MODE TO CLEAN & EXIT 20 7PK2 # IF WE HAVE ENOUGH INFORMATION,WE CALL QFI TO SET THE POINTER & 13 7Q4L # MODE FOR US(LABEL ^QBOTLOC^ & EXIT 4 7QJ= # 10 7R3W MHUNT 3,FILE,FABSNB 8 7RHG LDX 0 A1(3) 7 7S36 SBN 0 5 21 7SGQ BPZ 0 QBOTLOC [J IF MORE THAN JUST ONE USER-NAME 20 7T2B TESTNAMX 3,A1+1(3),MASTER(1),NOMASFILDIR [J IF NOT :MASTER.? 7 7TG2 LDN 5 3 9 7T_L LDX 3 AWORK1(2) 9 7WF= LDX 6 AWORK1(2) 11 7WYW SETNCORE 6,2,FILE,FLOCNB 9 7XDG ACROSS OPENTWO,2 6 7XY6 NOMASFILDIR 16 7YCQ LDN 5 3 [PTR. FOR FINDFCB 9 7YXB CALL 7 QFIND 20 7_C2 BRN SET9 [J IF ONLY ONE MORE NAME ADDED 8 7_WL LDX 0 A1(3) 8 82B= SBN 0 11 19 82TW BNG 0 SET9 [J IF ONLY ONE NAME INSERTED 20 83*G LDN 5 12 [O/W WE MUST HAVE >OR= 3 NAMES 8 83T6 BRN ZIXI 4 84#Q SET9 7 84SB LDN 5 9 4 85#2 ZIXI 9 85RL SETMODE 3,CLEAN 8 86?= BRN ZB 5 86QW XREATIS 4 87=G # 4 87Q6 # 4 889Q # 4 88PB # 21 8992 # RATHER AS ABOVE- EXCEPT THAT WE HAVE TO START ALEVEL HIGHER THAN I 21 89NL # UNCLEAN MODES.HOWEVER THE FABSNB IS AT LEAST 10 WDS LONG.IF IT IS 21 8=8= # WE CALL QFIND,SET THE POINTER BY HAND ON EXIT AND BRANCH TO^ZB^ 21 8=MW # OTHERWISE,WE BRANCH TO ^NUFFINFO^(THE FABSNB IS LONG ENOUGH),CALL 13 8?7G # QFI TO SET THE MODE & PTR & EXIT 4 8?M6 # 10 8#6Q MHUNT 3,FILE,FABSNB 8 8#LB LDX 0 A1(3) 8 8*62 SBN 0 13 21 8*KL BPZ 0 NUFFINFO [J IF WE HAVE ENOUGH INTO. TO OPEN 15 8B5= # [ENOGH FILES 20 8BJW TESTNAMX 3,MASTER(1),A1+1(3),SPASTIC [J IF OPENING FILE BELOW 7 8C4G LDN 5 9 9 8CJ6 SETMODE 3,GENERAL 8 8D3Q BRN ZB 5 8DHB SPASTIC 8 8F32 LDX 5 A1(3) 16 8FGL SBN 5 1 [PTR. FOR FINDFCB 8 8G2= CALL 7 QFIND 9 8GFW BRN RSETCLIQ 8 8G_G LDX 5 A1(3) 8 8HF6 SBN 5 17 9 8HYQ BNG 5 RSETCLIQ 8 8JDB LDN 5 18 9 8JY2 BRN RSETCLIR 5 8KCL RSETCLIQ 8 8KX= LDN 5 15 5 8LBW RSETCLIR 8 8LWG BRN ZIXI 5 8MB6 NUFFINFO 8 8MTQ LDX 7 A1(3) 7 8N*B LDN 1 3 8 8NT2 CALL 2 QFI 7 8P#L BRN ZB 5 8PS= QBOTLOC 8 8Q?W LDX 7 A1(3) 7 8QRG LDN 1 2 8 8R?6 CALL 2 QFI 4 8RQQ ZB 11 8S=B SETNCORE 6,1,FILE,FLOCNB 9 8SQ2 LDX 6 AWORK1(2) 9 8T9L ACROSS OPENTWO,1 5 8TP= WREPLY 10 8W8W MHUNT 1,FILE,FABSNB 10 8WNG LDX 0 ALOGLEN(1) 8 8X86 SBX 0 A1(1) 7 8XMQ SBN 0 3 8 8Y7B BNG 0 RD 7 8YM2 LDN 0 6 8 8_6L ADS 0 A1(1) 4 8_L= RD 17 925W TESTMODE AWORK1(2),NOFILE,NOT,QUERY,REPLY,NOWAIT 17 92KG TRACEIF K6OPENFILE,99,299,ACOMMUNE9(2),OPEN ERR 6 9356 STATISTIC 7 93JQ UPPLUS 1 10 944B ...# WORKFILES 4 94J2 # 5 953L WORKF 16 95H= TESTMODE AWORK1(2),MODEWR,,DIR,CREATE,DESTRUCT 13 962W TESTMODE AWORK1(2),NWT,NOT,THAW 11 96GG ADDMODE AWORK1(2),ERASING 4 9726 NWT 13 97FQ TESTMODE AWORK1(2),NOGWK,NOT,LEAVE 7 97_B GETDIRWORK 9 98F2 TESTRPN2 OK,RDY 5 98YL NOGWK 11 99D= OPENWORX XBRK,AWORK1(2) 9 99XW TESTRPN2 OK,RDX 13 9=CG TESTMODE AWORK1(2),UPLUS,NOT,THAW 7 9=X6 TOPFCB2 2 16 9?BQ TRACEIF K6OPENFILE,99,299,BACK2(2),WORK REL 10 9?WB LONGON 6,BACK2(2) 5 9#B2 UPLUS 9 9#TL #SKI K6OPENFILE>99-99 4 9**= ( 10 9*SW MHUNT 3,FILE,FABSNB 8 9B#G ADX 3 A1(3) 16 9BS6 TRACEIF K6OPENFILE,99,299,A1-2(3),WORKOPEN 4 9C?Q ) 7 9D?2 UPPLUS 1 4 9DQL RDX 12 9F== TESTMODE AWORK1(2),XT,,THAW 18 9FPW LDCH 0 ATYPE(2) [NOFILE REPLY IS ALLOWED 9 9G9G SBN 0 ACTLF/64 8 9GP6 BNZ 0 RD 4 9H8Q XT 9 9HNB TESTRPN2 NOFILE,RD 5 9J82 SHUNTF 10 9JML MHUNT 3,FILE,FABSNB 8 9K7= ... LDN 0 #200 9 9KLW ... ANDX 0 ATYPE(3) 18 9L6G ... ERS 0 ATYPE(3) [CONVERT TO NON-! FABSNB 21 9LL6 BRN QOK [START AGAIN BUT OMITTING SOME CHECKS 4 9M5Q RDY 21 9MKB TESTRPN2 NOFILE,ZGEOERR [ONLY LEGAL NON-OK REPLY IS NOFILE & 21 9N52 TESTMODE AWORK1(2),SHUNTF,,THAW [ONLY WITH TH 19 9NJL LDCH 0 ATYPE(2) [IF ACT AN ACTLF OR MODE THAW 18 9P4= SBN 0 ACTLF/64 [NOFILE REPTY IS ALLOWED 9 9PHW BZE 0 SHUNTF 5 9Q3G ZGEOERR 10 9QH6 GEOERR 1,OPENFILE 5 9R2Q MODEWR 10 9RGB GEOERR 1,OPENMODE 5 9S22 RECHEAD 10 9SFL GEOERR 1,FABSRCHD 5 9S_= NOFILE 9 9TDW GEOERR 1,NO FILE 4 9TYG XBRK 5 9WD6 UP 4 9XX2 #END 8 ____ ...67352102000100000000