14 22FL ... SEG COPYFILA,,SECTION FILE,CLOSE 4 22R2 ...# 15 22XN ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 4 234B ...# 21 23*Q ...# THIS IS THE MAIN PART OF THE COPYFILE PROCESS WHICH COPIES A FILE 21 23M6 ...# FROM ONE RESIDENCE TO ANOTHER. IT IS ENTERED AT K1 FROM COPYFILE 21 23YG ...# SEGMENT IN AN BSA/AUTOCOPY ACTIVITY AFTER THE FILE TO BE COPIED 21 249W ...# HAS BEEN OPENED IN COPY MODE AND BACKING STORE OBTAINED TO COPY 8 24H= ...# THE FILE TO. 4 24SL ...# 4 2562 ...# 4 25CB ...# 8 25NQ ...# USE OF AWORK3 8 2626 ...# --- -- ------ 4 26?G ...# 16 26JW ... BITDEFS AWORK3,0,XBMASTER [COPYING :MASTER 4 27QB ...# 4 283Q ...# 4 28*6 ...# 4 28LG ...# 8 28XW ...# ENTRY POINTS 8 299= ...# ----- ------ 4 29GL ...# 20 29S2 ... SEGENTRY K1COPYFILA,XENT1 [MAIN ENTRY ACROSS FROM COPYFILE 4 2#PQ ...# 7 2*36 ...# CONSTANTS 7 2*#G ...# --------- 4 2*KW ...# 4 2*X= ...# 4 2B8L TYPE 8 2BN= #HAL FILE+FURB,0 8 2C7W #HAL FILE+FUWB,0 8 2CMG #HAL FILE+FURWB,0 8 2D76 #HAL FILE+FURRB,0 8 2DLQ #HAL FI+INSERT1,0 8 2F6B #HAL FI+INSERT2,0 8 2FL2 #HAL FI+INSERT3,0 8 2G5L #HAL FI+INSERT4,0 8 2GK= #HAL FI+INSERT5,0 4 2H4W X 20 2H#N ...#DEF TYPES=X-TYPE [NO. OF BLOCK TYPES IN ABOVE LIST 4 2HJG # 4 2HP_ ...# 8 2HXD ...# SUBROUTINES 8 2J4X ...# ----------- 4 2J=B ...# 4 2JCT ...# 20 2JK# ...# SWAPS BACK1/2 FOR ANY BUFFER BLOCK ASSOCIATED WITH THE FILE 18 2JQR ...# (BUFFERS OF THE TYPES LOOKED FOR WILL ONLY BE IN THE 8 2JY= ...# FILE CHAIN). 21 2K5P ...# ON ENTRY, X2-> FCB, X3-> OLD BLOCKS LIST (IN FULLB IN ACT. CHAIN). 13 2K?8 ...# X4 IS S/R LINK. 15 2KDM ...# ON EXIT, X1-> NEW BLOCKS LIST (FI/FTABLE), 21 2KL6 ...# X3-> OLD BLOCKS LIST (BSTB/FULLB). OVERWRITES X0,X5,X6. 5 2KRK ...SWAPBUFF 20 2K_4 ... LDX 1 BPTR(3) [X1-> NEW BLOCKS LIST (FI/FTABLE) 5 2L6H ...NEXTBLK 16 2L#2 ... LDX 2 FPTR(2) [X2-> NEXT BLOCK 19 2LFF ... BXE 2 CXFI,(4) [EXIT IF END OF FILE CHAIN 9 2LLY ... LDX 0 ATYPE(2) 16 2LSC ... BXE 0 FILEPLUSFCB,(4) [EXIT IF NEXT FCB 9 2L_W ANDX 0 HALFTOP 20 2MFG ... LDN 5 TYPES [PICK UP NUMBER OF TYPES IN TABLE 5 2M_6 NOTYPE 8 2N*L ... LDX 6 FX1 7 2NQ6 ... ADX 6 5 7 2P6L ... SMO 6 19 2PH6 ... BXE 0 TYPE-1,TYPEFOUND [J IF RELEVANT BLOCK FOUND 9 2PXL BCT 5 NOTYPE 9 2Q=3 ... BRN NEXTBLK 21 2QJD ...TYPEFOUND [X2-> BLOCK WITH RES. NO./ FILE NO. 20 2QWT ... TRACEIF K6COPYFILA,199,399,0,CYFBUFTY [TYPE OF BUFFER FOUND 20 2R9= ... TRACEIF K6COPYFILA,199,399,BACK2(2),CYFBUFBL [BLOCK NO. OF 16 2RHM ... [ BUFFER FOUND 20 2RM6 ... LDX 0 BACK1(2) [IGNORE IF NEWLY CREATED FI/INSERT 20 2RQK ... BZE 0 NEXTBLK [BLOCK WITH NO B.S. HOME AS YET 9 2RW6 LDX 0 A1+1(1) 17 2S*Q ... STO 0 BACK1(2) [INSERT NEW RES. NO. 9 2STB LDX 6 BACK2(2) 7 2T*2 ANDN 6 3 9 2TSL ERX 6 BACK2(2) 19 2W#= ... ERS 6 BACK2(2) [REMOVE ALL BUT BITS 22 & 23 21 2WRW ... [X6= OLD BLOCK NO. (B22 & 23 CLEAR) 20 2X?G ... CALL 7 SFINDBL [FIND CORRESPONDING NEW BLOCK NO. 17 2XR6 ... BRN XNOTINLIST [GEOERR IF NOT FOUND 17 2Y=Q ... ORS 6 BACK2(2) [INSERT NEW BLOCK NO. 9 2YQB ... BRN NEXTBLK 4 366= # 4 366N ...# 21 3676 ...# SWAPS BACK1/2 OF ANY BSTB/BREAD BLOCK BELONGING TO THIS FILE IN 10 367J ...# THE ACTIVITY CHAIN. 16 3682 ...# ON ENTRY, X1-> NEW BLOCKS LIST (FI/FTABLE), 21 368D ...# X3-> OLD BLOCKS LIST (BSTB/FULLB). X4 IS S/R LINK. 18 368W ...# ON EXIT, X1-> NEW BLOCKS LIST, X3-> OLD BLOCKS LIST. 17 369# ...# OVERWRITES X0,X2,X5,X6,X7. 6 369Q ...SWAPBREAD 21 36=8 ... HUNTANY 2,BSTB,BREAD,BACT,(4),REHUNTBREAD [HUNT IN ACT. CHAIN 21 36=L ... [ FOR BSTB/BREAD BLOCK (X2-> IT). 21 36?4 ... [ REHUNTBREAD IS RE-ENTRY LABEL TO 20 36?G ... [ CONTINUE SEARCHING FOR MORE 9 36?Y ... LDX 0 BACK1(2) 18 36#B ... BXU 0 A1+1(3),REHUNTBREAD [J IF FOR WRONG RESIDENCE 7 36#S ... NGN 6 4 21 36*= ... ANDX 6 BACK2(2) [X6= BLOCK NO. IN BSTB/BREAD (WITH 18 36*N ... [ BITS 22 & 23 OMITTED) 20 36B6 ... CALL 7 SFINDBL [FIND CORRESPONDING NEW BLOCK NO. 21 36BJ ... BRN REHUNTBREAD [EXIT +0 - OLD BLOCK NO. NOT FOUND 21 36C2 ... [EXIT +1 - FOUND. X6= NEW BLOCK NO. 21 36CD ... TRACEIF K6COPYFILA,99,299,BACK2(2),CYFBUFBR [BSTB/BREAD WITH THIS 20 36CW ... [ BLOCK NO. FOUND FOR THE FILE 9 36D# ... LDX 0 A1+1(1) 18 36DQ ... STO 0 BACK1(2) [INSERT NEW RESIDENCE NO. 7 36F8 ... LDN 0 3 21 36FL ... ANDS 0 BACK2(2) [PRESERVE B22 & B23 ONLY OF BLOCK NO. 21 36G4 ... ORS 6 BACK2(2) [INSERT NEW BLOCK NO. INTO BSTB/BREAD 10 36GG ... BRN REHUNTBREAD 4 36GY ...# 4 36HB ...# 12 36HS ...# LOCATES FCB OF TOP FILE OPEN. 16 36J= ...# ON ENTRY, . X7 IS S/R LINK. 14 36JN ...# ON EXIT, X2-> FCB OF TOP FILE OPEN. 4 36KW TB 14 375G TOPFCB 2 [X2->FCB 7 37K6 EXIT 7 0 4 3DW2 # 4 3F5S ...# 21 3F*L # LOOK FOR A FULLB IN OUR PART OF THE FILE CHAIN, WHICH HAS THE SAME 20 3FN3 ...# RES. NO. AS THE FCB, AND EXIT+1 IF FOUND. EXIT+0 IF NOT. 14 3G2D ...# ON ENTRY, X2-> FCB. X6 IS LINK. 19 3G7M ...# ON EXIT, X2-> FCB, X3-> FULLB (IF FOUND). OVERWRITES X0 . 5 3G#W SBFIND 19 3GHQ ... JBC (6),2,BFCARE [EXIT IF NOT OPEN CAREFULLY 15 3GQL ... LDX 3 FPTR(2) [X3-> FSTACK 5 3G_G ...SBFIND1 20 3H8B ... LDX 3 FPTR(3) [X3-> NEXT BLOCK IN FILE CHAIN 18 3HC= ... BXE 3 CXFI,NOFMAPP [J IF END OF FILE CHAIN 9 3HL6 ... LDX 0 ATYPE(3) 16 3HT2 ... BXE 0 FILEPLUSFCB,NOFMAPP [J IF NEXT FCB 16 3J3W ... BXU 0 FFSFMAPP,SBFIND1 [J IF NOT FMAPP 15 3J=Q ... [X3-> FMAPP 9 3JFL ... LDX 0 FFSFULLB 9 3KQ= LDX 3 FPTR(3) 16 3L9W ... BXU 0 ATYPE(3),(6) [EXIT IF NO FULLB 9 3M96 LDX 0 A1+1(3) 21 3MNQ ... BXU 0 BSPRE(2),(6) [EXIT IF FULLB FOR WRONG RESIDENCE 17 3N8B ... EXIT 6 1 [EXIT+1 WITH POINTER 5 3NN2 ...NOFMAPP 16 3R66 ... BRN XNOFMAPP [GEOERR OTHERWISE 4 3RKQ ...# 4 3S5B ...# 21 3SK2 ...# CALCULATES THE NO. OF BLOCKS IN THE FCB & THE 1ST FULLB (IF ANY) 20 3T4L ...# FOR THE RESIDENCE THE FILE IS ON - THIS IS THE NO. OF BLOCKS 13 3TJ= ...# TO COPY TO THE NEW RESIDENCE. 16 3W3W ...# ON ENTRY, X2->FCB. X7 IS S/R LINK. 17 3WHG ...# ON EXIT, X2->FCB, X4= (NO. OF BLOCKS TO COPY)+2. 18 3X36 ...# OVERWRITES X0 & X6. 5 3XGQ ...SCALSIZE 9 3Y2B ... LDX 4 FUSEBL(2) 20 3YG2 ... SBN 4 FBLKS-A1-2 [X4= (NO. OF BLOCKS IN FCB) +2 21 3Y_L ... TRACEIF K6COPYFILA,199,399,4,CYFBLFCB [NO. OF BLOCKS IN FCB +2 19 3_F= ... CALL 6 SBFIND [LOCATE FILE'S FULLB (IN X3) 14 3_YW ... BRN NOTAFULLB [NO FULLB 8 42DG ... ADX 4 A1(3) 20 42Y6 ... TRACEIF K6COPYFILA,199,399,A1(3),CYFBLFUL [NO. OF BLOCKS IN 17 43CQ ... [ FILE'S FULLB +2 21 43XB ... SBN 4 2 [ADD NO. OF BLOCKS IN FILE'S FULLB 6 44C2 ...NOTAFULLB 7 44WL ... EXIT 7 0 4 45B= ...# 4 45TW ...# 21 46*G ...# SEARCHES THE OLD BLOCKS LIST FOR A GIVEN BLOCK NO. & THEN PICKS UP 13 46T6 ...# THE CORRESPONDING NEW BLOCK NO.. 18 47#Q ...# ON ENTRY, X1-> NEW BLOCKS LIST, X3-> OLD BLOCKS LIST, 16 47SB ...# X6= BLOCK NO.. X7 IS S/R LINK. 18 48#2 ...# ON EXIT, X1-> NEW BLOCKS LIST, X3-> OLD BLOCKS LIST, 18 48RL ...# X6= CORRESPONDING NEW BLOCK NO. (IF ANY). 16 49?= ...# X5= MOD. OF BLOCK DOWN BLOCKS LIST. 19 49QW ...# EXITS +0 IF BLOCK NOT FOUND, +1 IF FOUND (NORMAL CASE). 5 4==G ...SFINDBL 8 4=Q6 ... LDX 5 A1(3) 21 4?9Q ... SBN 5 2 [X5= NO. OF BLOCKS IN OLD BLOCKS LIST 19 4?PB ... BZE 5 (7) [EXIT IF NO BLOCKS IN FILE 5 4#92 ...SFINDBL1 7 4#NL ... SMO 5 15 4*8= ... BXE 6 A1+1(3),SFINDBL2 [J IF FOUND 18 4*MW ... BCT 5 SFINDBL1 [TRY NEXT BLOCK IN LIST 16 4B7G ... EXIT 7 0 [BLOCK NOT FOUND 5 4BM6 ...SFINDBL2 7 4C6Q ... SMO 5 17 4CLB ... LDX 6 A1+1(1) [X6= NEW BLOCK NO. 15 4D62 ... EXIT 7 1 [BLOCK FOUND 4 4DKL ...# 4 4F5= ...# 4 5DSW ...# 4 5F#G ...# 4 5FS6 ...# 7 5G?Q ...# MAIN CODE 7 5GRB ...# ---- ---- 4 5H?2 ...# 4 5HQL ...# 4 63BL # 12 63W= # FINISH SETTING UP THE FTABLES 21 64*W # PUT THE OLD FRN AND BLOCK NOS IN THE TOP OF THE FTABLE, AND 19 64TG # THE OLD FROM THE FULLB (IF PRESENT) AT THE BOTTOM 12 65*6 # SWAP THE BLOCK NUMBERS IN CORE 21 65SQ # REPLACE THE OLD FRN AND BLOCK NUMBERS IN THE FCB AND FULLB 14 66#B # BY THE CORRESPONDING NEW ONES 21 66S2 # SEARCH THE FILE'S SECTION OF THE FILE CHAIN FOR USAGE BLOCKS 18 67?L # AND RESET BACK1 AND BACK2 IF ANY ARE FOUND 21 67R= # DO THE SAME IN THE ACTIVITY CHAIN FOR THOSE FILES WHICH 12 68=W # HAVE THE FILE OPEN 5 68?K ...XENT1 14 68CX ... CALL 7 TB [X2-> FCB 21 68DL ... CALL 7 SCALSIZE [X4= NEW (NO. OF BLOCKS TO COPY) +2 10 68F* ... MHUNTW 1,BSTB,FULLB 10 68G4 ... LDX 0 ALOGLEN(1) 20 68GR ... BXL 0 4,NENOUGHBS [J IF NO. OF BLOCKS REQUIRED HAS 15 68HG ... [ INCREASED 18 68J9 ... BS 2,BFCOPY [SET 'BEING COPIED' BIT 6 68KM ...STAGE2ONB 9 68LB ... LDX 4 FUSEBL(2) 10 68M5 ... SBN 4 FBLKS-A1-2 20 68MS ... STO 4 A1(1) [INSERT RECORD HEADER INTO FULLB 8 68NH ... ADN 1 A1+1 9 68P= ... LDN 0 BSPRE(2) 21 68P_ ... SMO 4 [MOVE BLOCK NOS. IN FCB INTO FULLB 16 68QN ... MOVE 0 511 [ IN ACT. CHAIN 20 68RC ... DOWN COPYFILE,4 [WAIT FOR EXISTING TRANSFERS TO 16 68S6 ... [ FINISH ON FILE 14 68ST ... CALL 7 TB [X2-> FCB 20 68TJ ... TRACEIF K6COPYFILA,199,399,FLOC1(2),CYFFWAIT [FILEWAIT DONE 16 68W? ... [ FOR THIS FILE 20 6=W= ... CALL 7 SCALSIZE [X4= CURRENT (NO. OF BLOCKS TO 20 6=W_ ... [ COPY) +2 10 6=XN ... MHUNTW 1,BSTB,FULLB 10 6=YC ... LDX 0 ALOGLEN(1) 21 6=_6 ... BXGE 0 4,STAGE2A [J IF STILL HAVE SUFFICIENT BLOCKS ON 18 6=_T ... [ NEW RES. TO COPY FILE 5 6?42 ...RELCOPY1 21 6?4P ... BC 2,BFCOPY [CLEAR 'BEING COPIED' BIT & RELEASE 18 6?5D ... FON COPY [ ANY WAITING ACCESSORS 6 6?67 ...NENOUGHBS 16 6?6W ... ACROSS COPYFILE,3 [GO & GET MORE BS 4 6*2H ...# 5 6*3= ...STAGE2A 21 6*3_ ... STO 4 A1(1) [SET RECORD HEADER OF BSTB/FULLB IN 15 6*4N ... [ ACT. CHAIN 8 6*76 ADN 1 A1+1 9 6B6B LDX 4 FUSEBL(2) 21 6BL2 ... SBN 4 FBLKS-A1-1 [X4=BLOCKS+1 (TO ALLOW FOR BSPRE) 9 6D4W LDN 0 BSPRE(2) 7 6DJG SMO 4 21 6D_2 ... MOVE 0 0 [MOVE BLOCK NOS. FROM FCB TO FULLB 16 6F*G ... [ IN ACT. CHAIN 21 6FQ2 ... CALL 6 SBFIND [LOCATE (IN X3) FILE'S CURRENT FULLB 14 6G6G ... BRN NOFULLB1 [NO FULLB 7 6GH2 ADX 1 4 8 6H2L LDX 5 A1(3) 20 6HG= SBN 5 2 [IN CASE FULLB JUST BEING SET UP 21 6H_W ... BZE 5 NOFULLB [J IF FILE'S CURRENT FULLB IS EMPTY 9 6JFG LDN 0 A1+2(3) 7 6J_6 SMO 5 21 6K6_ ... MOVE 0 0 [MOVE BLOCK NOS. FROM FILE'S EXISTING 20 6K#S ... [ FULLB TO FULLB IN ACT. CHAIN 5 6KGM ...NOFULLB 10 6KNG ... MHUNTW 1,FI,FTABLE 9 6KW* ... LDX 0 A1+1(1) 21 6L48 ... STO 0 A1+1(3) [INSERT NEW RES. NO. IN FILE'S FULLB 19 6L=3 ... BZE 5 NOFULLB1 [J IF NO BLOCK NOS. TO MOVE 9 6LD2 LDN 0 A1+1(1) 7 6LXL ADX 0 4 9 6NBG LDN 1 A1+2(3) 7 6NW6 SMO 5 21 6P8H ... MOVE 0 0 [MOVE BLOCK NOS. FROM FI/FTABLE FOR 21 6PGY ... [ NEW RESIDENCE TO FILE'S EXISTING 14 6PT* ... [ FULLB 5 6Q7Q ...NOFULLB1 10 6QG7 ... MHUNTW 1,FI,FTABLE 8 6QSL ADN 1 A1+1 8 6R#= ADN 2 BSPRE 21 6RRW ... SMO 4 [MOVE BLOCK NOS. FROM FI/FTABLE (NEW 17 6S?G ... MOVE 1 0 [ RESIDENCE) TO FCB 17 6SR6 ... MHUNTW 3,BSTB,FULLB [X3-> OLD BLOCKS LIST 21 6T=Q ... CALL 7 TB [X2-> FCB (START SEARCHING FOR BUFFER 17 6TQB ... [ BLOCKS FROM HERE) 21 6W=2 ... CALL 4 SWAPBUFF [SWAP BACK1/2 IN BUFFERS ASSOCIATED 19 6WPL ... [ WITH FILE IN FILE CHAIN 20 6X9= ... CALL 4 SWAPBREAD [SWAP BACK1/2 IN ANY BSTB/BREAD 21 6XNW ... [BLOCKS FOR THE FILE IN THE ACT CHAIN 4 7JNQ # 14 7K8B # NOW COPY FROM THE OLD BS TO THE NEW 21 7KN2 # TAKING THE NEW BLOCKS IN TURN, WE BACKREAD THE CORRESPONDING 19 7L7L # OLD BLOCKS - ALLOWING FOR ANOTHER ACTIVITY HAVING 13 7LM= # BACKREAD THE SAME BLOCK 21 7M6W # WE RESET BACK1 AND BACK2 OF THE BREAD BLOCK, MARK THE BLOCK 14 7MLG # AS COPIED AND WRITE IT AWAY 21 7N66 ... LDX 6 A1(3) [X6= NO. OF BLOCKS TO COPY +2 (MUST 21 7NKQ ... [ TAKE VALUE FROM FULLB SINCE MAY BE 19 7P5B ... [ SPARE BLOCKS IN FTABLE) 20 7PK2 ... TRACEIF K6COPYFILA,99,299,6,CYFBLCY [NO. OF BLOCKS COPIED +2 16 7Q4L BCT 6 TMORECOPY [ALWAYS BRANCHES 5 7QJ= MAINCOPY 16 7R3W ... LDX 4 A1+1(3) [X4= OLD RES. NO. 7 7RHG ... SMO 6 18 7S36 ... LDX 5 A1+1(3) [X5= NEXT OLD BLOCK NO. 12 7SGQ ... BACKREAD BUSE+FAIL,BSBS,,EX4 20 7T2B ... MHUNTW 3,FI,FTABLE [X3-> FI/FTABLE (NEW BLOCKS LIST) 9 7TG2 ... LDX 4 A1+1(3) 7 7T_L ... SMO 6 9 7WF= ... LDX 5 A1+1(3) 11 7WYW ... WRITEAUT FAIL,BSBS,,EX4 6 7XDG ...TMORECOPY 19 7XY6 ... SBN 6 1 [DECREMENT COUNT OF BLOCKS 7 7YCQ ... LDX 0 6 7 7YXB ... ANDN 0 3 21 7_C2 ... BNZ 0 TMORECOPY1 [WAIT EVERY 4TH BLOCK TO AVOID TOO 20 7_WL ... BACKWAIT [ MANY OUTSTANDING WRITES (AFTER 19 82B= ... [ LAST WRITE WILL ALWAYS GO 18 82TW ... [ THROUGH THE BACKWAIT) 6 83*G ...TMORECOPY1 10 83T6 ... MHUNTW 3,BSTB,FULLB 18 84#Q ... BNZ 6 MAINCOPY [J IF MORE BLOCKS TO COPY 21 85RL ...XCOPYFIN [FREE ANY SPARE BSTB/BFREEW BLOCKS 10 86?= ... MHUNTW 1,BSTB,BFREEW 9 86QW ... BNG 1 STAGE4 7 87=G ... FREECORE 1 9 87Q6 ... BRN XCOPYFIN 4 9H8Q # 21 9HNB # THE FILE HAS BEEN COPIED TO THE NEW BS, BUT BEFORE FREEING THE OLD 18 9J82 # BS THE DIRECTORY ENTRY MUST BE FIRMLY UPDATED 21 9K7= # AFTER REPLACING THE OLD BLOCK NUMBERS IN THE BLOCKS RECORD BY THE 20 9KLW # CORRESPONDING NEW BLOCKS, WE CLOSESET THE DIRECTORY AND 11 9L6G # FREEBAX THE OLD BS 20 9LL6 # FINALLY WE GO ACROSS TO CLOSEDIR TO CLOSE THE FILE AND SUICIDE 5 9M5Q STAGE4 17 9M7K ... MHUNTW 1,BSTB,FULLB [X1-> OLD BLOCKS LIST 17 9M9D ... MHUNTW 2,FI,FTABLE [X2-> NEW BLOCKS LIST 8 9M?? ... LDX 3 A1(2) 8 9M*6 ... SBX 3 A1(1) 21 9MB_ ... BZE 3 NOSPARE [J IF NO SPARE BLOCKS IN FI/FTABLE 20 9MDS ... TRACEIF K6COPYFILA,99,299,3,CYFFRBS [FREE THIS NO. OF SPARE 15 9MGM ... [ NEW BLOCKS 7 9MJG ... ADN 3 2 21 9ML* ... SETUPCOR 3,1,BSTB,FULLB [GET FULLB TO INSERT SPARE BLOCKS IN 17 9MN8 ... STO 3 A1(1) [SET RECORD HEADER 19 9MQ3 ... SBN 3 2 [X3= NO. OF BLOCKS TO FREE 10 9MRW ... MHUNTW 2,FI,FTABLE 9 9MTP ... LDX 0 A1+1(2) 17 9MXJ ... STO 0 A1+1(1) [SET RESIDENCE NO. 8 9M_C ... ADN 1 A1+2 8 9N3= ... SMO A1(2) 20 9N55 ... LDN 0 A1(2) [MOVE SPARE BLOCKS FROM END OF 21 9N6Y ... SBX 0 3 [ FI/FTABLE TO NEWLY CREATED FULLB 8 9N8R ... MOVE 0 0(3) 20 9N=L ... SBS 3 A1(2) [ADJUST FTABLE'S RECORD HEADER 18 9N#F ... FREEBAX [FREE THE SPARE BLOCKS 10 9NB# ... MFREEW BSTB,EMPTYB 5 9ND7 ...NOSPARE 20 9Q7F ... [RELEASING WAITERS DONE ON B IN 20 9Q9# ... [ 'FSHMOVE START,COPY' (Q.V.) 14 9Q?7 ... CALL 7 TB [X2->FCB 9 9Q*2 ... BC 2,BFCOPY 20 9QBT ... FON COPY [RELEASE ANY WAITING ACCESSORS 15 9QDN ... JBS MASFIN,2,XBMASTER [J IF :MASTER 14 9QH6 OPENDIR XX,GENERAL,CAREFUL,ERASING 19 9RGB TESTREPN OK,REP [GEOERR IF CAN'T OPEN FILE 10 9S22 MHUNTW 1,FILE,ENT 9 9SFL LDEX 4 ECOPS(1) 16 9SPD ... FREECORE 1 [FREE FILE/ENT 18 9S_= BZE 4 NOCOPS [J IF NO COPIES RECORD 7 9TDW ... READAGAIN 17 9TYG ... MHUNTW 3,FILE,FRB [X3-> BLOCKS RECORD 17 9WD6 ... MHUNTW 2,BSTB,FULLB [X2-> OLD BLOCKS LIST 9 9WXQ ... LDX 0 A1+1(3) 21 9XCB ... BXU 0 A1+1(2),XCOPYERR [GEOERR IF RES. NO. OF OLD BS DIFFERS 19 9XM8 ... [ FROM THAT IN BLOCKS REC. 19 9XX2 ... MHUNTW 1,FI,FTABLE [X1-> FTABLE (NEW BLOCK LIST) 9 ==76 LDX 0 A1+1(1) 9 ==LQ ... STO 0 A1+1(3) 17 =?6B ... LDX 4 A1(3) [X4= NO. OF BLOCKS +2 16 =?L2 ... BCT 4 TRANSLATE [ALWAYS BRANCHES 5 =#5L OUTERTR 7 =#K= SMO 4 21 =*4W ... LDX 0 A1+1(3) [PICK UP NEXT BLK IN BLOCKS RECORD 8 =*JG LDX 5 A1(2) 7 =B46 SBN 5 2 5 =BHQ TRINNER 7 =C3B SMO 5 20 =CH2 ... BXE 0 A1+1(2),TRANBLK [J IF FOUND IN OLD FCB BLOCK LIST 9 =DG= BCT 5 TRINNER 21 =D_W ... GEOERR BRIEFPM,NO BLOCK [CAN'T FIND BLOCK NO. IN DIR. ENTRY 18 =FFG ... [ IN COPIED BLOCK LIST 5 =F_6 TRANBLK 7 =GDQ SMO 5 21 =GYB ... LDX 0 A1+1(1) [X0= EQUIVALENT BLOCK NO. IN NEW LIST 7 =N#= SMO 4 21 =NRW ... STO 0 A1+1(3) [PUT THE NEW BLOCK IN THE BLOCKS REC 6 =P?G TRANSLATE 9 =PR6 BCT 4 OUTERTR 10 =Q2Y ... NAME 3,FILE,FWB 18 =Q=Q ... REWRITE [REWRITE BLOCKS RECORD 9 =QGJ ... MFREEW FILE,FWB 5 =QQB NOCOPS 19 =S9= ... FCBNO2 2,(GEOERR) [GET POINTER TO FILE'S FCB 11 =SNW JBC NOTDIRECT,2,BFDIR 17 =T8G [ DIRECTORY, MUST NOT FREEBAX OUR OLD BLOCKS YET! 20 =TN6 CLOSETOP [SINCE WE NOW DO A FULL CLOSE ON 20 =W7Q [ COPIED FILE THIS IS SUFFICIENT 5 =WCJ ...MASFIN 18 =WG7 ... CALL 7 TB [X2-> FCB OF COPIED DIR. 20 =WJQ ... BS 2,BFDIRUPDATE [ENSURE FULL CLOSE DONE ON COPIED 21 =WKL ... [ DIRECTORY (SINCE FULLB ATTACHED 15 =WLG ... [ TO FCB) 10 =WMB MHUNTW 3,BSTB,FULLB 8 =_K6 FULLBPAS 3,2 10 ?24Q BRN XFREEFTABLE 6 ?2JB NOTDIRECT 16 ?342 CLOSESET [THE DIRECTORY 7 ?3HL FREEBAX 10 ?43= MFREEW BSTB,EMPTYB 6 ?4GW XFREEFTABLE 9 ?52G MFREEW FI,FTABLE 4 ?5G6 # 20 ?5_Q # THE AUTOCOPY ACTIVITY MAY BE REGARDED AS A SPECIAL AUTOCLOSE 21 ?6FB # IF THE FILE COPIED IS A DIRECTORY IN THE PATH OF A CAREFUL UPDATE 21 ?6_2 # BEING PERFORMED BY ANOTHER AUTOCLOSE, THAT ACTIVITY MAY HAVE 21 ?7DL # SUICIDED AFTER HANDING OVER FULLB'S AND AT LEAST ONE FILE 10 ?7Y= # TO THIS AUTOCOPY 21 ?8CW # WE GO ACROSS TO CLOSEDIR TO CLOSE THE FILE, LEADING EVENTUALLY TO 12 ?8XG # THE AUTOCOPY'S SUICIDE 10 ?9WQ MFREE FILE,FABSNB 10 ?=BB ACROSS CLOSEDIR,9 4 ?C9? ...# 4 ?C9L ...XX 21 ?C=L GEOERR BRIEFPM,BREAK IN [NO BREAK-IN SINCE AUTONOMOUS ACT. 4 ?CK3 ...REP 18 ?CNG ... GEOERR BRIEFPM,COPY REP [STRANGE REPLY FROM OPEN 5 ?CR_ ...XCOPYERR 20 ?CXD ... GEOERR BRIEFPM,COPY ERR [RESIDENCE NO. IN FCB BEFORE COPY 21 ?CYP ... [ DIFFERS FROM THAT IN DIR. ENTRY 5 ?D22 ...XNOFMAPP 21 ?D3? ... GEOERR BRIEFPM,NO FMAPP [BIT BFCARE SET BUT NO FMAPP BLOCK 16 ?D4J ... [ FOR THIS FILE 6 ?D5T ...XNOTINLIST 21 ?D76 ... GEOERR BRIEFPM,COPYNOBL [BLOCK NO. NOT FOUND IN OLD BLOCKS 17 ?D8C ... [ LIST (BSTB/FULLB) 4 ?D9W #END 8 ____ ...11462006000100000000