COPYFILE867

(George Source)

Macros used: ACROSS, BITDEFS, BS, BXE, BXL, BXU, CHAIN, FILEWAIT, FPUT, FREEBAX, GEOERR, GETACT, GETBAX, JBC, JMBS, LINK, LINKSET, MFREE, MFREEW, MHUNT, MHUNTW, NAME, OPEND, RESQUERY, SEG, SEGENTRY, SETMODE, SUICIDE, TESTRPN2, TOPFCB, TRACEIF, UP, WHATBACK

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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1