Rev 3768 | Rev 3774 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3768 | Rev 3771 | ||
---|---|---|---|
Line 152... | Line 152... | ||
152 | mov es, bx |
152 | mov es, bx |
Line 153... | Line 153... | ||
153 | 153 | ||
154 | cmp [v86_irqhooks+ebp*8], 0 |
154 | cmp [v86_irqhooks+ebp*8], 0 |
Line 155... | Line -... | ||
155 | jnz v86_irq |
- | |
156 | - | ||
157 | cmp bp, 6 |
- | |
158 | jnz @f |
- | |
159 | push ebp |
- | |
160 | call [fdc_irq_func] |
- | |
161 | pop ebp |
155 | jnz v86_irq |
Line 162... | Line 156... | ||
162 | @@: |
156 | |
163 | bts [irq_active_set], ebp |
157 | bts [irq_active_set], ebp |
164 | 158 | ||
Line 202... | Line 196... | ||
202 | ; that it has acknowledged an IRQ, and assume that handlers with at least one |
196 | ; that it has acknowledged an IRQ, and assume that handlers with at least one |
203 | ; acknowledged IRQ are registered properly. |
197 | ; acknowledged IRQ are registered properly. |
204 | ; Note: this still isn't 100% correct, because two IRQs can fire simultaneously, |
198 | ; Note: this still isn't 100% correct, because two IRQs can fire simultaneously, |
205 | ; the better way would be to find the correct IRQ, but I don't know how to do |
199 | ; the better way would be to find the correct IRQ, but I don't know how to do |
206 | ; this in that case. |
200 | ; this in that case. |
207 | ; Also, [fdc_irq_func], [irq14_func], [irq15_func] could process interrupt |
- | |
208 | ; but do not return whether they did it, so just ignore IRQs 6, 14, 15. |
- | |
209 | cmp ebp, 6 |
- | |
210 | jz .fail |
- | |
211 | push ebp |
201 | push ebp |
212 | xor ebp, ebp |
202 | xor ebp, ebp |
213 | .try_other_irqs: |
203 | .try_other_irqs: |
214 | cmp ebp, [esp] |
204 | cmp ebp, [esp] |
215 | jz .try_next_irq |
205 | jz .try_next_irq |
216 | cmp ebp, 1 |
206 | cmp ebp, 1 |
217 | jz .try_next_irq |
207 | jz .try_next_irq |
- | 208 | cmp ebp, 6 |
|
- | 209 | jz .try_next_irq |
|
218 | cmp ebp, 12 |
210 | cmp ebp, 12 |
219 | jz .try_next_irq |
211 | jz .try_next_irq |
220 | cmp ebp, 14 |
212 | cmp ebp, 14 |
221 | jz .try_next_irq |
213 | jz .try_next_irq |
222 | cmp ebp, 15 |
214 | cmp ebp, 15 |