private static string DisassembleOrbitSpecialFunction2(MicroInstruction instruction) { OrbitF2 of2 = (OrbitF2)instruction.F2; switch (of2) { case OrbitF2.OrbitDBCWidthSet: return("OrbitDBCWidthSet<- "); case OrbitF2.OrbitXY: return("OrbitXY<- "); case OrbitF2.OrbitHeight: return("OrbitHeight<- "); case OrbitF2.OrbitFontData: return("OrbitFontData<- "); case OrbitF2.OrbitInk: return("OrbitInk<- "); case OrbitF2.OrbitControl: return("OrbitControl<- "); case OrbitF2.OrbitROSCommand: return("OrbitROSCommand<- "); default: return(String.Format("Orbit F2 {0}", Conversion.ToOctal((int)of2))); } }
protected override void ExecuteSpecialFunction2(MicroInstruction instruction) { OrbitF2 of2 = (OrbitF2)instruction.F2; switch (of2) { case OrbitF2.OrbitDBCWidthSet: _cpu._system.OrbitController.SetDBCWidth(_busData); break; case OrbitF2.OrbitXY: _cpu._system.OrbitController.SetXY(_busData); break; case OrbitF2.OrbitHeight: _cpu._system.OrbitController.SetHeight(_busData); // branch: // "OrbitHeight sets NEXT[7] if the refresh timer has expired, i.e. // if the image buffer needs refreshing." // if (_cpu._system.OrbitController.RefreshTimerExpired) { _nextModifier |= 0x4; } break; case OrbitF2.OrbitFontData: _cpu._system.OrbitController.WriteFontData(_busData); break; case OrbitF2.OrbitInk: _cpu._system.OrbitController.WriteInkData(_busData); break; case OrbitF2.OrbitControl: _cpu._system.OrbitController.Control(_busData); break; case OrbitF2.OrbitROSCommand: _cpu._system.OrbitController.SendROSCommand(_busData); break; default: throw new InvalidOperationException(String.Format("Unhandled orbit F2 {0}.", of2)); } }