|
|
| version 1.7, 2003/11/24 09:14:01 | version 1.10, 2003/12/04 13:54:28 |
|---|---|
| Line 36 I286_F6 _not_ea8(UINT op) { | Line 36 I286_F6 _not_ea8(UINT op) { |
| I286_WORKCLOCK(7); | I286_WORKCLOCK(7); |
| madr = CALC_EA(op); | madr = CALC_EA(op); |
| if (madr >= I286_MEMWRITEMAX) { | if (madr >= I286_MEMWRITEMAX) { |
| BYTE value = i286_memoryread(madr); | REG8 value = i286_memoryread(madr); |
| value = ~value; | value ^= 0xff; |
| i286_memorywrite(madr, value); | i286_memorywrite(madr, value); |
| return; | return; |
| } | } |
| Line 61 I286_F6 _neg_ea8(UINT op) { | Line 61 I286_F6 _neg_ea8(UINT op) { |
| madr = CALC_EA(op); | madr = CALC_EA(op); |
| if (madr >= I286_MEMWRITEMAX) { | if (madr >= I286_MEMWRITEMAX) { |
| src = i286_memoryread(madr); | src = i286_memoryread(madr); |
| BYTE_NEG(dst, src) | NEGBYTE(dst, src) |
| i286_memorywrite(madr, (BYTE)dst); | i286_memorywrite(madr, (BYTE)dst); |
| return; | return; |
| } | } |
| out = mem + madr; | out = mem + madr; |
| } | } |
| src = *out; | src = *out; |
| BYTE_NEG(dst, src) | NEGBYTE(dst, src) |
| *out = (BYTE)dst; | *out = (BYTE)dst; |
| } | } |
| Line 114 I286_F6 _div_ea8(UINT op) { | Line 114 I286_F6 _div_ea8(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_WORKCLOCK(2); | I286_WORKCLOCK(14); |
| src = *(REG8_B20(op)); | src = *(REG8_B20(op)); |
| } | } |
| else { | else { |
| I286_WORKCLOCK(7); | I286_WORKCLOCK(17); |
| src = i286_memoryread(CALC_EA(op)); | src = i286_memoryread(CALC_EA(op)); |
| } | } |
| tmp = I286_AX; | tmp = I286_AX; |
| if (tmp < ((UINT16)src << 8)) { | if ((src) && (tmp < ((UINT16)src << 8))) { |
| I286_AL = tmp / src; | I286_AL = tmp / src; |
| I286_AH = tmp % src; | I286_AH = tmp % src; |
| } | } |
| Line 143 I286_F6 _idiv_ea8(UINT op) { | Line 143 I286_F6 _idiv_ea8(UINT op) { |
| src = *(REG8_B20(op)); | src = *(REG8_B20(op)); |
| } | } |
| else { | else { |
| I286_WORKCLOCK(25); | I286_WORKCLOCK(20); |
| src = i286_memoryread(CALC_EA(op)); | src = i286_memoryread(CALC_EA(op)); |
| } | } |
| tmp = (SINT16)I286_AX; | tmp = (SINT16)I286_AX; |
| Line 191 I286_F6 _not_ea16(UINT op) { | Line 191 I286_F6 _not_ea16(UINT op) { |
| *(mem + madr) ^= 0xffff; | *(mem + madr) ^= 0xffff; |
| } | } |
| else { | else { |
| UINT16 value = i286_memoryread_w(madr); | REG16 value = i286_memoryread_w(madr); |
| value = ~value; | value = ~value; |
| i286_memorywrite_w(madr, value); | i286_memorywrite_w(madr, value); |
| } | } |
| Line 214 I286_F6 _neg_ea16(UINT op) { | Line 214 I286_F6 _neg_ea16(UINT op) { |
| madr = CALC_EA(op); | madr = CALC_EA(op); |
| if (INHIBIT_WORDP(madr)) { | if (INHIBIT_WORDP(madr)) { |
| src = i286_memoryread_w(madr); | src = i286_memoryread_w(madr); |
| WORD_NEG(dst, src) | NEGWORD(dst, src) |
| i286_memorywrite_w(madr, (UINT16)dst); | i286_memorywrite_w(madr, (REG16)dst); |
| return; | return; |
| } | } |
| out = (UINT16 *)(mem + madr); | out = (UINT16 *)(mem + madr); |
| } | } |
| src = *out; | src = *out; |
| WORD_NEG(dst, src) | NEGWORD(dst, src) |
| *out = (UINT16)dst; | *out = (UINT16)dst; |
| } | } |
| Line 269 I286_F6 _div_ea16(UINT op) { | Line 269 I286_F6 _div_ea16(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_WORKCLOCK(17); | I286_WORKCLOCK(22); |
| src = *(REG16_B20(op)); | src = *(REG16_B20(op)); |
| } | } |
| else { | else { |
| Line 277 I286_F6 _div_ea16(UINT op) { | Line 277 I286_F6 _div_ea16(UINT op) { |
| src = i286_memoryread_w(CALC_EA(op)); | src = i286_memoryread_w(CALC_EA(op)); |
| } | } |
| tmp = (I286_DX << 16) + I286_AX; | tmp = (I286_DX << 16) + I286_AX; |
| if (tmp < (src << 16)) { | if ((src) && (tmp < (src << 16))) { |
| I286_AX = (SINT16)(tmp / src); | I286_AX = (SINT16)(tmp / src); |
| I286_DX = (SINT16)(tmp % src); | I286_DX = (SINT16)(tmp % src); |
| } | } |
| Line 295 I286_F6 _idiv_ea16(UINT op) { | Line 295 I286_F6 _idiv_ea16(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_WORKCLOCK(17); | I286_WORKCLOCK(25); |
| src = *(REG16_B20(op)); | src = *(REG16_B20(op)); |
| } | } |
| else { | else { |
| I286_WORKCLOCK(25); | I286_WORKCLOCK(28); |
| src = i286_memoryread_w(CALC_EA(op)); | src = i286_memoryread_w(CALC_EA(op)); |
| } | } |
| tmp = (SINT32)((I286_DX << 16) + I286_AX); | tmp = (SINT32)((I286_DX << 16) + I286_AX); |