*DECK C$R1S10 
          IDENT  C$R1S10
          TITLE  C.R1S10 -  COMP-1 TO 10 DIGIT SIGNED NUMERIC DISPLAY 
  
          MACHINE  ANY,I
          COMMENT  COMP-1 TO 10-DIGIT SIGNED NUMERIC DISPLAY
          SPACE  4
**        C.R1S10 -  COMP-1 TO 10 DIGIT SIGNED NUMERIC DISPLAY
* 
*         X1 = SIGNED COMP-1 VALUE
*                0 @ ABSOLUTE VALUE OF X1 < 10'10 
*         RJ     C.R1S10
* 
*         SETS X1 = 0000000000 IF VALUE IS POSITIVE 
*                   9999999999 IF VALUE IS NEGATIVE.
*         SETS X2 = 10 DIGITS,  NINES COMPLEMENTED IF NEGATIVE. 
* 
*         METHOD BY R. E. JAMES 
* 
*         CODING PRIORITIES-
*                1)  BE FAST. 
*                2)  USE FEW X-REGISTERS. 
*                3)  BE SMALL IN SIZE.
* 
*         USES-  X  0 1 2 3 - - - - 
*                A  - 1 2 - - - -  -
*                B    * - - - - - -    *B1=1
  
  
          ENTRY  C.R1S10
 C.R1S10  DATA   0
          BX3    X1          COPY SIGNED INPUT VALUE
          AX3    59          000...000B IF +,  777...777B IF -
          SA2    DIVISOR     (10.0'-10)*(2'33)+ROUNDER
          LX1    10          N*2'10 
          BX1    X1-X3       ABSOLUTE VALUE OF INPUT
          PX1    X1          N*2'10, PACKED 
          NX1 
          RX2    X2*X1       EFFECTIVELY 0.NNNNNNNNNN*2'43, ROUNDED UP
          SX1    11772B 
          LX1    48          1772000...001B 
          FX1    X2+X1       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.NNNNNNNNN*2'48) *96 
          IX0    X2+X0       NN.NNNNNNNN*2'48 
          UX2    X0,B7       EXTRACT UPPER TWO DIGITS FROM 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 UPPER TWO DIGITS FROM 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 BINARY = .203125 DECIMAL 
          BX2    -X2*X0 
          IX0    X1-X2       (10*M+N) - 2*M 
          LX2    2           8*M
          SA1    =XC.ZEROS   10H0000000000
          IX0    X0-X2       N
          LX2    3
          BX0    X2+X0
          IX2    X1+X0       BIAS BY DISPLAY ZERO 
          BX2    X2-X3       APPLY SIGN TO LEAST SIGNIFICANT 10 DIGITS
          BX1    X1-X3       APPLY SIGN TO MOST SIGNIFICANT 10 DIGITS 
          EQ     C.R1S10     EXIT 
  
 DIVISOR  CON    1.0E-10S33+1 
          CON    76017601760176017601B                            WORD 2
  
          END 
