|
|
| version 1.1, 2003/10/16 17:57:45 | version 1.3, 2003/10/17 11:10:02 |
|---|---|
| Line 9 | Line 9 |
| // ------------------------------------------------------------ opecode 0xfe,f | // ------------------------------------------------------------ opecode 0xfe,f |
| #if 0 | #if 0 |
| I286_F6 _nop_int(DWORD op) { | I286_F6 _nop_int(UINT op) { |
| INT_NUM(6, I286_IP - 2); | INT_NUM(6, I286_IP - 2); |
| } | } |
| #endif | #endif |
| I286_F6 _inc_ea8(DWORD op) { | I286_F6 _inc_ea8(UINT op) { |
| DWORD madr; | UINT32 madr; |
| BYTE *out; | BYTE *out; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| Line 38 I286_F6 _inc_ea8(DWORD op) { | Line 38 I286_F6 _inc_ea8(DWORD op) { |
| BYTE_INC(*out) | BYTE_INC(*out) |
| } | } |
| I286_F6 _dec_ea8(DWORD op) { | I286_F6 _dec_ea8(UINT op) { |
| DWORD madr; | UINT32 madr; |
| BYTE *out; | BYTE *out; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| Line 61 I286_F6 _dec_ea8(DWORD op) { | Line 61 I286_F6 _dec_ea8(DWORD op) { |
| BYTE_DEC(*out) | BYTE_DEC(*out) |
| } | } |
| I286_F6 _inc_ea16(DWORD op) { | I286_F6 _inc_ea16(UINT op) { |
| DWORD madr; | UINT32 madr; |
| WORD *out; | UINT16 *out; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2) | I286_CLOCK(2) |
| Line 74 I286_F6 _inc_ea16(DWORD op) { | Line 74 I286_F6 _inc_ea16(DWORD op) { |
| I286_CLOCK(7) | I286_CLOCK(7) |
| madr = c_calc_ea_dst[op](); | madr = c_calc_ea_dst[op](); |
| if (INHIBIT_WORDP(madr)) { | if (INHIBIT_WORDP(madr)) { |
| WORD value = i286_memoryread_w(madr); | UINT16 value = i286_memoryread_w(madr); |
| WORD_INC(value) | WORD_INC(value) |
| i286_memorywrite_w(madr, value); | i286_memorywrite_w(madr, value); |
| return; | return; |
| } | } |
| out = (WORD *)(mem + madr); | out = (UINT16 *)(mem + madr); |
| } | } |
| WORD_INC(*out) | WORD_INC(*out) |
| } | } |
| I286_F6 _dec_ea16(DWORD op) { | I286_F6 _dec_ea16(UINT op) { |
| DWORD madr; | UINT32 madr; |
| WORD *out; | UINT16 *out; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2) | I286_CLOCK(2) |
| Line 97 I286_F6 _dec_ea16(DWORD op) { | Line 97 I286_F6 _dec_ea16(DWORD op) { |
| I286_CLOCK(7) | I286_CLOCK(7) |
| madr = c_calc_ea_dst[op](); | madr = c_calc_ea_dst[op](); |
| if (INHIBIT_WORDP(madr)) { | if (INHIBIT_WORDP(madr)) { |
| WORD value = i286_memoryread_w(madr); | UINT16 value = i286_memoryread_w(madr); |
| WORD_DEC(value) | WORD_DEC(value) |
| i286_memorywrite_w(madr, value); | i286_memorywrite_w(madr, value); |
| return; | return; |
| } | } |
| out = (WORD *)(mem + madr); | out = (UINT16 *)(mem + madr); |
| } | } |
| WORD_DEC(*out) | WORD_DEC(*out) |
| } | } |
| I286_F6 _call_ea16(DWORD op) { | I286_F6 _call_ea16(UINT op) { |
| WORD src; | UINT16 src; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(7) | I286_CLOCK(7) |
| Line 123 I286_F6 _call_ea16(DWORD op) { | Line 123 I286_F6 _call_ea16(DWORD op) { |
| I286_IP = src; | I286_IP = src; |
| } | } |
| I286_F6 _call_far_ea16(DWORD op) { | I286_F6 _call_far_ea16(UINT op) { |
| I286_CLOCK(16) | I286_CLOCK(16) |
| if (op < 0xc0) { | if (op < 0xc0) { |
| WORD ad = c_get_ea[op](); | UINT16 ad = c_get_ea[op](); |
| REGPUSH0(I286_CS) // ToDo | REGPUSH0(I286_CS) // ToDo |
| REGPUSH0(I286_IP) | REGPUSH0(I286_IP) |
| I286_IP = i286_memoryread_w(ad + EA_FIX); | I286_IP = i286_memoryread_w(ad + EA_FIX); |
| ad += 2; | ad += 2; |
| I286_CS = i286_memoryread_w(ad + EA_FIX); | I286_CS = i286_memoryread_w(ad + EA_FIX); |
| CS_BASE = (DWORD)I286_CS << 4; | CS_BASE = I286_CS << 4; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP - 2); | INT_NUM(6, I286_IP - 2); |
| } | } |
| } | } |
| I286_F6 _jmp_ea16(DWORD op) { | I286_F6 _jmp_ea16(UINT op) { |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(7) | I286_CLOCK(7) |
| Line 152 I286_F6 _jmp_ea16(DWORD op) { | Line 152 I286_F6 _jmp_ea16(DWORD op) { |
| } | } |
| } | } |
| I286_F6 _jmp_far_ea16(DWORD op) { | I286_F6 _jmp_far_ea16(UINT op) { |
| I286_CLOCK(11) | I286_CLOCK(11) |
| if (op < 0xc0) { | if (op < 0xc0) { |
| WORD ad = c_get_ea[op](); | UINT16 ad = c_get_ea[op](); |
| I286_IP = i286_memoryread_w(ad + EA_FIX); | I286_IP = i286_memoryread_w(ad + EA_FIX); |
| ad += 2; | ad += 2; |
| I286_CS = i286_memoryread_w(ad + EA_FIX); | I286_CS = i286_memoryread_w(ad + EA_FIX); |
| CS_BASE = (DWORD)I286_CS << 4; | CS_BASE = I286_CS << 4; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP - 2); | INT_NUM(6, I286_IP - 2); |
| } | } |
| } | } |
| I286_F6 _push_ea16(DWORD op) { | I286_F6 _push_ea16(UINT op) { |
| WORD src; | UINT16 src; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(3) | I286_CLOCK(3) |
| Line 182 I286_F6 _push_ea16(DWORD op) { | Line 182 I286_F6 _push_ea16(DWORD op) { |
| REGPUSH0(src); | REGPUSH0(src); |
| } | } |
| I286_F6 _pop_ea16(DWORD op) { | I286_F6 _pop_ea16(UINT op) { |
| WORD src; | UINT16 src; |
| REGPOP0(src); | REGPOP0(src); |
| I286_CLOCK(5) | I286_CLOCK(5) |