Subversion Repositories Kolibri OS

Rev

Rev 4911 | Rev 4913 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4911 Rev 4912
Line 721... Line 721...
721
; in: ebp->index, ebx = coord
721
; in: ebp->index, ebx = coord
Line 722... Line 722...
722
 
722
 
Line 723... Line 723...
723
draw_fpu_register_2:
723
draw_fpu_register_2:
-
 
724
 
724
 
725
.str_buf  equ esp
725
.str_buf  equ esp
726
.cvt_buf  equ .str_buf+32
726
.bcd_man  equ .str_buf+32
727
.bcd_man  equ .cvt_buf+16
727
.bcd_exp  equ .bcd_man+12
728
.bcd_exp  equ .bcd_man+10
-
 
729
.exp      equ .bcd_exp+10
Line 728... Line 730...
728
.exp      equ .bcd_exp+12
730
.tmp      equ .exp+4
Line 729... Line -...
729
.tmp      equ .exp+4
-
 
730
 
731
.lcl_end  equ .tmp+4
-
 
732
 
-
 
733
        sub     esp, 32+16+10+10+4+4
-
 
734
 
-
 
735
        mov     edi, .str_buf
-
 
736
        shl     ebp, 16
731
        sub     esp, 32+12+12+4+4
737
        lea     eax, ['ST0:'+ebp]
732
 
738
        stosd
733
        mov     eax, 0x20202020
739
        mov     eax, 0x20202020
734
        mov     edi, .str_buf
740
        stosd
Line 735... Line 741...
735
        stosd
741
        stosd
736
        stosd
742
        stosd
Line 737... Line -...
737
        stosd
-
 
738
        stosd
-
 
739
 
-
 
740
        ;int3
743
        stosd
741
        ;nop
744
        stosd
742
 
745
 
-
 
746
        ;int3
743
        mov     edx, ebp
747
        ;nop
744
        shl     edx, 4
-
 
745
 
748
 
746
        movzx   eax, word [_fsw]
749
        movzx   eax, word [_fsw]
Line 747... Line 750...
747
        shr     eax, 11
750
        shr     eax, 11
748
        add     eax, ebp
751
        add     eax, ebp
749
        and     eax, 7
752
        shr     ebp, 12
Line 750... Line 753...
750
 
753
        and     eax, 7
751
        bt      dword [_ftw], eax
754
        bt      dword [_ftw], eax
752
        jc     .A6M
755
        jc     .A6M
Line 753... Line 756...
753
 
756
 
754
        mov     dword [.str_buf],' emp'
757
        mov     dword [.str_buf+8],' emp'
Line 755... Line 758...
755
        mov     word [.str_buf+4],'ty'
758
        mov     word [.str_buf+8+4],'ty'
756
        jmp     .display
759
        jmp     .display
757
 
760
 
Line 758... Line 761...
758
        mov     cx, [_st0+edx+8]
761
        mov     cx, [_st0+ebp+8]
Line 759... Line 762...
759
        and     cx, 0x7FFF              ;clear sign flag
762
        and     cx, 0x7FFF              ;clear sign flag
760
        jz      .A6M
763
        jz      .A6M
761
 
764
 
Line 762... Line 765...
762
        cmp     cx, 0x7FFF
765
        cmp     cx, 0x7FFF
763
        jne     .decode
766
        jne     .decode
Line 764... Line 767...
764
 
767
 
765
        mov     dword [.str_buf], ' inv'
768
        mov     dword [.str_buf+6], ' inv'
766
        mov     dword [.str_buf+4], 'alid'
769
        mov     dword [.str_buf+6+4], 'alid'
767
        jmp     .display
770
        jmp     .display
768
 
771
 
769
.A6M:
772
.A6M:
770
 
773
 
Line 812... Line 815...
812
        fstp st0
815
        fstp st0
Line 813... Line 816...
813
 
816
 
814
        inc     dword [.exp]
817
        inc     dword [.exp]
815
        fild    dword [.exp]
818
        fild    dword [.exp]
816
        fld     st0
819
        fld     st0
Line 817... Line 820...
817
        fbstp tword [.bcd_exp]
820
        fbstp   tword [.bcd_exp]
818
 
821
 
819
        fldl2t
822
        fldl2t
820
        fmulp
823
        fmulp
821
        fld st0
