--- np2/i286c/i286c_8x.c 2003/10/21 11:22:05 1.3 +++ np2/i286c/i286c_8x.c 2005/02/07 14:46:10 1.8 @@ -1,7 +1,6 @@ #include "compiler.h" -#include "i286.h" +#include "cpucore.h" #include "i286c.h" -#include "memory.h" #include "i286c.mcr" @@ -9,7 +8,7 @@ // ----- reg8 -I286_8X _add_r8_i(BYTE *p) { +I286_8X _add_r8_i(UINT8 *p) { UINT src; UINT dst; @@ -18,18 +17,21 @@ I286_8X _add_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; ADDBYTE(res, dst, src); - *p = (BYTE)res; + *p = (UINT8)res; } -I286_8X _or_r8_i(BYTE *p) { +I286_8X _or_r8_i(UINT8 *p) { UINT src; + UINT dst; GET_PCBYTE(src) - ORBYTE((*p), src); + dst = *p; + ORBYTE(dst, src); + *p = (UINT8)dst; } -I286_8X _adc_r8_i(BYTE *p) { +I286_8X _adc_r8_i(UINT8 *p) { UINT src; UINT dst; @@ -38,10 +40,10 @@ I286_8X _adc_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; ADCBYTE(res, dst, src); - *p = (BYTE)res; + *p = (UINT8)res; } -I286_8X _sbb_r8_i(BYTE *p) { +I286_8X _sbb_r8_i(UINT8 *p) { UINT src; UINT dst; @@ -50,18 +52,21 @@ I286_8X _sbb_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; SBBBYTE(res, dst, src); - *p = (BYTE)res; + *p = (UINT8)res; } -I286_8X _and_r8_i(BYTE *p) { +I286_8X _and_r8_i(UINT8 *p) { UINT src; + UINT dst; GET_PCBYTE(src) - ANDBYTE((*p), src); + dst = *p; + ANDBYTE(dst, src); + *p = (UINT8)dst; } -I286_8X _sub_r8_i(BYTE *p) { +I286_8X _sub_r8_i(UINT8 *p) { UINT src; UINT dst; @@ -69,19 +74,22 @@ I286_8X _sub_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; - BYTE_SUB(res, dst, src); - *p = (BYTE)res; + SUBBYTE(res, dst, src); + *p = (UINT8)res; } -I286_8X _xor_r8_i(BYTE *p) { +I286_8X _xor_r8_i(UINT8 *p) { UINT src; + UINT dst; GET_PCBYTE(src) - BYTE_XOR((*p), src); + dst = *p; + XORBYTE(dst, src); + *p = (UINT8)dst; } -I286_8X _cmp_r8_i(BYTE *p) { +I286_8X _cmp_r8_i(UINT8 *p) { UINT src; UINT dst; @@ -89,7 +97,7 @@ I286_8X _cmp_r8_i(BYTE *p) { GET_PCBYTE(src) dst = *p; - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); } @@ -104,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) { @@ -115,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) { @@ -127,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) { @@ -139,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) { @@ -150,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) { @@ -161,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) { @@ -172,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) { @@ -184,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); } @@ -212,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) { @@ -237,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) { @@ -246,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) { @@ -261,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); } @@ -274,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) { @@ -283,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) { @@ -293,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) { @@ -303,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) { @@ -312,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) { @@ -321,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) { @@ -330,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) { @@ -340,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); }