--- np2/i286c/i286c_f6.c 2003/11/29 00:36:00 1.8 +++ np2/i286c/i286c_f6.c 2003/12/17 14:26:27 1.14 @@ -1,7 +1,6 @@ #include "compiler.h" -#include "i286.h" +#include "cpucore.h" #include "i286c.h" -#include "memory.h" #include "i286c.mcr" @@ -47,7 +46,7 @@ I286_F6 _not_ea8(UINT op) { I286_F6 _neg_ea8(UINT op) { - BYTE *out; + UINT8 *out; UINT src; UINT dst; UINT32 madr; @@ -61,15 +60,15 @@ I286_F6 _neg_ea8(UINT op) { madr = CALC_EA(op); if (madr >= I286_MEMWRITEMAX) { src = i286_memoryread(madr); - BYTE_NEG(dst, src) - i286_memorywrite(madr, (BYTE)dst); + NEGBYTE(dst, src) + i286_memorywrite(madr, (REG8)dst); return; } out = mem + madr; } src = *out; - BYTE_NEG(dst, src) - *out = (BYTE)dst; + NEGBYTE(dst, src) + *out = (UINT8)dst; } I286_F6 _mul_ea8(UINT op) { @@ -114,15 +113,15 @@ I286_F6 _div_ea8(UINT op) { ip = I286_IP; if (op >= 0xc0) { - I286_WORKCLOCK(2); + I286_WORKCLOCK(14); src = *(REG8_B20(op)); } else { - I286_WORKCLOCK(7); + I286_WORKCLOCK(17); src = i286_memoryread(CALC_EA(op)); } tmp = I286_AX; - if (tmp < ((UINT16)src << 8)) { + if ((src) && (tmp < ((UINT16)src << 8))) { I286_AL = tmp / src; I286_AH = tmp % src; } @@ -134,7 +133,7 @@ I286_F6 _div_ea8(UINT op) { I286_F6 _idiv_ea8(UINT op) { SINT16 tmp, r; - char src; + SINT8 src; UINT16 ip; ip = I286_IP; @@ -143,14 +142,14 @@ I286_F6 _idiv_ea8(UINT op) { src = *(REG8_B20(op)); } else { - I286_WORKCLOCK(25); + I286_WORKCLOCK(20); src = i286_memoryread(CALC_EA(op)); } tmp = (SINT16)I286_AX; if (src) { r = tmp / src; if (!((r + 0x80) & 0xff00)) { - I286_AL = (char)r; + I286_AL = r; I286_AH = tmp % src; return; } @@ -214,14 +213,14 @@ I286_F6 _neg_ea16(UINT op) { madr = CALC_EA(op); if (INHIBIT_WORDP(madr)) { src = i286_memoryread_w(madr); - WORD_NEG(dst, src) + NEGWORD(dst, src) i286_memorywrite_w(madr, (REG16)dst); return; } out = (UINT16 *)(mem + madr); } src = *out; - WORD_NEG(dst, src) + NEGWORD(dst, src) *out = (UINT16)dst; } @@ -269,7 +268,7 @@ I286_F6 _div_ea16(UINT op) { ip = I286_IP; if (op >= 0xc0) { - I286_WORKCLOCK(17); + I286_WORKCLOCK(22); src = *(REG16_B20(op)); } else { @@ -277,9 +276,9 @@ I286_F6 _div_ea16(UINT op) { src = i286_memoryread_w(CALC_EA(op)); } tmp = (I286_DX << 16) + I286_AX; - if (tmp < (src << 16)) { - I286_AX = (SINT16)(tmp / src); - I286_DX = (SINT16)(tmp % src); + if ((src) && (tmp < (src << 16))) { + I286_AX = tmp / src; + I286_DX = tmp % src; } else { INT_NUM(0, ip - 2); // 80x86 @@ -295,11 +294,11 @@ I286_F6 _idiv_ea16(UINT op) { ip = I286_IP; if (op >= 0xc0) { - I286_WORKCLOCK(17); + I286_WORKCLOCK(25); src = *(REG16_B20(op)); } else { - I286_WORKCLOCK(25); + I286_WORKCLOCK(28); src = i286_memoryread_w(CALC_EA(op)); } tmp = (SINT32)((I286_DX << 16) + I286_AX);