--- np2/i286c/i286c_8x.c 2003/10/16 17:57:43 1.1 +++ np2/i286c/i286c_8x.c 2003/11/29 03:38:26 1.5 @@ -1,9 +1,8 @@ #include "compiler.h" #include "i286.h" #include "i286c.h" -#include "i286c.mcr" #include "memory.h" -#include "nevent.h" +#include "i286c.mcr" // -------------------------------------------------------- opecode 0x80,1,2,3 @@ -12,7 +11,9 @@ I286_8X _add_r8_i(BYTE *p) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; GET_PCBYTE(src) dst = *p; @@ -22,15 +23,20 @@ I286_8X _add_r8_i(BYTE *p) { I286_8X _or_r8_i(BYTE *p) { - DWORD src; + 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) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; GET_PCBYTE(src) dst = *p; @@ -40,7 +46,9 @@ I286_8X _adc_r8_i(BYTE *p) { I286_8X _sbb_r8_i(BYTE *p) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; GET_PCBYTE(src) dst = *p; @@ -50,119 +58,142 @@ I286_8X _sbb_r8_i(BYTE *p) { I286_8X _and_r8_i(BYTE *p) { - DWORD src; + 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) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; GET_PCBYTE(src) dst = *p; - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); *p = (BYTE)res; } I286_8X _xor_r8_i(BYTE *p) { - DWORD src; + 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) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; GET_PCBYTE(src) dst = *p; - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); } // ----- ext8 -I286_8X _add_ext8_i(DWORD madr) { +I286_8X _add_ext8_i(UINT32 madr) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; 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(DWORD madr) { +I286_8X _or_ext8_i(UINT32 madr) { - DWORD src, dst; + UINT src; + UINT dst; 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(DWORD madr) { +I286_8X _adc_ext8_i(UINT32 madr) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; 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(DWORD madr) { +I286_8X _sbb_ext8_i(UINT32 madr) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; 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(DWORD madr) { +I286_8X _and_ext8_i(UINT32 madr) { - DWORD src, dst; + UINT src; + UINT dst; 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(DWORD madr) { +I286_8X _sub_ext8_i(UINT32 madr) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; 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(DWORD madr) { +I286_8X _xor_ext8_i(UINT32 madr) { - DWORD src, dst; + UINT src; + UINT dst; 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(DWORD madr) { +I286_8X _cmp_ext8_i(UINT32 madr) { - DWORD src, dst, res; + UINT src; + UINT dst; + UINT res; GET_PCBYTE(src) dst = i286_memoryread(madr); - BYTE_SUB(res, dst, src); + SUBBYTE(res, dst, src); } @@ -178,136 +209,159 @@ const I286OP8XEXT8 c_op8xext8_table[] = // ----- reg16 -I286_8X _add_r16_i(WORD *p, DWORD src) { +I286_8X _add_r16_i(UINT16 *p, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = *p; ADDWORD(res, dst, src); - *p = (WORD)res; + *p = (UINT16)res; } -I286_8X _or_r16_i(WORD *p, DWORD src) { +I286_8X _or_r16_i(UINT16 *p, UINT32 src) { + + UINT32 dst; - ORWORD((*p), src); + dst = *p; + ORWORD(dst, src); + *p = (UINT16)dst; } -I286_8X _adc_r16_i(WORD *p, DWORD src) { +I286_8X _adc_r16_i(UINT16 *p, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = *p; ADCWORD(res, dst, src); - *p = (WORD)res; + *p = (UINT16)res; } -I286_8X _sbb_r16_i(WORD *p, DWORD src) { +I286_8X _sbb_r16_i(UINT16 *p, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = *p; SBBWORD(res, dst, src); - *p = (WORD)res; + *p = (UINT16)res; } -I286_8X _and_r16_i(WORD *p, DWORD 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(WORD *p, DWORD src) { +I286_8X _sub_r16_i(UINT16 *p, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = *p; - WORD_SUB(res, dst, src); - *p = (WORD)res; + SUBWORD(res, dst, src); + *p = (UINT16)res; } -I286_8X _xor_r16_i(WORD *p, DWORD src) { +I286_8X _xor_r16_i(UINT16 *p, UINT32 src) { + + UINT32 dst; - WORD_XOR((*p), src); + dst = *p; + XORWORD(dst, src); + *p = (UINT16)dst; } -I286_8X _cmp_r16_i(WORD *p, DWORD src) { +I286_8X _cmp_r16_i(UINT16 *p, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = *p; - WORD_SUB(res, dst, src); + SUBWORD(res, dst, src); } + // ----- ext16 -I286_8X _add_ext16_i(DWORD madr, DWORD src) { +I286_8X _add_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = i286_memoryread_w(madr); ADDWORD(res, dst, src); - i286_memorywrite_w(madr, (WORD)res); + i286_memorywrite_w(madr, (REG16)res); } -I286_8X _or_ext16_i(DWORD madr, DWORD src) { +I286_8X _or_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst; + UINT32 dst; dst = i286_memoryread_w(madr); ORWORD(dst, src); - i286_memorywrite_w(madr, (WORD)dst); + i286_memorywrite_w(madr, (REG16)dst); } -I286_8X _adc_ext16_i(DWORD madr, DWORD src) { +I286_8X _adc_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = i286_memoryread_w(madr); ADCWORD(res, dst, src); - i286_memorywrite_w(madr, (WORD)res); + i286_memorywrite_w(madr, (REG16)res); } -I286_8X _sbb_ext16_i(DWORD madr, DWORD src) { +I286_8X _sbb_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = i286_memoryread_w(madr); SBBWORD(res, dst, src); - i286_memorywrite_w(madr, (WORD)res); + i286_memorywrite_w(madr, (REG16)res); } -I286_8X _and_ext16_i(DWORD madr, DWORD src) { +I286_8X _and_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst; + UINT32 dst; dst = i286_memoryread_w(madr); ANDWORD(dst, src); - i286_memorywrite_w(madr, (WORD)dst); + i286_memorywrite_w(madr, (REG16)dst); } -I286_8X _sub_ext16_i(DWORD madr, DWORD src) { +I286_8X _sub_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = i286_memoryread_w(madr); - WORD_SUB(res, dst, src); - i286_memorywrite_w(madr, (WORD)res); + SUBWORD(res, dst, src); + i286_memorywrite_w(madr, (REG16)res); } -I286_8X _xor_ext16_i(DWORD madr, DWORD src) { +I286_8X _xor_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst; + UINT32 dst; dst = i286_memoryread_w(madr); - WORD_XOR(dst, src); - i286_memorywrite_w(madr, (WORD)dst); + XORWORD(dst, src); + i286_memorywrite_w(madr, (REG16)dst); } -I286_8X _cmp_ext16_i(DWORD madr, DWORD src) { +I286_8X _cmp_ext16_i(UINT32 madr, UINT32 src) { - DWORD dst, res; + UINT32 dst; + UINT32 res; dst = i286_memoryread_w(madr); - WORD_SUB(res, dst, src); + SUBWORD(res, dst, src); }