*DECK GMOVC4
          IDENT GMOVC4
          TITLE  GMOVC4 - GENERATE C42XX MOVES
  
          MACHINE  ANY,I
          SST 
          COMMENT  GENERATE C42XX MOVES 
          SPACE  4
************************************************************************
*         GMOVC4 - GENERATE C42XX MOVES                                *
*                                                                      *
*C42C1    LINK   CGC42C1                                               *
*C42C2    LINK   CGC42C2                                               *
*C42C4    LINK   CGC42C4                                               *
*C42ND    LINK   CGC42ND                                               *
*C42NE    LINK   CGC42NE                                               *
*C42R1    LINK   CGC42R1                                               *
*C42R2    LINK   CGC42R2                                               *
*C42R4    LINK   CGC42R4                                               *
*                                                                      *
************************************************************************
* 
*         REGB = DNAT POINTER TO SOURCE.
*         REGC = DNAT POINTER TO DESTINATION
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
  
  
  
*      COMDECKS 
  
  
  
  
  
 CONTROL  OPSYN  NIL
  
  
  
  
*CALL CCT 
          EJECT 
 GMOVC4   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
  
  
*      MISCELLANEOUS EQUATES
  
  
*      LINKAGE FROM CALLING ROUTINES IN OTHER MODULES 
  
 C42AE    KNIL   CGC42AE
 C42AN    KNIL   CGC42AN
 C42C1    KNIL   CGC42C1
 C42C2    KNIL   CGC42C2
 C42C4    KNIL   CGC42C4
 C42ND    KNIL   CGC42ND
 C42NE    KNIL   CGC42NE
 C42R1    KNIL   CGC42R1
 C42R2    KNIL   CGC42R2
 C42R4    KNIL   CGC42R4
*      LINKAGE TO CALLED ROUTINES IN OTHER MODULES
  
 ADNAT    LINK   ADNAT       * TO CGSTART 
 LOADC1C2 LINK   CGLOADC     * TO GMOVSUB 
 LOADC4   LINK   CGLOAD4     * TO GMOVSUB 
 ND2RN    LINK   CGND2RN    * TO GMOVLOD
 R12ND    LINK   CGR12ND     * TO GMOVR1
 R12RN    LINK   CGR12RN     * TO GMOVRN
 R12R1    LINK   CGR12R1     * TO GMOVR1
 R12R2    LINK   CGR12R2     * TO GMOVR1
 R22RN    LINK   CGR22RN     * TO GMOVR2
 R22R1    LINK   CGR22R1     * TO GMOVR2
 R22R2    LINK   CGR22R2     * TO GMOVR2
 R22R4    LINK   CGR22R4     * TO GMOVR2
 RN2AE    LINK   CGRN2AE     *  TO GMOVRN 
 RN2ND    LINK   CGRN2ND     * TO GMOVRN
 RN2NE    LINK   CGRN2NE     * TO GMOVRN
 RN2R1    LINK   CGRN2R1   * TO GMOVRN
 STORC1C2 LINK   CGSTORC     * TO GMOVSUB 
 STORC4   LINK   STORC4      * TO GMOVSUB 
 SUBDNAT  LINK   SUBDNAT     * TO CGSTART 
  
*      DEFINING SYMBOLIC PARAMETERS 
 CBFTENS  SETSY  (EXT$OF,C.FTENS),T1
          LISTSEC C42AE 
          TITLE  C42AE  -  COMP-4  ITEM  TO ALPH.NUM.EDITED ITEM. 
************************************************************************
*         C42AE  - COMP-4 ITEM TO ALPHANUMERIC EDITED ITEM             *
*                                                                      *
*         REGB   = DNAT POINTER TO SOURCE ITEM                         *
*         REGC   = DNAT POINTER TO DESTINATION ITEM                    *
*                                                                      *
*         CALLZ  C42AE                                                 *
*                                                                      *
*         USES   REGU2                                                 *
*                REGU1                                                 *
*                                                                      *
************************************************************************
 C42AE    EGO    2
          NOTE   C42AE
