CLOSEONE867

(George Source)

Macros used: ACROSS, BACKSPACE, BFCBX, BITDEFS, BS, BXE, BXU, CLOSETOP, COOR1, ENRING, FPUT, GEOERR, GETACT, INITLFCA, JBC, JBCC, JFZ, LINK, LINKSET, LOCK, LONGON1, MHUNTW, MURDER, OPEND, PSTAC, RERING, SEG, SEGENTRY, SETMODE, SETNCORE, SETUPFCA, SUICIDE, TAB, TESTRPN2, TOPFCA, TOPFCAB, TOPFCB2, TRACEIF, UP

CLOSEONE867.txt
229S ...      SEG      CLOSEONE,863,SECTION FILE,CLOSE  
22FL ...#   
22KH ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983
22PD ...#     USES OF X7
22^= ...#     ----------
2394 ...#   
23DW ...      BITDEFS  7,23,XBSET          [CLOSESET
23NN ...#   
23YG ...#   
248# ...#     ENTRY POINTS  
24D6 ...#     ------------  
24MY ...#   
24XQ          SEGENTRY K1CLOSEONE,XENT1    [IN AUTOCLOSE ENTRY. 
25CB ...      SEGENTRY K3CLOSEONE,XENT3    [RE-OPEN SUPERIOR DIRECTORY. 
25X2 ...      SEGENTRY K4CLOSEONE,XENT4    [SET UP AUTOCLOSE ENTRY. 
26BL    #   
26W=    #     CLOSEONE CONTAINS THE NEXT TWO STAGES IN THE DIRECTORY UPDATE:
27?= ...#           AN AUTONOMOUS CLOSE IS SET UP.  
27N= ...#           WHEN THAT STARTS, IT SETS UP A  
285= ...#           FINTER3 TO HOLD THE FILE'S BLOCK NUMBERS, AN EMPTYB TO  
28G? ...#           HOLD ANY SPARE BLOCK NUMBERS & A FI/CFINDEXF TO HOLD THE
28X# ...#           INDEX (IF ANY). THE DIRECTORY IS THEN OPENED.   
29#B    #   
29J8 ...QLINK   
29S2 ...      LINK     CLOSEONE,1   
2=3S ...#   
2=?L ...TAB 
2=HD ...      TOPFCAB  3,2                 [X2->FCB  X3->FCA
2=R=          EXIT  6  0
2?=W ...#   
2?QG ...#   
2#7W ...#     CHECK THAT THE FILE WHOSE DIRECTORY ENTRY IS TO BE UPDATED IS 
2#K= ...#     STILL RINGED IN (HAS NOT BEEN CLOSESHORTED OR CLOSEABANDONED).  IF
2*2L ...#     IT ISN'T, GO ACROSS TO K8CLOSEALT IF FILES RINGED IN OR TO SUICIDE
2*D2 ...#     IF NONE.  
2*TB ...#     ON ENTRY, X2=FX2, X5= FCB NO. OF FILE WE ARE CLOSING.  X7 S/R LINK
2B=Q ...#     ON EXIT, IF EXITS X2->FCB X3->FCA X5=FCB NO..   OVERWRITES X0,X6. 
2BN=    SCLOSEFCB   
2C7W ...      LDN   0  FILERING(2)  
2CMG ...      BXE   0  FILERING(2),SUICIDA [J IF NO FILE RINGED IN  
2D76 ...      CALL  6  TAB                 [X2->FCB, X3->FCA
2DFH ...      BXE   5  BACK2(2),(7)        [EXIT IF FILE BEING CLOSED STILL 
2DRY ...                                   [ RINGED IN  
2F6B ...      ACROSS   CLOSEALT,8          [DIFFERENT FCB - OURS HAS GONE   
2H4W    #   
2HJG ...#   
2J46    #   
2JHQ    #     ENTRY EITHER FROM A NEWLY SET UP AUTONOMOUS CLOSE, OR FROM CLOSEND
2K3B    #           BY AN AUTONOMOUS CLOSE ALREADY ESTABLISHED IN THE CAREFUL   
2KH2 ...#           UPDATE LOOP, TO UPDATE THE DIRECTORY ENTRY OF THE TOP FILE. 
2L2L    #     SET UP A FINTER3 TO HOLD THE BLOCK NUMBERS FROM THE FCB - LATER   
2LG=    #           THE BLOCKS USED ARE DECANTED INTO THIS, AND THE BLOCKS  
2L^W    #           RECORD UPDATED FROM IT, SINCE THE BLOCKS IN THE FCB MAY BE  
2MFG    #           ALTERED OVER A COORDINATION.
2M^6 ...#     SET UP AN EMPTYB TO HOLD ANY SPARE BLOCKS & A CFINDEXF TO CONTAIN 
2NDQ ...#     THE INDEX (IF ANY). OPEN THE DIRECTORY.   
2NYB    XENT1   
2P=R ...      CALL  7  SCLOSEFCB           [CHECK IF FILE HAS BEEN CLOSESHORTED 
2PK8 ...                                   [ OR CLOSEABANDONED  
2PXL ...                                   [X2->FCB   X3->FCA   
2Q#6 ...      BS       2,BFAUTO            [SET 'FILE NOW RINGED TO AUTOCLOSE'  
2QNL ...                                   [ MARKER 
2R56 ...      JBCC     NOWAKE,2,BFAUTOW    [J IF NO 'AUTOCLOSE TO BE SET UP'
2RFL ...                                   [ WAITERS
2RW6 ...      TRACEIF  K6CLOSEONE,99,299,FLOC1(2),REL CLWT  
2S*Q ...      LONGON1  CLOSEWAIT,BACK2(2)  [RELEASE AUTO WAITERS
2STB ...      CALL  6  TAB                 [X2->FCB, X3->FCA
2WRW    NOWAKE  
2X?G          LDX   3  FUSEBL(2)
2XR6          SBX   3  FBLMOD(2)
2Y=Q ...      BZE   3  NOSPARE             [J IF NO SPARE BLOCKS IN FCB 
2YQB ...      SETNCORE 2(3),1,BSTB,EMPTYB   
2^4R ...      CALL  7  SCLOSEFCB           [CHECK IF FILE STILL THERE   
2^C8 ...                                   [ X2->FCB, X3->FCA   
2^PL ...      BS       3,BAEMPTYB          [INDICATE IN FCA 'EMPTYB SET UP' 
32NW    NOSPARE 
338G ...      LDX   3  FBLMOD(2)
33N6 ...      SBN   3  FBLKS-A1-2          [X3= NO. OF BLOCKS IN FCB + 2
347Q ...      JFZ      NIND,2,FFINDEXNO    [J IF NOT INDEXED
34MB ...      SETNCORE 1(3),1,FI,CFINDEXF  [SET UP FI/FINDEXF BLOCK TO CONTAIN  
3572 ...                                   [ INDEX  
384Q    NIND
38*= ...      SETUPCOR 3,1,FILE,FINTER3    [SET UP FINTER3 TO HOLD NEW BLOCKS   
38KQ ...                                   [ RECORD 
38W# ...      SETNCORE 10,1,FILE,FABSNB    [SET UP A FABSNB FOR THE OPEND   
396S ...      CALL  7  SCLOSEFCB           [SEE IF FILE HAS GONE
39C# ...                                   [ X2->FCB, X3->FCA   
39MW ...      LDN   6  10   
3=4M ...      STO   6  A1(1)               [SET UP FABSNB RECORD HEADER 
3=*7 ...      TRACEIF  K6CLOSEONE,99,299,FUSER1(2),CLOS SUP  [SUPERIOR USER OF  
3=KM ...                                   [ FILE BEING CLOSED  
3=W9 ...      JBC      NOTDIR,2,BFDIR      [J IF NOT A DIRECTORY
3?5W ...      TRACEIF  K6CLOSEONE,99,299,FME1(2),CLOS USE  [USER NAME OF DIR.   
3?*H ...                                   [ BEING CLOSED   
3?K8 ...                                   [SET UP 10 WORD FABSNB FOR DIR. SINCE
3?ST ...                                   [ DOING OPENDIR  
3#4J ...                                   [MAKE IT OPTIMUM FORMAT FOR OPEN 
3#F* ...      LDX   0  HCOLUSER 
3#W6 ...      STO   0  A1+4(1)             [INSERT 'SP SP SP :' 
3*=X ...      LDN   3  FME1(2)  
3*MN ...      LDN   4  A1+5(1)  
3B4F ...      MOVE  3  3                   [USER NAME TO FABSNB 
3BF= ...      LDX   0  ACES 
3BW3 ...      STO   0  A1+8(1)             [SPACES  
3C=S ...      LDN   4  FLOC1(2) 
3CMK ...      SUM   3  3
3D4B ...      STO   3  A1+9(1)             [KEY (SUM OF LOCAL NAME) TO FABSNB   
3DF7 ...      LDN   6  4
3DW2          BRN      XDIRTER  
3F*L    NOTDIR  
3FT= ...      TRACEIF  K6CLOSEONE,99,299,FLOC1(2),CLOS LOC  [NAME OF TERMINAL   
3G#W ...                                   [ FILE BEING CLOSED  
3H#6    XDIRTER 
3HNL ...      LDN   3  FUSER1(2)           [MOVE SUPERIOR USER NAME TO FABSNB   
3J56 ...      LDN   4  A1+1(1)  
3JFL ...      SMO      6
3JW6 ...      MOVE  3  511  
3K=L    #   
3KQ=    #     OPEN THE DIRECTORY
3L9W    #     K3CLOSEONE IS AN ENTRY FROM CLOSEFUL TO REOPEN THE DIRECTORY AFTER
3LPG    #           WE HAD TO CLOSE IT WHILE WAITING FOR SOMEONE TO FINISH  
3M96    #           WRITING TO, OR COPYING THE FILE WE'RE CLOSING   
3ML6 ...XENT3   
3N36 ...      SETMODE  4,GENERAL,DIR,QUERY,ERASING  
3ND6 ...OPENAGAIN   
3NT6 ...      OPEND    XBRK,4              [OPEN DIRECTORY OF FILE BEING CLOSED 
3P=9 ...#UNS  CLOSESTATS
3P#S ...(   
3PCC ...      LDN   0  1
3PG2 ...      ADS   0  CLSTAT2             [NO. OF OPENDIRS DONE BY CLOSE   
3PJK ...)   
3PL= ...      TESTRPN2 OK,VERR             [J IF ERROR ON OPENDIR   
3PMX ...                                   [IF OPENS OK 2ND TIME ROUND, CARRY ON
3PPJ ...                                   [SINCE MISREAD FROM BS ON 1ST CIRCUIT
3PR9 ...      LDN   3  FILERING(2)  
3PSW ...      SMO      FILERING(2)  
3PWH ...      LDX   2  FPTRF               [X2-> FCA AT DEPTH 1 
3PXL ...      BXE   2  3,SUICIDB           [J IF NO FCA AT DEPTH 1 (REMOVED BY  
3PYP ...                                   [ CLOSEABANDON)  
3P^T ...      PSTAC    2,2  
3Q3G ...      BFCBX    2,2                 [X2-> FCB AT DEPTH 1 
3Q57 ...      BXU   5  BACK2(2),XFCBGONE   [J IF OUR FCB GONE (CLOSEABANDONED)  
3Q5* ...                                   [HAVING CHECKED THAT THE FCB IS STILL
3Q5H ...                                   [ THERE, SINCE THE DIRECTORY IS OPEN,
3Q5P ...                                   [ THERE IS NO POSSIBILITY OF IT BEING
3Q5X ...                                   [ REMOVED HEREAFTER BY CLOSEABANDON  
3Q65 ...                                   [ OR CLOSESHORT (BOTH OF WHICH CAN   
3Q6? ...                                   [ ONLY REMOVE THE FCB WITH THE   
3Q6F ...                                   [ DIRECTORY OPEN).   
3Q6W          MHUNTW   2,FILE,ENT   
3QLG ...      LDEX  0  ECOPS(2) 
3R66 ...      BZE   0  NOCOP               [J IF NO COPIES RECORD   
3RKQ ...      BACKSPACE                    [REPOSITION ON NAME RECORD   
3S5B ...NOCOP   
49?=          ACROSS   CLOSEFUL,1   
49M= ...#   
4=3= ...#   
4=?= ...VERR                               [SHOULDN'T LOOP SINCE GEOERR IF NO   
4=H= ...                                   [ QUERY MODE & NON-OK REPLY  
4=R= ...      CALL  7  SCLOSEFCB           [CHECK FILE STILL RINGED IN  
4?3= ...      SETMODE  4,GENERAL,DIR,ERASING [NO QUERY MODE THIS TIME SO WILL   
4??= ...                                   [ BREAK WITH DIR. OPEN   
4?H= ...      BRN      OPENAGAIN
4?X= ...#   
4#?= ...#   
4#M= ...XFCBGONE
4*3= ...      ACROSS   CLOSEALT,7          [FCB GONE & DIRECTORY OPEN   
4*C= ...#   
4*R= ...#   
4B7G    SUICIDB 
4BM6 ...      CLOSETOP                     [CLOSE DIRECTORY 
4C6Q    SUICIDA 
4CLB ...      TRACEIF  K6CLOSEONE,99,299,FX2,CLOSED1 [FILE CLOSEABANDONED OR
4D62 ...                                   [ CLOSESHORTED & NO MORE FILES OPEN  
4F5=          SUICIDE   
4F=D ...#   
4FCL ...#   
4FJW    XBRK
4G4G          GEOERR   BRIEFPM,CL BRKIN 
4GJ6    #   
4GP# ...#   
4GWG ...#   
4H3Q    #     SET UP AN AUTONOMOUS CLOSE ACTIVITY AND RERING THE FILE TO IT 
4HHB    #           UNLESS IT'S A CLOSESET, WHEN WE SET UP A NEW FCA FOR THE
4J32    #           CLOSING ACTIVITY, MARK IT AS A CLOSESET FCA AND LEAVE   
4JGL    #           THE CLOSING ACTIVITY ATTACHED TO IT, WAITING FOR THE CAREFUL
4K2=    #           UPDATE TO FINISH
4KFW ...XENT4   
4K^G          GETACT   BSA,AUTCLOSE 
4L45 ...#UNS  CLOSESTATS
4L6N ...(   
4L9? ...      LDN   0  1
4L?W ...      ADS   0  CLSTAT1             [NO. OF AUTOCLOSE ACTIVITIES 
4LBF ...)   
4LF6    XCHECK  
4LYQ ...      LDN   0  FILERING(2)  
4M#F ...      BXE   0  FILERING(2),NOFILE  [J IF NO FILE OPEN TO ACTIVITY   
4MN8 ...                                   [ (SNATCHED AWAY BY CLOSESHORT OR
4N3X ...                                   [ CLOSEABANDON)  
4NCL ...      CALL  6  TAB                 [X2->FCB, X3->FCA
4NX= ...      BXU   5  BACK2(2),NOFILE     [J IF TOP FILE OPEN SNATCHED AWAY
4W?6 ...      JBC      NONEWFCA,,XBSET     [J IF NOT CLOSESET   
4WQQ ...      SETUPFCA 3,2,XCHECK,4        [SET UP NEW FCA  
4X=B ...      TOPFCB2  3                   [X3->FCB 
4XJR ...      INITLFCA                     [INITIALISE RED TAPE OF RING ELEMENT 
4XX8 ...                                   [ & UPDATE ARINGNO   
4Y9L ...                                   [X2-> NEW ELEMENT
4YP= ...      NGS   2  FREADWORD(2)        [INITILISE READ POINTERS 
4^8W          NGS   2  FREADBLOCK(2)
4^H? ...      STOZ     FGENERAL1(2)        [INITIALISE MARKER WORDS 
4^Q9 ...      BS       2,BASET             [THIS ACT. IS ABOUT TO WAIT ON A 
4^^7 ...                                   [ CLOSESET   
5286          STOZ     FGENERAL2(2) 
52DD ...      BS       3,BFCLOSESET        [SET 'SOMEONE HAS DONE CLOSESET ON   
52NQ ...                                   [ THIS FILE' BIT 
52^6 ...      TRACEIF  K6CLOSEONE,99,299,FLOC1(3),WT CLST1  
53*L ...      TOPFCA   3                   [X3-> CURRENT TOP ELEMENT
53KY ...      ENRING   2,3                 [RERING NEW FCA IN FRONT OF TOP  
53W= ...                                   [ ELEMENT
546L    NONEWFCA
54L=          SMO      FX2  
555W ...      LDX   2  BPTR                [X2-> AUTOCLOSE ACTIVITY 
55KG ...      TRACEIF  K6CLOSEONE,99,299,ACNUM(2),AUTCLOSE  
5656 ...      LINKSET  2,QLINK(1)          [SET LINK IN AUTOCLOSE ACT.  
56JQ ...      ADN   2  FILERING            [X2-> FILE RING OF AUTOCLOSE 
56X7 ...      RERING   3,2                 [RERING FCA FOR FILE BEING CLOSED TO 
579J ...                                   [ AUTOCLOSE  
57J2 ...      LDX   2  BPTR(2)             [X2->AUTOCLOSE   
583L ...      STO   5  ACC5(2)             [GIVE IT THE FCB NO. OF THE FILE 
58H= ...      FPUT                         [KICK THE AUTOCLOSE  
592W ...      JBC      UP,,XBSET           [J IF NOT CLOSESET   
5BBQ          COOR1 
5BG* ...UP  
5BKY ...      UP
5BPH ...#   
5BT6 ...#   
5BYP ...NOFILE  
5C4# ...      SMO      FX2  
5C7X ...      LDX   2  BPTR 
5C?G ...      LOCK     2
5CC5 ...      LDX   2  BPTR(2)  
5CGN ...      MURDER   2
5CL? ...      UP
5CPW ...#   
5CTL    #END
^^^^ ...67225265000100000000
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1