1
0
Fork 0

Fix effective address calculation of bittesting opcodes with register operand

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1582
This commit is contained in:
Sjoerd van der Berg 2004-01-13 21:41:58 +00:00
parent 3a0530ec27
commit 73943385cd
2 changed files with 16 additions and 8 deletions

View file

@ -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);
}

View file

@ -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);
}