{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: CLOSEONE867)}}
====== CLOSEONE867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BFCBX|BFCBX]], [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:COOR1|COOR1]], [[george:macro:ENRING|ENRING]], [[george:macro:FPUT|FPUT]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETACT|GETACT]], [[george:macro:INITLFCA|INITLFCA]], [[george:macro:JBC|JBC]], [[george:macro:JBCC|JBCC]], [[george:macro:JFZ|JFZ]], [[george:macro:LINK|LINK]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCK|LOCK]], [[george:macro:LONGON1|LONGON1]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MURDER|MURDER]], [[george:macro:OPEND|OPEND]], [[george:macro:PSTAC|PSTAC]], [[george:macro:RERING|RERING]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPFCA|SETUPFCA]], [[george:macro:SUICIDE|SUICIDE]], [[george:macro:TAB|TAB]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCA|TOPFCA]], [[george:macro:TOPFCAB|TOPFCAB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACEIF|TRACEIF]], [[george:macro:UP|UP]]
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