* 
*         LOAD THE SOURCE INTO REGISTER VREG1 
* 
          CALLZ  LOADC4 
* 
*         CREATE DUMMY DNAT 
* 
          MOVEZ  REGU2,REGT 
          CALLZ  ADNAT
          MOVEZ  VREG1,(TREGOF,REGU2) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU2) 
          MOVEZ  0,(SIGNOF,REGU2) 
* 
*         CREATE DUMMY DESTINATION DNAT 
* 
          MOVEZ  REGU3,REGT 
          CALLZ  ADNAT
          SUBZ   (NUMLENOF,REGB),(POINTOF,REGB),(NUMLENOF,REGU3)
          MOVEZ  0,(POINTOF,REGU3)
          MOVEZ  0,(SIGNOF,REGU3) 
* 
*         CONVERT  R1 (IN REGU2)  TO  RN  (IN REGU3)
* 
          PUSH   REGB,REGC
          MOVEZ  REGU2,REGB 
          MOVEZ  REGU3,REGC 
          CALLZ  R12RN                           CONVERT
          POP    REGB,REGC                       RESTORE
* 
*         CONVERT  RN  TO  AE 
* 
          PUSH   REGB                            SAVE ORIGINAL SOURCE 
          MOVEZ  REGU3,REGB                      SOURCE IS REGU3
          CALLZ  RN2AE                           CONVERT
          POP    REGB 
          CALLZ  SUBDNAT                         DELETE REGU3 DNAT
          CALLZ  SUBDNAT                         DELETE REGU2 DNAT
          RETURN
          SPACE  4
          LISTSEC  C42AN
          TITLE  C42AN  -  COMP-4 ITEM  TO  ALPHANUMERIC  ITEM
************************************************************************
*         C42AN  - COMP4 ITEM TO ALPHANUMERIC ITEM                     *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*                                                                      *
*         REGC=  DNAT POINTER TO DESTINATION ITEM                      *
*                                                                      *
*         GENERATES CODE TO PERFORM THE INDICATED MOVE                 *
*                                                                      *
*         CALLZ  C42AN                                                 *
*                                                                      *
************************************************************************
 C42AN    EGO    2
* 
*         CREATE A DUMMY DNAT FOR REGU3 
* 
          MOVEZ  REGU3,REGT 
          CALLZ  ADNAT
* 
*         CREATE A DUMMY DNAT FOR REGU2 
* 
          MOVEZ  REGU2,REGT 
          CALLZ  ADNAT
* 
*         MOVE C4 (IN REGB) TO R1 (IN REGU3)
* 
          NOTE   C42AN1 
          CALLZ  LOADC4 
          MOVEZ  VREG1,(TREGOF,REGU3) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU3) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU3) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU3) 
* 
*         CONVERT  R1  TO  RN 
* 
          MINZ   (INTLENOF,REGU3),(BYTLENOF,REGC),(NUMLENOF,REGU2)
          MOVEZ  0,(POINTOF,REGU2)
          MOVEZ  0,(SIGNOF,REGU2) 
          PUSH   REGB,REGC
          MOVEZ  REGU3,REGB 
          MOVEZ  REGU2,REGC 
          CALLZ  R12RN
          POP    REGB,REGC
* 
*       STORE  RN  TO  C.BUFF 
* 
          NOTE   C42AN2 
          MOVEZ  (NUMLENOF,REGU2),T1
          GEN    SSRBPK,(TREGOF,REGU2),,((EXT$OF,C.BUFF)) 
          IFTHEN (T1,GT,10) 
          GEN    SSRAPB,(TREGP1OF,REGU2),(TREGOF,REGU2),VREGB1
          ENDIFZ
