コード例 #1
0
 public void ExecuteInterrupt(CpuThreadState cpuThreadState)
 {
     if (InterruptEnabled && InterruptFlag)
     {
         InterruptManager.Interrupt(cpuThreadState);
     }
 }
コード例 #2
0
        /// <summary>
        /// Tries to execute the interrupt.
        /// </summary>
        /// <param name="interrupt">The interrupt.</param>
        /// <param name="address">The address.</param>
        /// <returns></returns>
        private bool TryExecuteInterrupt(InterruptFlag interrupt, ushort address)
        {
            if (!_interruptFlag.HasFlag(interrupt) || !_interruptEnableRegister.InterruptEnabled(interrupt))
            {
                // Interrupt flag is not set or enabled.
                return(false);
            }

            // Do interrupt.
            _interruptManager.Interrupt(address);

            // Clear the interrupt flag.
            _interruptFlag &= ~interrupt;
            return(true);
        }