mirror of
https://github.com/holub/mame
synced 2025-06-17 09:49:31 +03:00
CPU M6800: CPX (compare X) instruction, fix behaviour of N and V flags.
These two flags are only affected by the data comparison of the upper 8 bits, and not the whole 16 bits.
This commit is contained in:
parent
fd9a619167
commit
47eaa73ad6
@ -1054,13 +1054,14 @@ OP_HANDLER( adda_im )
|
|||||||
/* $8c CMPX immediate -***- */
|
/* $8c CMPX immediate -***- */
|
||||||
OP_HANDLER( cmpx_im )
|
OP_HANDLER( cmpx_im )
|
||||||
{
|
{
|
||||||
UINT32 r,d;
|
PAIR r,d,b;
|
||||||
PAIR b;
|
|
||||||
IMMWORD(b);
|
IMMWORD(b);
|
||||||
d = X;
|
d.d = X;
|
||||||
r = d - b.d;
|
r.d = d.d - b.d;
|
||||||
CLR_NZV;
|
CLR_NZV;
|
||||||
SET_NZ16(r); SET_V16(d,b.d,r);
|
SET_Z16(r.d);
|
||||||
|
SET_N8(r.b.h);
|
||||||
|
SET_V8(d.b.h, b.b.h, r.b.h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $8c CPX immediate -**** (6803) */
|
/* $8c CPX immediate -**** (6803) */
|
||||||
@ -1220,14 +1221,14 @@ OP_HANDLER( adda_di )
|
|||||||
/* $9c CMPX direct -***- */
|
/* $9c CMPX direct -***- */
|
||||||
OP_HANDLER( cmpx_di )
|
OP_HANDLER( cmpx_di )
|
||||||
{
|
{
|
||||||
UINT32 r,d;
|
PAIR r,d,b;
|
||||||
PAIR b;
|
|
||||||
DIRWORD(b);
|
DIRWORD(b);
|
||||||
d = X;
|
d.d = X;
|
||||||
r = d - b.d;
|
r.d = d.d - b.d;
|
||||||
CLR_NZV;
|
CLR_NZV;
|
||||||
SET_NZ16(r);
|
SET_Z16(r.d);
|
||||||
SET_V16(d,b.d,r);
|
SET_N8(r.b.h);
|
||||||
|
SET_V8(d.b.h, b.b.h, r.b.h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $9c CPX direct -**** (6803) */
|
/* $9c CPX direct -**** (6803) */
|
||||||
@ -1394,14 +1395,14 @@ OP_HANDLER( adda_ix )
|
|||||||
/* $ac CMPX indexed -***- */
|
/* $ac CMPX indexed -***- */
|
||||||
OP_HANDLER( cmpx_ix )
|
OP_HANDLER( cmpx_ix )
|
||||||
{
|
{
|
||||||
UINT32 r,d;
|
PAIR r,d,b;
|
||||||
PAIR b;
|
|
||||||
IDXWORD(b);
|
IDXWORD(b);
|
||||||
d = X;
|
d.d = X;
|
||||||
r = d - b.d;
|
r.d = d.d - b.d;
|
||||||
CLR_NZV;
|
CLR_NZV;
|
||||||
SET_NZ16(r);
|
SET_Z16(r.d);
|
||||||
SET_V16(d,b.d,r);
|
SET_N8(r.b.h);
|
||||||
|
SET_V8(d.b.h, b.b.h, r.b.h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $ac CPX indexed -**** (6803)*/
|
/* $ac CPX indexed -**** (6803)*/
|
||||||
@ -1570,14 +1571,14 @@ OP_HANDLER( adda_ex )
|
|||||||
/* $bc CMPX extended -***- */
|
/* $bc CMPX extended -***- */
|
||||||
OP_HANDLER( cmpx_ex )
|
OP_HANDLER( cmpx_ex )
|
||||||
{
|
{
|
||||||
UINT32 r,d;
|
PAIR r,d,b;
|
||||||
PAIR b;
|
|
||||||
EXTWORD(b);
|
EXTWORD(b);
|
||||||
d = X;
|
d.d = X;
|
||||||
r = d - b.d;
|
r.d = d.d - b.d;
|
||||||
CLR_NZV;
|
CLR_NZV;
|
||||||
SET_NZ16(r);
|
SET_Z16(r.d);
|
||||||
SET_V16(d,b.d,r);
|
SET_N8(r.b.h);
|
||||||
|
SET_V8(d.b.h, b.b.h, r.b.h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $bc CPX extended -**** (6803) */
|
/* $bc CPX extended -**** (6803) */
|
||||||
|
Loading…
Reference in New Issue
Block a user