|
|
| version 1.24, 2005/02/12 12:13:58 | version 1.27, 2005/03/25 14:57:56 |
|---|---|
| Line 12 | Line 12 |
| #include "v30patch.h" | #include "v30patch.h" |
| #include "bios.h" | #include "bios.h" |
| #include "dmax86.h" | #include "dmax86.h" |
| #if defined(ENABLE_TRAP) | |
| #include "steptrap.h" | |
| #include "inttrap.h" | |
| #endif | |
| I286CORE i286core; | I286CORE i286core; |
| Line 264 LABEL void i286x(void) { | Line 268 LABEL void i286x(void) { |
| cmp dmac.working, 0 | cmp dmac.working, 0 |
| jne short i286_dma_mnlp | jne short i286_dma_mnlp |
| i286_mnlp: movzx eax, bl | i286_mnlp: |
| #if defined(ENABLE_TRAP) | |
| mov edx, esi | |
| movzx ecx, I286_CS | |
| call steptrap | |
| #endif | |
| movzx eax, bl | |
| call i286op[eax*4] | call i286op[eax*4] |
| cmp I286_REMCLOCK, 0 | cmp I286_REMCLOCK, 0 |
| jg i286_mnlp | jg i286_mnlp |
| Line 274 i286_mnlp: movzx eax, bl | Line 284 i286_mnlp: movzx eax, bl |
| ret | ret |
| align 16 | align 16 |
| i286_dma_mnlp: movzx eax, bl | i286_dma_mnlp: |
| #if defined(ENABLE_TRAP) | |
| mov edx, esi | |
| movzx ecx, I286_CS | |
| call steptrap | |
| #endif | |
| movzx eax, bl | |
| call i286op[eax*4] | call i286op[eax*4] |
| call dmax86 | call dmax86 |
| cmp I286_REMCLOCK, 0 | cmp I286_REMCLOCK, 0 |
| Line 285 i286_dma_mnlp: movzx eax, bl | Line 301 i286_dma_mnlp: movzx eax, bl |
| ret | ret |
| align 16 | align 16 |
| i286_trapping: movzx eax, bl | i286_trapping: |
| #if defined(ENABLE_TRAP) | |
| mov edx, esi | |
| movzx ecx, I286_CS | |
| call steptrap | |
| #endif | |
| movzx eax, bl | |
| call i286op[eax*4] | call i286op[eax*4] |
| cmp I286_TRAP, 0 | cmp I286_TRAP, 0 |
| je i286notrap | je i286notrap |
| Line 3431 I286 mov_ea8_data8(void) { // C6: m | Line 3453 I286 mov_ea8_data8(void) { // C6: m |
| bt bp, 2 | bt bp, 2 |
| rcl ebp, 1 | rcl ebp, 1 |
| and ebp, 7 | and ebp, 7 |
| GET_NEXTPRE2 | GET_NEXTPRE3 |
| mov byte ptr I286_REG[ebp], dh | mov byte ptr I286_REG[ebp], dh |
| ret | ret |
| align 16 | align 16 |
| Line 3487 I286 _enter(void) { // C8: enter | Line 3509 I286 _enter(void) { // C8: enter |
| je enter0 | je enter0 |
| dec eax | dec eax |
| je enter1 | je enter1 |
| lea ecx, [eax*4 + 12] | lea ecx, [eax*4 + 12 + 4] |
| I286CLOCK(ecx) | I286CLOCK(ecx) |
| push ebx | push ebx |
| movzx ebx, I286_BP | movzx ebx, I286_BP |
| Line 3635 I286 int_data8(void) { // CD: int | Line 3657 I286 int_data8(void) { // CD: int |
| lea ecx, [edi + ebp] | lea ecx, [edi + ebp] |
| mov dx, I286_CS | mov dx, I286_CS |
| call i286_memorywrite_w | call i286_memorywrite_w |
| #if defined(ENABLE_TRAP) | |
| movzx eax, bh | |
| push eax | |
| lea edx, [esi - 1] | |
| movzx ecx, I286_CS | |
| call softinttrap | |
| #endif | |
| movzx eax, bh | movzx eax, bh |
| sub bp, 2 | sub bp, 2 |
| mov I286_SP, bp | mov I286_SP, bp |