Rev 4914 | Rev 5206 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4914 | Rev 4924 | ||
---|---|---|---|
Line 52... | Line 52... | ||
52 | COLOR_TXT_HEX = COLOR_TXT_NORMAL |
52 | COLOR_TXT_HEX = COLOR_TXT_NORMAL |
53 | COLOR_TXT_BREAKPOINT = COLOR_TXT_NORMAL |
53 | COLOR_TXT_BREAKPOINT = COLOR_TXT_NORMAL |
Line 54... | Line 54... | ||
54 | 54 | ||
Line -... | Line 55... | ||
- | 55 | end if |
|
- | 56 | ||
- | 57 | struc fpcvt |
|
- | 58 | { |
|
- | 59 | .str_buf rb 32 |
|
- | 60 | .cvt_buf rb 16 |
|
- | 61 | .bcd_man rb 10 |
|
- | 62 | .bcd_exp rb 10 |
|
- | 63 | .exp rd 1 |
|
- | 64 | .digits rq 1 |
|
- | 65 | .sizeof: |
|
- | 66 | } |
|
- | 67 | ||
55 | end if |
68 | |
Line 56... | Line 69... | ||
56 | 69 | ||
57 | ;----------------------------------------------------------------------------- |
70 | ;----------------------------------------------------------------------------- |
58 | 71 | ||
Line 746... | Line 759... | ||
746 | pop edx |
759 | pop edx |
747 | pop esi |
760 | pop esi |
748 | add edx, ecx |
761 | add edx, ecx |
749 | ret |
762 | ret |
Line -... | Line 763... | ||
- | 763 | ||
- | 764 | ||
- | 765 | ; in: edi=cvt buffer, st0 = value |
|
- | 766 | ||
- | 767 | ;align 4 |
|
- | 768 | ;fp2str: |
|
- | 769 | ||
- | 770 | ||
750 | 771 | ||
751 | ;----------------------------------------------------------------------------- |
772 | ;----------------------------------------------------------------------------- |
752 | ; Display FPU register (ST0 - ST7) content |
773 | ; Display FPU register (ST0 - ST7) content |
753 | ; |
774 | ; |
Line 774... | Line 795... | ||
774 | stosd |
795 | stosd |
775 | stosd |
796 | stosd |
776 | stosd |
797 | stosd |
777 | stosd |
798 | stosd |
Line 778... | Line -... | ||
778 | - | ||
779 | ;int3 |
- | |
780 | ;nop |
- | |
781 | 799 | ||
782 | movzx eax, word [_fsw] |
800 | movzx eax, word [_fsw] |
783 | shr eax, 11 |
801 | shr eax, 11 |
784 | add eax, ebp |
802 | add eax, ebp |
785 | shr ebp, 12 |
803 | shr ebp, 12 |
786 | and eax, 7 |
804 | and eax, 7 |
787 | bt dword [_ftw], eax |
805 | bt dword [_ftw], eax |
Line 788... | Line 806... | ||
788 | jc .A6M |
806 | jc .exam |
789 | 807 | ||
790 | mov dword [.str_buf+8],' emp' |
808 | mov dword [.str_buf+8],' emp' |
Line -... | Line 809... | ||
- | 809 | mov word [.str_buf+8+4],'ty' |
|
791 | mov word [.str_buf+8+4],'ty' |
810 | jmp .display |
- | 811 | ||
- | 812 | .exam: |
|
- | 813 | fld tword [_st0+ebp] |
|
- | 814 | fxam |
|
- | 815 | fstsw ax |
|
792 | jmp .display |
816 | fstp st1 |
793 | 817 | sahf |
|
Line 794... | Line 818... | ||
794 | mov cx, [_st0+ebp+8] |
818 | |
795 | and cx, 0x7FFF ;clear sign flag |
819 | jz .c3 |
Line -... | Line 820... | ||
- | 820 | jp .c2 |
|
796 | jz .A6M |
821 | |
797 | 822 | ;C0 leaf |
|
798 | cmp cx, 0x7FFF |
823 | jc .nan |
Line -... | Line 824... | ||
- | 824 | ||
799 | jne .decode |
825 | ; C3 = 0 C2 = 0 C0 = 0 - invalid |
- | 826 | mov dword [.str_buf+6], ' inv' |
|
- | 827 | mov dword [.str_buf+6+4], 'alid' |
|
Line -... | Line 828... | ||
- | 828 | jmp .display |
|
- | 829 | ||
- | 830 | ; C3 = 0 C2 = 0 C0 = 1 - Not a Number |
|
- | 831 | .nan: |
|
- | 832 | mov dword [.str_buf+10], ' NaN' |
|
- | 833 | jmp .display |
|
- | 834 | ||
- | 835 | ;C2 leaf - valid or infinity |
|
- | 836 | ||
- | 837 | .c2: |
|
- | 838 | ; C3 = 0 C2 = 1 C0 = 0 - valid number |
|
- | 839 | ||
800 | 840 | jnc .decode |
|
- | 841 | ||
- | 842 | ; C3 = 0 C2 = 1 C0 = 1 - Infinty |
|
801 | mov dword [.str_buf+6], ' inv' |
843 | |
- | 844 | ;check sign flag |
|
- | 845 | test ah, 0x02 |
|
- | 846 | jnz @F |
|
802 | mov dword [.str_buf+6+4], 'alid' |
847 | mov dword [.str_buf+10], '+Inf' |
- | 848 | jmp .display |
|
- | 849 | @@: |
|
- | 850 | mov dword [.str_buf+10], '-Inf' |
|
Line 803... | Line 851... | ||
803 | jmp .display |
851 | jmp .display |
804 | 852 | ||
Line -... | Line 853... | ||
- | 853 | .c3: |
|
- | 854 | jp .denormal |
|
- | 855 | jc .empty |
|
- | 856 | ||
- | 857 | ; C3 = 1 C2 = 1 C0 = 0 - Zero |
|
- | 858 | ||
- | 859 | mov dword [.str_buf+10], ' 0.0' |
|
- | 860 | jmp .display |
|
- | 861 | ||
- | 862 | .empty: |
|
- | 863 | mov dword [.str_buf+8],' emp' |
|
- | 864 | mov word [.str_buf+8+4],'ty' |
|
- | 865 | jmp .display |
|
- | 866 | ||
- | 867 | ; C3 = 1 C2 = 1 C0 = 0 - Denormal number |
|
- | 868 | ||
- | 869 | .denormal: |
|
- | 870 | test ah, 0x02 |
|
- | 871 | jnz @F |
|
805 | .A6M: |
872 | |
806 | 873 | mov dword [.str_buf+6], '+den' |
|
807 | mov eax, dword [_st0+ebp] |
874 | mov dword [.str_buf+6+4], 'orm ' |
808 | or eax, dword [_st0+ebp+4] |
875 | jmp .display |
809 | jnz .decode |
876 | @@: |
Line 1057... | Line 1124... | ||
1057 | push ebp |
1124 | push ebp |
1058 | push 8 |
1125 | push 8 |
1059 | xor ebp, ebp |
1126 | xor ebp, ebp |
1060 | mov ebx, [registers_x_pos_dd] |
1127 | mov ebx, [registers_x_pos_dd] |
1061 | add ebx, 2*10000h+registers_y_pos+142 |
1128 | add ebx, 2*10000h+registers_y_pos+142 |
1062 | mov edi, COLOR_BG_NORMAL |
- | |
1063 | .draw_regs: |
1129 | .draw_regs: |
1064 | call draw_fpu_register_2 |
1130 | call draw_fpu_register_2 |
1065 | add ebx, 10 |
1131 | add ebx, 10 |
1066 | inc ebp |
1132 | inc ebp |
1067 | dec dword [esp] |
1133 | dec dword [esp] |
Line 1075... | Line 1141... | ||
1075 | push ebp |
1141 | push ebp |
1076 | push 8 |
1142 | push 8 |
1077 | xor ebp, ebp |
1143 | xor ebp, ebp |
1078 | mov ebx, [registers_x_pos_dd] |
1144 | mov ebx, [registers_x_pos_dd] |
1079 | add ebx, 2*10000h+registers_y_pos+142 |
1145 | add ebx, 2*10000h+registers_y_pos+142 |
1080 | ; mov edi, COLOR_BG_NORMAL |
- | |
1081 | .draw_regs: |
1146 | .draw_regs: |
1082 | call draw_mmx_register_2 |
1147 | call draw_mmx_register_2 |
1083 | add ebx, 10 |
1148 | add ebx, 10 |
1084 | inc ebp |
1149 | inc ebp |
1085 | dec dword [esp] |
1150 | dec dword [esp] |
1086 | jnz .draw_regs |
1151 | jnz .draw_regs |
1087 | pop eax |
1152 | pop eax |
1088 | pop ebp |
1153 | pop ebp |
1089 | ret |
1154 | ret |
Line -... | Line 1155... | ||
- | 1155 | ||
- | 1156 | align 4 |
|
- | 1157 | draw_sse_regs: |
|
- | 1158 | push ebp |
|
- | 1159 | push 8 |
|
- | 1160 | xor ebp, ebp |
|
- | 1161 | mov ebx, [registers_x_pos_dd] |
|
- | 1162 | add ebx, 2*10000h+registers_y_pos+232 |
|
- | 1163 | .draw_regs: |
|
1090 | 1164 | ; call draw_sse_register |
|
- | 1165 | add ebx, 10 |
|
- | 1166 | inc ebp |
|
- | 1167 | dec dword [esp] |
|
- | 1168 | jnz .draw_regs |
|
- | 1169 | pop eax |
|
- | 1170 | pop ebp |
|
- | 1171 | ret |
|
1091 | ; TODO add SSE registers |
1172 | |
Line 1092... | Line 1173... | ||
1092 | ; TODO add AVX registers |
1173 | ; TODO add AVX registers |
1093 | 1174 | ||
1094 | ;----------------------------------------------------------------------------- |
1175 | ;----------------------------------------------------------------------------- |