* 
*      MOVE ITEM IN C.BUFF TO AN (IN REGC)
* 
          GEN    SBBPK,(VREGOF,VREG3),,((FWA$OF,REGC))     FWA RECEIVIN 
          GEN    SBBPK,(VREGOF,VREG4),,(BCPOF,REGC)       BCP RECEIVIN
          GEN    SBBPK,(VREGOF,VREG5),,((EXT$OF,C.BUFF))  FWA SOURCE
          MOVEZ  10,T2
          IFTHEN (T1,GT,10) 
          MOVEZ  20,T2
          ENDIFZ
          SUBZ   T2,T1,T2 
          GEN    SBBPK,(VREGOF,VREG6),,T2        BCP SOURCE 
          GEN    SBBPK,(VREGOF,VREG7),,T1        NUMBER OF CHAR TO MOVE 
          SUBZ   T1,(BYTLENOF,REGC),T2           NO BLANKS TO PREFIX
          IFTHEN ((JUSTOF,REGC),NE,0) 
          SUBZ   0,T2,T2                         INDICATE SUFFIX
          ENDIFZ
          GEN    SXBPK,(VREGOF,VREG2),,T2        BLANKS TO PAD
          GENOBJ N=C.MOVN,I=(VREG3,VREG4,VREG5,VREG6,VREG7,VREG2) 
          CALLZ  SUBDNAT
          CALLZ  SUBDNAT
          RETURN
          LISTSEC  C42C1
          TITLE  - C42C1  COMP-4 ITEM TO COMP-1 ITEM
************************************************************************
*         C42C1  - COMP-4 ITEM TO COMP-1 ITEM                          *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*         REGC=  DNAT POINTER TO DESTINATION ITEM                      *
*                                                                      *
*         CALLZ  C42C1                                                 *
*                                                                      *
*         GENERATES CODE TO PERFORM THE INDICATED MOVE                 *
*                                                                      *
*         USES   REGU1                                                 *
*                REGU2                                                 *
*                                                                      *
************************************************************************
 C42C1    EGO    2
          NOTE   C42C1
* 
*      LOAD THE SOURCE INTO REGISTER VREG1
* 
          CALLZ  LOADC4 
* 
*      CREATE DUMMY DNAT
* 
          MOVEZ  REGU1,REGT                      SO REGU1 POINTS TO DNAT
          CALLZ  ADNAT                           CREATED HERE 
          MOVEZ  VREG1,(TREGOF,REGU1) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU1) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU1) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU1) 
* 
*      CREATE ANOTHER DUMMY DNAT
* 
          MOVEZ  REGU2,REGT                      REGU2 POINTS TO DNAT 
          CALLZ  ADNAT                           CREATED HERE 
          MOVEZ  (NUMLENOF,REGC),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGC),(POINTOF,REGU2) 
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU2) 
* 
*      SCALE  R1 (IN REGU1) TO R1 (IN REGU2)
* 
          PUSH  REGB,REGC                        SAVE ORIGINAL FIELDS 
          MOVEZ  REGU1,REGB                      SO SOURCE REGU1
          MOVEZ  REGU2,REGC                      SO DESTIN.REGU2
          CALLZ  R12R1                           CONVERT REGB TO REGC 
          POP    REGB,REGC                       RESTORE ORIG SOURCE
* 
*      STORE RESULT 
* 
 C42C11   LABEL 
          NOTE   C42C11 
          MOVEZ  (TREGOF,REGU2),P1
* 
          CALLZ  STORC1C2                        STORE P1 IN CORE 
* 
          CALLZ  SUBDNAT                         DELETE REGU2 DNAT
          CALLZ  SUBDNAT                         DELETE REGU3 DNAT
          RETURN
* 
          TITLE   -C42C2  COMP-4 ITEM TO COMP-2 ITEM
************************************************************************
*         C42C2  -  COMP-4 ITEM TO COMP-2 ITEM                         *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*         REGC=  DNAT POINTER TO DESTINATION ITEM                      *
*                                                                      *
*         CALLZ  C42C2                                                 *
*                                                                      *
*         GENERATES CODE TO PERFORM THE INDICATED MOVE                 *
*                                                                      *
*         USES   REGU1                                                 *
*                REGU2                                                 *
*                SAVREGB1                                              *
*                SAVREGC1                                              *
*                                                                      *
************************************************************************
 C42C2    EGO    2
          NOTE   C42C2
* 
*      LOAD THE SOURCE INTO REGISTER VREG1
* 
          CALLZ  LOADC4 
