Example #1
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
     {
         cpu.Target = new Target(cpu);
     }
 }
Example #2
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
     {
         cpu.Target = new WritableTarget(cpu, (ushort)((cpu.Memory.Read(cpu.State.PC.Value) + cpu.State.Y.Value) & 0xff));
         cpu.State.PC.Next();
     }
 }
Example #3
0
        public virtual void Decode(MOS6502 cpu, byte cycle)
        {
            if (cycle == 0)
            {
                ushort offset = cpu.Memory.Read(cpu.State.PC.Value);
                cpu.State.PC.Next();

                cpu.Target = new WritableTarget(cpu, (ushort)(cpu.State.PC.Value + (sbyte)offset));
            }
        }
Example #4
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
     {
         cpu.Target = new IndirectTarget(cpu, (byte)(cpu.Memory.Read(cpu.State.PC.Value) + cpu.State.X.Value));
         cpu.State.PC.Next();
     }
     else if (cycle < 3)
     {
         cpu.Target.BuildAddress(cpu.Memory.Read(((IndirectTarget)cpu.Target).TempAddress++));
     }
 }
Example #5
0
        public virtual void Decode(MOS6502 cpu, byte cycle)
        {
            if (cycle == 0)
            {
                cpu.Target = new WritableTarget(cpu);
            }

            if (cycle < 2)
            {
                cpu.Target.BuildAddress(cpu.Memory.Read(cpu.State.PC.Value));
                cpu.State.PC.Next();
            }
        }
Example #6
0
        public static AddressedTarget ReadTargetFromStateFile(MOS6502 cpu, C64Interfaces.IFile stateFile)
        {
            switch (stateFile.ReadByte())
            {
            case (byte)TargetTypes.ReadableTarget:
                return(new ReadableTarget(cpu, stateFile));

            case (byte)TargetTypes.WritableTarget:
                return(new WritableTarget(cpu, stateFile));

            case (byte)TargetTypes.IndirectTarget:
                return(new IndirectTarget(cpu, stateFile));

            case (byte)TargetTypes.AccumulatorTarget:
                return(new AccAddressing.Target(cpu));

            case (byte)TargetTypes.ImmediateTarget:
                return(new ImmAddressing.Target(cpu, stateFile));
            }

            return(null);
        }
Example #7
0
 public WritableTarget(MOS6502 cpu, ushort address) : base(cpu, address)
 {
 }
Example #8
0
 public Target(MOS6502 cpu)
 {
     _state = cpu.State;
 }
Example #9
0
 public ReadableTarget(MOS6502 cpu, ushort address)
 {
     _cpu     = cpu;
     _address = address;
 }
Example #10
0
 public IndirectTarget(MOS6502 cpu, ushort tempAddress)
     : base(cpu)
 {
     _tempAddress = tempAddress;
 }
Example #11
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
         cpu.Target = new Target(cpu);
 }
Example #12
0
 public Target(MOS6502 cpu) : base(cpu, cpu.State.PC.Value)
 {
     _cpu.State.PC.Next();
 }
Example #13
0
 public IndirectTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : base(cpu, stateFile)
 {
     _tempAddress = stateFile.ReadWord();
     _tempPart    = stateFile.ReadByte();
 }
Example #14
0
        public virtual void Decode(MOS6502 cpu, byte cycle)
        {
            if (cycle == 0)
            {
                ushort offset = cpu.Memory.Read(cpu.State.PC.Value);
                cpu.State.PC.Next();

                cpu.Target = new WritableTarget(cpu, (ushort)(cpu.State.PC.Value + (sbyte)offset));
            }
        }
Example #15
0
 public ReadableTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : this(cpu, stateFile.ReadWord())
 {
     _part = stateFile.ReadByte();
 }
Example #16
0
 public ReadableTarget(MOS6502 cpu, ushort address)
 {
     _cpu = cpu;
     _address = address;
 }
