private void STO(ushort operand)
{
RegGeneral source;
ushort dest_address;
try {
BitPatternSTO(operand, out dest_address, out source);
if (source == RegGeneral.None) {}
else {
SegmentIndex dataSeg = (operand & 0x8000) != 0 ? SegmentIndex.ES : SegmentIndex.DS; // S = extra segment select.
bool eightBitMode = (operand & 0x0100) != 0; // E = 8-bit mode
if (eightBitMode)
WriteMemInt8(dest_address, (byte)R[(int)source], dataSeg);
else
WriteMemInt16(dest_address, R[(int)source], dataSeg);
}
// N [Negative] Not effected.
// Z [Zero] Not effected.
// C [Carry] Not effected.
// V [Overflow] Not effected.
}
catch (SegFaultException e) {
Interrupt_SegFault(e.SegmentType, operand, e.Address);
}
}