Пример #1
0
        /// <summary>
        /// Constructs a new UpdateUIEventArgs instance having properties initialized with values from the CPU state and the currently executed Operation.
        /// </summary>
        /// <param name="cpuState">The CPU State instance containing register values and other state properties of the CPU.</param>
        /// <param name="operation">The Operation instance representing the last executed instruction with it's address in the memory and operand value.</param>
        public UpdateUIEventArgs(CPUState cpuState, Operation operation = null)
        {
            RegisterX               = cpuState.RegisterX;
            RegisterY               = cpuState.RegisterY;
            Accumulator             = cpuState.Accumulator;
            StackPointer            = cpuState.SP;
            ProgramCounter          = cpuState.PC;
            Status                  = cpuState.Status;
            HasCarryFlag            = cpuState.HasStatusFlag(StatusFlag.Carry);
            HasNegativeFlag         = cpuState.HasStatusFlag(StatusFlag.Negative);
            HasInterruptDisableFlag = cpuState.HasStatusFlag(StatusFlag.InterruptDisable);
            HasBreakFlag            = cpuState.HasStatusFlag(StatusFlag.Break);
            HasDecimalFlag          = cpuState.HasStatusFlag(StatusFlag.Decimal);
            HasOverflowFlag         = cpuState.HasStatusFlag(StatusFlag.Overflow);
            HasZeroFlag             = cpuState.HasStatusFlag(StatusFlag.Zero);

            if (operation != null)
            {
                OperationAddress = operation.Address;
                OperationOpName  = operation.Instruction.OpcodeName;
                OperationOperand = operation.GetOperandPretty();
            }
        }