void PutRMByte(int ModRM, byte val) { if (ModRM >= 0xc0) { I.regs.b[mod_RM.RMb[ModRM]] = val; } else { WriteByte(GetEA[ModRM](), val); } }
void PutImmRMByte(int ModRM) { if (ModRM >= 0xc0) { I.regs.b[mod_RM.RMb[ModRM]] = FETCH(); } else { EA = GetEA[ModRM](); WriteByte(EA, FETCH()); } }
void PutRMWord(int ModRM, ushort val) { if (ModRM >= 0xc0) { //I.regs.w[mod_RM.RMw[ModRM]] = val; I.regs.b[mod_RM.RMw[ModRM] * 2] = (byte)(val % 0x100); I.regs.b[mod_RM.RMw[ModRM] * 2 + 1] = (byte)(val / 0x100); } else { WriteWord(GetEA[ModRM](), val); } }
void PutImmRMWord(int ModRM) { ushort val; if (ModRM >= 0xc0) { //I.regs.w[mod_RM.RMw[ModRM]] = FETCHWORD(); ushort w = FETCHWORD(); I.regs.b[mod_RM.RMw[ModRM] * 2] = (byte)(w % 0x100); I.regs.b[mod_RM.RMw[ModRM] * 2 + 1] = (byte)(w / 0x100); } else { EA = GetEA[ModRM](); val = FETCHWORD(); WriteWord(EA, val); } }
byte GetRMByte(int ModRM) { return((ModRM) >= 0xc0 ? I.regs.b[mod_RM.RMb[ModRM]] : ReadByte(GetEA[ModRM]())); }
ushort GetRMWord(int ModRM) { return((ushort)(ModRM >= 0xc0 ? I.regs.b[mod_RM.RMw[ModRM] * 2] + I.regs.b[mod_RM.RMw[ModRM] * 2 + 1] * 0x100 : ReadWord(GetEA[ModRM]()))); }