Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  align 4
  2.  
  3. OPCODEtable:
  4.  
  5. dd _00,_00,_00,_00,_00,_00,_00,_00 ;00-07
  6. dd _00,_00,_0A,_0B,_0C,_0D,_0E,_0F ;08-0f
  7. dd _10,_11,_12,_13,_14,_15,_16,_17 ;10-17
  8. dd _18,_19,_1A,_1B,_1C,_1D,_1E,_1f ;18-1f
  9. dd _20,_21,_22,_23,_24,_25,_1f,_1f ;20-27
  10. dd _1f,_1f,_1f,_1f,_1f,_1f,_1f,_1f ;28-2f
  11. dd _1f,_31,_32,_1f,_34,_35,_36,_1f ;30-37
  12. dd _1f,_1f,_1f,_3B,_1f,_1f,_1f,_1f ;38-3f
  13. times 16 dd _40 ;40-4f
  14. dd _50,_51,_52,_53,_54,_1f,_1f,_57 ;50-57
  15. dd _58,_59,_5A,_5B,_5C,_5D,_5E,_1f ;58-5f
  16. times 16 dd _60 ;60-6f
  17. times 16 dd _70 ;70-7f
  18. times 16 dd _80 ;80-8f
  19. times 16 dd _90 ;90-9f
  20. times 16 dd _A0 ;a0-af
  21. times 16 dd _B0 ;b0-bf
  22. times 16 dd _C0 ;c0-cf
  23. times 16 dd _D0 ;d0-df
  24. times 16 dd _E0 ;e0-ef
  25. times 16 dd _1f ;f0-ff
  26.  
  27.  
  28. move1 db 0
  29. move2 db 0
  30. move1dot db 0
  31.  
  32. _1f: ret
  33.  
  34. ;*************************************
  35.  
  36. _3B:
  37.         mcall   3
  38.         shl     eax,16
  39.         shr     eax,16
  40.         mov     [perem],eax
  41.         fild    [perem]
  42.         mcall   26,9
  43.         shl     eax,16
  44.         shr     eax,18
  45.         mov     [perem],eax
  46.         fild    [perem]
  47.         fcom    st1
  48.         jnc     @f
  49.         fdivrp
  50.         mov     [perem],10
  51.         fild    [perem]
  52.         fdivp
  53.         jmp     .1
  54.    @@:  fdivp
  55.    .1:  fld     qword [S.Z]
  56.         fstp    qword [S.T]
  57.         fld     qword [S.Y]
  58.         fstp    qword [S.Z]
  59.         fld     qword [S.X]
  60.         fst     qword [S.Y]
  61.         fstp    qword [S.X1]
  62.         fstp    qword [S.X]
  63.         call    draw_stack
  64.         fld     qword [S.X]
  65.         call    ftos
  66.         call    draw_string
  67.         bts     [flags],10
  68.         btr     [flags],6
  69.         btr     [flags],4
  70.         ret
  71.        
  72. _36:
  73.         bt      [flags],0
  74.         jnc     @f
  75.         inc     [schk]
  76.   @@:   fld     qword [S.Y]
  77.         fld     qword [S.X]
  78.         fst     qword [S.X1]
  79.  
  80.         fcom    st1
  81.         fstsw   ax
  82.         sahf
  83.         jc      @f
  84.         fstp    qword [S.X]
  85.         fstp    st0
  86.         jmp     .1
  87.   @@:   fstp    st0
  88.         fstp    qword [S.X]
  89.   .1:
  90.         fld     qword [S.Z]
  91.         fstp    qword [S.Y]
  92.         fld     qword [S.T]
  93.         fstp    qword [S.Z]
  94. ;       fldz
  95. ;       fstp    qword [S.T]
  96.         call    draw_stack
  97.         fld     qword [S.X]
  98.         call    ftos
  99.         call    draw_string
  100.         bts     [flags],10
  101.         btr     [flags],6
  102.         ret
  103.  
  104. _35:
  105.         bt      [flags],0
  106.         jnc     @f
  107.         inc     [schk]
  108.   @@:   fld     qword [S.X]
  109.         fst     qword [S.X1]
  110.         fldz
  111.         fcomp   st1
  112.         fstsw   ax
  113.         sahf
  114.         jz      @f
  115.         jc      @f
  116.         frndint
  117.         fcom    qword [S.X]
  118.         fstsw   ax
  119.         sahf
  120.         jnc     .0
  121.         fld1
  122.         faddp
  123.         jmp     .0
  124.   @@:   frndint
  125.         fcom    qword [S.X]
  126.         fstsw    ax
  127.         sahf
  128.         jc      .0
  129.         jz      .0
  130.         fld1
  131.         fsubp
  132.   .0:   fld     qword [S.X]
  133.         fsubrp
  134.         fst     qword [S.X]
  135.         call    ftos
  136.         call    draw_string
  137.         call    draw_stack
  138.         bts     [flags],10
  139.         btr     [flags],6
  140.         ret
  141.  
  142.  
  143. _34:
  144.         bt      [flags],0
  145.         jnc     @f
  146.         inc     [schk]
  147.   @@:   fld     qword [S.X]
  148.         fst     qword [S.X1]
  149.         fldz
  150.         fcomp   st1
  151.         fstsw   ax
  152.         sahf
  153.         jz      @f
  154.         jc      @f
  155.         frndint
  156.         fcom    qword [S.X]
  157.         fstsw   ax
  158.         sahf
  159.         jnc     .0
  160.         fld1
  161.         faddp
  162.         jmp     .0
  163.   @@:   frndint
  164.         fcom    qword [S.X]
  165.         fstsw    ax
  166.         sahf
  167.         jc      .0
  168.         jz      .0
  169.         fld1
  170.         fsubp
  171.   .0:   fst     qword [S.X]
  172.         call    ftos
  173.         call    draw_string
  174.         call    draw_stack
  175.         bts     [flags],10
  176.         btr     [flags],6
  177.         ret
  178.  
  179. _32:
  180.         bt      [flags],0
  181.         jnc     @f
  182.         inc     [schk]
  183.   @@:   fld     qword [S.X]
  184.         fstp    qword [S.X1]
  185.         fldz
  186.         fcomp   qword [S.X]
  187.         fstsw    ax
  188.         sahf
  189.         fld1
  190.         jz      @f
  191.         jc      @f
  192.         fchs
  193.   @@:   fst     qword [S.X]
  194.         call    ftos
  195.         call    draw_string
  196.         call    draw_stack
  197.         bts     [flags],10
  198.         btr     [flags],6
  199.         ret
  200.  
  201. _31:
  202.         bt      [flags],0
  203.         jnc     @f
  204.         inc     [schk]
  205.   @@:   fld     qword [S.X]
  206.         fst     qword [S.X1]
  207.         fabs
  208.         fst     qword [S.X]
  209.         call    ftos
  210.         call    draw_string
  211.         call    draw_stack
  212.         bts     [flags],10
  213.         btr     [flags],6
  214.         ret
  215.  
  216. ;************************************
  217. _E0:
  218.         ;x=0 ;0!=x
  219.         inc     [schk]
  220.   @@:   fldz
  221.         fcomp   qword [S.X]
  222.         fstsw    ax
  223.         sahf
  224.         jnz     @f
  225.         ret
  226.   @@:   sub     eax,OPCODEtable
  227.         shr     eax,2
  228.         sub     eax,0xE0;90
  229.         shl     eax,3
  230.         add     eax,R.0
  231.         fld     qword [eax]
  232.         cmp     ebx,6
  233.         jge     @f
  234.         fld1
  235.         cmp     ebx,4
  236.         jge     .2
  237.         fsubrp
  238.         jmp     @f
  239.   .2:   faddp
  240.   @@:   fst     qword [eax]
  241.         fabs
  242.         fistp   [perem]
  243.         mov     eax,[perem]
  244.         mov     [schk],al
  245.         ret
  246.  
  247. _D0:
  248.         inc     [schk]
  249.  
  250.         sub     eax,OPCODEtable
  251.         shr     eax,2
  252.         sub     eax,0xD0
  253.         mov     ebx,eax
  254.         shl     eax,3
  255.         add     eax,R.0
  256.         fld     qword [eax]
  257.         cmp     ebx,6
  258.         ja      @f
  259.         fld1
  260.         cmp     ebx,4
  261.         jge     .2
  262.         fsubrp
  263.         jmp     @f
  264.   .2:   faddp
  265.   @@:   frndint
  266.         fst     qword [eax]
  267.         fabs
  268.         fistp   [perem]
  269.         mov     eax,[perem]
  270.         shl     eax,31-4
  271.         shr     eax,31-4
  272.         shl     eax,3
  273.         add     eax,R.0
  274.  
  275.         fld     qword [eax]
  276.  
  277.         fld     qword [S.Z]
  278.         fstp    qword [S.T]
  279.         fld     qword [S.Y]
  280.         fstp    qword [S.Z]
  281.         fld     qword [S.X]
  282.         fst     qword [S.Y]
  283.         fstp    qword [S.X1]
  284.  
  285.         fstp    qword [S.X]
  286.  
  287.         call    draw_registers
  288.         call    draw_stack
  289.         bts     [flags],10
  290.         btr     [flags],6
  291.         ret
  292.  
  293. _C0:
  294.         ;x<0 ;0<x
  295.         inc     [schk]
  296.   @@:   fldz
  297.         fcomp   qword [S.X]
  298.         fstsw    ax
  299.         sahf
  300.         jz      @f
  301.         jc      @f
  302.         ret
  303.   @@:   sub     eax,OPCODEtable
  304.         shr     eax,2
  305.         sub     eax,0xC0
  306.         shl     eax,3
  307.         add     eax,R.0
  308.         fld     qword [eax]
  309.         cmp     ebx,6
  310.         jge     @f
  311.         fld1
  312.         cmp     ebx,4
  313.         jge     .2
  314.         fsubrp
  315.         jmp     @f
  316.   .2:   faddp
  317.   @@:   fst     qword [eax]
  318.         fabs
  319.         fistp   [perem]
  320.         mov     eax,[perem]
  321.         mov     [schk],al
  322.         ret
  323.  
  324. _B0:
  325.         inc     [schk]
  326.  
  327.         sub     eax,OPCODEtable
  328.         shr     eax,2
  329.         sub     eax,0xB0
  330.         shl     eax,3
  331.         add     eax,R.0
  332.         fld     qword [eax]
  333.         cmp     ebx,6
  334.         jge     @f
  335.         fld1
  336.         cmp     ebx,4
  337.         jge     .2
  338.         fsubrp
  339.         jmp     @f
  340.   .2:   faddp
  341.   @@:   fst     qword [eax]
  342.         fabs
  343.         fistp   [perem]
  344.         mov     eax,[perem]
  345.         mov     ecx,16
  346.         xor     edx,edx
  347.         div     ecx
  348.         mov     eax,edx
  349.         shl     eax,3
  350.         add     eax,R.0
  351.         fld     qword [S.X]
  352.         fstp    qword [eax]
  353.  
  354.         bts     [flags],10
  355.         btr     [flags],6
  356.         ret
  357.  
  358. _A0:
  359.         inc     [schk]
  360.         mov     cl,[schk]
  361.  
  362.         sub     eax,OPCODEtable
  363.         shr     eax,2
  364.         sub     eax,0xA0
  365.         shl     eax,3
  366.         add     eax,R.0
  367.         fld     qword [eax]
  368.         cmp     ebx,6
  369.         jge     @f
  370.         fld1
  371.         cmp     ebx,4
  372.         jge     .2
  373.         fsubrp
  374.         jmp     @f
  375.   .2:   faddp
  376.   @@:   fst     qword [eax]
  377.         fabs
  378.         fistp   [perem]
  379.         mov     eax,[perem]
  380.         mov     [schk],al
  381.  
  382.         mov     al,[RS+3]
  383.         mov     [RS+4],al
  384.         mov     al,[RS+2]
  385.         mov     [RS+3],al
  386.         mov     al,[RS+1]
  387.         mov     [RS+2],al
  388.         mov     al,[RS+0]
  389.         mov     [RS+1],al
  390.  
  391.         mov     [RS+0],cl
  392.         bts     [flags],10
  393.         btr     [flags],6
  394.         ret
  395.  
  396. _90:
  397.         ;x>=0 ;0>x
  398.         inc     [schk]
  399.   @@:   fldz
  400.         fcomp   qword [S.X]
  401.         fstsw    ax
  402.         sahf
  403.         jp      @f
  404.         jz      @f
  405.         jc      @f
  406.         jmp     .1
  407.   @@:   ret
  408.   .1:   sub     eax,OPCODEtable
  409.         shr     eax,2
  410.         sub     eax,0x90
  411.         shl     eax,3
  412.         add     eax,R.0
  413.         fld     qword [eax]
  414.         cmp     ebx,6
  415.         jge     @f
  416.         fld1
  417.         cmp     ebx,4
  418.         jge     .2
  419.         fsubrp
  420.         jmp     @f
  421.   .2:   faddp
  422.   @@:   fst     qword [eax]
  423.         fabs
  424.         fistp   [perem]
  425.         mov     eax,[perem]
  426.         mov     [schk],al
  427.         ret
  428.  
  429. _80:
  430.         inc     [schk]
  431.         sub     eax,OPCODEtable
  432.         shr     eax,2
  433.         sub     eax,0x80
  434.         shl     eax,3
  435.         add     eax,R.0
  436.         fld     qword [eax]
  437.         cmp     ebx,6
  438.         jge     @f
  439.         fld1
  440.         cmp     ebx,4
  441.         jge     .2
  442.         fsubrp
  443.         jmp     @f
  444.   .2:   faddp
  445.   @@:   fst     qword [eax]
  446.         fabs
  447.         fistp   [perem]
  448.         mov     eax,[perem]
  449.         mov     [schk],al
  450.         ret
  451.  
  452. _70:    ;x!=0 ;x=0
  453.         inc     [schk]
  454.   @@:   fldz
  455.         fcomp   qword [S.X]
  456.         fstsw    ax
  457.         sahf
  458.         jz      @f
  459.         ret
  460.   @@:   sub     eax,OPCODEtable
  461.         shr     eax,2
  462.         sub     eax,0x70
  463.         mov     ebx,eax
  464.         shl     eax,3
  465.         add     eax,R.0
  466.         fld     qword [eax]
  467.         cmp     ebx,6
  468.         jge     @f
  469.         fld1
  470.         cmp     ebx,4
  471.         jge     .2
  472.         fsubrp
  473.         jmp     @f
  474.   .2:   faddp
  475.   @@:   fst     qword [eax]
  476.         fabs
  477.         fistp   [perem]
  478.         mov     eax,[perem]
  479.         mov     [schk],al
  480.         ret
  481.  
  482. _5D:
  483.         inc     [schk]
  484.         fld     qword [R.0]
  485.         fld1
  486.         fsubp
  487.         fst     qword [R.0]
  488.         fabs
  489.         fistp   [perem]
  490.         mov     eax,[perem]
  491.         test    eax,eax
  492.         jz      @f
  493.         movzx   eax,[schk]
  494.         add     eax,PMEM
  495.         mov     al,[eax]
  496.         mov     [schk],al
  497.         jmp     .1
  498.   @@:   inc     [schk]
  499.   .1:   call    draw_registers
  500.         bts     [flags],10
  501.         btr     [flags],6
  502.         ret
  503.  
  504. _5B:
  505.         inc     [schk]
  506.         fld     qword [R.1]
  507.         fld1
  508.         fsubp
  509.         fst     qword [R.1]
  510.         fabs
  511.         fistp   [perem]
  512.         mov     eax,[perem]
  513.         test    eax,eax
  514.         jz      @f
  515.         movzx   eax,[schk]
  516.         add     eax,PMEM
  517.         mov     al,[eax]
  518.         mov     [schk],al
  519.         jmp     .1
  520.   @@:   inc     [schk]
  521.   .1:   call    draw_registers
  522.         bts     [flags],10
  523.         btr     [flags],6
  524.         ret
  525.  
  526.  
  527. _5A:
  528.         inc     [schk]
  529.         fld     qword [R.3]
  530.         fld1
  531.         fsubp
  532.         fst     qword [R.3]
  533.         fabs
  534.         fistp   [perem]
  535.         mov     eax,[perem]
  536.         test    eax,eax
  537.         jz      @f
  538.         movzx   eax,[schk]
  539.         add     eax,PMEM
  540.         mov     al,[eax]
  541.         mov     [schk],al
  542.         jmp     .1
  543.   @@:   inc     [schk]
  544.   .1:   call    draw_registers
  545.         bts     [flags],10
  546.         btr     [flags],6
  547.         ret
  548.  
  549.  
  550. _58:    ;F,L2
  551.         inc     [schk]
  552.         fld     qword [R.2]
  553.         fld1
  554.         fsubp
  555.         fst     qword [R.2]
  556.         fabs
  557.         fistp   [perem]
  558.         mov     eax,[perem]
  559.         test    eax,eax
  560.         jz      @f
  561.         movzx   eax,[schk]
  562.         add     eax,PMEM
  563.         mov     al,[eax]
  564.         mov     [schk],al
  565.         jmp     .1
  566.   @@:   inc     [schk]
  567.   .1:   call    draw_registers
  568.         bts     [flags],10
  569.         btr     [flags],6
  570.         ret
  571.  
  572.  
  573.  
  574. _5E:    ;x=0
  575. ;       bt      [flags],0
  576. ;       jnc     @f
  577.         inc     [schk]
  578.   @@:   fldz
  579.         fcomp   qword [S.X]
  580.         fstsw    ax
  581.         sahf
  582.         jnz     @f
  583.         inc     [schk]
  584.         ret
  585.   @@:   movzx   eax, byte [schk]
  586.         add     eax,PMEM
  587.         mov     al,[eax]
  588.         mov     [schk],al
  589.         ret
  590.  
  591. _5C:    ;x<0
  592. ;       bt      [flags],0
  593. ;       jnc     @f
  594.         inc     [schk]
  595.   @@:   fldz
  596.         fcomp   qword [S.X]
  597.         fstsw    ax
  598.         sahf
  599.         jc      @f
  600.         jz      @f
  601.         inc     [schk]
  602.         ret
  603.   @@:   movzx   eax, byte [schk]
  604.         add     eax,PMEM
  605.         mov     al,[eax]
  606.         mov     [schk],al
  607.         ret
  608.  
  609. _59:    ;x>=0
  610. ;       bt      [flags],0
  611. ;       jnc     @f
  612.         inc     [schk]
  613.   @@:   fldz
  614.         fcomp   qword [S.X]
  615.         fstsw    ax
  616.         sahf
  617.         jp      @f
  618.         jz      @f
  619.         jc      @f
  620.         jmp     .1
  621.   @@:   inc     [schk]
  622.         ret
  623.   .1:   movzx   eax, byte [schk]
  624.         add     eax,PMEM
  625.         mov     al,[eax]
  626.         mov     [schk],al
  627.         ret
  628.  
  629. _57:  ;x!=0
  630. ;       bt      [flags],0
  631. ;       jnc     @f
  632.         inc     [schk]
  633.   @@:   fldz
  634.         fcomp   qword [S.X]
  635.         fstsw    ax
  636.         sahf
  637.         jz      @f
  638.         inc     [schk]
  639.         ret
  640.   @@:   movzx   eax, byte [schk]
  641.         add     eax,PMEM
  642.         mov     al,[eax]
  643.         mov     [schk],al
  644.         ret
  645.  
  646. _54:
  647.         inc     [schk]
  648.         ret
  649.  
  650. _53:    bt      [flags],0
  651.         jnc     @f
  652.         inc     [schk]
  653.         mov     al,[RS+3]
  654.         mov     [RS+4],al
  655.         mov     al,[RS+2]
  656.         mov     [RS+3],al
  657.         mov     al,[RS+1]
  658.         mov     [RS+2],al
  659.         mov     al,[RS+0]
  660.         mov     [RS+1],al
  661.         mov     al,[schk]
  662.         inc     al
  663.         mov     [RS+0],al
  664.         movzx   eax,[schk]
  665.         add     eax,PMEM
  666.         mov     al,[eax]
  667.         mov     [schk],al
  668.         bts     [flags],10
  669.         btr     [flags],6
  670.         ret
  671.   @@:   bts     [flags],0
  672.         movzx   eax,[schk]
  673.         add     eax,PMEM
  674.         movzx   eax,byte [eax]
  675.         shl     eax,2
  676.         add     eax,OPCODEtable
  677.         mov     ebx,[eax]
  678.         call    ebx
  679.         btr     [flags],0
  680.         call    draw_schk
  681.         call    draw_prog
  682. ret
  683.  
  684. _52:    inc     [schk]
  685.         bt      [flags],0
  686.         jnc     @f
  687.         mov     al,[RS+0]
  688.         mov     [schk],al
  689.         mov     al,[RS+1]
  690.         mov     [RS+0],al
  691.         mov     al,[RS+2]
  692.         mov     [RS+1],al
  693.         mov     al,[RS+3]
  694.         mov     [RS+2],al
  695.         mov     al,[RS+4]
  696.         mov     [RS+3],al
  697.         mov     byte [RS+4],0
  698.         ret
  699.   @@:   mov     [schk],0
  700.         call draw_prog
  701.         call draw_schk
  702. ret
  703.  
  704.  
  705. _51:
  706. ;       bt      [flags],0
  707. ;       jnc     @f
  708.         inc     [schk]
  709.   @@:   movzx   eax, byte [schk]
  710.         add     eax,PMEM
  711.         mov     al,[eax]
  712.         mov     [schk],al
  713.         ret
  714.  
  715.  
  716. _50:
  717.         btc     [flags],0
  718.         jc      @f
  719.         ret
  720.   @@:   inc     [schk]
  721.         fld     qword [S.X]
  722.         call    ftos
  723.         call    draw_string
  724.         call    draw_registers
  725.         bts     [flags],10
  726.         btr     [flags],6
  727.         ret
  728.  
  729. _60:
  730.         bt      [flags],0
  731.         jnc     @f
  732.         inc     [schk]
  733.   @@:   sub     eax,OPCODEtable
  734.         shr     eax,2
  735.         sub     eax,0x60
  736.         shl     eax,3
  737.         add     eax,R.0
  738.         fld     qword [eax]
  739.         fld     qword [S.Z]
  740.         fstp    qword [S.T]
  741.         fld     qword [S.Y]
  742.         fstp    qword [S.Z]
  743.         fld     qword [S.X]
  744.         fstp    qword [S.Y]
  745.         fstp    qword [S.X]
  746.         call    draw_stack
  747.         fld     qword [S.X]
  748.         call    ftos
  749.         call    draw_string
  750.         call    draw_registers
  751.         bts     [flags],10
  752.         btr     [flags],6
  753.         btr     [flags],12
  754.         btr     [flags],3
  755.         ret
  756.  
  757. _40:
  758.         bt      [flags],0
  759.         jnc     @f
  760.         inc     [schk]
  761.   @@:   sub     eax,OPCODEtable
  762.         shr     eax,2
  763.         sub     eax,0x40
  764.         shl     eax,3
  765.         add     eax,R.0
  766.         fld     qword [S.X]
  767.         fstp    qword [eax]
  768.         call    draw_stack
  769.         fld     qword [S.X]
  770.         call    ftos
  771.         call    draw_string
  772.         call    draw_registers
  773.         bts     [flags],10
  774.         btr     [flags],6
  775.         btr     [flags],11
  776.         btr     [flags],3
  777.         ret
  778.  
  779. _25:
  780.         bt      [flags],0
  781.         jnc     @f
  782.         inc     [schk]
  783.   @@:   fld     qword [S.X1]
  784.         fld     qword [S.X]
  785.         fstp    qword [S.X1]
  786.         fld     qword [S.Y]
  787.         fstp    qword [S.X]
  788.         fld     qword [S.Z]
  789.         fstp    qword [S.Y]
  790.         fld     qword [S.T]
  791.         fstp    qword [S.Z]
  792.         fstp    qword [S.T]
  793.         call    draw_stack
  794.         fld     qword [S.X]
  795.         call    ftos
  796.         call    draw_string
  797.         bts     [flags],10
  798.         btr     [flags],6
  799.         btr     [flags],3
  800.         ret
  801.  
  802. _24:
  803.         bt      [flags],0
  804.         jnc     @f
  805.         inc     [schk]
  806.   @@:   fld     qword [S.X]
  807.         fst     qword [S.X1]
  808.         fld     qword [S.Y]
  809.         call    FpuXexpY
  810.         fstp    qword [S.X]
  811.         call    draw_stack
  812.         fld     qword [S.X]
  813.         call    ftos
  814.         call    draw_string
  815.         bts     [flags],10
  816.         btr     [flags],6
  817.         btr     [flags],3
  818.         ret
  819.  
  820. _23:
  821.         bt      [flags],0
  822.         jnc     @f
  823.         inc     [schk]
  824.   @@:   fld     qword [S.X]
  825.         fst     qword [S.X1]
  826.         fld1
  827.         fdivrp
  828.         fstp    qword [S.X]
  829.         call    draw_stack
  830.         fld     qword [S.X]
  831.         call    ftos
  832.         call    draw_string
  833.         bts     [flags],10
  834.         btr     [flags],6
  835.         btr     [flags],3
  836.         ret
  837.  
  838. _22:
  839.         bt      [flags],0
  840.         jnc     @f
  841.         inc     [schk]
  842.   @@:   fld     qword [S.X]
  843.         fst     qword [S.X1]
  844.         fmul    st,st
  845.         fstp    qword [S.X]
  846.         call    draw_stack
  847.         fld     qword [S.X]
  848.         call    ftos
  849.         call    draw_string
  850.         bts     [flags],10
  851.         btr     [flags],6
  852.         btr     [flags],3
  853.         ret
  854.  
  855. _21:
  856.         bt      [flags],0
  857.         jnc     @f
  858.         inc     [schk]
  859.   @@:   fld     qword [S.X]
  860.         fst     qword [S.X1]
  861.         fsqrt
  862.         fstp    qword [S.X]
  863.         call    draw_stack
  864.         fld     qword [S.X]
  865.         call    ftos
  866.         call    draw_string
  867.         bts     [flags],10
  868.         btr     [flags],6
  869.         btr     [flags],3
  870.         ret
  871.  
  872.  
  873. _20:
  874.         bt      [flags],0
  875.         jnc     @f
  876.         inc     [schk]
  877.   @@:   fld     qword [S.X]
  878.         fstp    qword [S.X1]
  879.         fld     qword [S.Z]
  880.         fstp    qword [S.T]
  881.         fld     qword [S.Y]
  882.         fstp    qword [S.Z]
  883.         fld     qword [S.X]
  884.         fstp    qword [S.Y]
  885.         fldpi
  886.         fstp    qword [S.X]
  887.         call    draw_stack
  888.         fld     qword [S.X]
  889.         call    ftos
  890.         call    draw_string
  891.         bts     [flags],10
  892.         btr     [flags],6
  893.         btr     [flags],3
  894.         ret
  895.  
  896. _1E:
  897.         bt      [flags],0
  898.         jnc     @f
  899.         inc     [schk]
  900.   @@:   fld     qword [S.X]
  901.         fst     qword [S.X1]
  902.         call    FpuTan
  903.         fstp    qword [S.X]
  904.         call    draw_stack
  905.         fld     qword [S.X]
  906.         call    ftos
  907.         call    draw_string
  908.         bts     [flags],10
  909.         btr     [flags],6
  910.         btr     [flags],3
  911.         ret
  912.  
  913.  
  914. _1D:
  915.         bt      [flags],0
  916.         jnc     @f
  917.         inc     [schk]
  918.   @@:   fld     qword [S.X]
  919.         fst     qword [S.X1]
  920.         call    FpuCos
  921.         fstp    qword [S.X]
  922.         call    draw_stack
  923.         fld     qword [S.X]
  924.         call    ftos
  925.         call    draw_string
  926.         bts     [flags],10
  927.         btr     [flags],6
  928.         btr     [flags],3
  929.         ret
  930.  
  931. _1C:
  932.         bt      [flags],0
  933.         jnc     @f
  934.         inc     [schk]
  935.   @@:   fld     qword [S.X]
  936.         fst     qword [S.X1]
  937.         call    FpuSin
  938.         fstp    qword [S.X]
  939.         call    draw_stack
  940.         fld     qword [S.X]
  941.         call    ftos
  942.         call    draw_string
  943.         bts     [flags],10
  944.         btr     [flags],6
  945.         btr     [flags],3
  946.         ret
  947.  
  948. _1B:
  949.         bt      [flags],0
  950.         jnc     @f
  951.         inc     [schk]
  952.   @@:   fld     qword [S.X]
  953.         fst     qword [S.X1]
  954.         call    FpuArctan
  955.         fstp    qword [S.X]
  956.         call    draw_stack
  957.         fld     qword [S.X]
  958.         call    ftos
  959.         call    draw_string
  960.         bts     [flags],10
  961.         btr     [flags],6
  962.         btr     [flags],3
  963.         ret
  964.  
  965. _1A:
  966.         bt      [flags],0
  967.         jnc     @f
  968.         inc     [schk]
  969.   @@:   fld     qword [S.X]
  970.         fst     qword [S.X1]
  971.         call    FpuArccos
  972.         fstp    qword [S.X]
  973.         call    draw_stack
  974.         fld     qword [S.X]
  975.         call    ftos
  976.         call    draw_string
  977.         bts     [flags],10
  978.         btr     [flags],6
  979.         btr     [flags],3
  980.         ret
  981. _19:
  982.         bt      [flags],0
  983.         jnc     @f
  984.         inc     [schk]
  985.   @@:   fld     qword [S.X]
  986.         fst     qword [S.X1]
  987.         call    FpuArcsin
  988.         fstp    qword [S.X]
  989.         call    draw_stack
  990.         fld     qword [S.X]
  991.         call    ftos
  992.         call    draw_string
  993.         bts     [flags],10
  994.         btr     [flags],6
  995.         btr     [flags],3
  996.         ret
  997.  
  998.  
  999. _18:
  1000.         bt      [flags],0
  1001.         jnc     @f
  1002.         inc     [schk]
  1003.   @@:   fld     qword [S.X]
  1004.         fst     qword [S.X1]
  1005.         fldln2
  1006.         fxch
  1007.         fyl2x
  1008.         fstp    qword [S.X]
  1009.         call    draw_stack
  1010.         fld     qword [S.X]
  1011.         call    ftos
  1012.         call    draw_string
  1013.         bts     [flags],10
  1014.         btr     [flags],6
  1015.         btr     [flags],3
  1016.         ret
  1017.  
  1018. _17:
  1019.         bt      [flags],0
  1020.         jnc     @f
  1021.         inc     [schk]
  1022.   @@:   fld     qword [S.X]
  1023.         fst     qword [S.X1]
  1024.         fldlg2
  1025.         fxch
  1026.         fyl2x
  1027.         fstp    qword [S.X]
  1028.         call    draw_stack
  1029.         fld     qword [S.X]
  1030.         call    ftos
  1031.         call    draw_string
  1032.         bts     [flags],10
  1033.         btr     [flags],6
  1034.         btr     [flags],3
  1035.         ret
  1036.  
  1037.  
  1038. _16:
  1039.         bt      [flags],0
  1040.         jnc     @f
  1041.         inc     [schk]
  1042.   @@:   fld     qword [S.X]
  1043.         fst     qword [S.X1]
  1044.         call    FpuEexpX
  1045.         fstp    qword [S.X]
  1046.         call    draw_stack
  1047.         fld     qword [S.X]
  1048.         call    ftos
  1049.         call    draw_string
  1050.         bts     [flags],10
  1051.         btr     [flags],6
  1052.         btr     [flags],3
  1053.         ret
  1054.  
  1055. _15:
  1056.         bt      [flags],0
  1057.         jnc     @f
  1058.         inc     [schk]
  1059.   @@:   mov     [perem],10
  1060.         fild    [perem]
  1061.         fld     qword [S.X]
  1062.         fst     qword [S.X1]
  1063.         call    FpuXexpY
  1064.         fstp    qword [S.X]
  1065.         call    draw_stack
  1066.         fld     qword [S.X]
  1067.         call    ftos
  1068.         call    draw_string
  1069.         bts     [flags],10
  1070.         btr     [flags],6
  1071.         btr     [flags],3
  1072.         ret
  1073.  
  1074. _14:
  1075.         bt      [flags],0
  1076.         jnc     @f
  1077.         inc     [schk]
  1078.   @@:   fld     qword [S.Y]
  1079.         fld     qword [S.X]
  1080.         fst     qword [S.Y]
  1081.         fstp    qword [S.X1]
  1082.         fstp    qword [S.X]
  1083.         call    draw_stack
  1084.         fld     qword [S.X]
  1085.         call    ftos
  1086.         call    draw_string
  1087.         bts     [flags],10
  1088.         btr     [flags],6
  1089.         ret
  1090. _13:
  1091.         bt      [flags],0
  1092.         jnc     @f
  1093.         inc     [schk]
  1094.   @@:   fld     qword [S.Y]
  1095.         fld     qword [S.X]
  1096.         fdivp
  1097.         fld     qword [S.X]
  1098.         fstp    qword [S.X1]
  1099.         fstp    qword [S.X]
  1100.         fld     qword [S.Z]
  1101.         fstp    qword [S.Y]
  1102.         fld     qword [S.T]
  1103.         fstp    qword [S.Z]
  1104. ;       fldz
  1105. ;       fstp    qword [S.T]
  1106.         call    draw_stack
  1107.         fld     qword [S.X]
  1108.         call    ftos
  1109.         call    draw_string
  1110.         bts     [flags],10
  1111.         btr     [flags],6
  1112.         ret
  1113. _12:
  1114.         bt      [flags],0
  1115.         jnc     @f
  1116.         inc     [schk]
  1117.   @@:   fld     qword [S.Y]
  1118.         fld     qword [S.X]
  1119.         fmulp
  1120.         fld     qword [S.X]
  1121.         fstp    qword [S.X1]
  1122.         fstp    qword [S.X]
  1123.         fld     qword [S.Z]
  1124.         fstp    qword [S.Y]
  1125.         fld     qword [S.T]
  1126.         fstp    qword [S.Z]
  1127. ;       fldz
  1128. ;       fstp    qword [S.T]
  1129.         call    draw_stack
  1130.         fld     qword [S.X]
  1131.         call    ftos
  1132.         call    draw_string
  1133.         bts     [flags],10
  1134.         btr     [flags],6
  1135.         ret
  1136. _11:
  1137.         bt      [flags],0
  1138.         jnc     @f
  1139.         inc     [schk]
  1140.   @@:   fld     qword [S.Y]
  1141.         fld     qword [S.X]
  1142.         fsubp
  1143.         fld     qword [S.X]
  1144.         fstp    qword [S.X1]
  1145.         fstp    qword [S.X]
  1146.         fld     qword [S.Z]
  1147.         fstp    qword [S.Y]
  1148.         fld     qword [S.T]
  1149.         fstp    qword [S.Z]
  1150. ;       fldz
  1151. ;       fstp    qword [S.T]
  1152.         call    draw_stack
  1153.         fld     qword [S.X]
  1154.         call    ftos
  1155.         call    draw_string
  1156.         bts     [flags],10
  1157.         btr     [flags],6
  1158.         ret
  1159.  
  1160. _10:
  1161.         bt      [flags],0
  1162.         jnc     @f
  1163.         inc     [schk]
  1164.   @@:   fld     qword [S.X]
  1165.         fld     qword [S.Y]
  1166.         faddp
  1167.         fld     qword [S.X]
  1168.         fstp    qword [S.X1]
  1169.         fstp    qword [S.X]
  1170.         fld     qword [S.Z]
  1171.         fstp    qword [S.Y]
  1172.         fld     qword [S.T]
  1173.         fst     qword [S.Z]
  1174. ;       fldz
  1175. ;       fstp    qword [S.T]
  1176.         call    draw_stack
  1177.         fld     qword [S.X]
  1178.         call    ftos
  1179.         call    draw_string
  1180.         bts     [flags],10
  1181.         btr     [flags],6
  1182.         ret
  1183.  
  1184. _0F:
  1185.         bt      [flags],0
  1186.         jnc     @f
  1187.         inc     [schk]
  1188.   @@:   fld     qword [S.Z]
  1189.         fstp    qword [S.T]
  1190.         fld     qword [S.Y]
  1191.         fstp    qword [S.Z]
  1192.         fld     qword [S.X]
  1193.         fstp    qword [S.Y]
  1194.         fld     qword [S.X1]
  1195.         fstp    qword [S.X]
  1196.         call    draw_stack
  1197.         fld     qword [S.X]
  1198.         call    ftos
  1199.         call    draw_string
  1200.         bts     [flags],10
  1201.         btr     [flags],6
  1202.         btr     [flags],3
  1203.         ret
  1204.  
  1205. _0E:
  1206.         bt      [flags],0
  1207.         jnc     @f
  1208.         inc     [schk]
  1209.   @@:
  1210. ;       call    stof
  1211. ;       fstp    qword [S.X]
  1212.         fld     qword [S.Z]
  1213.         fstp    qword [S.T]
  1214.         fld     qword [S.Y]
  1215.         fstp    qword [S.Z]
  1216.         fld     qword [S.X]
  1217.         fstp    qword [S.Y]
  1218.         call    draw_string
  1219. ;       call    stof
  1220. ;       fstp    qword [S.X]
  1221.         call    draw_stack
  1222.         bts     [flags],10
  1223.         bts     [flags],7
  1224.         btr     [flags],6
  1225.         ret
  1226. _0D:
  1227.         bt      [flags],0
  1228.         jnc     @f
  1229.         inc     [schk]
  1230.   @@:   bt      [flags],3
  1231.         jc      .F
  1232.         fldz
  1233.         fstp    qword   [S.X]
  1234.         mov     esi,string_zero
  1235.         mov     edi,string
  1236.         mov     ecx,13
  1237.         cld
  1238.         @@:     movsb
  1239.         loop @b
  1240.         mov     [move1],0
  1241.         mov     [move2],0
  1242.         mov     [move1dot],0
  1243.         call    draw_string
  1244.         call    stof
  1245.         fstp    qword [S.X]
  1246.         call    draw_stack
  1247.         btr     [flags],6
  1248.         btr     [flags],10
  1249.         btr     [flags],11
  1250.         btr     [flags],4
  1251.         btr     [flags],8
  1252.         btr     [flags],9
  1253.         ret
  1254.         .F:
  1255.         btr     [flags],3
  1256.         ret
  1257. _0C:
  1258.         bt      [flags],0
  1259.         jnc     @f
  1260.         inc     [schk]
  1261.   @@:   btc     [flags],6
  1262.         btr     [flags],10
  1263.         call    draw_string
  1264.         call    stof
  1265.         fstp    qword [S.X]
  1266.         call    draw_stack
  1267.         cmp byte [string+12],0x20
  1268.         jne @f
  1269.         mov word [string+11],0x3030
  1270.         @@:
  1271.         cmp byte [string+1],"0"
  1272.         je @f
  1273.         ret
  1274.   @@:   cmp word [string+2],"  "
  1275.         je @f
  1276.         cmp word [string+2],". "
  1277.         je @f
  1278.         ret
  1279.   @@:   mov dword [string]," 1  "
  1280.         call    draw_string
  1281.         call    stof
  1282.         fstp    qword [S.X]
  1283.         call    draw_stack
  1284.         ret
  1285. _0B:
  1286.         bt      [flags],0
  1287.         jnc     @f
  1288.         inc     [schk]
  1289.   @@:   jmp     .0
  1290.         ;       test [flags],(1 shl 7)
  1291.         jz @f
  1292.         call null.null
  1293.         jmp .0
  1294.   @@:   test [flags],(1 shl 10)
  1295.         jz .0
  1296.         call null
  1297.   .0:;  fld     qword [S.X]
  1298. ;       call    ftos
  1299.         bt [flags],6
  1300.         jc      @f
  1301.         cmp byte [string],'-'
  1302.         jne .sign_1
  1303.         mov byte [string],' '
  1304.         call    draw_string
  1305.         call    stof
  1306.         fstp    qword [S.X]
  1307.         call    draw_stack
  1308.         ret
  1309.         .sign_1:
  1310.         mov byte [string],'-'
  1311.         call    draw_string
  1312.         call    stof
  1313.         fstp    qword [S.X]
  1314.         call    draw_stack
  1315.         ret
  1316.                 @@:
  1317.         cmp byte [string+10],'-'
  1318.         jne .sign_2
  1319.         mov byte [string+10],' '
  1320.         call    draw_string
  1321.         call    stof
  1322.         fstp    qword [S.X]
  1323.         call    draw_stack
  1324.         ret
  1325.         .sign_2:
  1326.         mov byte [string+10],'-'
  1327.         call    draw_string
  1328.         call    stof
  1329.         fstp    qword [S.X]
  1330.         call    draw_stack
  1331.         ret
  1332.  
  1333. _0A:
  1334.         bt      [flags],0
  1335.         jnc     @f
  1336.         inc     [schk]
  1337.   @@:   test [flags],(1 shl 7)
  1338.         jz @f
  1339.         call null.null
  1340.         jmp .0
  1341.   @@:   test [flags],(1 shl 10)
  1342.         jz .0
  1343.         call null
  1344.   .0:   cmp [move1],8
  1345.         jge .nop
  1346.         cmp [move1],0
  1347.         jne     @f
  1348.         mov [move1],1
  1349.         mov [move1dot],1
  1350.         mov word [string+1],'0.'
  1351.         call    draw_string
  1352.         call    stof
  1353.         fstp    qword [S.X]
  1354.         call    draw_stack
  1355.   .nop: ret
  1356.                 @@:
  1357.         cmp [move1dot],1
  1358.         je .nop
  1359.         movzx esi,[move1]
  1360.         mov byte [esi+string+1],'.'
  1361.         mov [move1dot],1
  1362.         call    draw_string
  1363.         call    stof
  1364.         fstp    qword [S.X]
  1365.         call    draw_stack
  1366.         ret
  1367.  
  1368. _00:
  1369.         sub     eax,OPCODEtable
  1370.         shr     eax,2
  1371.         add     eax,0x30
  1372.         push    eax
  1373.         bt      [flags],0
  1374.         jnc     @f
  1375.         inc     [schk]
  1376.   @@:   test [flags],(1 shl 7)
  1377.         jz @f
  1378.         call null.null
  1379.         jmp .0
  1380.   @@:   test [flags],(1 shl 10)
  1381.         jz .0
  1382.         call null
  1383.   .0:   pop ebx
  1384.         test [flags],(1 shl 6)
  1385.         jnz     @f
  1386.         cmp [move1],8
  1387.         jge .nop
  1388.         movzx esi,[move1]
  1389.         movzx edi,[move1dot]
  1390.         add esi,edi
  1391.         mov byte [esi+string+1],bl
  1392.         inc [move1]
  1393.         call    draw_string
  1394.         call    stof
  1395.         fstp    qword [S.X]
  1396.         call    draw_stack
  1397.         ret
  1398.                 @@:
  1399.         cmp [move2],0
  1400.         jne @f
  1401.         mov byte [string+12],bl
  1402.         inc [move2]
  1403.         call    draw_string
  1404.         call    stof
  1405.         fstp    qword [S.X]
  1406.         call    draw_stack
  1407.         ret
  1408.         @@:
  1409.         mov al, [string+12]
  1410.         mov [string+11],al
  1411.         mov byte [string+12],bl
  1412.         call    draw_string
  1413.         call    stof
  1414.         fstp    qword [S.X]
  1415.         call    draw_stack
  1416.  .nop:  ret
  1417.  
  1418. null:   fld     qword [S.Z]
  1419.         fstp    qword [S.T]
  1420.         fld     qword [S.Y]
  1421.         fstp    qword [S.Z]
  1422.         fld     qword [S.X]
  1423.         fstp    qword [S.Y]
  1424. .null:  call    null_string
  1425.         btr     [flags],10
  1426.         btr     [flags],7
  1427. ret
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433. null_string:
  1434.         mov     esi,string_zero
  1435.         mov     edi,string
  1436.         mov     ecx,13
  1437.         cld
  1438.         @@:     movsb
  1439.         loop @b
  1440.         mov     [move1],0
  1441.         mov     [move2],0
  1442.         mov     [move1dot],0
  1443. ret
  1444.  
  1445.