15 22FL SEG OPENWAIT,50,GEORGE PORTER,OPEN 4 22_= [ 15 236D ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 4 23?L ...[ 12 23DW SEGENTRY K1OPENWAIT,WAITERASE 12 23YG SEGENTRY K2OPENWAIT,WAITEMPTY 12 24D6 SEGENTRY K3OPENWAIT,WAITFREE 12 24XQ SEGENTRY K4OPENWAIT,WAITTHAW 4 254Y ...# 4 25=6 ...# 20 25CB # ROUTINE TO GO WAITING FOR SPECIAL CASES WHEN OPENING A FILE. 13 25X2 # USED ONLY BY OPEN ROUTINES. 4 2648 ...# 4 269B ...# 9 26BL MALL #60011000 9 26W= MR #60000000 9 27*W RCL #20001000 9 27TG WTER +FWTBER 9 28*6 WTFR +FWFREE 4 28SQ [ 4 29#B ...# 21 29S2 ...# THE CLUDGE CHECKING FOR SHARED FILESTORE IS PERFORMED BY SEPARATE 21 2=?L ...# (ALTHOUGH SIMILAR) CODE FROM THAT IN STANDARD GEORGE. THE REASON 11 2=R= ...# FOR THIS IS AS FOLLOWS:- 21 2?=W ...# EACH JOB BEING RUN ON 'B' (THE SLAVE MACHINE) HAS A CORRESPONDING 20 2?QG ...# CPAT ON 'A' (THE MASTER MACHINE) AND ANY FILES OPEN ON 'B' ARE 19 2#=6 ...# OPEN IN THE SAME MODES TO THE CORRESPONDING ACT. ON 'A' - 21 2#PQ ...# FILESTORE INTERLOCKS ARE THUS MAINTAINED ON 'A' SINCE ALL DATA AS 21 2*9B ...# REGARDS HOW FILES ARE OPEN IS AVAILABLE THERE. HOWEVER, ALTHOUGH 21 2*P2 ...# ON 'B' A JOB MAY HAVE FILES OPEN TO THE CPAT, PCA & AOLPTS, ON 'A' 21 2B8L ...# THESE FILES ARE ALL OPEN TO THE CPAT (THERE ARE NO CORRESPONDING 21 2BN= ...# PCA OR AOLPTS ON 'A'). NOW IN STANDARD GEORGE, THE REPLY CLUDGE 20 2C7W ...# IS GENERATED IF THE FILE IS OPEN TO THE CURRENT ACT. (WITH NO 21 2CMG ...# FURTHER CHECKS ON MODE ETC.). IF THIS CODE WERE OBEYED FOR 'B' 20 2D76 ...# JOBS (OPENREL IS ALWAYS OBEYED ON 'A' ANYWAY), IT WOULD GIVE 17 2DLQ ...# ERRONEOUS CLUDGE REPLIES IN SOME CIRCUMSTANCES. 4 2F6B ...# 6 2FL2 ...# N.B. 6 2G5L ...# ---- 19 2GK= ...# THE SHARED FILESTORE CODE WOULD WORK IN STANDARD GEORGE. 21 2H4W ...# THEREFORE, AFTER 6 MONTHS VALIDATION BY SHARED FILESTORE GEORGE 21 2HJG ...# (I.E. AFTER AUGUST 79), IT IS SUGGESTED THAT THE OLD GEORGE CODE 21 2J46 ...# BE REMOVED AND THE SHARED FILESTORE VERSION BECOME THE STANDARD 9 2JHQ ...# GEORGE VERSION. 4 2K3B ...# 4 2KH2 ...# 4 2L2L ...# 4 4P36 ...# 4 4P38 ...# 4 4P3= ...# 7 4P3# ...# MAIN CODE 7 4P3B ...# ---- ---- 4 4P3D ...# 4 4P3G ...# 6 4P3J ...WAITERASE 21 4P3L ... [THIS IS ENTRY TO WAIT FOR FILE TO 21 4P3N ... [BE ERASED.X3->DIRENT,X6 HOLDS ELOC1 17 4P3Q ... LONGSET #12,XIT,6 [SET WAITING STYLE 9 4P3S ... LDX 0 WTER(1) 9 4P3W ... STO 0 AWORK4(2) 10 4P3Y ... MHUNTW 1,FILE,ENT 19 4P42 ... LDX 3 ESER(1) [IF ENTRANT IS MT A SPECIAL 19 4P44 ... BZE 3 PATH [CLUDGE TEST IS NEEDED WHICH 15 4P46 ...[MAY BE REDUNDANT - CAN'T WAIT IF SERIAL OPEN - 20 4P48 ... JMTONL 3,,UP [LOOKS AT MTS ONLINE TO CURRENT 13 4P4= ... BRN WAIT [JOB 4 4P4# ...PATH 10 4P4B ... MHUNT 1,FILE,FLOCNB 7 4P4D ... TOPFCB2 2 9 4P4G ... LDX 4 FME1(2) 10 4P4J ... BASEFCB 3,FILE,WAIT,6 8 4P4L ... BRN NFCB2 5 4P4N ...NFCB1 16 4P4Q ... NEXTFCB 3,FILE,NFCB2,6 [MOVE TO NEXT FCB 8 4P4S ... BRN WAIT 5 4P4W ...NFCB2 9 4P4Y ... LDX 0 FME3(2) 15 4P52 ... LDX 5 FME2(2) [LOAD COMPARISON WORDS 13 4P54 ...NFCB3 [TEST IF RIGHT FCB 11 4P56 ... TXU 4 FUSER1-FCBRING(3) 15 4P58 ... BCC SOFAROK [BRANCH IF MAYBE 5 4P5= ...NFCB4 16 4P5# ... NEXTFCB 3,FILE,NFCB3,6 [FAST LOOP RETURN 17 4P5B ... BRN WAIT [ALL FCBS SEARCHED NOT FOUND 5 4P5D ...SOFAROK 20 4P5G ... TXU 5 FUSER2-FCBRING(3) [DO REST OF THE COMPARISONS 11 4P5J ... TXU 0 FUSER3-FCBRING(3) 17 4P5L ... BCS NFCB4 [NO LUCK CONTINUE SEARCH 21 4P5N ... TESTNAMX 6,A1(1),FLOC1-FCBRING(3),NFCB1,5 [FULL LOCAL NAME CO 14 4P5Q ... SBN 3 FCBRING [FCB FOUND 20 4P5S ... LDX 5 BACK1(3) [IF FILE FOUND, KEEP ITS BACKING 16 4P5W ... LDX 6 BACK2(3) [STORE HOME PAIR 8 4P5Y ... BRN NOFCB 4 4P62 ...# 4 4P64 ...# 20 4P66 ...WAITEMPTY [TO BE FREE BEFORE EMPTYING IT 20 4P68 ... VFREEW FILE,FCB [NONE IF WAITING BECAUSE FROZEN 5 4P6= ...NOFCB 16 4P6# ... CALL 3 TCLUDGE [TEST FOR CLUDGE 4 4P6B ...WAIT 9 4P6D ... MFREEW FILE,ENT 21 4P6G ... TFCBCHECK 2 [FIND FCB BELONGING TO THE DIRECTORY 19 4P6J ... LDX 4 FME1(2) [PICK UP THE USER NAME OF THE 21 4P6L ... LDX 5 FME2(2) [DIRECTORY AND KEEP IN X4,X5 AND X6 9 4P6N ... LDX 6 FME3(2) 17 4P6Q ... CLOSETOP [CLOSE THE DIRECTORY 7 4P6R ...#UNS EWAITFILE 4 4P6S ...( 9 4P6T ... LDX 0 JOBNO(2) 9 4P6W ... BZE 0 NOCQPRINT 16 4P6X ... SETNCORE 10,2,CQPRINT,CQFILE [FOR WHATSTATE 8 4P6Y ... LDN 0 10 16 4P6_ ... STO 0 A1(2) [RECORD HEADER 9 4P72 ... ADN 2 CQWTUSER 7 4P73 ... LDN 1 4 16 4P74 ... MOVE 1 3 [MOVE IN USERNAME 11 4P75 ... ADN 2 CQWTFILE-CQWTUSER 10 4P76 ... MHUNT 1,FILE,FLOCNB 8 4P77 ... ADN 1 A1 17 4P78 ... MOVE 1 6 [MOVE IN LOCAL NAME 8 4P79 ... LDX 2 FX2 6 4P7= ...NOCQPRINT 4 4P7? ...) 14 4P7# ... TRACEIF K6OPENWAIT,99,299,4,WAITING 16 4P7* ... TRACEIF K6OPENWAIT,99,299,CLONG1(2),-STYLE 11 4P7B ... LONGSTOX XBRK,,AWORK4(2) 7 4P7C ...#UNS EWAITFILE 11 4P7D ... VFREEW CQPRINT,CQFILE 12 4P7F ... TESTMODE 7,NREPW,NOT,REPWAIT 9 4P7G ... SETREP2 DIRCLOSE 7 4P7H ... UPPLUS 1 5 4P7J ...NREPW 7 4P7K ... LDN 3 4 11 4P7L ... SETUPCOR 3,1,FILE,FABSNB 8 4P7M ... ADN 1 A1 21 4P7N ... LDN 0 3 [PUT HEADER AND USERNAME INTO FABSNB 7 4P7P ... MOVE 0 4 17 4P7Q ... OPEN XIT,GENERAL,QUERY [REOPEN THE DIRECTORY 10 4P7R ... MFREE FILE,FABSNB 14 4P7S ... TRACEIF K6OPENWAIT,99,299,4,FREE NOW 7 4P7T ... UPPLUS 1 4 4P7W ...# 4 4P7X ...# 18 4P7Y ...WAITFREE [IN THE ORDINARY SENSE 9 4P82 ... CALL 3 TCLUDGE 15 4P84 ... UP [NO CLUDGE 4 4P86 ...# 4 4P88 ...# 19 4P8B ...TCLUDGE [ROUTINE TO TEST FOR CLUDGE 8 4P8D ... SBX 3 FX1 8 4P8G ... LDX 2 FX2 15 4P8J ... STO 3 AWORK1(2) [STORE LINK 7 4P8L ... FILENUMB 4 8 4P8N ... BZE 4 NCLD 21 4P8Q ... LDX 1 FILERING(2) [SET X2 TO FSTACK ELT OF 1ST FILE OPE 4 4P8S ...RING 15 4P8W ... PSTAC 2,1 [X2 -> FSTACK 15 4P8Y ... BFCBX 2,2 [X2 -> FCB 14 4P92 ... BXU 6 BACK2(2),NEXT [CLUDGE 16 4P94 ...UP LONGOFF [CLEAR LONGSET 9 4P96 ... SETREP2 CLUDGE 7 4P98 ... UPPLUS 1 20 4P9= ...NEXT LDX 1 FPTRF(1) [MOVE TO NEXT ELEMENT IN FILERING 21 4P9# ... BCT 4 RING [J IF NOT BACK TO BEGINNING OF RING 4 4P9B ...NCLD 8 4P9D ... LDX 2 FX2 9 4P9G ... LDEX 0 JOBNO(2) 17 4P9J ... BZE 0 NOTCLD [NO JOBLOCK IF ZERO 9 4P9L ... LDCH 0 ATYPE(2) 9 4P9N ... SBN 0 CPAT/64 9 4P9Q ... BNZ 0 NOTCLD 17 4P9S ... BRUSEN NOTCLD [J IF NO JOB-BLOCK. 15 4P9W ... CJOBLOCK 2 [FIND JOBLOCK 9 4P9Y ... LDEX 0 JMISC(2) 20 4P=2 ... BZE 0 NOTCLD [DONT MINISWAP IF NO CORE IMAGE 20 4P=4 ... FPCAJO 2,,N [LOCATE PCA, IF NO PCA, THERE CAN 19 4P=6 ... LDCH 0 ATYPE(2) [BE NO AOLPTS, THUS NO CLUDGE 9 4P=8 ... SBN 0 APET/64 9 4P== ... BNZ 0 NOTCLD 10 4P=# ... LDX 1 FILERING(2) 20 4P=B ... PSTAC 1,1 [THERE COULD BE ONE FILE OPEN TO 20 4P=D ... BFCBX 1,1 [APET, SO CHECK THAT IS NOT FILE 10 4P=G ... BXE 6 BACK2(1),TPM 4 4P=J ...NACT 9 4P=L ... LDX 2 FPTR(2) 19 4P=N ... LDX 0 ATYPE(2) [LOOK FOR AOLPT ACTIVITIES 21 4P=Q ... BXL 0 CACT,NACT [TRY NEXT IF THIS IS NOT AN ACTIVITY 8 4P=S ... SRL 0 12 8 4P=W ... SBN 0 AOLPT 9 4P=Y ... BNZ 0 NOTCLD 10 4P?2 ... LDN 0 FILERING(2) 10 4P?4 ... LDX 1 FILERING(2) 4 4P?6 ...XX1 7 4P?8 ... LDX 3 1 10 4P?= ... ADX 1 FBACKPOINT(1) 18 4P?# ... LDX 1 BPTR(1) [PICK UP -> TO FCB IN X1 17 4P?B ... BXE 6 BACK2(1),TPM [REMEMBER MULTIFILES 9 4P?D ... LDX 1 FPTR(3) 9 4P?G ... BXE 1 0,NACT 8 4P?J ... BRN XX1 13 4P?L ...# TEST NOW FOR PERMISSIBLE MODES 4 4P?N ...TPM 10 4P?Q ... SMO FILERING(2) 9 4P?S ... LDX 5 FGENERAL1 18 4P?W ... SMO FX1 [PICK OUT RELEVANT MODES 8 4P?Y ... ANDX 5 MALL 7 4P#2 ... LDX 6 7 15 4P#4 ... ANDN 6 #7000 [MAIN MODE 15 4P#6 ... SBN 6 #3000 [-VE IF READ 12 4P#8 ... TESTMODE 7,NOCLN,NOT,USERCLEAN 17 4P#= ... BPZ 6 WCL [J IF WE ARE WRITE 7 4P## ... SLL 5 1 18 4P#B ... BNG 5 OK [J IF THEY ARE ALSO READ 8 4P#D ... ANDN 5 #2000 19 4P#G ... BNZ 5 OK [J IF THEY ARE WRITE-CLEAN 8 4P#J ... BRN UP 4 4P#L ...WCL 16 4P#N ... SMO FX1 [J IF READ-CLEAN 9 4P#Q ... BXE 5 RCL,OK 8 4P#S ... BRN UP 5 4P#W ...NOCLN 12 4P#X ... TESTMODE 7,NOCOMM,NOT,COMMUNE 11 4P#Y ... LDX 0 FREEZECOUNT(1) 9 4P#_ ... ADX 0 FSVCT(1) 18 4P*2 ... BNZ 0 UP [CLUDGE IF FILE FROZEN 17 4P*3 ... BPZ 6 PC [J IF WE ARE NOT READ 17 4P*4 ... BPZ 5 TCOM [J IF THEY NOT READ 18 4P*6 ... TESTMODE 7,UP,,DESTRUCT [J IF DESTRUCT - CLUDGE 21 4P*8 ... JBS UP,1,BFDCF [CLUDGE IF ALREADY OPEN DESTRUCTIVELY 8 4P*= ... BRN XGRT 4 4P*# ...TCOM 8 4P*B ... ANDX 5 BIT11 20 4P*D ... BZE 5 UP [CLUDGE IF THEY NOT APPEND-COMM 14 4P*G ... TESTMODE 7,NOTDESTRUCT,NOT,DESTRUCT 19 4P*J ... JBC UP,1,BFDCF [OK IF NEITHER OR BOTH OPENER 18 4P*L ... BRN XGRT [AND FILE ARE DESTRUCT 6 4P*N ...NOTDESTRUCT 10 4P*Q ... JBS UP,1,BFDCF 8 4P*S ... BRN XGRT 4 4P*W ...PC 10 4P*Y ... TESTMODE 7,UP,,EMPTY 8 4PB2 ... BRN TCOM 5 4PB4 ...NOCOMM 17 4PB6 ... BPZ 6 UP [J IF WE ARE NOT READ 8 4PB8 ... SMO FX1 8 4PB= ... ANDX 5 MR 18 4PB# ... BZE 5 UP [J IF THEY ARE NOT READ 10 4PBB ... BRN NOTDESTRUCT 4 4PBD ...XGRT 21 4PBG ... TESTMODE 7,UP,,GDESTR [J IF GDR - CLUDGE IF ALREADY NON-GDR 17 4PBJ ... [COMMUNE OR FROZEN 20 4PBL ... JBS UP,1,BFGDR [CLUDGE IF NOTGDR MODE & FILE GDR 4 4PBN ...OK 9 4PBW LDX 5 BACK1(1) 17 4PWG LDX 6 BACK2(1) [RESTORE X5 AND X6 8 4QB6 BRN NACT 5 4QTQ NOTCLD 8 4R*B LDX 2 FX2 9 4S#L LDX 3 AWORK1(2) 8 4SS= ADX 3 FX1 21 4T?W EXIT 3 0 [NO CLUDGE ON FILE BEING WAITED FOR 4 4TC2 ...# 4 4TK= ...# 4 4TNB ...# 10 4TRG XIT GEOERR 1,OPENWAIT 4 4TYN ...XBRK 7 4W5W ...#UNS EWAITFILE 11 4W?4 ... VFREEW CQPRINT,CQFILE 5 4WD= ... UP 4 4WKH ...# 4 4WXY ...# 5 4X=B WAITTHAW 21 4XQ2 [THIS IS ENTRY TO WAIT FOR FILE TO BE FREE FOR EMPTYING. IT IS USED IN 21 4Y9L [THE CASE WHERE THE FILE IS FROZEN.IT WAS ADDED TO CORRECT BUG 2586. 4 4YP= [ 9 4_8W LONGSET 6,XIT,6 9 4_NG LDX 0 WTFR(1) 9 5286 STO 0 AWORK4(2) 8 52MQ BRN PATH 4 537B [ 4 546L #END 8 ____ ...13316103000100000000