*DECK C$R1S14 
          IDENT  C$R1S14
          TITLE  C.R1S14 -  COMP-1 TO 14 DIGIT SIGNED NUMERIC DISPLAY 
  
          MACHINE  ANY,I
          COMMENT  COMP-1 TO 14-DIGIT SIGNED NUMERIC DISPLAY
          SPACE  4
**        C.R1S14 -  COMP-1 TO 14 DIGIT SIGNED NUMERIC DISPLAY
* 
*         X1 = SIGNED COMP-1 VALUE
*           0 @ ABSOLUTE VALUE OF X1 @ 10'14-1
*         RJ     C.R1S14
* 
*         PUTS MOST SIGNIFICANT 4 DIGITS RIGHT JUSTIFIED IN X1
*           (NINES COMPLEMENT IF NEGATIVE.) 
*           (LEFT 6 CHARACTERS ARE ZERO OR NINE.) 
*         SETS X2 = LEAST SIGNIFICANT 10 DIGITS.
*           (NINES COMPLEMENT IF NEGATIVE.) 
* 
*         METHOD BY R. E. JAMES.
* 
*         CODING PRIORITIES ARE-
*                1)  BE FAST. 
*                2)  USE FEW X-REGISTERS. 
*                3)  BE SMALL IN SIZE.
* 
*         USES-  X  0 1 2 3 4 - - - 
*                A  - - - 3 - - - - 
*                B    * - - - - 6 7    *B1=1
  
  
          ENTRY  C.R1S14
 C.R1S14  DATA   0
          MX0    0
          IX1    X1+X0       INSURE X1 = POSITIVE 0 
          MX0    12          77770000000000000000B
          BX4    X1          COPY SIGNED INPUT REGISTER 
          SA3    DIVISOR     (10.0'-14)*(2'46) ROUNDED UP 
          AX4    59          000...000B IF +, 777...777B IF - 
          SB6    X4-0        000...000B IF +, 777...777B IF - 
          BX1    X1-X4       ABSOLUTE VALUE OF INPUT VALUE
          IX4    X1+X1       N*2
          PX1    X4          N*2, PACKED
          NX1 
          RX3    X3*X1       0.MMMMNNNNNNNNNN*2'47, ROUNDED UP
          UX1    X3,B7
          SB7    B7+2 
          MX3    -1          ROUND
          LX1    B7,X1
          IX3    X1-X3
          BX4    X3          (0.MMMMNNNNNNNNNN*2'48) * 2
          LX3    2           (0.MMMMNNNNNNNNNN*2'48) * 8
          IX3    X3+X4       M.MMMNNNNNNNNNN*2'48 
          BX1    X0*X3       00M30000000000000000B
          BX3    -X0*X3      0.MMMNNNNNNNNNN*2'48 
          IX4    X3+X3       (0.MMMNNNNNNNNNN*2'48) * 2 
          LX3    3           (0.MMMNNNNNNNNNN*2'48) * 8 
          IX3    X3+X4       M.MMNNNNNNNNNN*2'48
          LX1    6           M3000000000000000000B
          BX4    X0*X3       00M20000000000000000B
          IX1    X1+X4       M3M20000000000000000B
          BX3    -X0*X3      0.MMNNNNNNNNNN*2'48
          IX4    X3+X3       (0.MMNNNNNNNNNN*2'48) * 2
          LX3    3           (0.MMNNNNNNNNNN*2'48) * 8
          IX3    X3+X4       M.MNNNNNNNNNN*2'48 
          LX1    6           M20000000000000000M2B
          BX4    X0*X3       00M10000000000000000B
          IX1    X1+X4       M2M100000000000000M3B
          BX3    -X0*X3      0.MNNNNNNNNNN*2'48 
          IX4    X3+X3       (0.MNNNNNNNNNN*2'48) * 2 
          LX3    3           (0.MNNNNNNNNNN*2'48) * 8 
          IX3    X3+X4       M.NNNNNNNNNN*2'48
          LX1    6           M100000000000000M3M2B
          BX4    X0*X3       00M00000000000000000B
          IX1    X1+X4       M1M0000000000000M3M2B
          BX3    -X0*X3      0.NNNNNNNNNN*2'48
          IX4    X3+X3       (0.NNNNNNNNNN*2'48) * 2
          LX1    12          000000000000M3M2M1M0B
          IX3    X3+X4       (0.NNNNNNNNNN*2'48) * 3
          LX4    1           (0.NNNNNNNNNN*2'48) * 4
          BX2    X7-X7       CLEAR RESULT REGISTER  (LEAST SIG. DIGITS) 
          LX3    5           (0.NNNNNNNNNN*2'48) *96
          IX3    X3+X4       NN.NNNNNNNN*2'48 
          UX3    X3,B7       EXTRACT UPPER TWO DIGITS 
          PX2    X2,B7       INSERT DIGITS INTO RESULT REGISTER 
          IX4    X3+X3       (0.NNNNNNNN*2'48) * 2
          LX2    12          MAKE ROOM FOR NEXT TWO DIGITS
          IX3    X3+X4       (0.NNNNNNNN*2'48) * 3
          LX4    1           (0.NNNNNNNN*2'48) * 4
          LX3    5           (0.NNNNNNNN*2'48) *96
          IX3    X3+X4       NN.NNNNNN*2'48 
          UX3    X3,B7       EXTRACT UPPER TWO DIGITS 
          PX2    X2,B7       INSERT DIGITS INTO RESULT REGISTER 
          IX4    X3+X3       (0.NNNNNN*2'48) * 2
          LX2    12          MAKE ROOM FOR NEXT TWO DIGITS
          IX3    X3+X4       (0.NNNNNN*2'48) * 3
          LX4    1           (0.NNNNNN*2'48) * 4
          LX3    5           (0.NNNNNN*2'48) *96
          IX3    X3+X4       NN.NNNN*2'48 
          UX3    X3,B7       EXTRACT UPPER TWO DIGITS 
          PX2    X2,B7       INSERT DIGITS INTO RESULT REGISTER 
          IX4    X3+X3       (0.NNNN*2'48) * 2
          LX2    12          MAKE ROOM FOR NEXT TWO DIGITS
          IX3    X3+X4       (0.NNNN*2'48) * 3
          LX4    1           (0.NNNN*2'48) * 4
          LX3    5           (0.NNNN*2'48) *96
          IX3    X3+X4       NN.NN*2'48 
          UX3    X3,B7       EXTRACT UPPER TWO DIGITS 
          PX2    X2,B7       INSERT DIGITS INTO RESULT REGISTER 
          IX4    X3+X3       (0.NN*2'48) * 2
          LX2    12          MAKE ROOM FOR LAST TWO DIGITS
          IX3    X3+X4       (0.NN*2'48) * 3
          LX4    1           (0.NN*2'48) * 4
          LX3    5           (NN.0*2'48) *96
          IX3    X3+X4       NN.0*2'48
          UX3    X3,B7       EXTRACT UPPER TWO DIGITS 
          SA3    A3+B1       76017601760176017601B
          PX2    X2,B7       INSERT DIGITS INTO RESULT REGISTER 
          LX2    12 
          BX0    -X3*X2       1.
          IX4    X0+X0       10.
          IX4    X0+X4       11.
          LX0    -2            .01
          IX0    X0+X4       11.01
          LX0    -4            .001101 BINARY = .203125 DECIMAL 
          BX4    -X3*X0 
          IX0    X2-X4       (10*M+N) - 2*M 
          SA3    =XC.ZEROS   10H0000000000
          LX4    2           8*M
          IX0    X0-X4       N
          LX4    3
          BX0    X0+X4
          SX4    B6-B0       000...000B IF +, 777...777B IF - 
          IX1    X1+X3       BIAS MOST SIG. DIGITS BY DISPLAY ZERO
          BX1    X1-X4       APPLY THE SIGN TO MOST SIGNIFICANT DIGITS
          IX2    X0+X3       BIAS LEAST SIG. DIGITS BY DISPLAY ZERO 
          BX2    X2-X4       APPLY THE SIGN TO LEAST SIGNIFICANT DIGITS 
          EQ     C.R1S14     EXIT 
  
 DIVISOR  CON    1.0E-14S46+1                                     WORD 1
          CON    76017601760176017601B                            WORD 2
  
          END 
