Subversion Repositories Kolibri OS

Rev

Rev 703 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 703 Rev 1075
Line 40... Line 40...
40
        modstart        fpe387
40
        modstart        fpe387
Line 41... Line 41...
41
 
41
 
Line 42... Line 42...
42
        datasegment
42
        datasegment
-
 
43
        
43
        
44
Save87  dd      0
Line 44... Line 45...
44
Save87  dd      0
45
OldMask dd      0
45
        enddata
46
        enddata
Line 54... Line 55...
54
           ret                          ; - return
55
           ret                          ; - return
55
        _endguess                       ; endguess
56
        _endguess                       ; endguess
56
        push    EAX                     ; save registers
57
        push    EAX                     ; save registers
57
        push    EBX                     ; ...
58
        push    EBX                     ; ...
58
        push    ECX                     ; ...
59
        push    ECX                     ; ...
-
 
60
        push    EDX                     ; ...
Line 59... Line 61...
59
        
61
 
60
        mov     EAX, 68
62
        mov     EAX, 68
-
 
63
        mov     EBX, 15
61
        mov     EBX, 15
64
        mov     EDX, 10000h             ; 1 shl 16 - #MF
62
        lea     ECX, __FPE2Handler_
65
        lea     ECX, __FPE2Handler_
63
        int     40h                     ; set new #FPE handler 
66
        int     40h                     ; set new exception handler
-
 
67
        mov     Save87, EAX             ; save old handler
Line -... Line 68...
-
 
68
        mov     OldMask,EBX             ; save old mask
64
        mov     Save87, EAX             ; save old handler
69
        
65
        
70
        pop     EDX                     ; ...
66
        pop     ECX                     ; ...
71
        pop     ECX                     ; ...
67
        pop     EBX                     ; ...
72
        pop     EBX                     ; ...
68
        pop     EAX                     ; ...
73
        pop     EAX                     ; ...
Line 76... Line 81...
76
        _if     e                       ; - then
81
        _if     e                       ; - then
77
          ret                           ; - return
82
          ret                           ; - return
78
        _endif                          ; endif
83
        _endif                          ; endif
79
        push    EAX                     ; save registers
84
        push    EAX                     ; save registers
80
        push    EBX                     ; ...
85
        push    EBX                     ; ...
-
 
86
                                        ; ECX ????
81
        push    EDX                     ; ...
87
        push    EDX                     ; ...
82
        sub     ESP,4                   ; allocate space for control word
88
        sub     ESP,4                   ; allocate space for control word
83
        fstcw   word ptr [ESP]          ; get control word
89
        fstcw   word ptr [ESP]          ; get control word
84
        fwait                           ; ...
90
        fwait                           ; ...
85
        mov     byte ptr [ESP],7Fh      ; disable exception interrupts
91
        mov     byte ptr [ESP],7Fh      ; disable exception interrupts
Line 87... Line 93...
87
        fwait                           ; ...
93
        fwait                           ; ...
88
        add     ESP,4                   ; remove temporary
94
        add     ESP,4                   ; remove temporary
Line 89... Line 95...
89
        
95
        
90
        mov     EAX, 68
96
        mov     EAX, 68
91
        mov     EBX, 15
97
        mov     EBX, 15
-
 
98
        mov     ECX, dword ptr Save87   ; restore handler
92
        mov     ECX, dword ptr Save87
99
        mov     EDX, dword ptr OldMask  ; restore mask
Line 93... Line 100...
93
        int     40h                     ; set new #FPE handler 
100
        int     40h                     ; set new ecxeption handler
-
 
101
 
94
        
102
        pop     EDX                     ; ...
95
        pop     EDX                     ; ...
103
                                        ; ECX ????
96
        pop     EBX                     ; ...
104
        pop     EBX                     ; ...
97
        pop     EAX                     ; ...
105
        pop     EAX                     ; ...