--- np2/i286c/i286c_8x.c 2003/10/17 11:10:02 1.2 +++ np2/i286c/i286c_8x.c 2003/12/12 01:04:40 1.7 @@ -1,9 +1,7 @@ #include "compiler.h" -#include "i286.h" +#include "cpucore.h" #include "i286c.h" #include "i286c.mcr" -#include "memory.h" -#include "nevent.h" // -------------------------------------------------------- opecode 0x80,1,2,3 @@ -25,9 +23,12 @@ I286_8X _add_r8_i(BYTE *p) { I286_8X _or_r8_i(BYTE *p) { UINT src; + UINT dst; GET_PCBYTE(src) - ORBYTE((*p), src); + dst = *p; + ORBYTE(dst, src); + *p = (BYTE)dst; } I286_8X _adc_r8_i(BYTE *p) { @@ -57,9 +58,12 @@ I286_8X _sbb_r8_i(BYTE *p) { I286_8X _and_r8_i(BYTE *p) { UINT src; + UINT dst; GET_PCBYTE(src) - ANDBYTE((*p), src); + dst = *p; + ANDBYTE(dst, src); + *p = (BYTE)dst; } I286_8X _sub_r8_i(BYTE *p) { @@ -70,16 +74,19 @@ I286_8X _sub_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); *p = (BYTE)res; } I286_8X _xor_r8_i(BYTE *p) { UINT src; + UINT dst; GET_PCBYTE(src) - BYTE_XOR((*p), src); + dst = *p; + XORBYTE(dst, src); + *p = (BYTE)dst; } I286_8X _cmp_r8_i(BYTE *p) { @@ -90,7 +97,7 @@ I286_8X _cmp_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); } @@ -105,7 +112,7 @@ I286_8X _add_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); ADDBYTE(res, dst, src); - i286_memorywrite(madr, (BYTE)res); + i286_memorywrite(madr, (REG8)res); } I286_8X _or_ext8_i(UINT32 madr) { @@ -116,7 +123,7 @@ I286_8X _or_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); ORBYTE(dst, src); - i286_memorywrite(madr, (BYTE)dst); + i286_memorywrite(madr, (REG8)dst); } I286_8X _adc_ext8_i(UINT32 madr) { @@ -128,7 +135,7 @@ I286_8X _adc_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); ADCBYTE(res, dst, src); - i286_memorywrite(madr, (BYTE)res); + i286_memorywrite(madr, (REG8)res); } I286_8X _sbb_ext8_i(UINT32 madr) { @@ -140,7 +147,7 @@ I286_8X _sbb_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); SBBBYTE(res, dst, src); - i286_memorywrite(madr, (BYTE)res); + i286_memorywrite(madr, (REG8)res); } I286_8X _and_ext8_i(UINT32 madr) { @@ -151,7 +158,7 @@ I286_8X _and_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); ANDBYTE(dst, src); - i286_memorywrite(madr, (BYTE)dst); + i286_memorywrite(madr, (REG8)dst); } I286_8X _sub_ext8_i(UINT32 madr) { @@ -162,8 +169,8 @@ I286_8X _sub_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); - BYTE_SUB(res, dst, src); - i286_memorywrite(madr, (BYTE)res); + SUBBYTE(res, dst, src); + i286_memorywrite(madr, (REG8)res); } I286_8X _xor_ext8_i(UINT32 madr) { @@ -173,8 +180,8 @@ I286_8X _xor_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); - BYTE_XOR(dst, src); - i286_memorywrite(madr, (BYTE)dst); + XORBYTE(dst, src); + i286_memorywrite(madr, (REG8)dst); } I286_8X _cmp_ext8_i(UINT32 madr) { @@ -185,7 +192,7 @@ I286_8X _cmp_ext8_i(UINT32 madr) { GET_PCBYTE(src) dst = i286_memoryread(madr); - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); } @@ -213,7 +220,11 @@ I286_8X _add_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) { @@ -238,7 +249,11 @@ I286_8X _sbb_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) { @@ -247,13 +262,17 @@ I286_8X _sub_r16_i(UINT16 *p, UINT32 src UINT32 res; dst = *p; - WORD_SUB(res, dst, src); + SUBWORD(res, dst, src); *p = (UINT16)res; } 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) { @@ -262,7 +281,7 @@ I286_8X _cmp_r16_i(UINT16 *p, UINT32 src UINT32 res; dst = *p; - WORD_SUB(res, dst, src); + SUBWORD(res, dst, src); } @@ -275,7 +294,7 @@ I286_8X _add_ext16_i(UINT32 madr, UINT32 dst = i286_memoryread_w(madr); 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) { @@ -284,7 +303,7 @@ I286_8X _or_ext16_i(UINT32 madr, UINT32 dst = i286_memoryread_w(madr); ORWORD(dst, src); - i286_memorywrite_w(madr, (UINT16)dst); + i286_memorywrite_w(madr, (REG16)dst); } I286_8X _adc_ext16_i(UINT32 madr, UINT32 src) { @@ -294,7 +313,7 @@ I286_8X _adc_ext16_i(UINT32 madr, UINT32 dst = i286_memoryread_w(madr); 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) { @@ -304,7 +323,7 @@ I286_8X _sbb_ext16_i(UINT32 madr, UINT32 dst = i286_memoryread_w(madr); 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) { @@ -313,7 +332,7 @@ I286_8X _and_ext16_i(UINT32 madr, UINT32 dst = i286_memoryread_w(madr); ANDWORD(dst, src); - i286_memorywrite_w(madr, (UINT16)dst); + i286_memorywrite_w(madr, (REG16)dst); } I286_8X _sub_ext16_i(UINT32 madr, UINT32 src) { @@ -322,8 +341,8 @@ I286_8X _sub_ext16_i(UINT32 madr, UINT32 UINT32 res; dst = i286_memoryread_w(madr); - WORD_SUB(res, dst, src); - i286_memorywrite_w(madr, (UINT16)res); + SUBWORD(res, dst, src); + i286_memorywrite_w(madr, (REG16)res); } I286_8X _xor_ext16_i(UINT32 madr, UINT32 src) { @@ -331,8 +350,8 @@ I286_8X _xor_ext16_i(UINT32 madr, UINT32 UINT32 dst; dst = i286_memoryread_w(madr); - WORD_XOR(dst, src); - i286_memorywrite_w(madr, (UINT16)dst); + XORWORD(dst, src); + i286_memorywrite_w(madr, (REG16)dst); } I286_8X _cmp_ext16_i(UINT32 madr, UINT32 src) { @@ -341,7 +360,7 @@ I286_8X _cmp_ext16_i(UINT32 madr, UINT32 UINT32 res; dst = i286_memoryread_w(madr); - WORD_SUB(res, dst, src); + SUBWORD(res, dst, src); }