*COMDECK     MTS
          IDENT  MTS
          TITLE  MTS - MOVE TEXT TO STRING BUFFER.
          SST 
          SYSCOM B1 
          ENTRY  MTS
  
*COMMENT  MTS - MOVE TEXT TO STRING BUFFER. 
          COMMENT  COPYRIGHT CONTROL DATA CORP. 1979. 
          SPACE  4,10 
**        MTS - MOVE TEXT TO STRING BUFFER. 
* 
*         J. G. CLARK        79/12/17.
          SPACE  4,10 
**        COMMON DECKS. 
* 
*         COMCMAC - CPU SYSTEM MACROS.
*         COMQMAC - RHF APPLICATION MACRO DEFINITIONS.
  
  
*CALL COMCMAC 
 MTS      SPACE  4,10 
**               MTS IS A *COMPASS* CALLABLE ROUTINE TO APPEND A
*         CHARACTER STRING TO A BUFFER OF CHARACTER STRINGS.
*         THE TEXT AREA CONTAINS A WORD ALLIGNED TEXT STRING
*         WHICH IS MOVED TO A BUFFER WHICH DOES NOT HAVE TO BE
*         WORD ALLIGNED.
* 
*         ENTRY  (A1) = ADDRESS OF THE TEXT AREA TO MOVE
*                (X1) = FIRST WORD OF THE TEXT STRING 
*                (A2) = ADDRESS OF THE LAST WORD IN THE BUFFER
*                (X2) = LAST USED WORD OF THE STRING BUFFER 
*                (B1) = 1 
*                (B2) = NUMBER OF BITS IN *RC*
*                (B4) = NEGATIVE LENGTH OF THE STRING IN BITS 
* 
*         BUFFER FORMAT 
**T,BUFFER30/ RC,30/
**T,      60/ 
* 
*         RC     - CHARACTERS IN THE STRING BUFFER TO BE RETAINED.
* 
*         EXIT   (A1) = ADDRESS OF THE NEXT TEXT AREA WORD
*                (X1) = NEXT TEXT AREA WORD 
*                (A6) = ADDRESS OF THE LAST STRING BUFFER WORD. 
* 
*         USES   A - 1,2,6. 
*                B - 2,3,4. 
*                X - 0,1,2,3,4,6,7. 
* 
*         CALLS  NONE.
* 
*         MACROS MXB. 
  
  
 MTS2     SA2    A6+1        SET NEXT WORD POINTER
 MTS3     SB2    B4-60
          MX0    -B2,X7      ZERO FILL LAST WORD
          BX6    X0*X6
          SB2    -B2
          SA6    A2+         STORE LAST WORD OF STRING BUFFER 
  
 MTS      SUBR               ENTRY/EXIT 
          SB3    B2-60
          MX0    B2,X7
          AX1    B3          POSITION TEXT
          BX4    -X0*X1 
          BX3    X0*X1
          SA1    A1+B1       FETCH NEXT WORD OF TEXT
          BX2    X0*X2
          BX6    X2+X4
          SB4    B4-B3
          PL     B4,MTS3     IF NO MORE TO MOVE 
          SA6    A2          REPLACE STRING BUFFER WORD 
 MTS1     AX1    B3 
          BX4    -X0*X1 
          BX6    X3+X4
          BX3    X0*X1
          SB4    B4+60
          PL     B4,MTS2     IF ENOUGH MOVED
          SA1    A1+B1
          SA6    A6+B1       STORE NEXT WORD OF STRING BUFFER 
          EQ     MTS1        CONTINUE MOVE
          SPACE  4,10 
          END 
