*DECK GMOVER
          IDENT  GMOVER 
          TITLE  GMOVER -  GENERATE MOVE ROUNDED
          MACHINE  ANY,I
          SST 
          COMMENT  GENERATE MOVE ROUNDED
          SPACE  4
**        GMOVER -  GENERATE MOVE ROUNDED 
* 
* CGMOVER LINK   CGMOVER
* 
*         REGB = REGTABL INDEX TO SOURCE ITEM OR REGISTER 
*         REGC = REGTABL INDEX TO DESTINATION ITEM. 
*         CALLZ  CGMOVER
* 
*         IF ROUNDING IS NOT POSSIBLE,
*           CALLS CGMOVE. 
*         IF ROUNDING IS POSSIBLE,
*           LOADS REGB (IF NOT REGISTER) VIA CGMOVE.
*           ROUNDS VIA ROUND. 
*           STORES INTO REGC VIA CGMOVE.
* 
*         *ON SIZE ERROR* IS HANDLED TRANSPARENTLY BECAUSE CGMOVE 
*           IS CALLED TO DO ALL ACTUAL MOVES. 
          SPACE  4
*      COMDECKS 
  
  
  
  
  
 CONTROL  OPSYN  NIL
  
  
  
  
          SPACE  4
 CGMOVER  MODULE
          SPACE  2
*      FIXED TABLE EQUATES
          SPACE  2
 SCALE    EQU    T20
 SAVVREG  EQU    T19         USED TO SAVE A VREG ACROSS A CALL TO GMOVE 
*                            WHEN IT IS NOT POSSIBLE TO USE PUSH
*                            IF GMOVE EVER USES T19 THIS WONT WORK
           SPACE 2
  
  
*      LINKAGE FROM CALLING ROUTINES IN OTHER MODULES 
 CGMOVER  KNIL   CGMOVER     * FROM MAIN VERB LOOP
  
  
*      LINKAGE TO CALLED ROUTINES IN OTHER MODULES
  
 ADNAT    LINK   ADNAT       *
 ADPDNAT  LINK   ADPDNAT
 CGMOVE   LINK   CGMOVE      * TO GMOVE 
 CGREGMV  LINK   CGREGMV     * TO CGREGMV 
 LITPOOL  LINK   LITPOOL     * TO LITPOOL 
 ROUND    LINK   ROUND       * TO GARITH
 SUBDNAT  LINK   SUBDNAT
          SPACE  4
 CGMOVER  EGO    1
          IFZ    ((TYPEOF,REGC),EQ,COMP2),MOVER90  IF NO ROUND
          IFZ    ((TYPEOF,REGC),EQ,DPCOMP2),MOVER90  IF NO ROUND
          IFZ    ((TYPEOF,REGC),EQ,NUMEDIT),MOVERNE  IF RCV = NUM-EDIT
  
          SUBZ   (POINTOF,REGB),(POINTOF,REGC),SCALE
  
*                            DESTINATION IS COMP/COMP1
          IFZ    ((TYPEOF,REGB),EQ,COMP2),MOVER04          IF ROUND 
          IFZ    ((TYPEOF,REGB),EQ,DPCOMP2),MOVER04        IF ROUND 
  
*                            SOURCE IS COMP/COMP1 
*                            DESTINATION IS COMP/COMP1
          IFZ    ((POINTOF,REGB),LE,(POINTOF,REGC)),MOVER90  IF NO RND
          IFZ    ((TYPEOF,REGB),EQ,COMP1),MOVER03 
          IFZ    ((TYPEOF,REGB),EQ,COMP4),MOVER03 
          ADDZ   (NUMLENOF,REGB),(SIGNOF,REGB),T1 
          IFZ    (T1,GT,10),MOVER02 
          IFZ    (T1,EQ,10),MOVER05 
  
*                            ROUNDING 
*                            SOURCE IS 1-REGISTER COMP
*                            DESTINATION IS COMP/COMP1
 MOVER01  LABEL                                  (CROSS-REFS ONLY)
          NOTE   MOVER01
          CALLZ  INIT 
          PUSH   REGB 
  
