*DECK C$MVHL
          IDENT  C$MVHL 
  
          TITLE  CBMVHL - MOVE HIGH-VALUES OR LOW-VALUES
          MACHINE  ANY,I
          COMMENT  MOVE HIGH-VALUES OR LOW-VALUES 
          SST 
          B1=1
          SPACE  4
**        C.MVHL - MOVE HIGH-VALUES OR LOW-VALUES 
* 
*         CALLING SEQUENCE- 
*                RJ   C.MVHL
* 
*         GIVEN-
*                B3= FWA OF THE RECEIVING FIELD 
*                B4= BCP OF THE RECEIVING FIELD 
*                B7= NUMBER OF CHARS TO MOVE
*                X2= FULL WORD OF HIGH-VALUES OR LOW-VALUES 
* 
*         DOES- 
*                MOVES B7 CHARS OF HIGH-VALUES OR LOW-VALUES (WHATEVER
*                IS STORED IN X2) TO BCP B3 OF WORD B4. 
*         USES- 
*                C.MASK 
*                ALL REGISTERS EXCEPT- A2,A3,X3,A5,X5,A6,X6 
* 
          SPACE  4
          ENTRY  C.MVHL 
 C.MVHL   DATA   0
          SB2    B7 
          SB6    10 
          SB5    B4+B2
          LE     B5,B6,MVHL100
  
*      RECEIVING FIELD IS LARGER THAN SP
  
          SB2    B6-B4       NUMBER OF CHARS IN FIRST WORD OF REC FIELD 
  
*      SET-UP TO FILL CHARS IN FIRST WORD OF RECEIVING FIELD
  
 MVHL100  BSS    0
          NE     B4,MVHL200 
          NE     B2,B6,MVHL200
  
*      PART OF RECEIVING FIELD LYING IN FIRST WORD HAS 10 CHARS 
*      MOVE A FULL WORD OF HI-VALUES OR LOW-VALUES
  
          BX7    X2 
          SA7    B3 
          EQ     MVHL300
  
*      MOVE LESS THAN 10 CHARS TO FIRST WORD OF RECEIVING FIELD 
  
 MVHL200  BSS    0
          SA1    B3          PICK UP FIRST WORD OF RECEIVING FIELD
          SA4    =XC.MASK+B2
          EQ     B4,MVHL250 
  
*      BCP OF RECEIVING FIELD IS NOT 0.  SO WE MUST SHIFT MASK
  
          SX7    B6-B4       (10-BR) = CORRECT COUNT IN CHARS 
          LX7    1           2*(10-BR)
          LX0    B1,X7       4*(10-BR)
          IX7    X7+X0       6*(10-BR) = CORRECT COUNT IN BITS
          SB4    X7 
          LX4    B4          FINALLY SHIFT MASK INTO PLACE
  
*      MASK IS IN PLACE- SET UP TO STORE INTO FIRST WORD
  
 MVHL250  BSS    0
          BX7    -X4*X1      MAKE HOLE
          BX4    X2*X4
          BX7    X7+X4       INSERT HIGH OR LOW VALUES INTO FIRST WORD
          SA7    A1          FINALLY STORE FIRST WORD 
  
*      SET-UP TO MOVE INTERIOR WORDS
  
 MVHL300  BSS    0
          SB7    B7-B2       COUNT OF CHARS LEFT TO MOVE
          BX7    X2 
  
*      LOOP FOR INTERIOR WORDS
  
 MVHL400  BSS    0
          EQ     B7,C.MVHL
          LE     B7,B6,MVHL500
*      AT LEAST 10 MORE CHARS LEFT TO STORE 
          SA7    A7+B1
          SB7    B7-B6
          EQ     MVHL400
  
*      MOVE HI-VALUES OR LOW-VALUES TO LAST WORD OF RECEIVING FIELD 
  
 MVHL500  BSS    0
          NE     B7,B6,MVHL600
*      ECP OF RECEIVING FIELD = 9.  SO WE CAN STORE 10 MORE CHARS AND 
*      EXIT 
          SA7    A7+B1
          EQ     C.MVHL 
  
*      LAST WORD OF RECEIVING FIELD IS A PARTIAL WORD 
  
 MVHL600  BSS    0
          SA4    =XC.MASK+B7
          BX7    X7*X4
          SA1    A7+B1       PICK UP LAST WORD OF RECEIVING FIELD 
          BX4    -X4*X1      MAKE HOLE
          BX7    X4+X7       INSERT HIGH OR LOW CHARS 
          SA7    A1 
          EQ     C.MVHL      FINALLY DONE 
          END 
