move Get/Set Register logic from Intellivision to CP1610

This commit is contained in:
adelikat 2020-02-18 15:45:49 -06:00
parent 8e261a7ddb
commit ae872d5c4f
2 changed files with 79 additions and 80 deletions

View File

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using BizHawk.Common;
using BizHawk.Emulation.Common;
@ -162,6 +163,79 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
Log.Flush();
}
public IDictionary<string, RegisterValue> GetCpuFlagsAndRegisters()
{
return new Dictionary<string, RegisterValue>
{
["R0"] = Register[0],
["R1"] = Register[1],
["R2"] = Register[2],
["R3"] = Register[3],
["R4"] = Register[4],
["R5"] = Register[5],
["R6"] = Register[6],
["PC"] = Register[7],
["FlagS"] = FlagS,
["FlagC"] = FlagC,
["FlagZ"] = FlagZ,
["FlagO"] = FlagO,
["FlagI"] = FlagI,
["FlagD"] = FlagD
};
}
public void SetCpuRegister(string register, int value)
{
switch (register)
{
default:
throw new InvalidOperationException();
case "R0":
Register[0] = (ushort)value;
break;
case "R1":
Register[1] = (ushort)value;
break;
case "R2":
Register[2] = (ushort)value;
break;
case "R3":
Register[3] = (ushort)value;
break;
case "R4":
Register[4] = (ushort)value;
break;
case "R5":
Register[5] = (ushort)value;
break;
case "R6":
Register[6] = (ushort)value;
break;
case "PC":
Register[7] = (ushort)value;
break;
case "FlagS":
FlagS = value > 0;
break;
case "FlagC":
FlagC = value > 0;
break;
case "FlagZ":
FlagZ = value > 0;
break;
case "FlagO":
FlagO = value > 0;
break;
case "FlagI":
FlagI = value > 0;
break;
case "FlagD":
FlagD = value > 0;
break;
}
}
}
}

View File

@ -8,92 +8,17 @@ namespace BizHawk.Emulation.Cores.Intellivision
public partial class Intellivision : IDebuggable
{
public IDictionary<string, RegisterValue> GetCpuFlagsAndRegisters()
{
return new Dictionary<string, RegisterValue>
{
["R0"] = _cpu.Register[0],
["R1"] = _cpu.Register[1],
["R2"] = _cpu.Register[2],
["R3"] = _cpu.Register[3],
["R4"] = _cpu.Register[4],
["R5"] = _cpu.Register[5],
["R6"] = _cpu.Register[6],
["PC"] = _cpu.Register[7],
["FlagS"] = _cpu.FlagS,
["FlagC"] = _cpu.FlagC,
["FlagZ"] = _cpu.FlagZ,
["FlagO"] = _cpu.FlagO,
["FlagI"] = _cpu.FlagI,
["FlagD"] = _cpu.FlagD
};
}
=> _cpu.GetCpuFlagsAndRegisters();
public void SetCpuRegister(string register, int value)
{
switch (register)
{
default:
throw new InvalidOperationException();
case "R0":
_cpu.Register[0] = (ushort)value;
break;
case "R1":
_cpu.Register[1] = (ushort)value;
break;
case "R2":
_cpu.Register[2] = (ushort)value;
break;
case "R3":
_cpu.Register[3] = (ushort)value;
break;
case "R4":
_cpu.Register[4] = (ushort)value;
break;
case "R5":
_cpu.Register[5] = (ushort)value;
break;
case "R6":
_cpu.Register[6] = (ushort)value;
break;
case "PC":
_cpu.Register[7] = (ushort)value;
break;
case "FlagS":
_cpu.FlagS = value > 0;
break;
case "FlagC":
_cpu.FlagC = value > 0;
break;
case "FlagZ":
_cpu.FlagZ = value > 0;
break;
case "FlagO":
_cpu.FlagO = value > 0;
break;
case "FlagI":
_cpu.FlagI = value > 0;
break;
case "FlagD":
_cpu.FlagD = value > 0;
break;
}
}
=> _cpu.SetCpuRegister(register, value);
public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem(new[] { "System Bus" });
public bool CanStep(StepType type)
{
return false;
}
public bool CanStep(StepType type) => false;
[FeatureNotImplemented]
public void Step(StepType type)
{
throw new NotImplementedException();
}
public void Step(StepType type) => throw new NotImplementedException();
public long TotalExecutedCycles => _cpu.TotalExecutedCycles;
}