File:
[RetroPC.NET] /
np2 /
i386c /
ia32 /
instructions /
shift_rotatexc_msc.mcr
Revision
1.3:
download - view:
text,
annotated -
select for diffs
Thu Mar 11 08:01:08 2004 JST (21 years, 7 months ago) by
yui
Branches:
MAIN
CVS tags:
VER_0_82_x64,
VER_0_82,
VER_0_81A,
VER_0_81,
VER_0_80,
VER_0_79,
VER_0_78,
VER_0_77,
VER_0_76,
VER_0_75,
HEAD
fix bios interrupt (T.Yui)
// Crosscheck for VC++
#define SETFLAGS \
__asm { cmp CPU_OV, 0 } \
__asm { setne al } \
__asm { add al, 7fh } \
__asm { mov ah, CPU_FLAGL } \
__asm { sahf }
#define BYTE_SAR1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { sar _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_SAR1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("sarb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SAR1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { sar _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SAR1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("sarw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SAR1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { sar _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SAR1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("sard1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_SARCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { sar _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_SARCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("sarb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SARCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { sar _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SARCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("sarw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SARCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { sar _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SARCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("sard(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_SHL1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { shl _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_SHL1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shlb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SHL1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { shl _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SHL1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shlw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SHL1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { shl _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SHL1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shld1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_SHLCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { shl _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_SHLCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shlb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SHLCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { shl _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SHLCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shlw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SHLCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { shl _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SHLCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shld(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_SHR1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { shr _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_SHR1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SHR1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { shr _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SHR1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SHR1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { shr _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SHR1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrd1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_SHRCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { shr _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_SHRCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SHRCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { shr _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SHRCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SHRCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { shr _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SHRCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrd(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SHLD(d, s, c) { \
UINT8 _c = (c); \
UINT16 _s = (s); \
UINT16 _d = (d); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { mov ax, _s } \
__asm { shld _d, ax, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SHLD(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shldw r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SHLD(d, s, c) { \
UINT8 _c = (c); \
UINT32 _s = (s); \
UINT32 _d = (d); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { mov eax, _s } \
__asm { shld _d, eax, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SHLD(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shldd r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_SHRD(d, s, c) { \
UINT8 _c = (c); \
UINT16 _s = (s); \
UINT16 _d = (d); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { mov ax, _s } \
__asm { shrd _d, ax, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_SHRD(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrdw r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_SHRD(d, s, c) { \
UINT8 _c = (c); \
UINT32 _s = (s); \
UINT32 _d = (d); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { mov eax, _s } \
__asm { shrd _d, eax, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_SHRD(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("shrdd r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_RCL1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rcl _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_RCL1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rclb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_RCL1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rcl _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_RCL1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rclw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_RCL1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rcl _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_RCL1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcld1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_RCLCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rcl _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_RCLCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rclb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_RCLCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rcl _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_RCLCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rclw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_RCLCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rcl _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_RCLCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcld(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_RCR1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rcr _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_RCR1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcrb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_RCR1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rcr _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_RCR1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcrw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_RCR1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rcr _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_RCR1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcrd1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_RCRCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rcr _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_RCRCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcrb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_RCRCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rcr _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_RCRCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcrw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_RCRCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rcr _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_RCRCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rcrd(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_ROL1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rol _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_ROL1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rolb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_ROL1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rol _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_ROL1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rolw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_ROL1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { rol _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_ROL1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rold1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_ROLCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rol _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_ROLCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rolb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_ROLCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rol _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_ROLCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rolw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_ROLCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { rol _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_ROLCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rold(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_ROR1(d, s) { \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { ror _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_ROR1(d, s); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rorb1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_ROR1(d, s) { \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { ror _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_ROR1(d, s); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rorw1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_ROR1(d, s) { \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { ror _d, 1 } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_ROR1(d, s); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rord1 r=%x:%x f=%x:%x o=%d %d", _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define BYTE_RORCL(d, s, c) { \
UINT8 _c = (c); \
UINT8 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { ror _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_BYTE_RORCL(d, s, c); \
if ((_d != (UINT8)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rorb(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define WORD_RORCL(d, s, c) { \
UINT8 _c = (c); \
UINT16 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { ror _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_WORD_RORCL(d, s, c); \
if ((_d != (UINT16)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rorw(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
#define DWORD_RORCL(d, s, c) { \
UINT8 _c = (c); \
UINT32 _d = (s); \
UINT8 _f, _ov; \
SETFLAGS \
__asm { mov cl, _c } \
__asm { ror _d, cl } \
__asm { seto _ov } \
__asm { lahf } \
__asm { mov _f, ah } \
_DWORD_RORCL(d, s, c); \
if ((_d != (UINT32)(d)) || ((_f ^ CPU_FLAGL) & SZPC_FLAG) || ((!_ov) != (!CPU_OV))) TRACEOUT(("rord(%x) r=%x:%x f=%x:%x o=%d %d", _c, _d, d, _f, CPU_FLAGL, _ov, CPU_OV)); \
}
RetroPC.NET-CVS <cvs@retropc.net>