*DECK DEC                                                                DEC
          IDENT  DEC
 DEC      TITLE  DEC - CONVERT BINARY INTEGERS TO BLANK FILLED D.C. 
          MACHINE   ANY,I 
          COMMENT   "COMRTN"
          COMMENT   BINARY TO BLANK FILL DISP CODE
  
 DEC      SPACE  4
**        DEC - CONVERTS INTEGERS TO BLANK-FILLED DISPLAY CODE
* 
*                CALLED AS A FUNCTION:  
* 
*         DEC    L. JUST NUMBER IN WORD 
*         DECR   R. JUST NUMBER IN WORD 
* 
*                            CODE LIFTED FROM CBR1U10 
* 
*         METHOD BY R. E. JAMES 
* 
*         CODING PRIORITIES-
*                1)  BE FAST. 
*                2)  USE FEW X-REGISTERS. 
*                3)  BE SMALL IN SIZE.
* 
*         USES ALL REGISTERS
* 
* 
*                ENTRY POINTS:  
          ENTRY  DEC
          ENTRY  DECR 
* 
 CONVT    SPACE  4
 CONVT    DATA   0
          SA2    DIVISOR     (10.0'-10)*(2'33)
          SB7    5-1777B
          PX1    X1,B7       0005000...NNNNNNNNNNB
          LX1    10          (N*2'10)+1   (PACKED)
          NX1 
          RX2    X2*X1       EFFECTIVELY 0.NNNNNNNNNN*2'43, ROUNDED UP
          SX1    11772B 
          LX1    48          1772000...001B 
          FX1    X1+X2       ADD ROUNDING FACTOR AND SHIFT RESULT LEFT 5
          UX2    X1          (0.NNNNNNNNNN*2'48)*1
          IX0    X2+X2       (0.NNNNNNNNNN*2'48) * 2
          BX1    X1-X1       CLEAR RESULT REGISTER
          IX2    X2+X0       (0.NNNNNNNNNN*2'48) * 3
          LX0    1           (0.NNNNNNNNNN*2'48) * 4
          LX2    5           (0.NNNNNNNNNN*2'48) * 96 
          IX0    X2+X0       NN.NNNNNNNN*2'48 
          UX2    X0,B7       EXTRACT UPPER TWO DIGITS F-OM EXPONENT 
          PX1    X1,B7       PUT UPPER TWO DIGITS INTO RESULT 
          IX0    X2+X2       (0.NNNNNNNN*2'48) * 2
          LX1    12          MAKE ROOM FOR NEXT TWO DIGITS
          IX2    X2+X0       (0.NNNNNNNN*2'48) * 3
          LX0    1           (0.NNNNNNNN*2'48) * 4
          LX2    5           (0.NNNNNNNN*2'48) * 96 
          IX0    X2+X0       NN.NNNNNN*2'48 
          UX2    X0,B7       EXTRACT UPPE- TWO DIG+TS F-OM EXPONENT 
          PX1    X1,B7       PUT UPPER TWO DIGITS IN RESULT 
          IX0    X2+X2       (0.NNNNNN*2'48) * 2
          LX1    12          MAKE ROOM FOR NEXT TWO DIGITS
          IX2    X2+X0       (0.NNNNNN*2'48) * 3
          LX0    1           (0.NNNNNN*2'48) * 4
          LX2    5           (0.NNNNNN*2'48) * 96 
          IX0    X2+X0       NN.NNNN*2'48 
          UX2    X0,B7       EXTRACT UPPER TWO DIGITS FROM EXPONENT 
          PX1    X1,B7       PUT UPPER TWO DIGITS IN RESULT 
          IX0    X2+X2       (0.NNNN*2'48) * 2
          LX1    12          MAKE ROOM FOR NEXT TWO DIGITS
          IX2    X2+X0       (0.NNNN*2'48) * 3
          LX0    1           (0.NNNN*2'48) * 4
          LX2    5           (0.NNNN*2'48) * 96 
          IX0    X2+X0       NN.NN*2'48 
          UX2    X0,B7       EXTRACT UPPER TWO DIGITS FROM EXPONENT 
          PX1    X1,B7       PUT UPPER TWO DIGITS INTO RESULT 
          IX0    X2+X2       (0.NN*2'48) * 2
          LX1    12          MAKE ROOM FOR LAST TWO DIGITS
          IX2    X2+X0       (0.NN*2'48) * 3
          LX0    1           (0.NN*2'48) * 4
          LX2    5           (0.NN*2'48) * 96 
          IX0    X2+X0       NN.0*2'48
          UX2    X0,B7       EXTRACT UPPER TWO DIGITS FROM EXPONENT 
          SA2    A2+B1       76017601760176017601B
          PX1    X1,B7       PUT LAST TWO DIGITS INTO RESULT
          LX1    12 
          BX0    -X2*X1       1.
          IX2    X0+X0       10.
          IX2    X0+X2       11.
          LX0    -2            .01
          IX0    X0+X2       11.01
          SA2    A2          76017601760176017601B
          LX0    -4            .001101
          BX2    -X2*X0 
          IX0    X1-X2       (10*N+M)-2*N 
          LX2    2           8*N
          IX0    X0-X2       M
          SA1    =XC.ZEROS         10H0000000000
          LX2    3
          BX0    X2+X0
          ZR     X0,CONVTZ         CONVERT ZERO 
          IX1    X1+X0       BIAS BY DISPLAY ZERO 
          MX0    6
          SX2    1R 
          SX3    1R0
          LX2    60-6        L. JUST
          SB7    0
          LX3    60-6 
  
 CONVT2   BX6    X1*X0
          IX6    X6-X3
          SB7    B7+6        BUILD SHIFT COUNT FOR DEC
          NZ     X6,CONVT    FOUND A NON-ZERO CHAR
          BX1    -X0*X1 
          LX0    60-6 
          BX1    X1+X2
          LX3    60-6 
          LX2    60-6 
          EQ     CONVT2 
  
  
 CONVTZ   SA1    =10H         0 
          SB7    60 
          EQ     CONVT       EXIT 
  
 DIVISOR  CON    1.0E-10S33+1                                     WORD 1
          CON    76017601760176017601B                            WORD 2
 C.ZEROS  DATA   10H0000000000
  
 DEC      SPACE  4
 DEC      DATA   0
          SB1    1
          SA1    X1 
          RJ     CONVT
          SB7    B7-6 
          LX6    X1,B7       L. JUST NUMBER 
          EQ     DEC
  
 DECR     SPACE  4
 DECR     DATA   0
          SB1    1
          SA1    X1 
          RJ     CONVT
          BX6    X1 
          EQ     DECR 
  
          END 
