*COMDECK,COMCMVE
          CTEXT  COMCMVE - MOVE BLOCK OF DATA.
 MVE      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMCMVE
          BASE   D
*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
 MVE      SPACE  4
***       MVE - MOVE BLOCK OF DATA. 
*         G. R. MANSFIELD.  70/10/09. 
*         ADAPTED FROM SUBROUTINE *MOVE* IN *COMPASS VER 2.0*.
 MVE      SPACE  4
***              MVE MOVES A BLOCK OF DATA. 
* 
*         ENTRY  (X1) = WORD COUNT. 
*                (X2) = SOURCE ADDRESS. 
*                (X3) = DESTINATION ADDRESS.
*                (B1) = 1 
* 
*         EXIT   NONE.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                B - 7. 
*                A - 2, 4, 6, 7.
* 
*         CALLS  NONE.
  
  
*         BEGIN UPWARD MOVE.
  
 MVE2     SB7    -2          UPWARD MOVE
          SX2    X2+B7
          SX3    X3+B7
          SB7    B1+B1
          ZR     X6,MVE3     IF WORD COUNT EVEN 
          SA4    X2+B7       MOVE INITIAL WORD
          IX2    X2+X6
          BX7    X4 
          SA7    X3+B7
          IX3    X3+X6
  
*         INITIALIZE MOVE LOOP. 
  
 MVE3     ZR     X1,MVE=     IF MOVE COMPLETE 
          SA2    X2+B7       MOVE FIRST 2 WORDS 
          SA4    A2+B1
          BX6    X2 
          LX7    X4 
          SA6    X3+B7
          SA7    A6+B1
          SX3    B1+B1
          IX1    X1-X3
          ZR     X1,MVE=     IF MOVE COMPLETE 
          SA2    A2+B7       NEXT 2 WORDS 
          SA4    A4+B7
  
*         MOVE LOOP.
  
 MVE4     BX6    X2 
          SA2    A2+B7
          LX7    X4 
          SA4    A4+B7
          IX1    X1-X3
          NO
          SA6    A6+B7
          SA7    A7+B7
          NZ     X1,MVE4
  
 MVE=     PS                 ENTRY/EXIT 
          IX4    X2-X3       CHECK DIRECTION OF MOVE
          MX7    59 
          BX6    -X7*X1 
          IX1    X1-X6       REDUCE WORD COUNT TO EVEN NUMBER 
          PL     X4,MVE2     IF MOVE UP 
  
*         BEGIN DOWNWARD MOVE.
  
          ZR     X6,MVE1     IF WORD COUNT EVEN 
          SB7    X1 
          SA4    X2+B7       MOVE INITIAL WORD
          BX6    X4 
          SA6    X3+B7
 MVE1     IX2    X2+X1
          IX3    X3+X1
          SB7    -2 
          EQ     MVE3 
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 MVE=     EQU    /COMCMVE/MVE=
 QUAL$    ENDIF 
          ENDX
