SPL,L,O,M ! NAME: CO.. ! SOURCE: 92067-18228 ! RELOC: 92067-16185 ! PGMR: G.A.A. ! ! *************************************************************** ! * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * ! * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * ! * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* ! * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ! *************************************************************** ! NAME CO..(8) "92067-16185 REV.1903 790302" ! ! MODIFICATION RECORD: ! ! 1) 780920 TO ALLOW COPY OF LARGE FILES USING ECREA ROUTINE ! 2) 790113 TO MASK OFF LOCK IN LU WORD FROM DS.LU ! ! CO.. IS A MODULE OF THE RTE FMGR PROGRAM ! CO.. COPIES ALL DISC FILES ON ONE DISC TO SOME OTHER DISC ! THE COMMAND IS: ! CO, CR, CR2 ! WHERE: ! CR IS THE "FROM" DISC ID ! CR2 IS THE "TO" DISC ID ! ! ! DEFINE EXTERNALS ! LET DR.RD,DU..,MSS.,FM.ER,ECREA,CLOS.,IER.\ BE SUBROUTINE,EXTERNAL LET .DMP BE SUBROUTINE,EXTERNAL,DIRECT ! LET PK.DR,N.OPL, DS.LU BE INTEGER,EXTERNAL LET O.BUF BE INTEGER ,EXTERNAL ! ! DEFINE LOCALS ! LET SETAD BE SUBROUTINE ! LET STLIS,FNAM(3),LTY,TNAM(3),ISIZ(4),BLKMP(2),\ OPLS, SACD, DM(14) BE INTEGER INITIALIZE BLKMP TO 0,128 CO..: SUBROUTINE (N, LIS,ER) GLOBAL !SET UP DU.. CALL ARRAY FOR T _ @ STLIS TO @ STLIS+23 DO $T _0 LTY,STLIS,OPLS_3 !SET TYPE FLAGS ! SACD _ 51501K ! SAVE EOF MARKS ! LIS5 _ [LIS1 _ @ LIS+1]+4 ! ! SET UP THE OPTION LIST ADDRESSES ! OPS2_ [OPS1_[OPT2 _ [OPCR2_ [OPL_ [OPT1_ [\ OPCR1_ @N.OPL+1]+1]+3] \ + 1]+1]+1]+1 ! BLK_0 FOR T _ OPCR1 TO OPS2 DO $T _ 0 ! $ OPCR1 _ $ LIS1 $ OPCR2 _ $ LIS5 ADD_128 !SET UP ADDRESS INCREMENT ! DRBF _ @PK.DR ! SET PACK BUFADD. ! ! CHECK FOR LEGAL DISCS. ! IF $ LIS5 THEN [DR.RD(1,$LIS5,0)?[ \ GO TO NODES];LU_$$@DS.LU AND 377K\ ;GO TO INCK] ! NODES:DO[ER_21;RETURN]! NO DISC, EXIT ! INCK: IFNOT $LIS1 THEN GO TO NODES ! SETAD ? [GO TO NODES] IF LU = $$@DS.LU AND 377K THEN GO TO NODES ! ! BOTH DISCS ARE DEFINED AND ! SEPARATE ! ! START TRANSFER ! XFER: SETAD? [RETURN ] IF $PKD<0 THEN GO TO XFER ! IFNOT $PKD3 THEN GO TO XFER IF $PKD5 AND 177400K THEN GOTO XFER !SKIP EXTENTS FM.ER(1,FNAM,3) !SEND CURRENT NAME TO LOG ECREA(O.BUF,.E.R.,$PKD,ISIZ,$PKD3,$PKD8,$LIS5,0,0,0,70707K)!CREAT FILE IF .E.R.<0 THEN [MSS.(.E.R.-2000);GO TO XFER] ERR_-2 !SET COPY CALL FLAG FOR DU ROUTINE DU..(4, STLIS,ERR) !CALL STORE TO TRANSFER ! IFNOT ERR THEN GO TO XFER ! ER _ ERR- 2000 ! BAD: MSS. (ER) !PRINT MESSAGE ! IF ER < 2000 THEN [ER_0; GO TO XFER] ! ER _ 22 RETURN END ! ! SETAD:SUBROUTINE FEXIT ! READ DIRECTORY ! AND SET UP ST CALL ! IF ADD = 128 THEN [ \ DR.RD (1,$LIS1,BLK)?[FRETURN];\ ADD_ 0; BLK_ BLK+1] ! PKD8_[PKD7_[PKD6_[PKD5_[PKD3_[PKD2_[PKD_ \ DRBF+ADD]+2]+1]+2]+1]+1]+1 ! ADD_ ADD+16 !SET ADD FOR NEXT TIME IFNOT $PKD THEN FRETURN !END OF DIR. T1_@FNAM !SET TO MOVE T2_@ TNAM !NAME TO CALL FOR T _ PKD TO PKD2 DO[$T1,$T2_ $T;\ T1_T1 +1; T2_T2+1] ! N.OPL,$OPL_$PKD8 ! SET SECURITY CODES ! $OPT1,$OPT2_$PKD3 ! SET TYPES IF $PKD6 < 0 THEN \IF NEGATIVE SIZE, THEN [.B._ -$PKD6;.A._0; \MAKE IT POSITIVE AND CALL .DMP(BLKMP); \MULTIPLY BY BLK MULTIPLIER ISIZ(1)_.A.;ISIZ(2)_.B.; \SAVE FOR ECREA $OPS1_$PKD6], \ ELSE [ISIZ(1)_0;ISIZ(2),$OPS1_$PKD6/2] ISIZ(3)_0 ISIZ(4),$OPS2_$PKD7 ! SET DEST REC. SIZE RETURN ! DONE - RETURN END END END$