home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / PROG / MISC / PASM386C.ZIP / HF1.SEQ < prev    next >
Encoding:
Text File  |  1989-09-30  |  17.9 KB  |  815 lines

  1. \ some code to test assembling and dis-assembling floating point instructions
  2.  
  3.  
  4. CREATE FLOAT-WORK 10 ALLOT
  5.  
  6. VARIABLE FSP
  7.  
  8. CODE FP>R    ( F: -- r ; 8087: r -- )
  9.         MOV     BX, FSP
  10.         SUB     BX, # 8
  11.         MOV     FSP BX
  12.         FSTP    REAL*8 0 [BX]
  13.         NEXT
  14.         END-CODE
  15.  
  16. CODE R>FP    ( F: r -- ; 8087: -- r )
  17.         MOV     BX, FSP
  18.         FLD     REAL*8 0 [BX]
  19.         ADD     BX, # 8
  20.         MOV     FSP BX
  21.         NEXT
  22.         END-CODE
  23.  
  24. CODE FP>I    ( 8087: r -- ; -- 16b)
  25.         SUB     SP, # 2
  26.         MOV     BX, SP
  27.         FRNDINT
  28.         FSTP    INTEGER*2 0 [BX]
  29.         WAIT
  30.         NEXT
  31.         END-CODE
  32.  
  33. CODE I>FP    ( 8087: -- r ; 16b -- )
  34.         MOV     BX, SP
  35.         FLD     INTEGER*2 0 [BX]
  36.         ADD     SP, # 2
  37.         NEXT
  38.         END-CODE
  39.  
  40. CODE FP>DI    ( 8087: r -- ; -- 32b )
  41.         SUB     SP, # 4
  42.         MOV     BX, SP
  43.         FRNDINT
  44.         FSTP    INTEGER*4 0 [BX]
  45.         WAIT
  46.         NEXT
  47.         end-code
  48.  
  49. CODE DI>FP    ( 8087: -- r ; 32b -- )
  50.         MOV     BX, SP
  51.         FLD     INTEGER*4 0 [BX]
  52.         ADD     SP, # 4
  53.         NEXT
  54.         END-CODE
  55.  
  56. CODE FP>QI    ( 8087: r -- ; -- 64b)
  57.         SUB     SP, # 8
  58.         MOV     BX, SP
  59.         FRNDINT
  60.         FSTP    INTEGER*8 0 [BX]
  61.         WAIT
  62.         NEXT
  63.         END-CODE
  64.  
  65. CODE QI>FP    ( 8087: -- r ; 64b -- )
  66.         MOV     BX, SP
  67.         FLD     INTEGER*8 0 [BX]
  68.         ADD     SP, # 8
  69.         NEXT
  70.         END-CODE
  71.  
  72. CODE FP>SR    ( 8087: r -- ; -- 32bit-real )
  73.         SUB     SP, # 4
  74.         MOV     BX, SP
  75.         FSTP    REAL*4 0 [BX]
  76.         WAIT
  77.         NEXT
  78.         END-CODE
  79.  
  80. CODE SR>FP    ( 8087: -- r ; 32bit-real -- )
  81.         MOV     BX, SP
  82.         FLD     REAL*4 0 [BX]
  83.         ADD     SP, # 4
  84.         NEXT
  85.         END-CODE
  86.  
  87. CODE FPSW>    ( -- n )
  88.         SUB     SP, # 2
  89.         MOV     BX, SP
  90.         FSTSW   0 [BX]
  91.         WAIT
  92.         NEXT
  93.         END-CODE
  94.  
  95. CODE FPCW>    ( -- n )
  96.         SUB     SP, # 2
  97.         MOV     BX, SP
  98.         FSTCW   0 [BX]
  99.         WAIT
  100.         NEXT
  101.         END-CODE
  102.  
  103. CODE >FPCW    ( n -- )
  104.         MOV     BX, SP
  105.         FLDCW   0 [BX]
  106.         ADD     SP, # 2
  107.         NEXT
  108.         END-CODE
  109.  
  110. CODE INITFP    ( -- )
  111.         FINIT
  112.         FENI
  113.         FDISI
  114.         NEXT
  115.         END-CODE
  116.  
  117. CODE CLEARFP    ( -- )
  118.         FCLEX
  119.         NEXT
  120.         END-CODE
  121.  
  122. CODE PI    ( F: -- pi )
  123.         FLDPI
  124.         MOV     BX, FSP
  125.         SUB     BX, # 8
  126.         MOV     FSP BX
  127.         FSTP    REAL*8 0 [BX]
  128.         NEXT
  129.         END-CODE
  130.  
  131. CODE F1.0    ( F: -- 1.0 )
  132.         FLD1
  133.         MOV     BX, FSP
  134.         SUB     BX, # 8
  135.         MOV     FSP BX
  136.         FSTP    REAL*8 0 [BX]
  137.         NEXT
  138.         END-CODE
  139.  
  140. CODE F0.0    ( F: -- 0.0 )
  141.         FLDZ
  142.         MOV     BX, FSP
  143.         SUB     BX, # 8
  144.         MOV     FSP BX
  145.         FSTP    REAL*8 0 [BX]
  146.         NEXT
  147.         END-CODE
  148.  
  149. CODE F*   ( F: r1 r2 -- r1*r2)
  150.         MOV     BX, FSP
  151.         FLD     REAL*8 0 [BX]
  152.         ADD     BX, # 8
  153.         FMUL    0 [BX]
  154.         FSTP    0 [BX]
  155.         MOV     FSP BX
  156.         NEXT
  157.         END-CODE
  158.  
  159. CODE F+    ( F: r1 r2 -- r1+r2)
  160.         MOV     BX, FSP
  161.         FLD     REAL*8 0 [BX]
  162.         ADD     BX, # 8
  163.         FADD    0 [BX]
  164.         FSTP    0 [BX]
  165.         MOV     FSP BX
  166.         NEXT
  167.         END-CODE
  168.  
  169. CODE F-    ( F: r1 r2 -- r1-r2)
  170.         MOV     BX, FSP
  171.         FLD     REAL*8 8 [BX]
  172.         FLD     0 [BX]
  173.         ADD     BX, # 8
  174.         FSUBRP  ST(1), ST(0)
  175.         FSTP    0 [BX]
  176.         MOV     FSP BX
  177.         NEXT
  178.         END-CODE
  179.  
  180. CODE F\-    ( F: r1 r2 -- r1-r2)
  181.         MOV     BX, FSP
  182.         FLD     REAL*8 0 [BX]
  183.         ADD     BX, # 8
  184.         FLD     0 [BX]
  185.         FSUBRP  ST(1), ST(0)
  186.         FSTP    0 [BX]
  187.         MOV     FSP BX
  188.         NEXT
  189.         END-CODE
  190.  
  191. CODE F/    ( F: r1 r2 -- r1/r2)
  192.         MOV     BX, FSP
  193.         FLD     REAL*8 8 [BX]
  194.         FLD     0 [BX]
  195.         ADD     BX, # 8
  196.         FDIVRP  ST(1), ST(0)
  197.         FSTP    0 [BX]
  198.         MOV     FSP BX
  199.         NEXT
  200.         END-CODE
  201.  
  202. CODE FABS    ( F: r1 -- |r1|)
  203.         MOV     BX, FSP
  204.         FLD     REAL*8 0 [BX]
  205.         FABS,
  206.         FSTP    0 [BX]
  207.         NEXT
  208.         END-CODE
  209.  
  210. CODE FNEGATE    ( F: r1 -- -r1 )
  211.         MOV   BX, FSP
  212.         FLD   REAL*8 0 [BX]
  213.         FCHS
  214.         FSTP  0 [BX]
  215.         NEXT
  216.         END-CODE
  217.  
  218. CODE FSQRT    ( F: r1 -- SQRT[r1])
  219.         MOV   BX, FSP
  220.         FLD   REAL*8 0 [BX]
  221.         FSQRT,
  222.         FSTP  0 [BX]
  223.         NEXT
  224.         END-CODE
  225.  
  226. CODE FLOG    ( F: r1 -- LOG10[r1])
  227.         MOV   BX, FSP
  228.         FLDLG2
  229.         FLD   REAL*8 0 [BX]
  230.         FYL2X
  231.         FSTP  0 [BX]
  232.         NEXT
  233.         END-CODE
  234.  
  235. CODE FLN    ( F: r1 -- LN[r1])
  236.         MOV   BX, FSP
  237.         FLDLN2
  238.         FLD   REAL*8 0 [BX]
  239.         FYL2X
  240.         FSTP  0 [BX]
  241.         NEXT
  242.         END-CODE
  243.  
  244. CODE 1/F  ( F: r -- r^-1)
  245.         MOV   BX, FSP
  246.         FLD   REAL*8 0 [BX]
  247.         FLD1
  248.         FDIVP ST(1), ST(0)
  249.         FSTP  0 [BX]
  250.         NEXT
  251.         END-CODE
  252.  
  253. CODE [SIN]    ( F: r -- sin<r> )
  254.         MOV   BX, FSP
  255.         FLD   REAL*8 0 [BX]     \ Load 8087 from top of f.p. stack
  256.         FLD1                    \ Load F1.0
  257.         FLD   ST(0)             \ Dup it
  258.         FADDP ST(1), ST(0)      \ Make F2.0
  259.         FXCH  ST(1)
  260.         FDIVP ST(1), ST(0)      \ Divide argument by 2.
  261.         FPTAN                   \ Partial tangent -> y, x
  262.         FXCH  ST(1)
  263.         FDIVP ST(1), ST(0)      \ y/x
  264.         FLD   ST(0)             \ dup
  265.         FLD   ST(0)             \ dup
  266.         FMULP ST(1), ST(0)
  267.         FLD1
  268.         FADDP ST(1), ST(0)      \ 1 + (y/x)**2
  269.         FXCH  ST(1)
  270.         FLD1
  271.         FLD   ST(0)
  272.         FADDP ST(1), ST(0)      \ 2.0
  273.         FMULP ST(1), ST(0)      \ 2(y/x)
  274.         FDIVP ST(1), ST(0)      \ 2(y/x)/(1+(y/x)**2)
  275.         FSTP  0 [BX]
  276.         NEXT
  277.         END-CODE
  278.  
  279. CODE [COS]    ( F: r -- cos<r> )
  280.         MOV   BX, FSP
  281.         FLD   REAL*8 0 [BX]
  282.         FLD1
  283.         FLD1
  284.         FADDP ST(1), ST(0)
  285.         FXCH  ST(1)
  286.         FDIVP ST(1), ST(0)
  287.         FPTAN
  288.         FXCH  ST(1)
  289.         FDIVP ST(1), ST(0)
  290.         FLD   ST(0)
  291.         FMULP ST(1), ST(0)
  292.         FLD   ST(0)
  293.         FLD1
  294.         FADDP ST(1), ST(0)
  295.         FXCH  ST(1)
  296.         FLD1
  297.         FSUBP ST(1), ST(0)
  298.         FDIVP ST(1), ST(0)
  299.         FSTP  0 [BX]
  300.         NEXT
  301.         END-CODE
  302.  
  303. CODE [TAN]    ( F: r -- tan<r> )
  304.         MOV   BX, FSP
  305.         FLD   REAL*8 0 [BX]
  306.         FPTAN
  307.         FXCH  ST(1)
  308.         FDIVP ST(1), ST(0)
  309.         FSTP  0 [BX]
  310.         NEXT
  311.         END-CODE
  312.  
  313.  
  314. CODE F2**N*    ( F: r1 -- r2 ; n -- )
  315.         MOV     BX, SP
  316.         FLD     INTEGER*2 0 [BX]
  317.         ADD     SP, # 2
  318.         MOV     BX, FSP
  319.         FLD     REAL*8 0 [BX]
  320.         FSCALE
  321.         FSTP    0 [BX]
  322.         FSTP    ST
  323.         NEXT
  324.         END-CODE
  325.  
  326. CODE FDUP    ( F: r -- r r )
  327.         MOV   BX, FSP
  328.         FLD   REAL*8 0 [BX]
  329.         SUB   BX, # 8
  330.         FSTP  0 [BX]
  331.         MOV   FSP BX
  332.         NEXT
  333.         END-CODE
  334.  
  335. CODE FOVER    ( F: r1 r2 -- r1 r2 r1 )
  336.         MOV   BX, FSP
  337.         ADD   BX, # 8
  338.         FLD   REAL*8 0 [BX]
  339.         SUB   BX, # 16
  340.         FSTP  0 [BX]
  341.         MOV   FSP BX
  342.         NEXT
  343.         END-CODE
  344.  
  345. CODE FSWAP   ( F: r1 r2 -- r2 r1 )
  346.         MOV   BX, FSP
  347.         FLD   REAL*8 0 [BX]
  348.         FLD   8 [BX]
  349.         FSTP  0 [BX]
  350.         FSTP  8 [BX]
  351.         NEXT
  352.         END-CODE
  353.  
  354. CODE FNSWAP   ( F: rn rn-1 ... r1 r0 -- r0 rn-1 ... r1 rn ; n -- )
  355.         MOV     BX, FSP
  356.         POP     AX
  357.         SHL     AX, # 1
  358.         SHL     AX, # 1
  359.         SHL     AX, # 1
  360.         FLD     REAL*8 0 [BX]
  361.         ADD     AX, BX
  362.         XCHG    AX, BX
  363.         FLD     REAL*8 0 [BX]
  364.         FXCH    ST(1)
  365.         FSTP    0 [BX]
  366.         MOV     BX, AX
  367.         FSTP    0 [BX]
  368.         NEXT
  369.         END-CODE
  370.  
  371. CODE FROT    ( F: r1 r2 r3 -- r2 r3 r1 )
  372.         MOV   BX, FSP
  373.         ADD   BX, # 8
  374.         FLD   REAL*8 0 [BX]
  375.         SUB   BX, # 8
  376.         FLD   REAL*8 0 [BX]
  377.         ADD   BX, # 16
  378.         FLD   REAL*8 0 [BX]
  379.         SUB   BX, # 16
  380.         FSTP  0 [BX]
  381.         ADD   BX, # 8
  382.         FSTP  0 [BX]
  383.         ADD   BX, # 8
  384.         FSTP  0 [BX]
  385.         NEXT
  386.         END-CODE
  387.  
  388. CODE F-ROT    ( F: r1 r2 r3 -- r3 r1 r2 )
  389.         MOV   BX, FSP
  390.         FLD   REAL*8 0 [BX]
  391.         ADD   BX, # 16
  392.         FLD   REAL*8 0 [BX]
  393.         SUB   BX, # 8
  394.         FLD   REAL*8 0 [BX]
  395.         SUB   BX, # 8
  396.         FSTP  0 [BX]
  397.         ADD   BX, # 8
  398.         FSTP  0 [BX]
  399.         ADD   BX, # 8
  400.         FSTP  0 [BX]
  401.         NEXT
  402.         END-CODE
  403.  
  404. CODE FNIP    ( F: r1 r2 -- r2 )
  405.         MOV   BX, FSP
  406.         FLD   REAL*8 0 [BX]
  407.         ADD   BX, # 8
  408.         FSTP  0 [BX]
  409.         MOV   FSP BX
  410.         NEXT
  411.         END-CODE
  412.  
  413. CODE FTUCK    ( F: r1 r2 -- r2 r1 r2 )
  414.         MOV   BX, FSP
  415.         FLD   REAL*8 8 [BX]
  416.         FLD   REAL*8 0 [BX]
  417.         FST   8 [BX]
  418.         FXCH  ST1
  419.         FSTP  REAL*8 0 [BX]
  420.         SUB   BX, # 8
  421.         FSTP  REAL*8 0 [BX]
  422.         MOV   FSP BX
  423.         NEXT
  424.         END-CODE
  425.  
  426. CODE FPICK    ( F: rX ... rn ... r2 r1 r0 n --- ... r1 r0 rn )
  427.         POP   AX
  428.         MOV   AH, # 8
  429.         MUL   AH
  430.         MOV   BX, FSP
  431.         ADD   BX, AX
  432.         FLD   REAL*8 0 [BX]
  433.         MOV   BX, FSP
  434.         SUB   BX, # 8
  435.         FSTP  0 [BX]
  436.         MOV   FSP BX
  437.         NEXT
  438.         END-CODE
  439.  
  440. CODE (RVS0)     ( F: r -- ; -- fpsw )
  441.         MOV     BX, FSP
  442.         FLD     REAL*8 0 [BX]
  443.         FTST
  444.         FSTP    ST(0)
  445.         ADD     BX, # 8
  446.         MOV     FSP BX
  447.         SUB     SP, # 2
  448.         MOV     BX, SP
  449.         FSTSW   0 [BX]
  450.         WAIT
  451.         NEXT
  452.         END-CODE
  453.  
  454. CODE (RVSR)    ( F: r1 r2 -- ; -- fpsw )
  455.         MOV     BX, FSP
  456.         FLD     REAL*8 0 [BX]
  457.         ADD     BX, # 8
  458.         FLD     REAL*8 0 [BX]
  459.         FCOMPP
  460.         ADD     BX, # 8
  461.         MOV     FSP BX
  462.         SUB     SP, # 2
  463.         MOV     BX, SP
  464.         FSTSW   0 [BX]
  465.         WAIT
  466.         NEXT
  467.         END-CODE
  468.  
  469. CODE F@    ( F: -- r ; addr -- )
  470.         POP   BX
  471.         FLD   REAL*8 0 [BX]
  472.         MOV   BX, FSP
  473.         SUB   BX, # 8
  474.         FSTP  0 [BX]
  475.         MOV   FSP BX
  476.         NEXT
  477.         END-CODE
  478.  
  479. CODE F!   ( F: r -- ; addr -- )
  480.         MOV     BX, FSP
  481.         FLD     REAL*8 0 [BX]
  482.         ADD     BX, # 8
  483.         MOV     FSP BX
  484.         POP     BX
  485.         FSTP    0 [BX]
  486.         NEXT
  487.         END-CODE
  488.  
  489. CODE (FLIT)   ( F: -- r )
  490.         MOV   BX, FSP
  491.         SUB   BX, # 8
  492.         LODSW ES:
  493.         MOV   0 [BX], AX
  494.         LODSW ES:
  495.         MOV   2 [BX], AX
  496.         LODSW ES:
  497.         MOV   4 [BX], AX
  498.         LODSW ES:
  499.         MOV   6 [BX], AX
  500.         MOV   FSP BX
  501.         NEXT
  502.         END-CODE
  503.  
  504. ASSEMBLER ALSO   HEX
  505.  
  506. LABEL (POWER)    ( 87: log2x y -- x^y )
  507.         FMULP ST(1), ST(0)      \ x * y
  508.         FLD   ST(0)             \ DUP
  509.         FSTCW FLOAT-WORK        \ Save current Control Word
  510.         MOV   AX, FLOAT-WORK
  511.         MOV   CX, AX
  512.         AND   AX, # F3FF
  513.         OR    AX, # 0400        \ Round toward neg. inf.
  514.         MOV   FLOAT-WORK AX
  515.         FLDCW FLOAT-WORK
  516.         FRNDINT                 \ Take floor of x*y
  517.         MOV   FLOAT-WORK CX
  518.         FLDCW FLOAT-WORK        \ Restore Control word.
  519.         FST   REAL*8 FLOAT-WORK \ Save copy of floored value.
  520.         FXCH  ST(1)
  521.         FSUBP ST(1), ST(0)      \ (x*y) - floor(x*y) -> fract
  522.         FLD1
  523.         FCHS
  524.         FXCH  ST(1)
  525.         FSCALE                  \ fract/2
  526.         FXCH  ST(1)
  527.         FSTP  ST(0)             \ Remove the -1.
  528.         F2XM1                   \ 2^(fract/2) - 1
  529.         FLD1
  530.         FADDP ST(1), ST(0)      \ 2^(fract/2)
  531.         FLD   ST(0)             \ DUP
  532.         FMULP ST(1), ST(0)      \ 2^fract
  533.         FLD   REAL*8 FLOAT-WORK
  534.         FXCH  ST(1)
  535.         FSCALE                  \ 2^(x*y)
  536.         FXCH  ST(1)
  537.         FSTP  ST(0)             \ Remove the floored value.
  538.         RET
  539.         END-CODE
  540.  
  541. PREVIOUS FORTH
  542. DECIMAL
  543.  
  544. CODE (FALN)    ( 87: r -- e^r )
  545.         FLDL2E
  546.         CALL (POWER)
  547.         NEXT
  548.         END-CODE
  549.  
  550. CODE (FALOG)    ( 87: r -- 10^r )
  551.         FLDL2T
  552.         CALL (POWER)
  553.         NEXT
  554.         END-CODE
  555.  
  556. ASSEMBLER ALSO   HEX
  557.  
  558. LABEL (FATAN)
  559.         FLD1
  560.         FCOM  ST(1)
  561.         FSTSW FLOAT-WORK
  562.         MOV   AX, FLOAT-WORK
  563.         AND   AX, # 4100
  564.         0=
  565.         IF
  566.                 FPATAN
  567.         ELSE
  568.                 FXCH  ST(1)
  569.                 FPATAN
  570.                 FLD1
  571.                 FLD   ST(0)
  572.                 FADDP ST(1), ST(0)
  573.                 FLDPI
  574.                 FDIVP ST(1), ST(0)
  575.                 FSUBP ST(1), ST(0)
  576.          THEN
  577.          RET
  578.          END-CODE
  579.  
  580. PREVIOUS FORTH
  581.  
  582. CODE FATAN    ( F: r -- arctan[r] )
  583.         MOV   BX, FSP
  584.         FLD   REAL*8 0 [BX]
  585.         FTST
  586.         FSTSW FLOAT-WORK
  587.         MOV   AX, FLOAT-WORK
  588.         AND   AX, # 4100
  589.         SUB   AX, # 0100
  590.         0=
  591.         IF
  592.                 FCHS
  593.                 CALL  (FATAN)
  594.                 FCHS
  595.         ELSE
  596.                 CALL  (FATAN)
  597.         THEN
  598.         FSTP  0 [BX]
  599.         NEXT
  600.         END-CODE
  601.  
  602. DECIMAL
  603.  
  604. CODE FMUL10    ( -- )
  605.         MOV   FLOAT-WORK # 10 WORD
  606.         FLD   INTEGER*2 FLOAT-WORK
  607.         FMULP ST(1), ST(0)
  608.         NEXT
  609.         END-CODE
  610.  
  611. CODE (FADDI)    ( n -- )
  612.         MOV     BX, SP
  613.         FLD     INTEGER*2 0 [BX]
  614.         FADDP ST(1), ST(0)
  615.         ADD   SP, # 2
  616.         NEXT
  617.         END-CODE
  618.  
  619. CODE QNEGATE    ( +q -- -q )
  620.         MOV     BX, SP
  621.         FLD     0 [BX] INTEGER*8
  622.         FCHS
  623.         FSTP    0 [BX]
  624.         NEXT
  625.         END-CODE
  626.  
  627. CREATE FLOAT-BCD 10 ALLOT
  628.  
  629. VARIABLE #BCD   17 #BCD !
  630.  
  631. CODE R>BCD!    ( F: r -- ; n -- ; full precision bcd-string to FLOAT-BCD )
  632.        FLD      #BCD INTEGER*2
  633.        MOV      BX, SP
  634.        FLD      INTEGER*2 0 [BX]
  635.        ADD      SP, # 2
  636.        MOV      BX, FSP
  637.        FSUBRP   ST(1), ST(0)
  638.        FLD1
  639.        FSUBRP   ST1, ST0
  640.        FLDL2T
  641.        CALL     (POWER)
  642.        FLD      REAL*8 0 [BX]
  643.        ADD      BX, # 8
  644.        FMULP    ST(1), ST(0)
  645.        FSTP     FLOAT-BCD BCD
  646.        MOV      FSP BX
  647.        WAIT
  648.        NEXT
  649.        END-CODE
  650.  
  651.  
  652. HEX
  653.  
  654. CODE FPARSE    ( F: r -- ; -- int-part frac-part )
  655.         MOV     BX, FSP
  656.         FLD     REAL*8 0 [BX]
  657.         FLD     ST0
  658.         FSTCW   FLOAT-WORK
  659.         MOV     AX, FLOAT-WORK
  660.         MOV     CX, AX
  661.         OR      AX, # 0C00
  662.         MOV     FLOAT-WORK AX
  663.         FLDCW   FLOAT-WORK
  664.         FRNDINT
  665.         MOV     FLOAT-WORK CX
  666.         FLDCW   FLOAT-WORK
  667.         FLD     ST0
  668.         FSTP    REAL*8 0 [BX]
  669.         FSUBRP  ST1, ST0
  670.         SUB     BX, # 8
  671.         FSTP    REAL*8 0 [BX]
  672.         MOV     FSP BX
  673.         WAIT
  674.         NEXT
  675.         END-CODE
  676.  
  677. DECIMAL
  678.  
  679. variable #places
  680.  
  681. CODE FRNDFRC    ( F: +r -- +r )
  682.         FLD1
  683.         FLD1
  684.         FADDP   ST1, ST0       ( 2.0 ON TOP OF STACK )
  685.         FLD    INTEGER*2 #PLACES
  686.         FCHS
  687.         FLDL2T
  688.         CALL    (POWER)
  689.         FDIVP   ST(1), ST(0)
  690.         MOV     BX, FSP
  691.         FLD     REAL*8 0 [BX]
  692.         FADDP   ST(1), ST(0)
  693.         FSTP    REAL*8 0 [BX]
  694.         NEXT
  695.         END-CODE
  696.  
  697. Code    xx1
  698.         fld     st(1)
  699.         fld     st(2)
  700.         fld     real*4 0 [bx]
  701.         fld     real*8 0 [bx]
  702.         fst     real*4 0 [bx]
  703.         fst     real*8 0 [bx]
  704.         fstp    real*4 0 [bx]
  705.         fstp    real*8 0 [bx]
  706.         fld     integer*4 0 [bx]
  707.         fld     integer*2 0 [bx]
  708.         fst     integer*4 0 [bx]
  709.         fst     integer*2 0 [bx]
  710.         fstp    integer*4 0 [bx]
  711.         fstp    integer*2 0 [bx]
  712.         fld     bcd     0 [bx]
  713.         fstp    bcd     0 [bx]
  714.         fld     integer*8     0 [bx]
  715.         fstp    integer*8     0 [bx]
  716.         fld     temp_real     0 [bx]
  717.         fstp    temp_real     0 [bx]
  718.         frstor  0 [bx]
  719.         fsave   0 [si]
  720.         fstsw   0 [di]
  721.         fldenv  0 [bx]
  722.         fldcw   0 [si]
  723.         fstenv  8 [si]
  724.         fstcw   4 [di]
  725.         next
  726.         end-code
  727.  
  728. code    xx2
  729.         fld     st(1)
  730.         fld     st(2)
  731.         fld     st(3)
  732.         fld     st(4)
  733.         fld     st(5)
  734.         fld     st(6)
  735.         fld     st(7)
  736.         fxch    st(3)
  737.         fnop
  738.         fchs
  739.         fabs
  740.         ftst
  741.         fxam
  742.         fld1
  743.         fldl2t
  744.         fldl2e
  745.         fldpi
  746.         fldlg2
  747.         fldln2
  748.         fldz
  749.         f2xm1
  750.         fyl2x
  751.         fptan
  752.         fpatan
  753.         fxtract
  754.         fdecstp
  755.         fincstp
  756.         fprem
  757.         fyl2xp1
  758.         frndint
  759.         fscale
  760.         feni
  761.         fdisi
  762.         fclex
  763.         finit
  764.         ffree   st(3)
  765.         next
  766.         end-code
  767.  
  768. code    xx3
  769.         fadd    real*4  0 [si]
  770.         fmul    real*4  0 [si]
  771.         fcom    real*4  0 [si]
  772.         fcomp   real*4  0 [si]
  773.         fsub    real*4  0 [si]
  774.         fsubr   real*4  0 [si]
  775.         fdiv    real*4  0 [si]
  776.         fdivr   real*4  0 [si]
  777.         fadd    integer*4  0 [si]
  778.         fmul    integer*4  0 [si]
  779.         fcom    integer*4  0 [si]
  780.         fcomp   integer*4  0 [si]
  781.         fsub    integer*4  0 [si]
  782.         fsubr   integer*4  0 [si]
  783.         fdiv    integer*4  0 [si]
  784.         fdivr   integer*4  0 [si]
  785.         fadd    real*8  0 [si]
  786.         fmul    real*8  0 [si]
  787.         fcom    real*8  0 [si]
  788.         fcomp   real*8  0 [si]
  789.         fsub    real*8  0 [si]
  790.         fsubr   real*8  0 [si]
  791.         fdiv    real*8  0 [si]
  792.         fdivr   real*8  0 [si]
  793.         fadd    integer*2  0 [si]
  794.         fmul    integer*2  0 [si]
  795.         fcom    integer*2  0 [si]
  796.         fcomp   integer*2  0 [si]
  797.         fsub    integer*2  0 [si]
  798.         fsubr   integer*2  0 [si]
  799.         fdiv    integer*2  0 [si]
  800.         fdivr   integer*2  0 [si]
  801.         next
  802.         end-code
  803.  
  804. asm.386
  805. code xx9
  806.         fcos
  807.         fsin
  808.         fsincos
  809.         fprem1
  810.         fucompp
  811.         fucom   st(1)
  812.         fucomp  st(2)
  813.         next
  814.         end-code
  815.