コード例 #1
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
     {
         cpu.Target = new Target(cpu);
     }
 }
コード例 #2
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 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();
     }
 }
コード例 #3
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
        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));
            }
        }
コード例 #4
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 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++));
     }
 }
コード例 #5
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
        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();
            }
        }
コード例 #6
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
        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);
        }
コード例 #7
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public WritableTarget(MOS6502 cpu, ushort address) : base(cpu, address)
 {
 }
コード例 #8
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public Target(MOS6502 cpu)
 {
     _state = cpu.State;
 }
コード例 #9
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public ReadableTarget(MOS6502 cpu, ushort address)
 {
     _cpu     = cpu;
     _address = address;
 }
コード例 #10
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public IndirectTarget(MOS6502 cpu, ushort tempAddress)
     : base(cpu)
 {
     _tempAddress = tempAddress;
 }
コード例 #11
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
     if (cycle == 0)
         cpu.Target = new Target(cpu);
 }
コード例 #12
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public Target(MOS6502 cpu) : base(cpu, cpu.State.PC.Value)
 {
     _cpu.State.PC.Next();
 }
コード例 #13
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public IndirectTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : base(cpu, stateFile)
 {
     _tempAddress = stateFile.ReadWord();
     _tempPart    = stateFile.ReadByte();
 }
コード例 #14
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
        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));
            }
        }
コード例 #15
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public ReadableTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : this(cpu, stateFile.ReadWord())
 {
     _part = stateFile.ReadByte();
 }
コード例 #16
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public ReadableTarget(MOS6502 cpu, ushort address)
 {
     _cpu = cpu;
     _address = address;
 }
コード例 #17
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public ReadableTarget(MOS6502 cpu)
     : this(cpu, 0)
 {
 }
コード例 #18
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
        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);
            }
        }
コード例 #19
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public IndirectTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : base(cpu, stateFile)
 {
     _tempAddress = stateFile.ReadWord();
     _tempPart = stateFile.ReadByte();
 }
コード例 #20
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public IndirectTarget(MOS6502 cpu) : base(cpu)
 {
 }
コード例 #21
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public IndirectTarget(MOS6502 cpu, ushort tempAddress) : base(cpu)
 {
     _tempAddress = tempAddress;
 }
コード例 #22
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public WritableTarget(MOS6502 cpu)
     : base(cpu)
 {
 }
コード例 #23
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public Target(MOS6502 cpu)
 {
     _state = cpu.State;
 }
コード例 #24
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
 }
コード例 #25
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public Target(MOS6502 cpu, C64Interfaces.IFile stateFile) : base(cpu, stateFile)
 {
 }
コード例 #26
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public Target(MOS6502 cpu)
     : base(cpu, cpu.State.PC.Value)
 {
     _cpu.State.PC.Next();
 }
コード例 #27
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public WritableTarget(MOS6502 cpu, ushort address)
     : base(cpu, address)
 {
 }
コード例 #28
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public IndirectTarget(MOS6502 cpu)
     : base(cpu)
 {
 }
コード例 #29
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public virtual void Decode(MOS6502 cpu, byte cycle)
 {
 }
コード例 #30
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 public WritableTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : base(cpu, stateFile)
 {
 }
コード例 #31
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
 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();
     }
 }
コード例 #32
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
        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;
        }
コード例 #33
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public ReadableTarget(MOS6502 cpu) : this(cpu, 0)
 {
 }
コード例 #34
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public WritableTarget(MOS6502 cpu) : base(cpu)
 {
 }
コード例 #35
0
ファイル: Addressing.cs プロジェクト: kataklinger/c64net
 public ReadableTarget(MOS6502 cpu, C64Interfaces.IFile stateFile)
     : this(cpu, stateFile.ReadWord())
 {
     _part = stateFile.ReadByte();
 }
コード例 #36
0
ファイル: Addressing.cs プロジェクト: RonFields72/C64Emulator
        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);
            }
        }