protected override CpuState GetInstructionPart(MachineCycleNames machineCycle)
        {
            if (!ExecutionEngine.Opcode.Definition.HasParameters)
            {
                throw Errors.NoParameters();
            }

            switch (machineCycle)
            {
            case MachineCycleNames.M2:
                InstructionM2 = new ReadT3InstructionPart(Die, machineCycle);
                return(InstructionM2);

            case MachineCycleNames.M3:
                if (ExecutionEngine.Opcode.Definition.ParameterCount <= 1)
                {
                    throw Errors.InvalidMachineCycle(machineCycle);
                }

                InstructionM3 = new ReadT3InstructionPart(Die, machineCycle);
                return(InstructionM3);

            default:
                throw Errors.InvalidMachineCycle(machineCycle);
            }
        }
Example #2
0
        protected override CpuState GetInstructionPart(MachineCycleNames machineCycle)
        {
            switch (machineCycle)
            {
            case MachineCycleNames.M2:
                // read d
                _instructionM2 = new ReadT3InstructionPart(Cpu, machineCycle);
                return(_instructionM2);

            case MachineCycleNames.M3:
                // we postpone inc/dec operation until M4
                return(new AutoCompleteInstructionPart(Cpu, machineCycle));

            case MachineCycleNames.M4:
                _instructionM4 = new ReadT3InstructionPart(Cpu, machineCycle, GetAddress());
                return(_instructionM4);

            case MachineCycleNames.M5:
                _instructionM5      = new WriteT3InstructionPart(Cpu, machineCycle, GetAddress());
                _instructionM5.Data = IncDecValue(_instructionM4.Data);
                return(_instructionM5);

            default:
                throw Errors.InvalidMachineCycle(machineCycle);
            }
        }
Example #3
0
        protected override CpuState GetInstructionPart(MachineCycleNames machineCycle)
        {
            switch (machineCycle)
            {
            case MachineCycleNames.M2:
                _instructionM2 = new ReadT3InstructionPart(Die, machineCycle, Registers.SP);
                return(_instructionM2);

            case MachineCycleNames.M3:
                _instructionM3 = new ReadT3InstructionPart(Die, machineCycle, Registers.SP);
                return(_instructionM3);

            default:
                throw Errors.InvalidMachineCycle(machineCycle);
            }
        }
 private CpuState CreateReadDataPart(MachineCycleNames machineCycle)
 {
     _readPart = new ReadT3InstructionPart(Cpu, machineCycle, Registers.HL);
     return(_readPart);
 }
 private CpuState CreateReadIndirectValueInstructionPart(MachineCycleNames machineCycle)
 {
     _instructionPart = new ReadT3InstructionPart(Cpu, machineCycle, GetAddress());
     return(_instructionPart);
 }