move Get/Set Register logic from Intellivision to CP1610
This commit is contained in:
parent
8e261a7ddb
commit
ae872d5c4f
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using BizHawk.Common;
|
using BizHawk.Common;
|
||||||
using BizHawk.Emulation.Common;
|
using BizHawk.Emulation.Common;
|
||||||
|
@ -162,6 +163,79 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
|
||||||
Log.Flush();
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,92 +8,17 @@ namespace BizHawk.Emulation.Cores.Intellivision
|
||||||
public partial class Intellivision : IDebuggable
|
public partial class Intellivision : IDebuggable
|
||||||
{
|
{
|
||||||
public IDictionary<string, RegisterValue> GetCpuFlagsAndRegisters()
|
public IDictionary<string, RegisterValue> GetCpuFlagsAndRegisters()
|
||||||
{
|
=> _cpu.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
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetCpuRegister(string register, int value)
|
public void SetCpuRegister(string register, int value)
|
||||||
{
|
=> _cpu.SetCpuRegister(register, 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem(new[] { "System Bus" });
|
public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem(new[] { "System Bus" });
|
||||||
|
|
||||||
public bool CanStep(StepType type)
|
public bool CanStep(StepType type) => false;
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
[FeatureNotImplemented]
|
[FeatureNotImplemented]
|
||||||
public void Step(StepType type)
|
public void Step(StepType type) => throw new NotImplementedException();
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public long TotalExecutedCycles => _cpu.TotalExecutedCycles;
|
public long TotalExecutedCycles => _cpu.TotalExecutedCycles;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue