OPENWAIT867

(George Source)

Macros used: BASEFCB, BFCBX, BRUSEN, BXE, BXL, BXU, CJOBLOCK, CLOSETOP, FILENUMB, FPCAJO, GEOERR, JBC, JBS, JMTONL, LONGOFF, LONGSET, LONGSTOX, MFREE, MFREEW, MHUNT, MHUNTW, NEXTFCB, OPEN, PSTAC, SEG, SEGENTRY, SETNCORE, SETREP2, TESTMODE, TESTNAMX, TFCBCHECK, TOPFCB2, TRACEIF, UP, UPPLUS, VFREEW

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