* 
          SUBZ   0,(POINTOF,REGB),T1
          IFZ    (T1,EQ,0),C42C22                IF NO SCALING
          IFZ    (T1,EQ,1),C42C23                IF MULT BY 10
          SUBZ   0,T1,T1
*                            MULTIPLY BY 10** (-POINTOF,REGB) 
 C42C21   LABEL 
          NOTE   C42C21 
          GEN    SLRBPK,(VREGOF,VREG4),CBFTENS   (+T1)
          GEN    PACK,(VREGOF,VREG1),,VREG1 
          GEN    NORM,(VREGOF,VREG1),,VREG1 
          GEN    FMUL,(VREGOF,VREG1),VREG1,VREG4
          MOVEZ  VREG1,P1 
          CALLZ  STORC1C2 
          RETURN
* 
*                            NO SCALING 
 C42C22   LABEL 
          NOTE   C42C22 
          GEN    PACK,(VREGOF,VREG1),,VREG1 
          GEN    NORM,(VREGOF,VREG1),,VREG1 
          MOVEZ  VREG1,P1 
          CALLZ  STORC1C2 
          RETURN
*                            MULTIPLY BY 10 
 C42C23   LABEL 
          NOTE   C42C23 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG1
          GEN    SHL,(TREGOF,REGB),3             *8 
          GEN    IADD,(VREGOF,VREG1),VREG1,(TREGOF,REGB) *10
          GEN    PACK,(VREGOF,VREG1),,VREG1 
          GEN    NORM,(VREGOF,VREG1),,VREG1 
          MOVEZ  VREG1,P1 
          CALLZ  STORC1C2                        STORE RESULT 
          RETURN
          SPACE  4
          LISTSEC  C42C4
          TITLE  C42C4 - COMP-4 ITEM TO COMP-4 ITEM 
************************************************************************
*         C42C4  -COMP-4 ITEM TO COMP-4 ITEM                           *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*         REGC=  DNAT POINTER TO DESTINATION ITEM                      *
*                                                                      *
*         CALLZ  C42C4                                                 *
*                                                                      *
*         GENERATES CODE TO PERFORM THE INDICATED MOVE                 *
*                                                                      *
*         USES   REGU1                                                 *
*                REGU2                                                 *
*                                                                      *
************************************************************************
 C42C4    EGO    2
          NOTE   C42C4
* 
*      LOAD SOURCE INTO VIRTUAL REGISTER VREG1
* 
          CALLZ  LOADC4 
*      CREATE DUMMY DNAT
* 
          MOVEZ  REGU1,REGT 
          CALLZ  ADNAT
          MOVEZ  VREG1,(TREGOF,REGU1) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU1) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU1) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU1) 
* 
*      CREATE ANOTHER DUMMY DNAT
* 
          MOVEZ  REGU2,REGT 
          CALLZ  ADNAT
          MOVEZ  (NUMLENOF,REGC),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGC),(POINTOF,REGU2) 
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU2) 
* 
*      SCALE R1 (IN REGU1) TO R1 (IN REGU2) 
* 
          PUSH   REGB,REGC
          MOVEZ  REGU1,REGB 
          MOVEZ  REGU2,REGC 
          CALLZ  R12R1
          POP    REGB,REGC
* 
*      STORE RESULT 
          MOVEZ  (TREGOF,REGU2),P1
          CALLZ  STORC4 
* 
*      DELETE DUMMY DNAT
* 
          CALLZ  SUBDNAT
          CALLZ  SUBDNAT
          RETURN
          SPACE  4
          LISTSEC * 
          TITLE  C42ND -  COMP-4 ITEM TO NUMERIC DISPLAY
**        C42ND -  COMP-4 ITEM TO NUMERIC DISPLAY 
* 
*         REGB = DNAT INDEX TO SOURCE ITEM. 
*         REGC = DNAT INDEX TO DESTINATION ITEM.
* 
*         CALLZ  C42ND
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
* 
*         USES-  REGU2
*                REGU1       (BY R12ND) 
  
  
 C42ND    EGO    2
          NOTE   C42ND
