14 22FL ... SEG COPYFILE,,SECTION FILE,CLOSE 4 22_= # 15 236D ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 4 23?L ...# 21 23DW # THIS SEGMENT COPIES A FILE FROM ITS CURRENT FILE STORE RESIDENCE 21 23YG # TO ANOTHER. THE FILE MAY BE OPEN TO OTHER ACTIIVITIES, BUT 12 24D6 # NOT ANOTHER AUTOCOPY. 4 24XQ ...# 4 27TG # 8 27WH ...# USE OF AWORK3 8 27XJ ...# --- -- ------ 4 27YK ...# 16 27_L ... BITDEFS AWORK3,0,XBMASTER [COPYING :MASTER 4 285Q ...# 4 286R ...# 4 287S ...# 4 288T ...# 8 289W ...# ENTRY POINTS 8 28=X ...# ----- ------ 4 28?Y ...# 19 28*6 ... SEGENTRY K1COPYFILE,XENT1 [ENTRY FROM COPYFILE MACRO 21 28SQ SEGENTRY K2COPYFILE,XENT2 [INITIAL ENTRY POINT FOR BSA/AUTOCOPY 15 295H ... [ ACTIVITY 21 29B# ... SEGENTRY K3COPYFILE,XENT3 [RETURN FROM COPYFILA SEGMENT WHEN 20 29M5 ... [ MORE BS REQUIRED TO COPY FILE 18 29XW ... SEGENTRY K4COPYFILE,XENT4 [SIMPLY DOES A FILEWAIT 4 2=Q9 ...# 4 2?32 ...# 4 2?T* ...# 7 2#66 ...# CONSTANTS 7 2#BX ...# --------- 4 2#MN ...# 4 2#YF ...# 5 2*9B ...XLINK 10 2*P2 ... LINK COPYFILE,2 4 2HJG # 4 2J46 ...# 8 2JHQ ...# SUBROUTINES 8 2K3B ...# ----------- 4 2KH2 ...# 4 2L2L ...# 12 2LG= ...# LOCATES FCB OF TOP FILE OPEN. 16 2L_W ...# ON ENTRY, . X7 IS S/R LINK. 14 2MFG ...# 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 19 3HC= ... BXE 3 CXFI,XNOFMAPP [GEOERR IF END OF FILE CHAIN 9 3HL6 ... LDX 0 ATYPE(3) 17 3HT2 ... BXE 0 FILEPLUSFCB,XNOFMAPP [GEOERR 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 3M?F ... BXU 0 BSPRE(2),(6) [EXIT IF FULLB FOR WRONG RESIDENCE 17 3M*S ... EXIT 6 1 [EXIT+1 WITH POINTER 4 3MD7 ...# 4 3MGG ...# 21 3MJT ...# CALCULATES THE NO. OF BLOCKS IN THE FCB & THE 1ST FULLB (IF ANY) 20 3MM8 ...# FOR THE RESIDENCE THE FILE IS ON - THIS IS THE NO. OF BLOCKS 13 3MPH ...# TO COPY TO THE NEW RESIDENCE. 16 3MRW ...# ON ENTRY, X2->FCB. X7 IS S/R LINK. 17 3MW9 ...# ON EXIT, X2->FCB, X4= (NO. OF BLOCKS TO COPY)+2. 18 3MYJ ...# OVERWRITES X0 & X6. 5 3N2X ...SCALSIZE 9 3N5= ... LDX 4 FUSEBL(2) 20 3N7K ... SBN 4 FBLKS-A1-2 [X4= (NO. OF BLOCKS IN FCB) +2 21 3N9Y ... TRACEIF K6COPYFILE,199,399,4,CYFBLFCB [NO. OF BLOCKS IN FCB +2 19 3N#? ... CALL 6 SBFIND [LOCATE FILE'S FULLB (IN X3) 14 3NBL ... BRN NOTAFULLB [NO FULLB 8 3ND_ ... ADX 4 A1(3) 20 3NH# ... TRACEIF K6COPYFILE,199,399,A1(3),CYFBLFUL [NO. OF BLOCKS IN 17 3NKM ... [ FILE'S FULLB +2 21 3NN2 ... SBN 4 2 [ADD NO. OF BLOCKS IN FILE'S FULLB 6 3NQ* ...NOTAFULLB 7 3NSN ... EXIT 7 0 4 3NX3 ...# 4 3P3P ...# 4 3P64 ...# 4 3P8C ...# 4 3P=Q ...# 7 3P*5 ...# MAIN CODE 7 3PCD ...# ---- ---- 4 3PFR ...# 4 3PJ6 ...# 12 3PM= # ENTRY FROM THE COPYFILE MACRO 20 3Q6W # THE CURRENT ACTIVITY SHOULD HAVE A FABSNB FOR THE FILE TO BE 19 3QLG # COPIED, AND THE NEW FILE REFERENCE NUMBER IN EXEC2 20 3R66 # IF -164 8 43XB ADN 5 64 10 44WL GETACT BSA,AUTOCOPY 9 45B= LDX 3 BPTR(2) 17 45TW STO 5 ACC5(3) [NEW RESIDENCE NUMBER 10 46*G LINKSET 3,XLINK(1) 10 47#Q MHUNT 2,FILE,FABSNB 19 47SB CHAIN 2,3 [CHAIN FABSNB TO COPY ACT. 17 48#2 LDX 2 3 [X2-> AUTONOMOUS ACT. 6 48RL FPUT 4 499B ...UP 5 49?= UP 4 49QW # 4 49Y4 ...# 4 4=5= ...# 11 4==G # ENTRY FROM THE AUTOCOPY 12 4=Q6 # THE COPY IS DONE IN 4 STAGES 21 4?9Q # STAGE1 CHECKS THE FILE RESIDENCE NUMBER AND SETS UP FTABLE 16 4?PB # BLOCKS FOR THE OLD AND THE NEW BS 21 4#92 # STAGE2 SETS THE CONTENTS OF THE FTABLES, PUTS THE NEW FRN 21 4#NL # AND NEW BLOCK NOS IN THE FCB, THE FULLB (IF PRESENT) 18 4*8= # AND ANY USAGE BLOCKS WHICH MAY BE PRESENT 16 4*MW # STAGE3 COPIES FROM THE OLD TO THE NEW BS 21 4B7G # STAGE4 UPDATES THE BLOCKS RECORD OF THE DIRECTORY WITH NEW 20 4BM6 # BLOCKS CORRESPONDING TO THE OLD AND CLOSESETS THE 17 4C6Q # DIRECTORY TO FIRMLY UPDATE IT, BEFORE 13 4CLB # FREEING THE OLD BS 5 4D62 XENT2 4 4DKL [ 11 4F5= # OPEN THE FILE TO BE COPIED 21 4FJW # CALCULATE THE AMOUNT OF NEW BS NEEDED TO COPY THE FILE, FROM THE 19 4G4G # FCB AND, IF THE FILE HAS BEEN ALTERED, THE FULLB. 21 4GJ6 # IF THE FILE IS BEING COPIED TO A PUBLIC RESIDENCE (FRN = 0 OR 1), 20 4H3Q # WE GET THE NEW BS BY A WHATBACK, OTHERWISE WE GETBAX THE 20 4HHB # NEW BS ON THE SPECIFIED RESIDENCE, LEAVING THE NEW BLOCK 20 4J32 # NUMBERS IN THE FULLB GIVEN BY THE BS ALLOCATION SYSTEM, 16 4JGL # LATER TO BE RENAMED A FI/FTABLE BLOCK 14 4K2= # SET UP A FI/FTABLE TO HOLD THE OLD BS 4 4K6N ...# 21 4K_G ... TRACEIF K6COPYFILE,99,299,5,COPYFILE [RES. NO.(ETC.) REQUESTED 10 4LH8 ... MHUNT 1,FILE,FABSNB 8 4LK= ... LDX 0 A1(1) 20 4LM# ... BNZ 0 NOTMAS [J IF NOT MASTER'S SPECIAL FABSNB 7 4LPB ... LDN 0 4 18 4LRD ... STO 0 A1(1) [CORRECT VALUE FOR FABSNB 20 4LTG ... BS 2,XBMASTER [REMEMBER WE ARE COPYING :MASTER 9 4LXJ ... SETMODE 7,GENERAL 21 4L_L ...[ MUST OPEN IN GENERAL MODE IF MASTER. ONLY ONE ACCESSOR TO DIR. 9 4M3N ... BRN NOWOPEN 5 4M5Q ...NOTMAS 13 4M7S ...[ NORMAL PATH. OPEN IN COPY MODE 14 4M9W ... SETMODE 7,COPY,NOWAIT,ERASING,QUERY 5 4M?Y ...NOWOPEN 8 4MB2 ... OPEND XX,7 19 4MTL ... TESTRPN2 OK,NOK [GIVE UP IF CAN'T FIND FILE 7 4PWG SBN 5 1 21 4QB6 ... BZE 5 ONE [J IF PARAMETER IS 'PUBLIC' - CHANGE 15 4QKY ... [ IT TO ZERO 7 4QTQ ADN 5 1 4 4R*B ONE 14 4RT2 CALL 7 TB [X2-> FCB 18 4S#L LDX 4 BSPRE(2) [X4= RESIDENCE FILE ON 19 4SS= ... BNZ 5 NZERO [J IF RESIDENCE NO. SPECIFIED 7 4YP= SRL 4 4 7 4_8W SBN 4 3 20 4_NG BNZ 4 RESFIN [J IF NOT ON SPECIAL RESIDENCE 21 5286 ... CALL 7 SCALSIZE [CALCULATE (NO. OF BLOCKS TO COPY)+2 7 52MQ ... SBN 4 2 19 537B ... BXL 4 BSBS,YL512 [J IF <512 BLOCKS REQUIRED 19 53M2 ... LDN 4 511 [PRETEND ONLY 511 BLOCKS WERE 21 546L ... [ REQUIRED (WHEN WE HAVE A RESIDENCE 20 54L= ... [ NO. WE WILL FREE THE BS & DO A 21 555W ... [GETBAX WHICH DOES ALLOW >511 BLOCKS) 5 55KG ...YL512 7 55PC ...#UNS ANOTALLOC 4 55T# ...( 17 55_9 ...[ TEST IF A VITAL SYSTEM FILE AND TELL WHATBACK IF IT IS 13 5656 ... JMBS XVSF,2,BFDIR,BFVSF,BFREV 8 5693 ... WHATBACK 3,4 8 56#Y ... BRN XNVSF 9 56DT ...XVSF WHATBACK 3,4,,,VSF 5 56JQ ...XNVSF 4 56NM ...) 7 56SJ ...#UNS ANOTALLOC 4 56YF ...#SKI 19 574B WHATBACK 3,4 [GET ENOUGH BS TO COPY FILE 7 57J2 ADN 4 2 9 592W MHUNT 1,BSTB,FULLB 18 59GG LDX 5 A1+1(1) [X5= RESIDENCE NO. WE GOT 8 5=FQ BRN XGOT 5 5=S7 ...NZERO 20 5?6J ... RESQUERY 5,RESFIN [J IF RESIDENCE DOES NOT EXIST 19 5?F2 BXE 4 5,RESFIN [J IF ON RESIDENCE REQUESTED 4 5?YL MERG 14 5#D= CALL 7 TB [X2->FCB 20 5#XW ... CALL 7 SCALSIZE [X4= (NO. OF BLOCKS TO COPY)+2 5 5*CG ...XGETBS 11 5FS6 SETUPCOR 4,2,BSTB,EMPTYB 8 5G?Q STO 4 A1(2) 9 5GRB STO 5 A1+1(2) 20 5H?2 GETBAX [GET ENOUGH BS TO COPY THE FILE 10 5HGS ... MHUNTW 1,BSTB,FULLB 4 5HQL XGOT 19 5HXS ... NAME 1,FI,FTABLE [RENAME FULLB FOR NEW RES. AS 15 5J52 ... [ FI/FTABLE 20 5J7L ... STO 5 AWORK1(2) [SAVE RES.NO.IN CASE B GOES DOWN 20 5J== ... TRACEIF K6COPYFILE,99,299,5,COPYTO [RESIDENCE FILE COPIED TO 20 5JF8 ... SETUPCOR 4,3,BSTB,FULLB [SET UP FULLB TO CONTAIN LIST OF 16 5JN6 ... [ OLD BLOCK NOS. 10 5JX4 ... MHUNTW 2,FI,FTABLE 21 5K62 ... CHAIN 3,2 [CHAIN FULLB IN FRONT OF FI/FTABLE, 20 5K#Y ... [ I.E. 1ST FI/FTABLE (NEW BLOCKS 21 5KHW ... [ LIST) 20 5KQS ... [ 2ND BSTB/FULLB (OLD BLOCKS 21 5K_Q ... [ LIST) 8 5L8Q CALL 7 TB 20 5P6G ... TRACEIF K6COPYFILE,99,299,BSPRE(2),COPYFROM [RESIDENCE FILE 16 5PB# ... [ COPIED FROM 21 5PL6 ... TRACEIF K6COPYFILE,99,299,FUSER1(2),COPYUSER [FILE BEING COPIED 16 5Q5Q ... TRACEIF K6COPYFILE,99,299,FLOC1(2),COPYLOC 19 5QF= ... ACROSS COPYFILA,1 [CONTINUE PROCESS IN COPYFILA 4 5QSQ ...# 5 ??*L RESFIN 8 ??D9 ... CALL 7 TB 11 ??GS ... JBC NOTDIRECT,2,BFDIR 21 ??KC ... BS 2,BFDIRUPDATE [IN CASE AN AUTOCLOSE HAS HANDED OVER 18 ??N2 ... [UPDATE TO THIS ACTIVITY 6 ??QK ...NOTDIRECT 14 ??T= ... TRACEIF K6COPYFILE,99,299,5,AO?RES 15 ?##W ACROSS CLOSEDIR,9 [WAS CLOSETOP 4 ?#*G ...# 4 ?#*S ...# 4 ?#B6 ...# 4 ?#BD ...# 4 ?#BQ ...# 5 ?#C4 ...XENT3 10 ?#DY ... MFREEW BSTB,FULLB 10 ?#F= ... MHUNTW 1,FI,FTABLE 10 ?#FJ ... NAME 1,BSTB,FULLB 19 ?#FW ... LDX 5 A1+1(1) [X5= RESIDENCE TO GET BS ON 7 ?#G8 ... FREEBAX 10 ?#GG ... MFREEW BSTB,EMPTYB 21 ?#GS ... TRACEIF K6COPYFILE,99,299,4,CHANGED [NEW NO. OF BLOCKS REQUIRED 17 ?#HQ ... [ (& CLEAR MARKER) 17 ?#JB ... BRN MERG [TRY ALL OVER AGAIN 4 ?#JN ...# 4 ?#K# ...# 4 ?#KL ...# 4 ?#KY ...# 21 ?#L= ...# THE K4 ENTRY POINT SIMPLY DOES A FILEWAIT MACRO AND IS HERE SOLELY 17 ?#LJ ...# BECAUSE OF THE LENGTH OF EXPANSION (C65 WORDS). 5 ?#LW ...XENT4 21 ?#M8 ... FILEWAIT [WAIT FOR ALL TRANSFERS ON THE FILE 15 ?#MG ... [ TO FINISH 5 ?#MS ... UP 4 ?#N6 ...# 4 ?#RJ ...# 4 ?#RW ...# 4 ?#SG ...NOK 10 ?*#6 MFREE FILE,FABSNB 7 ?*RQ SUICIDE 4 ?B3J ...# 4 ?B?B # 4 ?BDJ ...# 4 ?BKQ ...# 4 ?BR2 XX 21 ?C=L GEOERR BRIEFPM,BREAK IN [NO BREAK-IN SINCE AUTONOMOUS ACT. 4 ?CB5 ...YERR 21 ?CFJ ... GEOERR BRIEFPM,COPYFILE [RESIDENCE NO. NOT IN RANGE -1