diff --git a/BizHawk.Emulation.Cores/CPUs/MC6809/Registers.cs b/BizHawk.Emulation.Cores/CPUs/MC6809/Registers.cs index 0184e17ef5..9772ff5400 100644 --- a/BizHawk.Emulation.Cores/CPUs/MC6809/Registers.cs +++ b/BizHawk.Emulation.Cores/CPUs/MC6809/Registers.cs @@ -1,3 +1,7 @@ +using System; +using System.Collections.Generic; +using BizHawk.Emulation.Common; + namespace BizHawk.Emulation.Cores.Components.MC6809 { public partial class MC6809 @@ -83,5 +87,81 @@ namespace BizHawk.Emulation.Cores.Components.MC6809 FlagI = true; } + + public IDictionary GetCpuFlagsAndRegisters() + { + return new Dictionary + { + ["A"] = Regs[A], + ["B"] = Regs[B], + ["X"] = Regs[X], + ["Y"] = Regs[Y], + ["US"] = Regs[US], + ["SP"] = Regs[SP], + ["PC"] = Regs[PC], + ["Flag E"] = FlagE, + ["Flag F"] = FlagF, + ["Flag H"] = FlagH, + ["Flag I"] = FlagI, + ["Flag N"] = FlagN, + ["Flag Z"] = FlagZ, + ["Flag V"] = FlagV, + ["Flag C"] = FlagC + }; + } + + public void SetCpuRegister(string register, int value) + { + switch (register) + { + default: + throw new InvalidOperationException(); + case "A": + Regs[A] = (byte)value; + break; + case "B": + Regs[B] = (byte)value; + break; + case "X": + Regs[X] = (byte)value; + break; + case "Y": + Regs[Y] = (ushort)value; + break; + case "US": + Regs[US] = (ushort)value; + break; + case "SP": + Regs[SP] = (ushort)value; + break; + case "PC": + Regs[PC] = (ushort)value; + break; + case "Flag E": + FlagE = value > 0; + break; + case "Flag F": + FlagF = value > 0; + break; + case "Flag H": + FlagH = value > 0; + break; + case "Flag I": + FlagI = value > 0; + break; + case "Flag N": + FlagN = value > 0; + break; + case "Flag Z": + FlagZ = value > 0; + break; + case "Flag V": + FlagV = value > 0; + break; + case "Flag C": + FlagC = value > 0; + break; + } + } } } \ No newline at end of file diff --git a/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.IDebuggable.cs b/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.IDebuggable.cs index 3ee34607e8..f3a3b27302 100644 --- a/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.IDebuggable.cs +++ b/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.IDebuggable.cs @@ -1,89 +1,16 @@ using System; using System.Collections.Generic; - using BizHawk.Emulation.Common; -using BizHawk.Emulation.Cores.Components.MC6809; namespace BizHawk.Emulation.Cores.Consoles.Vectrex { public partial class VectrexHawk : IDebuggable { public IDictionary GetCpuFlagsAndRegisters() - { - return new Dictionary - { - - ["A"] = cpu.Regs[MC6809.A], - ["B"] = cpu.Regs[MC6809.B], - ["X"] = cpu.Regs[MC6809.X], - ["Y"] = cpu.Regs[MC6809.Y], - ["US"] = cpu.Regs[MC6809.US], - ["SP"] = cpu.Regs[MC6809.SP], - ["PC"] = cpu.Regs[MC6809.PC], - ["Flag E"] = cpu.FlagE, - ["Flag F"] = cpu.FlagF, - ["Flag H"] = cpu.FlagH, - ["Flag I"] = cpu.FlagI, - ["Flag N"] = cpu.FlagN, - ["Flag Z"] = cpu.FlagZ, - ["Flag V"] = cpu.FlagV, - ["Flag C"] = cpu.FlagC - }; - } + => cpu.GetCpuFlagsAndRegisters(); public void SetCpuRegister(string register, int value) - { - switch (register) - { - default: - throw new InvalidOperationException(); - case "A": - cpu.Regs[MC6809.A] = (byte)value; - break; - case "B": - cpu.Regs[MC6809.B] = (byte)value; - break; - case "X": - cpu.Regs[MC6809.X] = (byte)value; - break; - case "Y": - cpu.Regs[MC6809.Y] = (ushort)value; - break; - case "US": - cpu.Regs[MC6809.US] = (ushort)value; - break; - case "SP": - cpu.Regs[MC6809.SP] = (ushort)value; - break; - case "PC": - cpu.Regs[MC6809.PC] = (ushort)value; - break; - case "Flag E": - cpu.FlagE = value > 0; - break; - case "Flag F": - cpu.FlagF = value > 0; - break; - case "Flag H": - cpu.FlagH = value > 0; - break; - case "Flag I": - cpu.FlagI = value > 0; - break; - case "Flag N": - cpu.FlagN = value > 0; - break; - case "Flag Z": - cpu.FlagZ = value > 0; - break; - case "Flag V": - cpu.FlagV = value > 0; - break; - case "Flag C": - cpu.FlagC = value > 0; - break; - } - } + => cpu.SetCpuRegister(register, value); public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem(new[] { "System Bus" });