824
        fld st0
822
        frndint
825
        frndint
Line 823... Line 826...
823
        fxch
826
        fxch
824
        fsub st,st1
827
        fsub    st,st1
825
 
828
 
826
        f2xm1
829
        f2xm1
827
        fld1
830
        fld1
828
        faddp
831
        faddp
829
        fscale
832
        fscale
830
        fstp st1
833
        fstp    st1
831
        fdivp
834
        fdivp
Line 832... Line 835...
832
.done:
835
.done:
833
        fimul dword [n_digits]
836
        fimul   dword [n_digits]
834
        fbstp   tword [.bcd_man]
-
 
835
 
837
        fbstp   tword [.bcd_man]
836
        lea     esi, [.bcd_man-1]
-
 
837
        mov     edi, .str_buf
-
 
838
 
-
 
839
        mov     ecx, 9
-
 
840
        mov     eax, 0x10000
-
 
841
 
-
 
842
        mov     al, [esi+ecx+1]
-
 
843
        cmp     al, 0x80            ; check for sign
-
 
844
        jne     .mantis_2_str
-
 
845
        mov     al, '-'
-
 
846
        stosb
-
 
847
 
-
 
848
.mantis_2_str:
-
 
849
 
-
 
850
        mov     al, [esi+ecx]
-
 
851
        test    al, al
-
 
852
        jnz     @f
838
 
853
 
-
 
854
        bt      eax, 16
-
 
855
        jc      .skip_lb
-
 
856
@@:
-
 
857
        mov     ah, al
-
 
858
        shr     al, 4
-
 
859
        jnz     .write_h
-
 
860
 
-
 
861
        bt      eax, 16
-
 
862
        jc      .skip_hb
-
 
863
 
839
        lea     edi, [.cvt_buf]
864
.write_h:
-
 
865
        add     al, 0x30
-
 
866
        stosb
-
 
867
        btr     eax, 16
-
 
868
        jnc     .skip_hb
-
 
869
        mov     al, '.'
-
 
870
        stosb
840
        mov     edx, dword [.bcd_man]
871
 
-
 
872
.skip_hb:
-
 
873
        mov     al, ah
-
 
874
        and     al, 0x0F
-
 
875
        jnz     .write_lb
-
 
876
 
-
 
877
        bt      eax, 16
-
 
878
        jc      .skip_lb
-
 
879
 
-
 
880
.write_lb:
-
 
881
        add     al,0x30
-
 
882
        stosb
841
        mov     ecx, 8
-
 
842
@@:
-
 
843
        xor     eax, eax
Line -... Line 844...
-
 
844
        shld    eax, edx, 4
-
 
845
        stosb
-
 
846
        shl     edx, 4
-
 
847
        loop    @B
-
 
848
 
883
        btr     eax, 16
849
        lea     esi, [.cvt_buf+7]
-
 
850
        lea     edi, [.str_buf+13]
-
 
851
        mov     ecx, 7
-
 
852
        mov     ah, 0x30
884
        jnc     .skip_lb
853
        std
885
        mov     al, '.'
854
.skip_z:
886
        stosb
855
        lodsb
-
 
856
        test    al, al
-
 
857
        jnz     .body
887
 
858
        loop    .skip_z
888
.skip_lb:
859
.body:
889
        loop    .mantis_2_str
860
        add     al, ah
-
 
861
        stosb
-
 
862
        lodsb
890
 
863
        jcxz    .point
891
        mov     eax, [.exp]
864
        loop    .body
Line 892... Line -...
892
        test    eax, eax
-
 
893
        jz      .display
-
 
894
 
-
 
895
        mov     ax, ' e'
865
.point:
896
        stosw
-
 
897
 
866
        dec     edi
898
        lea     esi, [.bcd_exp-1]
867
        add     al, ah
899
        mov     ecx, 9
-
 
900
        mov     eax,0x10000
-
 
901
        mov     al, [esi+ecx+1]
-
 
902
        cmp     al, 0x80
-
 
903
        jne     .exp_2_str
-
 
904
        mov     al, '-'
-
 
905
        stosb
-
 
906
 
-
 
907
.exp_2_str:
-
 
908
        mov     al, [esi+ecx]
-
 
909
        test    al, al
868
        mov     ah, '.'
910
        jnz     @f
-
 
911
 
-
 
