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 ; ... |