*      IF THE SOURCE FIELD IS SIGNED, WE ROUND THE ABSOLUTE VALUE 
*      THE SIGN WILL BE RESTORED BEFORE CALLING GMOVE TO DO THE STORE 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGB)
            GEN    SHR,VREG3,59 
            GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGOF,REGB)
  
*      CREATE A TEMP DNAT TO DESCRIBE THE (POSITIVE) SOURCE FIELD 
  
            MOVEZ  REGT15,REGT
            CALLZ  ADNAT
  
            MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT)
            MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGT)
            MOVEZ  (POINTOF,REGB),(POINTOF,REGT)
*           MOVEZ  0,(SIGNOF,REGT)               DONE BY ADNAT
            MOVEZ  REGT,REGB
  
            MOVEZ  VREG2,(TREGOF,REGB)
            MOVEZ  VREG3,SAVVREG
          ENDIFZ
          GEN    SXBPK,(VREGOF,VREG3),,5
          SUBZ   SCALE,1,T1 
          IFTHEN (T1,NE,0)
            GEN    SHL,VREG3,(ARITH8,T1)
          ENDIFZ
          GEN    SLRBPK,(VREGOF,VREG1),,((EXT$OF,C.ZERO)) 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          MOVEZ  VREG1,(TREGOF,REGC)
          CALLZ  ROUND
          POP    REGB 
  
*      RESTORE SIGN OF SOURCE FIELD 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            MOVEZ  SAVVREG,VREG3
            GEN    LXOR,(VREGOF,VREG1),VREG3,(TREGOF,REGD)
            MOVEZ  VREG1,(TREGOF,REGD)
            MOVEZ  1,(SIGNOF,REGD)
            CALLZ  SUBDNAT
          ENDIFZ
          CALLZ  FINI 
          RETURN
  
  
*                            ROUNDING 
*                            SOURCE IS 2-REGISTER COMP
*                            DESTINATION IS COMP/COMP1
 MOVER02  LABEL 
          NOTE   MOVER02
          CALLZ  INIT 
          PUSH   REGB 
  
*      IF THE SOURCE FIELD IS SIGNED, WE ROUND THE ABSOLUTE VALUE 
*      THE SIGN WILL BE RESTORED BEFORE CALLING GMOVE TO DO THE STORE 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGB)
            GEN    SHR,VREG3,59 
            MOVEZ  VREG3,SAVVREG
            GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGOF,REGB)
            GEN    LXOR,(VREGOF,VREG3),VREG3,(TREGP1OF,REGB)
  
*      CREATE A TEMP DNAT TO DESCRIBE THE (POSITIVE) SOURCE FIELD 
  
            MOVEZ  REGT15,REGT
            CALLZ  ADNAT
  
            MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT)
  
*      WE MUST ADD 1 TO THE SIZE OF THE SOURCE IN CASE IT IS 10 CHARS 
*      SO ROUND WILL ALWAYS KNOW THAT THE SOURCE IS IN 2 REGS 
  
            ADDZ   1,(NUMLENOF,REGB),(NUMLENOF,REGT)
  
            MOVEZ  (POINTOF,REGB),(POINTOF,REGT)
*           MOVEZ  0,(SIGNOF,REGT)               DONE BY ADNAT
            MOVEZ  REGT,REGB
  
            MOVEZ  VREG2,(TREGOF,REGB)
          ENDIFZ
          GEN    SXBPK,(VREGOF,VREG3),,5
          SUBZ   SCALE,1,T2 
          IFTHEN (T2,GE,10) 
            SUBZ   T2,10,T2 
          ENDIFZ
          IFTHEN (T2,NE,0)
            GEN    SHL,VREG3,(ARITH8,T2)
          ENDIFZ
          GEN    SLRBPK,(VREGOF,VREG1),,((EXT$OF,C.ZERO))  VREG1
          GEN    IADD,(VREGOF,VREG2),VREG1,VREG3           VREG2=VREG1+1
          IFTHEN (SCALE,LE,10)
            MOVEZ  VREG1,(TREGOF,REGC)
          ELSEZ 
