protected override void PrivilegedExecute() { if (IsReadInstruction) { switch (ReadOpCode) { case MemoryManagementReadOpCode.CINT: CINT(); break; case MemoryManagementReadOpCode.RDF: RDF(); break; case MemoryManagementReadOpCode.RIB: RIB(); break; case MemoryManagementReadOpCode.RIF: RIF(); break; case MemoryManagementReadOpCode.RMF: RMF(); break; case MemoryManagementReadOpCode.SINT: SINT(); break; case MemoryManagementReadOpCode.CUF: CUF(); break; case MemoryManagementReadOpCode.SUF: SUF(); break; default: throw new NotImplementedException(); } } else { if (ChangeOpCodes.HasFlag(MemoryManagementChangeOpCodes.CDF)) { Register.DF.SetDF(Data >> 3); } if (ChangeOpCodes.HasFlag(MemoryManagementChangeOpCodes.CIF)) { Register.IB.SetIB(Data >> 3); Interrupts.Inhibit(); } } }
private void RMF() { var sf = Register.SF; Register.IB.SetIB(sf.IF); Register.DF.SetDF(sf.DF); Register.UB.SetUB(sf.UF); Interrupts.Inhibit(); }
private void RTF() { var acc = Register.AC.Accumulator; Register.AC.SetLink((acc >> 11) & Masks.FLAG); Register.IB.SetIB(acc >> 3); Register.DF.SetDF(acc); Register.UB.SetUB(acc >> 6); Interrupts.Enable(false); Interrupts.Inhibit(); }
private void SUF() { Register.UB.SetUB(1); Interrupts.Inhibit(); }
private void CUF() { Register.UB.Clear(); Interrupts.Inhibit(); }