* 
*      LOAD SOURCE ITEM INTO VERG1
* 
          CALLZ  LOADC4 
*      CREATE DUMMY DNAT FOR SOURCE 
          MOVEZ  REGU2,REGT                      REGU2 POINTS TO DNAT 
          CALLZ  ADNAT
          MOVEZ  VREG1,(TREGOF,REGU2) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU2) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU2) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU2) 
*      CREATE ANOTHER DUMMY DNAT
* 
          MOVEZ  REGU3,REGT                      REGU3 POINTS TO DNAT 
          CALLZ  ADNAT
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU3) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU3) 
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU3) 
*      CONVERT  R1  (IN REGU2) TO RN (IN REGU3) 
          PUSH   REGB,REGC
          MOVEZ  REGU2,REGB 
          MOVEZ  REGU3,REGC 
          CALLZ  R12RN
          POP    REGB,REGC
*      CONVERT  RN  (IN REGU3) TO  ND  (IN REGC)
          PUSH   REGB 
          MOVEZ  REGU3,REGB 
          CALLZ  RN2ND
          POP    REGB 
* 
          CALLZ  SUBDNAT
          CALLZ  SUBDNAT
          RETURN
          SPACE  4
          LISTSEC  C42NE
          TITLE  C42NE  -  COMP-4 ITEM TO NUMERIC EDITED ITEM 
************************************************************************
*         C42NE  -  COMP-4 ITEM TO NUMERIC EDITED ITEM                 *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*         REGC=  DNAT POINTER TO DESTINATION ITEM                      *
*                                                                      *
*         CALLZ  C42NE                                                 *
*                                                                      *
*         GENERATES CODE TO PERFORM THE INDICATED MOVE                 *
*         USES-  REGU2                                                 *
*                REGU3                                                 *
*                SAVREGB1                                              *
*                SAVREGL2                                              *
*                REGU1         (BY R12RN  AND RN2NE)                   *
*                SAVERGC1      (BY R12RN  AND RN2NE)                   *
*                                                                      *
************************************************************************
 C42NE    EGO    2
          NOTE   C42NE
* 
*      LOAD THE SOURCE INTO VREG1 
          CALLZ  LOADC4 
* 
*      DESCRIBE  R1 (IN REGU2)
* 
          MOVEZ  REGU2,REGT                      REGU2 POINTER TO DNAT
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  VREG1,(TREGOF,REGU2) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU2) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU2) 
* 
*      CREATE DESTINATION RN (IN REGU3) 
* 
          MOVEZ  REGU3,REGT 
          CALLZ  ADNAT
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU3) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU3) 
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU3) 
* 
*      CONVERT R1 (IN REGU2) TO  RN  (IN REGU3) 
* 
          PUSH   REGB 
          PUSH   REGC 
          MOVEZ  REGU2,REGB 
          MOVEZ  REGU3,REGC 
          CALLZ  R12RN                           CONVERT  REGB TO REGC
          POP    REGC                            RESTORE  ORIG DESTIN.
* 
*      CONVERT RN (IN REGU3) TO  NE (IN REGC) 
* 
          MOVEZ  REGU3,REGB                      THIS SOURCE REGU3
          CALLZ  RN2NE                           CONVERT REGB TO REGC 
          POP    REGB                            RESTOR SOURCE
* 
          CALLZ  SUBDNAT                         DELETE  REGU3 DNAT 
          CALLZ  SUBDNAT                         DELETE  REGU2 DNAT 
          RETURN
          SPACE  4
          LISTSEC  C42R1
          TITLE  C42R1  - COMP-4  TO REGISTER  COMP-1 
************************************************************************
*         C42R1   - COMP-4 ITEM TO REGISTER COMP-1                     *
*                                                                      *
*         REGB = DNAT POINTER TO SOURCE ITEM                           *
*         REGC = DNAT POINTER TO DESTINATION  REGISTER                 *
*                                                                      *
*         SETS   (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF RESULT REG.*
*         GENERATES  CODE  TO PERFORM NECESSARY SCALING                *
*                                                                      *
*         USES   REGU1                                                 *
*                                                                      *
************************************************************************
 C42R1    EGO    2
          NOTE   C42R1
* 
*      LOAD THE SOURCE INTO REGISTER  VREG1 
          CALLZ  LOADC4 
* 
*      CREATE  DUMMY DNAT 
* 
          MOVEZ  REGU1,REGT 
          CALLZ  ADNAT
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU1) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU1) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU1) 
          MOVEZ  VREG1,(TREGOF,REGU1) 
