(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
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