Example #17
0
 public ReadableTarget(MOS6502 cpu)
     : this(cpu, 0)
 {
 }
Example #18
0
        public virtual void Decode(MOS6502 cpu, byte cycle)
        {
            if (cycle == 0)
            {
                cpu.Target = new IndirectTarget(cpu, cpu.Memory.Read(cpu.State.PC.Value));
                cpu.State.PC.Next();
            }
            else if (cycle < 3)
            {
                cpu.Target.BuildAddress(cpu.Memory.Read(((IndirectTarget)cpu.Target).TempAddress++));

                if (cycle == 2)
                    cpu.Target.MoveAddress(cpu.State.Y.Value);
            }
        }
Example #19
0
 public IndirectTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : base(cpu, stateFile)
 {
     _tempAddress = stateFile.ReadWord();
     _tempPart = stateFile.ReadByte();
 }
Example #20
0
 public IndirectTarget(MOS6502 cpu) : base(cpu)
 {
 }
Example #21
0
 public IndirectTarget(MOS6502 cpu, ushort tempAddress) : base(cpu)
 {
     _tempAddress = tempAddress;
 }
Example #22
0
 public WritableTarget(MOS6502 cpu)
     : base(cpu)
 {
 }
Example #23
0
 public Target(MOS6502 cpu)
 {
     _state = cpu.State;
 }
Example #24
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
 }
Example #25
0
 public Target(MOS6502 cpu, C64Interfaces.IFile stateFile) : base(cpu, stateFile)
 {
 }
Example #26
0
 public Target(MOS6502 cpu)
     : base(cpu, cpu.State.PC.Value)
 {
     _cpu.State.PC.Next();
 }
Example #27
0
 public WritableTarget(MOS6502 cpu, ushort address)
     : base(cpu, address)
 {
 }
Example #28
0
 public IndirectTarget(MOS6502 cpu)
     : base(cpu)
 {
 }
Example #29
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
 }
Example #30
0
 public WritableTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : base(cpu, stateFile)
 {
 }
Example #31
0
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
     {
         cpu.Target = new WritableTarget(cpu, (ushort)((cpu.Memory.Read(cpu.State.PC.Value) + cpu.State.Y.Value) & 0xff));
         cpu.State.PC.Next();
     }
 }
Example #32
0
        public static AddressedTarget ReadTargetFromStateFile(MOS6502 cpu, C64Interfaces.IFile stateFile)
        {
            switch (stateFile.ReadByte())
            {
                case (byte)TargetTypes.ReadableTarget:
                    return new ReadableTarget(cpu, stateFile);

                case (byte)TargetTypes.WritableTarget:
                    return new WritableTarget(cpu, stateFile);

                case (byte)TargetTypes.IndirectTarget:
                    return new IndirectTarget(cpu, stateFile);

                case (byte)TargetTypes.AccumulatorTarget:
                    return new AccAddressing.Target(cpu);

                case (byte)TargetTypes.ImmediateTarget:
                    return new ImmAddressing.Target(cpu, stateFile);
            }

            return null;
        }
Example #33
0
 public ReadableTarget(MOS6502 cpu) : this(cpu, 0)
 {
 }
Example #34
0
 public WritableTarget(MOS6502 cpu) : base(cpu)
 {
 }
Example #35
0
 public ReadableTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : this(cpu, stateFile.ReadWord())
 {
     _part = stateFile.ReadByte();
 }
Example #36
0
        public virtual void Decode(MOS6502 cpu, byte cycle)
        {
            if (cycle == 0)
            {
                cpu.Target = new WritableTarget(cpu);

                cpu.Target.BuildAddress(cpu.Memory.Read(cpu.State.PC.Value));
                cpu.State.PC.Next();
            }
            else if (cycle == 1)
            {
                cpu.Target.BuildAddress(cpu.Memory.Read(cpu.State.PC.Value));
                cpu.State.PC.Next();

                cpu.Target.MoveAddress(cpu.State.Y.Value);
            }
        }