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