public void SendEventToController(PICEvent e)
 {
     if (controller != null)
     {
         controller.Incoming_Events.Enqueue(e);
     }
 }
        private void HandleEvent(PICEvent e)
        {
            Debug.WriteLine("[EVENT::FROM_VIEW] " + e);

            if (e is BreakPointChangedEvent)
            {
                BreakPointChangedEvent ce = e as BreakPointChangedEvent;

                breakpoints[ce.Position] = ce.Value;
            }
            else if (e is ChangePICModeEvent)
            {
                ChangePICModeEvent ce = e as ChangePICModeEvent;

                Mode = ce.Value;
            }
            else if (e is ManuallyRegisterChangedEvent)
            {
                ManuallyRegisterChangedEvent ce = e as ManuallyRegisterChangedEvent;

                SetUnbankedRegister(ce.Position, ce.Value);
            }
            else if (e is ExternalClockChangedEvent)
            {
                ExternalClockChangedEvent ce = e as ExternalClockChangedEvent;

                if (ce.ClockID < 4)
                {
                    Clocks[ce.ClockID].UpdateState(ce);
                }
            }
            else
            {
                throw new ArgumentException(e.ToString());
            }
        }