All GPF's are now enabled again; LEA reg,reg now correctly sets the register to the last computed effective address (undocumented behavior).

This commit is contained in:
OBattler
2016-08-10 04:43:13 +02:00
parent 8d39f0ac76
commit 723b685327
7 changed files with 51 additions and 10 deletions

View File

@@ -18,11 +18,13 @@ static inline void PUSH_W(uint16_t val)
{
writememw(ss, ESP - 2, val); if (abrt) return;
ESP -= 2;
cpu_state.last_ea = ESP;
}
else
{
writememw(ss, (SP - 2) & 0xFFFF, val); if (abrt) return;
SP -= 2;
cpu_state.last_ea = SP;
}
}
@@ -32,11 +34,13 @@ static inline void PUSH_L(uint32_t val)
{
writememl(ss, ESP - 4, val); if (abrt) return;
ESP -= 4;
cpu_state.last_ea = ESP;
}
else
{
writememl(ss, (SP - 4) & 0xFFFF, val); if (abrt) return;
SP -= 4;
cpu_state.last_ea = SP;
}
}
@@ -47,11 +51,13 @@ static inline uint16_t POP_W()
{
ret = readmemw(ss, ESP); if (abrt) return 0;
ESP += 2;
cpu_state.last_ea = ESP;
}
else
{
ret = readmemw(ss, SP); if (abrt) return 0;
SP += 2;
cpu_state.last_ea = SP;
}
return ret;
}
@@ -63,11 +69,13 @@ static inline uint32_t POP_L()
{
ret = readmeml(ss, ESP); if (abrt) return 0;
ESP += 4;
cpu_state.last_ea = ESP;
}
else
{
ret = readmeml(ss, SP); if (abrt) return 0;
SP += 4;
cpu_state.last_ea = SP;
}
return ret;
}
@@ -79,11 +87,13 @@ static inline uint16_t POP_W_seg(uint32_t seg)
{
ret = readmemw(seg, ESP); if (abrt) return 0;
ESP += 2;
cpu_state.last_ea = ESP;
}
else
{
ret = readmemw(seg, SP); if (abrt) return 0;
SP += 2;
cpu_state.last_ea = SP;
}
return ret;
}
@@ -95,11 +105,13 @@ static inline uint32_t POP_L_seg(uint32_t seg)
{
ret = readmeml(seg, ESP); if (abrt) return 0;
ESP += 4;
cpu_state.last_ea = ESP;
}
else
{
ret = readmeml(seg, SP); if (abrt) return 0;
SP += 4;
cpu_state.last_ea = SP;
}
return ret;
}