|
|
| version 1.2, 2003/10/17 11:10:02 | version 1.6, 2003/12/08 00:55:31 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "i286.h" | #include "cpucore.h" |
| #include "i286c.h" | #include "i286c.h" |
| #include "i286c.mcr" | |
| #include "memory.h" | #include "memory.h" |
| #include "nevent.h" | #include "i286c.mcr" |
| // -------------------------------------------------------- opecode 0x80,1,2,3 | // -------------------------------------------------------- opecode 0x80,1,2,3 |
| Line 25 I286_8X _add_r8_i(BYTE *p) { | Line 24 I286_8X _add_r8_i(BYTE *p) { |
| I286_8X _or_r8_i(BYTE *p) { | I286_8X _or_r8_i(BYTE *p) { |
| UINT src; | UINT src; |
| UINT dst; | |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| ORBYTE((*p), src); | dst = *p; |
| ORBYTE(dst, src); | |
| *p = (BYTE)dst; | |
| } | } |
| I286_8X _adc_r8_i(BYTE *p) { | I286_8X _adc_r8_i(BYTE *p) { |
| Line 57 I286_8X _sbb_r8_i(BYTE *p) { | Line 59 I286_8X _sbb_r8_i(BYTE *p) { |
| I286_8X _and_r8_i(BYTE *p) { | I286_8X _and_r8_i(BYTE *p) { |
| UINT src; | UINT src; |
| UINT dst; | |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| ANDBYTE((*p), src); | dst = *p; |
| ANDBYTE(dst, src); | |
| *p = (BYTE)dst; | |
| } | } |
| I286_8X _sub_r8_i(BYTE *p) { | I286_8X _sub_r8_i(BYTE *p) { |
| Line 70 I286_8X _sub_r8_i(BYTE *p) { | Line 75 I286_8X _sub_r8_i(BYTE *p) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = *p; | dst = *p; |
| BYTE_SUB(res, dst, src); | SUBBYTE(res, dst, src); |
| *p = (BYTE)res; | *p = (BYTE)res; |
| } | } |
| I286_8X _xor_r8_i(BYTE *p) { | I286_8X _xor_r8_i(BYTE *p) { |
| UINT src; | UINT src; |
| UINT dst; | |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| BYTE_XOR((*p), src); | dst = *p; |
| XORBYTE(dst, src); | |
| *p = (BYTE)dst; | |
| } | } |
| I286_8X _cmp_r8_i(BYTE *p) { | I286_8X _cmp_r8_i(BYTE *p) { |
| Line 90 I286_8X _cmp_r8_i(BYTE *p) { | Line 98 I286_8X _cmp_r8_i(BYTE *p) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = *p; | dst = *p; |
| BYTE_SUB(res, dst, src); | SUBBYTE(res, dst, src); |
| } | } |
| Line 105 I286_8X _add_ext8_i(UINT32 madr) { | Line 113 I286_8X _add_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| ADDBYTE(res, dst, src); | ADDBYTE(res, dst, src); |
| i286_memorywrite(madr, (BYTE)res); | i286_memorywrite(madr, (REG8)res); |
| } | } |
| I286_8X _or_ext8_i(UINT32 madr) { | I286_8X _or_ext8_i(UINT32 madr) { |
| Line 116 I286_8X _or_ext8_i(UINT32 madr) { | Line 124 I286_8X _or_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| ORBYTE(dst, src); | ORBYTE(dst, src); |
| i286_memorywrite(madr, (BYTE)dst); | i286_memorywrite(madr, (REG8)dst); |
| } | } |
| I286_8X _adc_ext8_i(UINT32 madr) { | I286_8X _adc_ext8_i(UINT32 madr) { |
| Line 128 I286_8X _adc_ext8_i(UINT32 madr) { | Line 136 I286_8X _adc_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| ADCBYTE(res, dst, src); | ADCBYTE(res, dst, src); |
| i286_memorywrite(madr, (BYTE)res); | i286_memorywrite(madr, (REG8)res); |
| } | } |
| I286_8X _sbb_ext8_i(UINT32 madr) { | I286_8X _sbb_ext8_i(UINT32 madr) { |
| Line 140 I286_8X _sbb_ext8_i(UINT32 madr) { | Line 148 I286_8X _sbb_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| SBBBYTE(res, dst, src); | SBBBYTE(res, dst, src); |
| i286_memorywrite(madr, (BYTE)res); | i286_memorywrite(madr, (REG8)res); |
| } | } |
| I286_8X _and_ext8_i(UINT32 madr) { | I286_8X _and_ext8_i(UINT32 madr) { |
| Line 151 I286_8X _and_ext8_i(UINT32 madr) { | Line 159 I286_8X _and_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| ANDBYTE(dst, src); | ANDBYTE(dst, src); |
| i286_memorywrite(madr, (BYTE)dst); | i286_memorywrite(madr, (REG8)dst); |
| } | } |
| I286_8X _sub_ext8_i(UINT32 madr) { | I286_8X _sub_ext8_i(UINT32 madr) { |
| Line 162 I286_8X _sub_ext8_i(UINT32 madr) { | Line 170 I286_8X _sub_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| BYTE_SUB(res, dst, src); | SUBBYTE(res, dst, src); |
| i286_memorywrite(madr, (BYTE)res); | i286_memorywrite(madr, (REG8)res); |
| } | } |
| I286_8X _xor_ext8_i(UINT32 madr) { | I286_8X _xor_ext8_i(UINT32 madr) { |
| Line 173 I286_8X _xor_ext8_i(UINT32 madr) { | Line 181 I286_8X _xor_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| BYTE_XOR(dst, src); | XORBYTE(dst, src); |
| i286_memorywrite(madr, (BYTE)dst); | i286_memorywrite(madr, (REG8)dst); |
| } | } |
| I286_8X _cmp_ext8_i(UINT32 madr) { | I286_8X _cmp_ext8_i(UINT32 madr) { |
| Line 185 I286_8X _cmp_ext8_i(UINT32 madr) { | Line 193 I286_8X _cmp_ext8_i(UINT32 madr) { |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| dst = i286_memoryread(madr); | dst = i286_memoryread(madr); |
| BYTE_SUB(res, dst, src); | SUBBYTE(res, dst, src); |
| } | } |
| Line 213 I286_8X _add_r16_i(UINT16 *p, UINT32 src | Line 221 I286_8X _add_r16_i(UINT16 *p, UINT32 src |
| I286_8X _or_r16_i(UINT16 *p, UINT32 src) { | I286_8X _or_r16_i(UINT16 *p, UINT32 src) { |
| ORWORD((*p), src); | UINT32 dst; |
| dst = *p; | |
| ORWORD(dst, src); | |
| *p = (UINT16)dst; | |
| } | } |
| I286_8X _adc_r16_i(UINT16 *p, UINT32 src) { | I286_8X _adc_r16_i(UINT16 *p, UINT32 src) { |
| Line 238 I286_8X _sbb_r16_i(UINT16 *p, UINT32 src | Line 250 I286_8X _sbb_r16_i(UINT16 *p, UINT32 src |
| I286_8X _and_r16_i(UINT16 *p, UINT32 src) { | I286_8X _and_r16_i(UINT16 *p, UINT32 src) { |
| ANDWORD((*p), src); | UINT32 dst; |
| dst = *p; | |
| ANDWORD(dst, src); | |
| *p = (UINT16)dst; | |
| } | } |
| I286_8X _sub_r16_i(UINT16 *p, UINT32 src) { | I286_8X _sub_r16_i(UINT16 *p, UINT32 src) { |
| Line 247 I286_8X _sub_r16_i(UINT16 *p, UINT32 src | Line 263 I286_8X _sub_r16_i(UINT16 *p, UINT32 src |
| UINT32 res; | UINT32 res; |
| dst = *p; | dst = *p; |
| WORD_SUB(res, dst, src); | SUBWORD(res, dst, src); |
| *p = (UINT16)res; | *p = (UINT16)res; |
| } | } |
| I286_8X _xor_r16_i(UINT16 *p, UINT32 src) { | I286_8X _xor_r16_i(UINT16 *p, UINT32 src) { |
| WORD_XOR((*p), src); | UINT32 dst; |
| dst = *p; | |
| XORWORD(dst, src); | |
| *p = (UINT16)dst; | |
| } | } |
| I286_8X _cmp_r16_i(UINT16 *p, UINT32 src) { | I286_8X _cmp_r16_i(UINT16 *p, UINT32 src) { |
| Line 262 I286_8X _cmp_r16_i(UINT16 *p, UINT32 src | Line 282 I286_8X _cmp_r16_i(UINT16 *p, UINT32 src |
| UINT32 res; | UINT32 res; |
| dst = *p; | dst = *p; |
| WORD_SUB(res, dst, src); | SUBWORD(res, dst, src); |
| } | } |
| Line 275 I286_8X _add_ext16_i(UINT32 madr, UINT32 | Line 295 I286_8X _add_ext16_i(UINT32 madr, UINT32 |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| ADDWORD(res, dst, src); | ADDWORD(res, dst, src); |
| i286_memorywrite_w(madr, (UINT16)res); | i286_memorywrite_w(madr, (REG16)res); |
| } | } |
| I286_8X _or_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _or_ext16_i(UINT32 madr, UINT32 src) { |
| Line 284 I286_8X _or_ext16_i(UINT32 madr, UINT32 | Line 304 I286_8X _or_ext16_i(UINT32 madr, UINT32 |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| ORWORD(dst, src); | ORWORD(dst, src); |
| i286_memorywrite_w(madr, (UINT16)dst); | i286_memorywrite_w(madr, (REG16)dst); |
| } | } |
| I286_8X _adc_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _adc_ext16_i(UINT32 madr, UINT32 src) { |
| Line 294 I286_8X _adc_ext16_i(UINT32 madr, UINT32 | Line 314 I286_8X _adc_ext16_i(UINT32 madr, UINT32 |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| ADCWORD(res, dst, src); | ADCWORD(res, dst, src); |
| i286_memorywrite_w(madr, (UINT16)res); | i286_memorywrite_w(madr, (REG16)res); |
| } | } |
| I286_8X _sbb_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _sbb_ext16_i(UINT32 madr, UINT32 src) { |
| Line 304 I286_8X _sbb_ext16_i(UINT32 madr, UINT32 | Line 324 I286_8X _sbb_ext16_i(UINT32 madr, UINT32 |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| SBBWORD(res, dst, src); | SBBWORD(res, dst, src); |
| i286_memorywrite_w(madr, (UINT16)res); | i286_memorywrite_w(madr, (REG16)res); |
| } | } |
| I286_8X _and_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _and_ext16_i(UINT32 madr, UINT32 src) { |
| Line 313 I286_8X _and_ext16_i(UINT32 madr, UINT32 | Line 333 I286_8X _and_ext16_i(UINT32 madr, UINT32 |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| ANDWORD(dst, src); | ANDWORD(dst, src); |
| i286_memorywrite_w(madr, (UINT16)dst); | i286_memorywrite_w(madr, (REG16)dst); |
| } | } |
| I286_8X _sub_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _sub_ext16_i(UINT32 madr, UINT32 src) { |
| Line 322 I286_8X _sub_ext16_i(UINT32 madr, UINT32 | Line 342 I286_8X _sub_ext16_i(UINT32 madr, UINT32 |
| UINT32 res; | UINT32 res; |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| WORD_SUB(res, dst, src); | SUBWORD(res, dst, src); |
| i286_memorywrite_w(madr, (UINT16)res); | i286_memorywrite_w(madr, (REG16)res); |
| } | } |
| I286_8X _xor_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _xor_ext16_i(UINT32 madr, UINT32 src) { |
| Line 331 I286_8X _xor_ext16_i(UINT32 madr, UINT32 | Line 351 I286_8X _xor_ext16_i(UINT32 madr, UINT32 |
| UINT32 dst; | UINT32 dst; |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| WORD_XOR(dst, src); | XORWORD(dst, src); |
| i286_memorywrite_w(madr, (UINT16)dst); | i286_memorywrite_w(madr, (REG16)dst); |
| } | } |
| I286_8X _cmp_ext16_i(UINT32 madr, UINT32 src) { | I286_8X _cmp_ext16_i(UINT32 madr, UINT32 src) { |
| Line 341 I286_8X _cmp_ext16_i(UINT32 madr, UINT32 | Line 361 I286_8X _cmp_ext16_i(UINT32 madr, UINT32 |
| UINT32 res; | UINT32 res; |
| dst = i286_memoryread_w(madr); | dst = i286_memoryread_w(madr); |
| WORD_SUB(res, dst, src); | SUBWORD(res, dst, src); |
| } | } |