|
|
| version 1.3, 2003/10/17 11:10:02 | version 1.4, 2003/10/19 14:56:15 |
|---|---|
| Line 14 I286_F6 _test_ea8_data8(UINT op) { | Line 14 I286_F6 _test_ea8_data8(UINT op) { |
| UINT dst; | UINT dst; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| dst = *(reg8_b20[op]); | dst = *(reg8_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(6); | I286_WORKCLOCK(6); |
| dst = i286_memoryread(c_calc_ea_dst[op]()); | dst = i286_memoryread(c_calc_ea_dst[op]()); |
| } | } |
| GET_PCBYTE(src) | GET_PCBYTE(src) |
| Line 30 I286_F6 _not_ea8(UINT op) { | Line 30 I286_F6 _not_ea8(UINT op) { |
| UINT32 madr; | UINT32 madr; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| *(reg8_b20[op]) ^= 0xff; | *(reg8_b20[op]) ^= 0xff; |
| } | } |
| else { | else { |
| I286_CLOCK(7); | I286_WORKCLOCK(7); |
| madr = c_calc_ea_dst[op](); | madr = c_calc_ea_dst[op](); |
| if (madr >= I286_MEMWRITEMAX) { | if (madr >= I286_MEMWRITEMAX) { |
| BYTE value = i286_memoryread(madr); | BYTE value = i286_memoryread(madr); |
| Line 54 I286_F6 _neg_ea8(UINT op) { | Line 54 I286_F6 _neg_ea8(UINT op) { |
| UINT32 madr; | UINT32 madr; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| out = reg8_b20[op]; | out = reg8_b20[op]; |
| } | } |
| else { | else { |
| I286_CLOCK(7); | I286_WORKCLOCK(7); |
| madr = c_calc_ea_dst[op](); | madr = c_calc_ea_dst[op](); |
| if (madr >= I286_MEMWRITEMAX) { | if (madr >= I286_MEMWRITEMAX) { |
| src = i286_memoryread(madr); | src = i286_memoryread(madr); |
| Line 79 I286_F6 _mul_ea8(UINT op) { | Line 79 I286_F6 _mul_ea8(UINT op) { |
| UINT res; | UINT res; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(13); | I286_WORKCLOCK(13); |
| src = *(reg8_b20[op]); | src = *(reg8_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(16); | I286_WORKCLOCK(16); |
| src = i286_memoryread(c_calc_ea_dst[op]()); | src = i286_memoryread(c_calc_ea_dst[op]()); |
| } | } |
| BYTE_MUL(res, I286_AL, src) | BYTE_MUL(res, I286_AL, src) |
| Line 96 I286_F6 _imul_ea8(UINT op) { | Line 96 I286_F6 _imul_ea8(UINT op) { |
| SINT32 res; | SINT32 res; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(13); | I286_WORKCLOCK(13); |
| src = *(reg8_b20[op]); | src = *(reg8_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(16); | I286_WORKCLOCK(16); |
| src = i286_memoryread(c_calc_ea_dst[op]()); | src = i286_memoryread(c_calc_ea_dst[op]()); |
| } | } |
| BYTE_IMUL(res, I286_AL, src) | BYTE_IMUL(res, I286_AL, src) |
| Line 115 I286_F6 _div_ea8(UINT op) { | Line 115 I286_F6 _div_ea8(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| src = *(reg8_b20[op]); | src = *(reg8_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(7); | I286_WORKCLOCK(7); |
| src = i286_memoryread(c_calc_ea_dst[op]()); | src = i286_memoryread(c_calc_ea_dst[op]()); |
| } | } |
| tmp = I286_AX; | tmp = I286_AX; |
| Line 140 I286_F6 _idiv_ea8(UINT op) { | Line 140 I286_F6 _idiv_ea8(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(17); | I286_WORKCLOCK(17); |
| src = *(reg8_b20[op]); | src = *(reg8_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(25); | I286_WORKCLOCK(25); |
| src = i286_memoryread(c_calc_ea_dst[op]()); | src = i286_memoryread(c_calc_ea_dst[op]()); |
| } | } |
| tmp = (SINT16)I286_AX; | tmp = (SINT16)I286_AX; |
| Line 166 I286_F6 _test_ea16_data16(UINT op) { | Line 166 I286_F6 _test_ea16_data16(UINT op) { |
| UINT32 dst; | UINT32 dst; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| dst = *(reg16_b20[op]); | dst = *(reg16_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(6); | I286_WORKCLOCK(6); |
| dst = i286_memoryread_w(c_calc_ea_dst[op]()); | dst = i286_memoryread_w(c_calc_ea_dst[op]()); |
| } | } |
| GET_PCWORD(src) | GET_PCWORD(src) |
| Line 182 I286_F6 _not_ea16(UINT op) { | Line 182 I286_F6 _not_ea16(UINT op) { |
| UINT32 madr; | UINT32 madr; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| *(reg16_b20[op]) ^= 0xffff; | *(reg16_b20[op]) ^= 0xffff; |
| } | } |
| else { | else { |
| I286_CLOCK(7); | I286_WORKCLOCK(7); |
| madr = c_calc_ea_dst[op](); | madr = c_calc_ea_dst[op](); |
| if (!(INHIBIT_WORDP(madr))) { | if (!(INHIBIT_WORDP(madr))) { |
| *(mem + madr) ^= 0xffff; | *(mem + madr) ^= 0xffff; |
| Line 207 I286_F6 _neg_ea16(UINT op) { | Line 207 I286_F6 _neg_ea16(UINT op) { |
| UINT32 madr; | UINT32 madr; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(2); | I286_WORKCLOCK(2); |
| out = reg16_b20[op]; | out = reg16_b20[op]; |
| } | } |
| else { | else { |
| I286_CLOCK(7); | I286_WORKCLOCK(7); |
| madr = c_calc_ea_dst[op](); | madr = c_calc_ea_dst[op](); |
| if (INHIBIT_WORDP(madr)) { | if (INHIBIT_WORDP(madr)) { |
| src = i286_memoryread_w(madr); | src = i286_memoryread_w(madr); |
| Line 232 I286_F6 _mul_ea16(UINT op) { | Line 232 I286_F6 _mul_ea16(UINT op) { |
| UINT32 res; | UINT32 res; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(21); | I286_WORKCLOCK(21); |
| src = *(reg16_b20[op]); | src = *(reg16_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(24); | I286_WORKCLOCK(24); |
| src = i286_memoryread_w(c_calc_ea_dst[op]()); | src = i286_memoryread_w(c_calc_ea_dst[op]()); |
| } | } |
| WORD_MUL(res, I286_AX, src) | WORD_MUL(res, I286_AX, src) |
| Line 250 I286_F6 _imul_ea16(UINT op) { | Line 250 I286_F6 _imul_ea16(UINT op) { |
| SINT32 res; | SINT32 res; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(21); | I286_WORKCLOCK(21); |
| src = *(reg16_b20[op]); | src = *(reg16_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(24); | I286_WORKCLOCK(24); |
| src = i286_memoryread_w(c_calc_ea_dst[op]()); | src = i286_memoryread_w(c_calc_ea_dst[op]()); |
| } | } |
| WORD_IMUL(res, I286_AX, src) | WORD_IMUL(res, I286_AX, src) |
| Line 270 I286_F6 _div_ea16(UINT op) { | Line 270 I286_F6 _div_ea16(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(17); | I286_WORKCLOCK(17); |
| src = *(reg16_b20[op]); | src = *(reg16_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(25); | I286_WORKCLOCK(25); |
| src = i286_memoryread_w(c_calc_ea_dst[op]()); | src = i286_memoryread_w(c_calc_ea_dst[op]()); |
| } | } |
| tmp = (I286_DX << 16) + I286_AX; | tmp = (I286_DX << 16) + I286_AX; |
| Line 296 I286_F6 _idiv_ea16(UINT op) { | Line 296 I286_F6 _idiv_ea16(UINT op) { |
| ip = I286_IP; | ip = I286_IP; |
| if (op >= 0xc0) { | if (op >= 0xc0) { |
| I286_CLOCK(17); | I286_WORKCLOCK(17); |
| src = *(reg16_b20[op]); | src = *(reg16_b20[op]); |
| } | } |
| else { | else { |
| I286_CLOCK(25); | I286_WORKCLOCK(25); |
| src = i286_memoryread_w(c_calc_ea_dst[op]()); | src = i286_memoryread_w(c_calc_ea_dst[op]()); |
| } | } |
| tmp = (SINT32)((I286_DX << 16) + I286_AX); | tmp = (SINT32)((I286_DX << 16) + I286_AX); |