*      THE FOLLOWING LOAD WILL BE THROWN OUT BY THE ASSEMBLER.  IT
*      INSURES VREG3 = VREG2+1
            GEN    SLRBPK,(VREGOF,VREG3),,((EXT$OF,C.ZERO)) 
            MOVEZ  VREG2,(TREGOF,REGC)
          ENDIFZ
          CALLZ  ROUND
          POP    REGB 
  
*      RESTORE SIGN OF SOURCE FIELD 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            MOVEZ  SAVVREG,VREG3
            GEN    LXOR,(VREGOF,VREG1),VREG3,(TREGOF,REGD)
            GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGP1OF,REGD)
            MOVEZ  VREG1,(TREGOF,REGD)
            MOVEZ  1,(SIGNOF,REGD)
  
*      WE SUBTRACT OFF THE 1 THAT WE ADDED TO THE SIZE BEFORE ROUNDING
  
            SUBZ   (NUMLENOF,REGD),1,(NUMLENOF,REGD)
  
            CALLZ  SUBDNAT
          ENDIFZ
          CALLZ  FINI 
          RETURN
  
  
*                            ROUNDING 
*                            SOURCE IS COMP-1 
*                            DESTINATION IS COMP/COMP1
 MOVER03  LABEL 
          NOTE   MOVER03
          CALLZ  INIT 
          PUSH   REGB 
  
*      IF THE SOURCE FIELD IS SIGNED, WE ROUND THE ABSOLUTE VALUE 
*      THE SIGN WILL BE RESTORED BEFORE CALLING GMOVE TO DO THE STORE 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGB)
            GEN    SHR,VREG3,59 
            GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGOF,REGB)
  
*      CREATE A TEMP DNAT TO DESCRIBE THE (POSITIVE) SOURCE FIELD 
  
            MOVEZ  REGT15,REGT
            CALLZ  ADNAT
  
            MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT)
            MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGT)
            MOVEZ  (POINTOF,REGB),(POINTOF,REGT)
*           MOVEZ  0,(SIGNOF,REGT)               DONE BY ADNAT
            MOVEZ  REGT,REGB
  
            MOVEZ  VREG2,(TREGOF,REGB)
            MOVEZ  VREG3,SAVVREG
          ENDIFZ
          SUBZ   SCALE,1,T1                      SCALE
  
          IFTHEN (T1,NE,0)
            MOVEZ  1,P2                          10'0 
 MOVER02A   LABEL 
            MULTZ  P2,10,P2 
            SUBZ   T1,1,T1
            IFZ    (T1,NE,0),MOVER02A 
            MULTZ  P2,5,P2                       5 * 10'SCALE 
            MOVEZ  0,P1                          P2 = VALUE, NOT ADDRESS
            MOVEZ  REGU1,REGT                    REGU1 _ NEW DNAT 
            CALLZ  ADPDNAT                       CREATE PERMANENT DNAT
            MOVEZ  0,(BCPOF,REGT) 
            MOVEZ  10,(BYTLENOF,REGT) 
            EXECUTE  LITPOOL                     ((FWA$OF,REGT)) _ LIT
            GEN    SLRBPK,(VREGOF,VREG1),,((FWA$OF,REGT)) 
          ELSEZ 
            GEN    SXBPK,(VREGOF,VREG1),,5
            ENDIFZ
  
          MOVEZ  VREG1,(TREGOF,REGC)
          CALLZ  ROUND
          POP    REGB 
  
*      RESTORE SIGN OF SOURCE FIELD 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            MOVEZ  SAVVREG,VREG3
            GEN    LXOR,(VREGOF,VREG1),VREG3,(TREGOF,REGD)
            MOVEZ  VREG1,(TREGOF,REGD)
            MOVEZ  1,(SIGNOF,REGD)
            CALLZ  SUBDNAT
          ENDIFZ
          CALLZ  FINI 
          RETURN
