I286_F6 _dec_ea8(UINT op) { UINT32 madr; UINT8 *out; REG8 res; if (op >= 0xc0) { I286_WORKCLOCK(2); out = REG8_B20(op); } else { I286_WORKCLOCK(7); madr = CALC_EA(op); if (madr >= I286_MEMWRITEMAX) { res = i286_memoryread(madr); DECBYTE(res) i286_memorywrite(madr, res); return; } out = mem + madr; } res = *out; DECBYTE(res) *out = (UINT8)res; }
void ea_assert(UINT32 x) { TCHAR buf[32]; wsprintf(buf, _T("addr = %x [%.2x]"), x, i286_memoryread(x - 2)); MessageBox(NULL, buf, _T("!"), MB_OK); exit(1); }
I286_SFT _ror_e8_1(UINT32 madr) { UINT src; UINT dst; src = i286_memoryread(madr); BYTE_ROR1(dst, src) i286_memorywrite(madr, (REG8)dst); }
I286_SFT _sar_e8_cl(UINT32 madr, REG8 cl) { UINT src; UINT dst; src = i286_memoryread(madr); BYTE_SARCL(dst, src, cl) i286_memorywrite(madr, (REG8)dst); }