예제 #1
0
        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)));
            }
        }
예제 #2
0
            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));
                }
            }