* 
*     SCALE  R1 (R1 (IN REGU1) TO R1 (IN REGC)
* 
          PUSH   REGB 
          MOVEZ  REGU1,REGB 
          CALLZ  R12R1
          POP    REGB 
* 
          CALLZ  SUBDNAT
          RETURN
          SPACE  4
          LISTSEC  C42R2
          TITLE  C42R2  - COMP-4 ITEM TO COMP-2 ITEM
************************************************************************
*         C42R2  COMP-4 TO COMP-2 REGISTER                             *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*         REGC=  DNAT POINTER OF DESTINATION REGISTER                  *
*                                                                      *
*         CALLZ  C42R2                                                 *
*                                                                      *
*         GENERATES THE CODE TO LOAD THE ITEM PERFORM                  *
*                  ANY MECESSARY SCALING AND CONVERT                   *
*                  TO COMP-2 REGISTER FORMAT                           *
************************************************************************
* 
 C42R2    EGO    2
          NOTE   C42R2
* 
*      LOAD THE SOURCE ITEM INTO REGISTER VERG1 
* 
          CALLZ  LOADC4 
* 
*      CREATE A DUMMY SOURCE DNAT 
* 
          MOVEZ  REGU1,REGT                      REGU1 POINTS TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU1) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU1) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU1) 
          MOVEZ  VREG1,(TREGOF,REGU1) 
* 
*      CONVERT R1 (IN REGU1) TO R2 (IN REGC)
* 
          PUSH   REGB                            SAVE ORIGINAL SOURCE 
          MOVEZ  REGU1,REGB 
          CALLZ  R12R2                           CONVERT  REGR TO REGC
          POP    REGB                            RESTORE SOURCE 
* 
          CALLZ  SUBDNAT                         DELETE DNAT
          RETURN
          SPACE  4
          LISTSEC  C42R4
          TITLE  C42R4 - COMP-4 ITEM TO DPCOMP2 REGISTER
************************************************************************
*         C42R4  COMP-4 TO DPCOMP2 REGISTER                            *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE ITEM                           *
*         REGC=  DNAT POINTER TO DESTINATION REGISTER                  *
*                                                                      *
*         CALLZ  C42R4                                                 *
*                                                                      *
*         GENERATE CODE TO PERFORM THE INDICATED LOAD                  *
*         AND SETS (TREGOF,REGC) = VIRTUAL REGISTER OF THE RESULT      *
************************************************************************
 C42R4    EGO    2
          NOTE   C42R4
* 
*      LOAD THE SOURCE WORD INTO REGISTER 
* 
          CALLZ  LOADC4 
* 
*      CREATE A DUMMY DNAT
          MOVEZ  REGU1,REGT                      REGU1 POINTS TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU1) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU1) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU1) 
          MOVEZ  VREG1,(TREGOF,REGU1) 
* 
*      CONVERT AND SCALE R1 (IN REGU1) TO R2 (IN REGC)
* 
          PUSH   REGB                            SAVE ORIGINAL SRC. REG 
          MOVEZ  REGU1,REGB 
          CALLZ  R12R2                           CONVERT REGB TO REGC 
          POP    REGB 
* 
*      CONVERT R2 (IN REGC) TO R4 (IN REGC) 
* 
 C42R41   LABEL 
          NOTE   C42R41 
          GEN    XMIT,(VREGOF,VREG1),(TREGOF,REGC)
          GEN    MASK,(VREGOF,VREG2),0           VREG2 = VREG1 + 1
          MOVEZ  VREG1,(TREGOF,REGC)
          CALLZ  SUBDNAT                         DELETE REGU1 DNAT
          RETURN
  
          END 
