*DECK GMOVRA
          IDENT  GMOVRA 
          TITLE  GMOVRA - GENERATE RA2XX MOVES
  
          MACHINE  ANY,I
          SST 
          COMMENT  GENERATE RA2XX MOVES 
          SPACE  4
**        GMOVRA - GENERATE RA2XX MOVES 
* 
* RA2AE   LINK   CGRA2AE
* RA2AN   LINK   CGRA2AN
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
  
  
  
*      COMDECKS 
  
  
  
  
  
 CONTROL  OPSYN  NIL
  
  
  
  
*CALL CCT 
  
          EJECT 
 GMOVRA   MODULE
  
*      REGTABLE EQUATES 
  
  
 MOVEREGA EQU    REGB 
 MOVEREGB EQU    REGC 
 MOVEREGD EQU    REGQ 
 MOVEREGE EQU    REGR 
 MOVEREGF EQU    REGS 
 MOVEREGM EQU    REGM 
  
*      VIRTUAL REGISTER EQUATES 
  
 VREGA    EQU    VREG1
 VREGB    EQU    VREG2
 VREGC    EQU    VREG3
 VREGD    EQU    VREG9
 VREGE    EQU    VREG5
 VREGF    EQU    VREG6
 VREGG    EQU    VREG7
 VREGH    EQU    VREG8
 VREGI    EQU    VREG9
 VREGJ    EQU    VREG10 
 VREGK    EQU    VREG11 
 VREGL    EQU    VREG12 
 VREGU    EQU    VREG16 
 VREGV    EQU    VREG17 
 VREGW    EQU    VREG18 
 VREGX    EQU    VREG4
 VREGAC   EQU    VREG1
  
*      FIXED TABLE EQUATES
  
  
*      ERROR EQUATES
  
 MOVEERR5 EQU    4305 
  
*      MISCELLANEOUS EQUATES
  
  
*      LINKAGE FROM CALLING ROUTINES IN OTHER MODULES 
  
 RA2AE    KNIL   CGRA2AE
 RA2AN    KNIL   CGRA2AN
  
*      LINKAGE TO CALLED ROUTINES IN OTHER MODULES
  
 ADPDNAT  LINK   ADPDNAT
  
*      SYMBOLIC PARAMETER DEFINITIONS 
  
          SPACE  4
          LISTSEC  RA2AE
          TITLE  RA2AE -  REGISTER ALPHANUMERIC TO ALPHANUMERIC-EDITED I
,TEM
**        RA2AE -  REGISTER ALPHANUMERIC TO ALPHANUMERIC EDITED ITEM
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER(S).
*         (BCPOF,REGB) = BCP OF SOURCE FIELD WITHIN THE REGISTER(S) 
*         (BYTLENOF,REGB) = LENGTH OF SOURCE FIELD. 
*         (BCPOF,REGB)+(BYTLENOF,REGB) @ 20.
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING (LEFT-MOST) CHARACTERS OF SOURCE.
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING RIGHT-MOST CHARACTERS.   (IF 2-REGISTER SOURCE)
*         REGC = DNAT POINTER TO DESTINATION ITEM.
*         (FWARECV = ADDRESS OF DESCRIPTOR OF FIELD.
* 
*         CALLZ  RA2AE
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
* 
*         USES- 
* 
*         ALSO CALLED BY- 
  
  
 RA2AE    EGO    2
          NOTE   RA2AE
  
*      CREATE A PERMANENT DNAT TO REFERENCE THE EDIT PATTERN
  
          MOVEZ  REGU1,REGT 
          CALLZ  ADPDNAT
  
*      ANALYZE AND POOL THE EDIT PATTERN
  
          MOVEZ  (BYTLENOF,REGB),P1 
*         REGC = REGTABL INDEX TO DESTINATION ITEM
*         REGT = REGTABL INDEX FOR EDIT PATTERN 
          EXECUTE EDITPAT 
  
*      CONSTRUCT SOURCE DESCRIPTOR:  3/SIGN=000, 4/BCP, 11/LENGTH 
  
          MOVEZ  (BCPOF,REGB),T2                 3/SIGN=000, 4/BCP
          LSHIFT T2,11                           3/000,4/BCP, 11/0
          ADDZ   T2,(BYTLENOF,REGB),T2
  
*      POINT VREG1 TO THE SOURCE REGISTER(S)
  
          ADDZ   (BCPOF,REGB),(BYTLENOF,REGB),T1
            GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
            GEN    SSRBPK,VREG4,((EXT$OF,C.BUFF)) 
          IFTHEN (T1,GT,10) 
            GEN    XMIT,(VREGOF,VREG5),(TREGP1OF,REGB)
            GEN    SSRAPB,VREG5,VREG4,VREGB1
            ENDIFZ
          GEN    SBBPK,(VREGOF,VREG1),,((EXT$OF,C.BUFF))
  
*      NOW CALL C.EDIT
  
          GEN    SBBPK,(VREGOF,VREG2),,((FWA$OF,REGU1)) 
          GEN    SXBPK,(VREGOF,VREG3),,T2 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
          SPACE  4
          LISTSEC  RA2AN
          TITLE  RA2AN -  REGISTER ALPHANUMERIC TO ALPHANUMERIC ITEM
**        RA2AN -  REGISTER ALPHANUMERIC TO ALPHANUMERIC ITEM 
* 
*         MOVEREGA = DNAT POINTER TO SOURCE REGISTER. 
*         MOVEREGB = DNAT POINTER TO DESTINATION ITEM.
* 
*         CALLZ  RA2AN
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
* 
*         ALSO CALLED BY- 
*                C12AN
*                C22AN
*                ND2AN
  
  
 RA2AN    EGO    2
          NOTE   RA2AN
  
          ERROR  MOVEERR5    *** TEMPORARY ***
          RETURN
          SPACE  4
          LISTSEC  *
          END 
