Subversion Repositories Kolibri OS

Rev

Rev 4911 | Rev 4913 | Go to most recent revision | Show entire file | Regard 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 831... Line 834...
831
        fdivp
834
        fdivp
832
.done:
835
.done:
833
        fimul dword [n_digits]
836
        fimul   dword [n_digits]
834
        fbstp   tword [.bcd_man]
837
        fbstp   tword [.bcd_man]
Line 835... Line 838...
835
 
838
 
836
        lea     esi, [.bcd_man-1]
839
        lea     edi, [.cvt_buf]
837
        mov     edi, .str_buf
-
 
838
 
840
        mov     edx, dword [.bcd_man]
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
-
 
853
 
-
 
854
        bt      eax, 16
-
 
855
        jc      .skip_lb
841
        mov     ecx, 8
856
@@:
-
 
857
        mov     ah, al
-
 
858
        shr     al, 4
-
 
859
        jnz     .write_h
-
 
860
 
-
 
861
        bt      eax, 16
-
 
862
        jc      .skip_hb
-
 
863
 
-
 
864
.write_h:
-
 
865
        add     al, 0x30
-
 
866
        stosb
842
@@:
867
        btr     eax, 16
-
 
868
        jnc     .skip_hb
-
 
869
        mov     al, '.'
-
 
870
        stosb
-
 
871
 
-
 
872
.skip_hb:
-
 
873
        mov     al, ah
843
        xor     eax, eax
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
-
 
883
        btr     eax, 16
-
 
884
        jnc     .skip_lb
-
 
885
        mov     al, '.'
844
        shld    eax, edx, 4
-
 
845
        stosb
-
 
846
        shl     edx, 4
Line -... Line 847...
-
 
847
        loop    @B
-
 
848
 
-
 
849
        lea     esi, [.cvt_buf+7]
-
 
850
        lea     edi, [.str_buf+13]
-
 
851
        mov     ecx, 7
886
        stosb
852
        mov     ah, 0x30
-
 
853
        std
-
 
854
.skip_z:
-
 
855
        lodsb
887
 
856
        test    al, al
888
.skip_lb:
857
        jnz     .body
889
        loop    .mantis_2_str
858
        loop    .skip_z
-
 
859
.body:
-
 
860
        add     al, ah
890
 
861
        stosb
891
        mov     eax, [.exp]
862
        lodsb
892
        test    eax, eax
863
        jcxz    .point
-
 
864
        loop    .body
-
 
865
.point:
893
        jz      .display
866
        dec     edi
894
 
867
        add     al, ah
Line 895... Line -...
895
        mov     ax, ' e'
-
 
896
        stosw
-
 
897
 
-
 
898
        lea     esi, [.bcd_exp-1]
868
        mov     ah, '.'
899
        mov     ecx, 9
-
 
900
        mov     eax,0x10000
869
        stosw
901
        mov     al, [esi+ecx+1]
870
 
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
-
 
910
        jnz     @f
-
 
911
 
-
 
912
        bt      eax, 16
871
        bt      word [_st0+ebp+8], 15
913
        jc      .skip_lb2
-
 
914
@@:
-
 
Line 915... Line 872...
915
        mov     ah, al
872
        jnc     .m_sign
916
        shr     al, 4
873
        mov     al, '-'
Line 917... Line -...
917
        jnz     .write_h2
-
 
918
 
-
 
919
        bt      eax, 16
-
 
920
        jc      .skip_hb2
-
 
921
 
-
 
922
.write_h2:
-
 
923
        add     al, 0x30
-
 
924
        stosb
874
        mov     [edi+1], al
925
        btr     eax, 16
875
 
926
 
876
.m_sign:
Line -... Line 877...
-
 
877
        cld
927
.skip_hb2:
878
 
-
 
879
        mov     dx, word [.bcd_exp]
928
 
880
        test    dx, dx
-
 
881
        jz      .display
Line 929... Line 882...
929
        mov     al, ah
882
 
-
 
883
        lea     edi, [.str_buf+15]
Line -... Line 884...
-
 
884
        mov     ax, 'E '
-
 
885
        cmp     byte [.bcd_exp+9], 0x80
-
 
886
        jne     .w_e_sign
-
 
887
        mov     ax, 'E-'
-
 
888
 
-
 
889
.w_e_sign:
-
 
890
        stosw
-
 
891
 
-
 
892
        mov     ecx, 4
930
        and     al, 0x0F
893
.skip_lz:
931
        jnz     .write_lb2
894
        xor     eax, eax
932
 
895
        shld    ax,dx,4
933
        bt      eax, 16
-
 
-
 
896
        shl     dx, 4
934
        jc      .skip_lb2
897
        test al, al
935
 
898
        jnz     .w_exp
Line 936... Line 899...
936
.write_lb2:
899
        loop    .skip_lz
Line 937... Line 900...
937
 
900
.w_exp:
938
        add     al, 0x30
901
        add al, 0x30
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