*                            ROUNDING 
*                            SOURCE IS COMP-2 OR D.P. COMP-2
 MOVER04  LABEL 
          NOTE   MOVER04
          CALLZ  INIT 
          PUSH   REGB 
  
*      IF THE SOURCE FIELD IS SIGNED, WE ROUND THE ABSOLUTE VALUE 
*      THE SIGN WILL BE RESTORED BEFORE CALLING GMOVE TO DO THE STORE 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGB)
            GEN    SHR,VREG3,59 
            MOVEZ  VREG3,SAVVREG
            GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGOF,REGB)
          IFZ    ((TYPEOF,REGB),EQ,COMP2),MR41
            GEN    LXOR,(VREGOF,VREG3),VREG3,(TREGP1OF,REGB)
 MR41     LABEL 
  
*      CREATE A TEMP DNAT TO DESCRIBE THE (POSITIVE) SOURCE FIELD 
  
            MOVEZ  REGT15,REGT
            CALLZ  ADNAT
  
            MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT)
            MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGT)
            MOVEZ  (POINTOF,REGB),(POINTOF,REGT)
*           MOVEZ  0,(SIGNOF,REGT)               DONE BY ADNAT
            MOVEZ  REGT,REGB
  
            MOVEZ  VREG2,(TREGOF,REGB)
          ENDIFZ
          SUBZ   0,SCALE,SCALE
          MOVEZ  (ROUNDOF,SCALE),P2 
          MOVEZ  0,P1                            P2 = VALUE, NOT ADDRESS
          MOVEZ  REGU1,REGT                      REGU1 _ NEW DNAT 
          CALLZ  ADPDNAT                         PERMANENT DNAT 
          MOVEZ  0,(BCPOF,REGT) 
          MOVEZ  10,(BYTLENOF,REGT) 
          EXECUTE  LITPOOL                       ((FWA$OF,REGT)) _ LIT. 
          GEN    SLRBPK,(VREGOF,VREG1),,((FWA$OF,REGT)) 
          MOVEZ  VREG1,(TREGOF,REGC)
          MOVEZ  (TYPEOF,REGB),(TYPEOF,REGC)
          CALLZ  ROUND
          POP    REGB 
  
*      RESTORE SIGN OF SOURCE FIELD 
  
          IFTHEN ((SIGNOF,REGB),NE,0) 
            MOVEZ  SAVVREG,VREG3
            GEN    LXOR,(VREGOF,VREG1),VREG3,(TREGOF,REGD)
            IFZ    ((TYPEOF,REGB),EQ,COMP2),MR42
            GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGP1OF,REGD)
 MR42     LABEL 
            MOVEZ  VREG1,(TREGOF,REGD)
            MOVEZ  1,(SIGNOF,REGD)
            CALLZ  SUBDNAT
          ENDIFZ
          CALLZ  FINI 
          RETURN
  
  
*                            ROUNDING 
*                            SOURCE IS 1-REG COMP, 10 CHARS UNSIGNED
*                            OR 9 SIGNED
*                            DESTINATION IS COMP/COMP1
  
 MOVER05  LABEL 
          IFZ    ((SIGNOF,REGB),EQ,0),MOVER06 
  
*      SOURCE IS 9 CHARS SIGNED.  WE ROUND THE ABSOLUTE VALUE OF THE
*      SOURCE GIVING A 10 CHAR (POSITIVE) RESULT.  SINCE THE INPUT TO 
*      GMOVE IS NOW 10 CHARS + A SIGN, WE MUST DUMMY UP A 2 REG SOURCE. 
*      THE FIRST REG IS A WORD OF ZEROS AND THE SECOND THE ROUNDED
*      RESULT.  WE APPLY THE SIGN TO BOTH REGS AND CALL GMOVE TO DO 
*      THE MOVE 
  
          NOTE   MOVER05
          CALLZ  INIT 
  
