diff --git a/src/cpu/core_normal/prefix_0f.h b/src/cpu/core_normal/prefix_0f.h index 23897681..44bb1b24 100644 --- a/src/cpu/core_normal/prefix_0f.h +++ b/src/cpu/core_normal/prefix_0f.h @@ -255,7 +255,8 @@ GetEArw; SETFLAGBIT(CF,(*earw & mask)); } else { - GetEAa;Bit16u old=LoadMw(eaa); + GetEAa;eaa+=(((Bit16s)*rmrw)>>4)*2; + Bit16u old=LoadMw(eaa); SETFLAGBIT(CF,(old & mask)); } break; @@ -279,7 +280,8 @@ SETFLAGBIT(CF,(*earw & mask)); *earw|=mask; } else { - GetEAa;Bit16u old=LoadMw(eaa); + GetEAa;eaa+=(((Bit16s)*rmrw)>>4)*2; + Bit16u old=LoadMw(eaa); SETFLAGBIT(CF,(old & mask)); SaveMw(eaa,old | mask); } @@ -311,7 +313,8 @@ SETFLAGBIT(CF,(*earw & mask)); *earw&= ~mask; } else { - GetEAa;Bit16u old=LoadMw(eaa); + GetEAa;eaa+=(((Bit16s)*rmrw)>>4)*2; + Bit16u old=LoadMw(eaa); SETFLAGBIT(CF,(old & mask)); SaveMw(eaa,old & ~mask); } @@ -399,7 +402,8 @@ SETFLAGBIT(CF,(*earw & mask)); *earw^=mask; } else { - GetEAa;Bit16u old=LoadMw(eaa); + GetEAa;eaa+=(((Bit16s)*rmrw)>>4)*2; + Bit16u old=LoadMw(eaa); SETFLAGBIT(CF,(old & mask)); SaveMw(eaa,old ^ mask); } diff --git a/src/cpu/core_normal/prefix_66_0f.h b/src/cpu/core_normal/prefix_66_0f.h index a4439be8..65a10402 100644 --- a/src/cpu/core_normal/prefix_66_0f.h +++ b/src/cpu/core_normal/prefix_66_0f.h @@ -168,7 +168,8 @@ GetEArd; SETFLAGBIT(CF,(*eard & mask)); } else { - GetEAa;Bit32u old=LoadMd(eaa); + GetEAa;eaa+=(((Bit32s)*rmrd)>>5)*4; + Bit32u old=LoadMd(eaa); SETFLAGBIT(CF,(old & mask)); } break; @@ -192,7 +193,8 @@ SETFLAGBIT(CF,(*eard & mask)); *eard|=mask; } else { - GetEAa;Bit32u old=LoadMd(eaa); + GetEAa;eaa+=(((Bit32s)*rmrd)>>5)*4; + Bit32u old=LoadMd(eaa); SETFLAGBIT(CF,(old & mask)); SaveMd(eaa,old | mask); } @@ -227,7 +229,8 @@ SETFLAGBIT(CF,(*eard & mask)); *eard&= ~mask; } else { - GetEAa;Bit32u old=LoadMd(eaa); + GetEAa;eaa+=(((Bit32s)*rmrd)>>5)*4; + Bit32u old=LoadMd(eaa); SETFLAGBIT(CF,(old & mask)); SaveMd(eaa,old & ~mask); } @@ -317,7 +320,8 @@ SETFLAGBIT(CF,(*eard & mask)); *eard^=mask; } else { - GetEAa;Bit32u old=LoadMd(eaa); + GetEAa;eaa+=(((Bit32s)*rmrd)>>5)*4; + Bit32u old=LoadMd(eaa); SETFLAGBIT(CF,(old & mask)); SaveMd(eaa,old ^ mask); }