Пример #1
0
        public Chip(Action <PropertyObservationWrapper <short>, PropertyChangedEventArgs> registerActionShort,
                    Action <PropertyObservationWrapper <byte>, PropertyChangedEventArgs> registerActionByte,
                    Action <PropertyObservationWrapper <bool>, PropertyChangedEventArgs> flagChangedAction,
                    List <BaseInstruction> instructions)
        {
            for (int i = 0; i < instructions.Count; i++)
            {
                OffsetToIndexMap.Add((short)(instructions[i].ByteOffset + Helper.InitialOffset), i);
                IndexToOffsetMap.Add(i, (short)(instructions[i].ByteOffset + Helper.InitialOffset));
            }


            foreach (var kvp in Flags)
            {
                kvp.Value.PropertyChanged += flagChangedAction;
            }

            this.instructions = instructions;

            XRegister = new PropertyObservationWrapper <byte>(0, "X-Register");
            XRegister.PropertyChanged += registerActionByte;

            YRegister = new PropertyObservationWrapper <byte>(0, "Y-Register");
            YRegister.PropertyChanged += registerActionByte;

            AccumulatorRegister = new PropertyObservationWrapper <byte>(0, "Accumulator Register");
            AccumulatorRegister.PropertyChanged += registerActionByte;

            StackPointer = new PropertyObservationWrapper <byte>(0, "Stack Pointer");
            StackPointer.PropertyChanged += registerActionByte;

            ProgramCounter = new PropertyObservationWrapper <short>(Helper.InitialOffset, "Program Counter");
            ProgramCounter.PropertyChanged += registerActionShort;
        }
Пример #2
0
        public Ram(Action <PropertyObservationWrapper <byte>, PropertyChangedEventArgs> actionToRunOnChange)
        {
            for (int i = 0; i < Memory.Length; i++)
            {
                Memory[i] = new PropertyObservationWrapper <byte>(0, new MemoryData(i));

                Memory[i].PropertyChanged += actionToRunOnChange;
            }
        }