          SPACE  4,10
*         CTEXT  CTP$SCI COPY CM DATA.
*
*         THIS DECK CONTAINS A ROUTINE WHICH CAN BE USED TO COPY A
*         BLOCK OF CM DATA FROM ONE PLACE TO ANOTHER.
 CPY      SPACE  4,10
**        CPY - COPY CM DATA.
*
*         ENTRY  (A) = LENGTH OF COPY.
*                (CN - CN+2) = R-POINTER TO SOURCE DATA.
*                (CM - CM+2) = R-POINTER TO DESTINATION.
*
*         EXIT   MEMORY COPIED.
*
*         USES   T1, T2, T3, CN - CN+3, CM - CM+2, MBUF - MBUF+3.


 CPY5     LDDL   CN          SET SOURCE ADDRESS
          LRD    CN+1
          LMC    RR
          CRML   MBUF,T1     READ SOURCE DATA
          LDDL   CM          SET DESTINATION ADDRESS
          LRD    CM+1
          LMC    RR
          CWML   MBUF,T1     WRITE DATA TO DESTINATION
          AOD    CN+2        INCREMENT SOURCE ADDRESS BY 100(8) WORDS
          SHN    -14
          RAD    CN+1
          AOD    CM+2        INCREMENT DESTINATION ADDRESS BY 100(8) WORDS
          SHN    -14
          RAD    CM+1
          SOD    T2          DATA REMAINING TO BE COPIED
          MJN    CPYX        IF ALL DATA COPIED
 CPY10    NJN    CPY5        IF MORE 100 WORD BLOCKS TO COPY
          LDD    T3          SET LENGTH OF LAST BLOCK
          STD    T1
          NJN    CPY5        IF PARTIAL LAST BLOCK TO COPY

 CPY      SUBR               ENTRY/EXIT
          SHN    22-6
          STD    T2          SAVE NUMBER OF 100 WORD BLOCKS
          SHN    -14
          STD    T3          SAVE NUMBER OF WORDS TO COPY IN LAST BLOCK
          LDC    100         COPY BLOCKS OF 100 WORDS
          STD    T1
          LDD    T2
          UJN    CPY10       ENTER COPY LOOP

*         ENDX   CTP$SCI COPY CM DATA.

