--- np2/i286c/i286c_fe.c 2003/11/21 06:51:11 1.6 +++ np2/i286c/i286c_fe.c 2003/11/24 09:14:01 1.7 @@ -25,7 +25,7 @@ I286_F6 _inc_ea8(UINT op) { } else { I286_WORKCLOCK(7); - madr = c_calc_ea_dst[op](); + madr = CALC_EA(op); if (madr >= I286_MEMWRITEMAX) { BYTE value = i286_memoryread(madr); BYTE_INC(value) @@ -48,7 +48,7 @@ I286_F6 _dec_ea8(UINT op) { } else { I286_WORKCLOCK(7); - madr = c_calc_ea_dst[op](); + madr = CALC_EA(op); if (madr >= I286_MEMWRITEMAX) { BYTE value = i286_memoryread(madr); BYTE_DEC(value) @@ -71,7 +71,7 @@ I286_F6 _inc_ea16(UINT op) { } else { I286_WORKCLOCK(7); - madr = c_calc_ea_dst[op](); + madr = CALC_EA(op); if (INHIBIT_WORDP(madr)) { UINT16 value = i286_memoryread_w(madr); WORD_INC(value) @@ -94,7 +94,7 @@ I286_F6 _dec_ea16(UINT op) { } else { I286_WORKCLOCK(7); - madr = c_calc_ea_dst[op](); + madr = CALC_EA(op); if (INHIBIT_WORDP(madr)) { UINT16 value = i286_memoryread_w(madr); WORD_DEC(value) @@ -116,7 +116,7 @@ I286_F6 _call_ea16(UINT op) { } else { I286_WORKCLOCK(11); - src = i286_memoryread_w(c_calc_ea_dst[op]()); + src = i286_memoryread_w(CALC_EA(op)); } REGPUSH0(I286_IP); I286_IP = src; @@ -124,14 +124,17 @@ I286_F6 _call_ea16(UINT op) { I286_F6 _call_far_ea16(UINT op) { + UINT32 seg; + UINT16 ad; + I286_WORKCLOCK(16); if (op < 0xc0) { - UINT16 ad = c_get_ea[op](); + ad = GET_EA(op, &seg); REGPUSH0(I286_CS) // ToDo REGPUSH0(I286_IP) - I286_IP = i286_memoryread_w(ad + EA_FIX); + I286_IP = i286_memoryread_w(seg + ad); ad += 2; - I286_CS = i286_memoryread_w(ad + EA_FIX); + I286_CS = i286_memoryread_w(seg + ad); CS_BASE = I286_CS << 4; } else { @@ -147,18 +150,21 @@ I286_F6 _jmp_ea16(UINT op) { } else { I286_WORKCLOCK(11); - I286_IP = i286_memoryread_w(c_calc_ea_dst[op]()); + I286_IP = i286_memoryread_w(CALC_EA(op)); } } I286_F6 _jmp_far_ea16(UINT op) { + UINT32 seg; + UINT16 ad; + I286_WORKCLOCK(11); if (op < 0xc0) { - UINT16 ad = c_get_ea[op](); - I286_IP = i286_memoryread_w(ad + EA_FIX); + ad = GET_EA(op, &seg); + I286_IP = i286_memoryread_w(seg + ad); ad += 2; - I286_CS = i286_memoryread_w(ad + EA_FIX); + I286_CS = i286_memoryread_w(seg + ad); CS_BASE = I286_CS << 4; } else { @@ -176,7 +182,7 @@ I286_F6 _push_ea16(UINT op) { } else { I286_WORKCLOCK(5); - src = i286_memoryread_w(c_calc_ea_dst[op]()); + src = i286_memoryread_w(CALC_EA(op)); } REGPUSH0(src); } @@ -191,7 +197,7 @@ I286_F6 _pop_ea16(UINT op) { *(REG16_B20(op)) = src; } else { - i286_memorywrite_w(c_calc_ea_dst[op](), src); + i286_memorywrite_w(CALC_EA(op), src); } }