912
        bt      eax, 16
-
 
913
        jc      .skip_lb2
-
 
914
@@:
-
 
915
        mov     ah, al
-
 
916
        shr     al, 4
-
 
917
        jnz     .write_h2
-
 
918
 
-
 
919
        bt      eax, 16
-
 
920
        jc      .skip_hb2
-
 
921
 
-
 
Line 922... Line 869...
922
.write_h2:
869
        stosw
923
        add     al, 0x30
870
 
924
        stosb
-
 
Line -... Line 871...
-
 
871
        bt      word [_st0+ebp+8], 15
925
        btr     eax, 16
872
        jnc     .m_sign
926
 
873
        mov     al, '-'
Line -... Line 874...
-
 
874
        mov     [edi+1], al
-
 
875
 
-
 
876
.m_sign:
927
.skip_hb2:
877
        cld
-
 
878
 
Line 928... Line 879...
928
 
879
        mov     dx, word [.bcd_exp]
929
        mov     al, ah
880
        test    dx, dx
930
        and     al, 0x0F
-
 
Line -... Line 881...
-
 
881
        jz      .display
931
        jnz     .write_lb2
882
 
-
 
883
        lea     edi, [.str_buf+15]
-
 
884
        mov     ax, 'E '
-
 
885
        cmp     byte [.bcd_exp+9], 0x80
-
 
886
        jne     .w_e_sign
-
 
887
        mov     ax, 'E-'
932
 
888
 
-
 
889
.w_e_sign:
-
 
890
        stosw
-
 
891
 
-
 
892
        mov     ecx, 4
-
 
893
.skip_lz:
-
 
894
        xor     eax, eax
-
 
895
        shld    ax,dx,4
Line 933... Line 896...
933
        bt      eax, 16
896
        shl     dx, 4
Line 934... Line 897...
934
        jc      .skip_lb2
897
        test al, al
935
 
898
        jnz     .w_exp
Line 950... Line 913...
950
        cmp     [bSuspended], 0
913
        cmp     [bSuspended], 0
951
        jz      .do_label
914
        jz      .do_label
Line 952... Line 915...
952
 
915
 
Line 953... Line 916...
953
        mov     ecx, (COLOR_TXT_NORMAL or 0x40000000)
916
        mov     ecx, (COLOR_TXT_NORMAL or 0x40000000)
954
 
917
 
955
        mov     eax, dword [_st0+edx]
918
        mov     eax, dword [_st0+ebp]
Line 956... Line 919...
956
        cmp     eax, dword [_st0+(oldcontext-context)+edx]
919
        cmp     eax, dword [_st0+(oldcontext-context)+ebp]
957
        jne     .scol
920
        jne     .scol
958
 
921
 
Line 959... Line 922...
959
        mov     eax, dword [_st0+edx+4]
922
        mov     eax, dword [_st0+ebp+4]
960
        cmp     eax, dword [_st0+(oldcontext-context)+edx+4]
923
        cmp     eax, dword [_st0+(oldcontext-context)+ebp+4]
961
        jne     .scol
924
        jne     .scol
Line 962... Line 925...
962
 
925
 
963
        mov     ax, word [_st0+edx+8]
926
        mov     ax, word [_st0+ebp+8]
Line 964... Line 927...
964
        cmp     ax, word [_st0+(oldcontext-context)+edx+8]
927
        cmp     ax, word [_st0+(oldcontext-context)+ebp+8]
965
        je      .do_label
928
        je      .do_label
Line 966... Line 929...
966
 
929
 
967
.scol:
-
 
968
        mov     ecx, (COLOR_TXT_CHANGED or 0x40000000)
-
 
969
 
-
 
970
.do_label:
-
 
971
        ; draw a text string in the window
-
 
972
 
930
.scol:
973
        mov     eax, 4
931
        mov     ecx, (COLOR_TXT_CHANGED or 0x40000000)
974
        mov     esi, eax
932
 
975
        lea     edx, [fpu_strs+ebp*4]
933
.do_label:
Line 976... Line 934...
976
        mov     edi, COLOR_BG_NORMAL
934
        ; draw a text string in the window
977
        int     0x40
935
 
Line 978... Line 936...
978
 
936
        mov     eax, 4
Line 979... Line 937...
979
        mov     esi, 16
937
        mov     esi, 21