*      STRIP OFF THE SIGN 
  
          GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGB)
          GEN    SHR,VREG3,59 
          GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGOF,REGB)
  
*      CREATE A TEMP DNAT TO DESCRIBE THE (POSITIVE) SOURCE FIELD 
  
          MOVEZ  REGT15,REGT
          CALLZ  ADNAT
  
          MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT)
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGT)
          MOVEZ  (POINTOF,REGB),(POINTOF,REGT)
*         MOVEZ  0,(SIGNOF,REGT)                 DONE BY ADNAT
          MOVEZ  REGT,REGB
  
          MOVEZ  VREG2,(TREGOF,REGB)
          MOVEZ  VREG3,SAVVREG
  
*      PICK UP ROUNDER AND SCALE IF NECESSARY 
  
          GEN    SXBPK,(VREGOF,VREG3),,5
          SUBZ   SCALE,1,T1 
          IFTHEN (T1,NE,0)
            GEN    SHL,VREG3,(ARITH8,T1)
          ENDIFZ
  
*      CONVERT COMP1 ROUNDER TO COMP
  
          GEN    SLRBPK,(VREGOF,VREG1),,((EXT$OF,C.ZERO)) 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          MOVEZ  VREG1,(TREGOF,REGC)
  
          CALLZ  ROUND
  
*      MAKE RESULT INTO 2 REGS AND RESTORE SIGN 
  
          MOVEZ  SAVVREG,VREG3
          GEN    SLRBPK,(VREGOF,VREG1),,((EXT$OF,C.ZERO)) 
          GEN    LXOR,(VREGOF,VREG1),VREG3,VREG1
          GEN    LXOR,(VREGOF,VREG2),VREG3,(TREGOF,REGD)
          MOVEZ  1,(SIGNOF,REGD)
          MOVEZ  VREG1,(TREGOF,REGD)
          CALLZ  SUBDNAT
          CALLZ  FINI 
          RETURN
  
  
*                            ROUNDING 
*                            SOURCE IS 1-REG COMP, 10 CHARS UNSIGNED
*                            DESTINATION IS COMP/COMP1
  
 MOVER06  LABEL 
          NOTE   MOVER06
          CALLZ  INIT 
  
*      PICK UP ROUNDER AND SCALE IF NECESSARY 
  
          GEN    SXBPK,(VREGOF,VREG3),,5
          SUBZ   SCALE,1,T1 
          IFTHEN (T1,NE,0)
            GEN    SHL,VREG3,(ARITH8,T1)
          ENDIFZ
  
*      CONVERT COMP1 ROUNDER TO COMP
  
          GEN    SLRBPK,(VREGOF,VREG1),,((EXT$OF,C.ZERO)) 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          MOVEZ  VREG1,(TREGOF,REGC)
          CALLZ  ROUND
          CALLZ  FINI 
          RETURN
  
  
*                            NO ROUNDING
 MOVER90  LABEL 
          NOTE   MOVER90
          CALLZ  CGMOVE 
          RETURN
          TITLE  MOVERNE -  GENERATE MOVE ROUNDED TO NUMERIC-EDITED 
**        MOVERNE -  GENERATE MOVE ROUNDED TO NUMERIC-EDITED
* 
*         CALLS CGMOVER 
*           TO ROUND SOURCE INTO TEMP *RN* REGISTER.
* 
*         CALLS CGMOVE
*           TO MOVE RESULT TO NUMERIC-EDITED ITEM.
  
  
 MOVERNE  LABEL 
          NOTE   MOVERNE1 
  
*      CREATE INTERMEDIATE REGISTER 
  
          MOVEZ  REGT14,REGT
          CALLZ  ADNAT                           CREATE TEMP DNAT 
  
          MOVEZ  COMP,(TYPEOF,REGT) 
          MAXZ   (NUMLENOF,REGB),(NUMLENOF,REGC),(NUMLENOF,REGT)
          ADDZ   1,(NUMLENOF,REGT),(NUMLENOF,REGT)
          MOVEZ  (POINTOF,REGC),(POINTOF,REGT)
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGT)
  
