|
|
| version 1.11, 2003/12/08 00:55:31 | version 1.14, 2004/02/18 18:29:29 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "cpucore.h" | #include "cpucore.h" |
| #include "i286c.h" | #include "i286c.h" |
| #include "memory.h" | |
| #include "i286c.mcr" | #include "i286c.mcr" |
| Line 17 I286_F6 _nop_int(UINT op) { | Line 16 I286_F6 _nop_int(UINT op) { |
| I286_F6 _inc_ea8(UINT op) { | I286_F6 _inc_ea8(UINT op) { |
| UINT32 madr; | UINT32 madr; |
| BYTE *out; | UINT8 *out; |
| REG8 res; | REG8 res; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| Line 37 I286_F6 _inc_ea8(UINT op) { | Line 36 I286_F6 _inc_ea8(UINT op) { |
| } | } |
| res = *out; | res = *out; |
| INCBYTE(res) | INCBYTE(res) |
| *out = (BYTE)res; | *out = (UINT8)res; |
| } | } |
| I286_F6 _dec_ea8(UINT op) { | I286_F6 _dec_ea8(UINT op) { |
| UINT32 madr; | UINT32 madr; |
| BYTE *out; | UINT8 *out; |
| REG8 res; | REG8 res; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| Line 63 I286_F6 _dec_ea8(UINT op) { | Line 62 I286_F6 _dec_ea8(UINT op) { |
| } | } |
| res = *out; | res = *out; |
| DECBYTE(res) | DECBYTE(res) |
| *out = (BYTE)res; | *out = (UINT8)res; |
| } | } |
| I286_F6 _inc_ea16(UINT op) { | I286_F6 _inc_ea16(UINT op) { |
| Line 146 I286_F6 _call_far_ea16(UINT op) { | Line 145 I286_F6 _call_far_ea16(UINT op) { |
| REGPUSH0(I286_IP) | REGPUSH0(I286_IP) |
| I286_IP = i286_memoryread_w(seg + ad); | I286_IP = i286_memoryread_w(seg + ad); |
| I286_CS = i286_memoryread_w(seg + LOW16(ad + 2)); | I286_CS = i286_memoryread_w(seg + LOW16(ad + 2)); |
| CS_BASE = I286_CS << 4; | CS_BASE = SEGSELECT(I286_CS); |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP - 2); | INT_NUM(6, I286_IP - 2); |
| Line 175 I286_F6 _jmp_far_ea16(UINT op) { | Line 174 I286_F6 _jmp_far_ea16(UINT op) { |
| ad = GET_EA(op, &seg); | ad = GET_EA(op, &seg); |
| I286_IP = i286_memoryread_w(seg + ad); | I286_IP = i286_memoryread_w(seg + ad); |
| I286_CS = i286_memoryread_w(seg + LOW16(ad + 2)); | I286_CS = i286_memoryread_w(seg + LOW16(ad + 2)); |
| CS_BASE = I286_CS << 4; | CS_BASE = SEGSELECT(I286_CS); |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP - 2); | INT_NUM(6, I286_IP - 2); |