--- np2/i286c/i286c_fe.c 2003/11/24 09:14:01 1.7 +++ np2/i286c/i286c_fe.c 2003/11/29 00:36:00 1.9 @@ -27,7 +27,7 @@ I286_F6 _inc_ea8(UINT op) { I286_WORKCLOCK(7); madr = CALC_EA(op); if (madr >= I286_MEMWRITEMAX) { - BYTE value = i286_memoryread(madr); + REG8 value = i286_memoryread(madr); BYTE_INC(value) i286_memorywrite(madr, value); return; @@ -50,7 +50,7 @@ I286_F6 _dec_ea8(UINT op) { I286_WORKCLOCK(7); madr = CALC_EA(op); if (madr >= I286_MEMWRITEMAX) { - BYTE value = i286_memoryread(madr); + REG8 value = i286_memoryread(madr); BYTE_DEC(value) i286_memorywrite(madr, value); return; @@ -73,7 +73,7 @@ I286_F6 _inc_ea16(UINT op) { I286_WORKCLOCK(7); madr = CALC_EA(op); if (INHIBIT_WORDP(madr)) { - UINT16 value = i286_memoryread_w(madr); + REG16 value = i286_memoryread_w(madr); WORD_INC(value) i286_memorywrite_w(madr, value); return; @@ -96,7 +96,7 @@ I286_F6 _dec_ea16(UINT op) { I286_WORKCLOCK(7); madr = CALC_EA(op); if (INHIBIT_WORDP(madr)) { - UINT16 value = i286_memoryread_w(madr); + REG16 value = i286_memoryread_w(madr); WORD_DEC(value) i286_memorywrite_w(madr, value); return; @@ -125,7 +125,7 @@ I286_F6 _call_ea16(UINT op) { I286_F6 _call_far_ea16(UINT op) { UINT32 seg; - UINT16 ad; + UINT ad; I286_WORKCLOCK(16); if (op < 0xc0) { @@ -133,8 +133,7 @@ I286_F6 _call_far_ea16(UINT op) { REGPUSH0(I286_CS) // ToDo REGPUSH0(I286_IP) I286_IP = i286_memoryread_w(seg + ad); - ad += 2; - I286_CS = i286_memoryread_w(seg + ad); + I286_CS = i286_memoryread_w(seg + LOW16(ad + 2)); CS_BASE = I286_CS << 4; } else { @@ -157,14 +156,13 @@ I286_F6 _jmp_ea16(UINT op) { I286_F6 _jmp_far_ea16(UINT op) { UINT32 seg; - UINT16 ad; + UINT ad; I286_WORKCLOCK(11); if (op < 0xc0) { ad = GET_EA(op, &seg); I286_IP = i286_memoryread_w(seg + ad); - ad += 2; - I286_CS = i286_memoryread_w(seg + ad); + I286_CS = i286_memoryread_w(seg + LOW16(ad + 2)); CS_BASE = I286_CS << 4; } else {