*      ROUND THE SOURCE INTO THE INTERMEDIATE REGISTER
  
          PUSH   REGC                            SAVE ORIGINAL DEST.
          MOVEZ  REGT,REGC
          CALLZ  CGMOVER                         ROUND (REGB) _ (REGC)
          POP    REGC                            RESTORE ORIGINAL DEST. 
  
*      MOVE RESULT TO NUMERIC-EDITED ITEM 
  
          NOTE   MOVERNE2 
          PUSH   REGB                            SAVE ORIGINAL SOURCE 
          MOVEZ  REGT14,REGB                     THIS SOURCE IS REGT14
          CALLZ  CGMOVE                          MOVE (REGB) TO (REGC)
          POP    REGB                            RESTORE ORIGINAL DEST. 
  
          CALLZ  SUBDNAT                         DELETE REGT14 DNAT 
          RETURN
          TITLE  INIT -  INITIALIZE FOR ROUNDED MOVE
**        INIT -  INITIALIZE FOR ROUNDED MOVE 
* 
*         PUSHES REGB, REGC, REGD 
*         PUSHES SCALE
*         SETS REGS POINTING TO ORIGINAL REGC 
*         ENSURES THAT REGB, REGC AND REGD ARE ESSENTIALLY
*           READY TO CALL *ROUND*.
*         POPS SCALE
  
  
 INIT     LABEL 
          PUSH   REGB,REGC,REGD 
          PUSH   SCALE
          MOVEZ  REGC,REGS                       POINT REGS TO REGC 
          MOVEZ  REGT9,REGT 
          CALLZ  ADNAT                           CREATE TEMP REGT9 DNAT 
  
          IFZ    ((LEVELOF,REGB),EQ,TEMPLEVL),INIT1  IF ALREADY A TEMP
  
          NOTE   INIT 
  
          MOVEZ  TEMPLEVL,(LEVELOF,REGT9) 
          MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT9) 
          IFTHEN ((TYPEOF,REGB),EQ,COMP4) 
          MOVEZ  COMP1,(TYPEOF,REGT9) 
          ENDIFZ
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGT9) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGT9) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGT9) 
  
          MOVEZ  REGT9,REGC 
          CALLZ  CGMOVE                          CREATE TEMP VALUE
          MOVEZ  REGT9,REGB 
  
*                            REGB IS NOW A REGISTER TEMP
 INIT1    LABEL 
          MOVEZ  REGT10,REGT
          CALLZ  ADNAT                           CREATE REGT10 TEMP DNAT
  
          MOVEZ  (TYPEOF,REGB),(TYPEOF,REGT10)
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGT10)
          MOVEZ  (POINTOF,REGB),(POINTOF,REGT10)
          MOVEZ  REGT10,REGC
  
          MOVEZ  REGT11,REGT
          CALLZ  ADNAT                           CREATE REGT11 TEMP DNAT
          MOVEZ  REGT11,REGD
  
          POP    SCALE
          RETURN
          TITLE  FINI -  FINISH UP ROUNDED MOVE 
**        FINI -  FINISH UP ROUNDED MOVE
* 
*         MOVES REGISTER RESULT TO DESTINATION ITEM.
*         RELEASES TEMPORARY DNATS
*         POPS REGB, REGC, REGD TO THEIR ORIGINAL VALUES
  
  
 FINI     LABEL 
          NOTE   FINI 
          MOVEZ  REGT11,REGB
          MOVEZ  REGS,REGC
          CALLZ  CGMOVE 
  
          CALLZ  SUBDNAT                         RELEASE REGT11 DNAT
          CALLZ  SUBDNAT                         RELEASE REGT10 DNAT
          CALLZ  SUBDNAT                         RELEASE REGT9 DNAT 
          POP    REGB,REGC,REGD 
          RETURN
          SPACE  4
          END 
