*COMDECK S18R4
**        "S18R4" -  19-DIGIT SIGNED DISPLAY TO D.P. COMP-2 
* 
*         X0 = NEGATIVE MASK   (CREATED WITH MX0 N, N\12) 
*                INDICATES WHICH DIGITS OF X1 TO BE CONVERTED 
*         X1 = MOST SIGNIFICANT 5-9 DIGITS, 
*                NINES COMPLEMENT IF NEGATIVE 
*         X2 = LEAST SIGNIFICANT 10 DIGITS, 
*                NINES COMPLEMENT IF NEGATIVE 
*         B5 = SCALING FACTOR:  
*         RJ     "S18R4"
* 
*         SETS X1 = MOST SIGNIFICANT COMP-2 RESULT, NORMALIZED. 
*         SETS X2 = LEAST SIGNIFICANT COMP-2 RESULT.
*         THE EXPONENT OF X2 IS EXACTLY 48 LESS THAN THE EXPONENT OF X1.
* 
*         CODING PRIORITIES-
*                1)  BE FAST. 
*                2)  USE FEW X-REGISTERS. 
*                3)  BE SMALL IN SIZE.
* 
*         USES-  X  0 1 2 3 4 5 - - 
*                A  - - - 3 4 - - - 
*                B    * - - 4 5 6 7     * B1=1
  
  
 "S18R4"  DATA   0
          BX4    X1          COPY REGISTER WITH SIGN
          AX4    54          00000000000000000033B:77777777777777777744B
          SB6    X4          SAVE SIGN TO APPLY TO RESULT 
          SA3    "ZEROS"     10H0000000000
          AX4    5           00000000000000000000B:77777777777777777777B
          BX1    X1-X4       ABSOLUTE VALUE OF MOST SIGNIFICANT DIGITS
          IX1    X1-X3       REMOVE DISPLAY ZERO BIAS FROM MOST SIG DIGS
          BX1    -X0*X1      KEEP ONLY SPECIFIED DIGITS 
          MX0    -6          77777777777777777700B
          BX2    X2-X4       ABSOLUTE VALUE OF LEAST SIGNIFICANT DIGITS 
          IX2    X2-X3       REMOVE DISPLAY ZERO BIAS FROM LEAST SIG. 
          LX2    6            D8  D7  D6  D5  D4  D3  D2  D1  D0  D9
          BX4    -X0*X2        0   0   0   0   0   0   0   0   0  D9
          IX3    X4+X4       2*D9 
          LX4    3           8*D9 
          IX3    X4+X3       10*D9
          LX2    6            D7  D6  D5  D4  D3  D2  D1  D0  D9  D8
          SB7    X3          10*D9
          BX4    -X0*X2        0   0   0   0   0   0   0   0   0  D8
          LX2    48           D9  D8  D7  D6  D5  D4  D3  D2  D1  D0
          SB7    X4+B7       10*D9+D8 
          MX0    12          77770000000000000000B
          SA3    "CNVRT"     00770077007700770077B
          BX4    X1            0 D18 D17 D16 D15 D14 D13 D12 D11 D10
          BX1    -X0*X1        0   0 D17 D16 D15 D14 D13 D12 D11 D10
          AX4    48          D18
          SB4    X4          D18
          BX2    -X0*X2        0   0  D7  D6  D5  D4  D3  D2  D1  D0
          BX0    X3*X1         0   0   0 D16   0 D14   0 D12   0 D10
          BX1    -X3*X1        0   0 D17   0 D15   0 D13   0 D11   0
          BX4    X3*X2         0   0   0  D6   0  D4   0  D2   0  D0
          LX1    -3          (M.S. ODD) * 8 / 2'6 
          BX2    -X3*X2        0   0  D7   0  D5   0  D3   0  D1   0
          IX3    X2+X2       (L.S. ODD) * 2 
          LX2    -3          (L.S. ODD) * 8 / 2'6 
          LX3    -6          (L.S. ODD) * 2 / 2'6 
          IX2    X2+X3       (L.S. ODD) *10 / 2'6 
          BX3    X1          (M.S. ODD) * 8 / 2'6 
          IX2    X2+X4       10*D7+D6, 10*D5+D4, 10*D3+D2, 10*D1+D0 
          LX3    -2          (M.S. ODD) * 2 / 2'6 
          IX1    X1+X3       (M.S. ODD) *10 / 2'6 
          SA3    A3+B1       00007777000077770000B
          IX1    X1+X0       10*D17+D16,10*D15+D14,10*D13+D12,10*D11+D10
          BX0    X3*X1       10*D17+D16, 0, 10*D13+D12, 0 
          BX1    -X3*X1      0, 10*D15+D14, 0, 10*D11+D10 
          LX0    -6          (10*D17+D16, 0, 10*D13+D12, 0) * 64 / 2'12 
          BX4    X3*X2       10*D7+D6, 0, 10*D3+D2, 0 
          BX2    -X3*X2      0, 10*D5+D4, 0, 10*D1+D0 
          LX4    -6          (10*D7+D6, 0, 10*D3+D2, 0) * 64 / 2'12 
          AX3    X4,B1       (10*D7+D6, 0, 10*D3+D2, 0) * 32 / 2'12 
          IX4    X3+X4       (10*D7+D6, 0, 10*D3+D2, 0) * 96 / 2'12 
          LX3    -3          (10*D7+D6, 0, 10*D3+D2, 0) *  4 / 2'12 
          IX3    X4+X3       (10*D7+D6, 0, 10*D3+D2, 0) *100 / 2'12 
          IX2    X3+X2       1000*D7+100*D6+10*D5+D4, 1000*D3+ +10*D1+D0
          AX3    X0,B1       (10*D17+D16, 0, 10*D13+D12, 0) * 32 / 2'12 
          IX0    X0+X3       (10*D17+D16, 0, 10*D13+D12, 0) * 96 / 2'12 
          LX3    -3          (10*D17+D16, 0, 10*D13+D12, 0) *  4 / 2'12 
          IX0    X0+X3       (10*D17+D16, 0, 10*D13+D12, 0) *100 / 2'12 
          MX3    -24         77777777777700000000B
          IX1    X0+X1       1000*D17+100*D16+10*D15+D14, 1000*D13+ +D10
          BX4    X3*X2       (1000*D7+100*D6+10*D5+D4) * 2'24 
          BX0    X3*X1       (100*D17+100*D17+10*D15+D14) * 2'24
          SA3    A3+B1       10000.0/2'12 - 1.0 
          PX4    X4 
          FX4    X3*X4       -(1000*D7+100*D6+10*D5+D4),
                             10'7*D7+10'6*D6+10'5*D5+10'4*D4
          PX0    X0 
          UX4    X4 
          FX0    X3*X0       -(1000*D17+100*D16+10*D15+D14),
                             10'7*D17+10'6*D16+10'15*D15+10'4*D14 
          IX2    X2+X4       10'7*D7+...+10'2*D2+10*D1+D0   (INTEGER) 
          UX0    X0 
          SA3    A3+B1       10'8   (INTEGER) 
          SX4    B7          10*D9+D8 
          IX1    X1+X0       10'7*D17+...+10'2*D12+10*D11+D10 (UNPACKED)
          PX1    X1          10'7*D17+...+10'2*D12+10*D11+D10   (PACKED)
          IX4    X3*X4       10'9*D9+10'8*D8   (INTEGER)
          SX0    B4          D18
          IX3    X3*X0       10'8*D18 
          IX1    X1+X3       10'8*D18+...+10'2*D12+10*D11+D10   (PACKED)
          SA3    A3+B1       10'10   (INTEGER)
          IX2    X2+X4       10'9*D9+...+10'2*D2+10*D1+D0   (INTEGER) 
          PX3    X3          10'10   (PACKED) 
          NX3    X3 
          FX0    X1*X3       10'18*D18+...+10'10*D10   (MOST SIG.)
          NX0    X0 
          DX4    X1*X3       10'18*D18+...+10'10*D10  (LEAST SIG.)
          PX2    X2 
          FX2    X4+X2       LEAST SIG. OF (10'18*D18+...+10'10*D10)
                               + (10'9*D9+...+10'2*D2+10*D1+D0) 
          SX3    B6          000033B IF +, 777744B IF - 
          NX2    X2 
          FX1    X0+X2       MOST SIG. OF (10'18*D18+...10*D1+D0) 
          AX3    5           00000000000000000000B:77777777777777777777B
          BX1    X1-X3       APPLY SIGN TO MOST SIGNIFICANT PART
          DX2    X0+X2       LEAST SIG. OF (10'18*D18+...10*D1+D0)
          BX2    X2-X3       APPLY SIGN TO LEAST SIGNIFICANT PART 
          ZR     B5,"S18R4"  IF NO SCALING,  EXIT 
          SB5    B5+B5
          SA3    "DTENS"+B5 
          SA4    A3+B1
          RX0    X1*X4
          RX5    X2*X3
          RX2    X0+X5
          FX4    X1*X3
          DX0    X1*X3
          RX5    X2+X0
          FX1    X5+X4
          DX2    X5+X4
          EQ     "S18R4"     EXIT 
