From a36b7093e30ec4dd22445f71e142cfff5cef55c3 Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Thu, 9 Feb 2017 12:53:55 -0500 Subject: [PATCH] Intellivision implement System Bus memory domain --- .../CPUs/CP1610/CP1610.Disassembler.cs | 22 +++++----- .../CPUs/CP1610/CP1610.Execute.cs | 44 +++++++++---------- BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.cs | 4 +- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Disassembler.cs b/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Disassembler.cs index 46bcf48a60..450d99eb4d 100644 --- a/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Disassembler.cs +++ b/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Disassembler.cs @@ -11,7 +11,7 @@ ushort addr, offset; int decle2, decle3, cond, ext; string result = ""; - int opcode = ReadMemory(pc) & 0x3FF; + int opcode = ReadMemory(pc, false) & 0x3FF; switch (opcode) { case 0x000: @@ -24,8 +24,8 @@ return "DIS"; case 0x004: // 0000:0000:0000:0100 0000:00rr:aaaa:aaff 0000:00aa:aaaa:aaaa - decle2 = ReadMemory((ushort)(pc + 1)); - decle3 = ReadMemory((ushort)(pc + 2)); + decle2 = ReadMemory((ushort)(pc + 1), false); + decle3 = ReadMemory((ushort)(pc + 2), false); // rr indicates the register into which to store the return address dest = (byte)(((decle2 >> 8) & 0x3) + 4); // aaaaaaaaaaaaaaaa indicates the address to where the CP1610 should Jump @@ -733,7 +733,7 @@ case 0x23D: case 0x23E: case 0x23F: - offset = ReadMemory((ushort)(pc + 1)); + offset = ReadMemory((ushort)(pc + 1), false); cond = opcode & 0xF; ext = opcode & 0x10; if (ext != 0) @@ -818,7 +818,7 @@ case 0x246: case 0x247: src = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("MVO R{0:d}, ${1:X4}", src, addr); case 0x248: @@ -889,7 +889,7 @@ case 0x286: case 0x287: dest = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("MVI R{0:d}, ${1:X4}", dest, addr); case 0x288: @@ -960,7 +960,7 @@ case 0x2C6: case 0x2C7: dest = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("ADD R{0:d}, ${1:X4}", dest, addr); case 0x2C8: @@ -1031,7 +1031,7 @@ case 0x306: case 0x307: mem = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("SUB R{0:d}, ${1:X4}", mem, addr); case 0x308: @@ -1102,7 +1102,7 @@ case 0x346: case 0x347: mem = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("CMP R{0:d}, ${1:X4}", mem, addr); case 0x348: @@ -1173,7 +1173,7 @@ case 0x386: case 0x387: mem = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("AND R{0:d}, ${1:X4}", mem, addr); case 0x388: @@ -1244,7 +1244,7 @@ case 0x3C6: case 0x3C7: mem = (byte)(opcode & 0x7); - addr = ReadMemory((ushort)(pc + 1)); + addr = ReadMemory((ushort)(pc + 1), false); addrToAdvance = 2; return string.Format("XOR R{0:d}, ${1:X4}", mem, addr); case 0x3C8: diff --git a/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Execute.cs b/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Execute.cs index a0e2c536b2..0cace32345 100644 --- a/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Execute.cs +++ b/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.Execute.cs @@ -88,15 +88,15 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 } if (!FlagD) { - value = ReadMemory(Register[mem]); + value = ReadMemory(Register[mem], false); } else { // Double Byte Data. - value = (ushort)(ReadMemory(Register[mem]) & 0xFF); + value = (ushort)(ReadMemory(Register[mem], false) & 0xFF); if (mem >= 4) Register[mem]++; - value |= (ushort)(ReadMemory(Register[mem]) << 8); + value |= (ushort)(ReadMemory(Register[mem], false) << 8); } // Auto-increment the memory register if it does so on write. if (mem >= 0x4 && mem != 0x6) @@ -128,7 +128,7 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 public void Indirect_Set(byte mem, byte src) { - WriteMemory(Register[mem], Register[src]); + WriteMemory(Register[mem], Register[src], false); // Auto-increment the memory register if it does so on read. if (mem >= 0x4) { @@ -184,7 +184,7 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 //int ones, carry; bool branch = false; bool FlagD_prev = FlagD; - opcode = ReadMemory(RegisterPC++) & 0x3FF; + opcode = ReadMemory(RegisterPC++, false) & 0x3FF; if (TraceCallback != null) TraceCallback(CP1610State()); @@ -209,8 +209,8 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 break; case 0x004: // J, JE, JD, JSR, JSRE, JSRD // 0000:0000:0000:0100 0000:00rr:aaaa:aaff 0000:00aa:aaaa:aaaa - decle2 = ReadMemory(RegisterPC++); - decle3 = ReadMemory(RegisterPC++); + decle2 = ReadMemory(RegisterPC++, false); + decle3 = ReadMemory(RegisterPC++, false); // rr indicates the register into which to store the return address dest = (byte)(((decle2 >> 8) & 0x3) + 4); // aaaaaaaaaaaaaaaa indicates the address to where the CP1610 should Jump @@ -1159,7 +1159,7 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x23D: case 0x23E: case 0x23F: - offset = ReadMemory(RegisterPC++); + offset = ReadMemory(RegisterPC++, false); cond = opcode & 0xF; ext = opcode & 0x10; // BEXT @@ -1261,8 +1261,8 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x246: case 0x247: src = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); - WriteMemory(addr, Register[src]); + addr = ReadMemory(RegisterPC++, false); + WriteMemory(addr, Register[src], false); cycles = 11; Interruptible = false; break; @@ -1339,8 +1339,8 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x286: case 0x287: dest = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); - Register[dest] = ReadMemory(addr); + addr = ReadMemory(RegisterPC++, false); + Register[dest] = ReadMemory(addr, false); cycles = 10; Interruptible = true; break; @@ -1417,9 +1417,9 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x2C6: case 0x2C7: dest = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); + addr = ReadMemory(RegisterPC++, false); dest_value = Register[dest]; - addr_read = ReadMemory(addr); + addr_read = ReadMemory(addr, false); result = dest_value + addr_read; Calc_FlagC(result); Calc_FlagO_Add(dest_value, addr_read, result); @@ -1511,9 +1511,9 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x306: case 0x307: dest = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); + addr = ReadMemory(RegisterPC++, false); dest_value = Register[dest]; - addr_read = ReadMemory(addr); + addr_read = ReadMemory(addr, false); twos = (0xFFFF ^ addr_read) + 1; result = dest_value + twos; Calc_FlagC(result); @@ -1607,9 +1607,9 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x346: case 0x347: dest = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); + addr = ReadMemory(RegisterPC++, false); dest_value = Register[dest]; - addr_read = ReadMemory(addr); + addr_read = ReadMemory(addr, false); twos = (0xFFFF ^ addr_read) + 1; result = dest_value + twos; Calc_FlagC(result); @@ -1701,9 +1701,9 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x386: case 0x387: dest = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); + addr = ReadMemory(RegisterPC++, false); dest_value = Register[dest]; - addr_read = ReadMemory(addr); + addr_read = ReadMemory(addr, false); result = dest_value & addr_read; Calc_FlagS(result); Calc_FlagZ(result); @@ -1788,9 +1788,9 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 case 0x3C6: case 0x3C7: dest = (byte)(opcode & 0x7); - addr = ReadMemory(RegisterPC++); + addr = ReadMemory(RegisterPC++, false); dest_value = Register[dest]; - addr_read = ReadMemory(addr); + addr_read = ReadMemory(addr, false); result = dest_value ^ addr_read; Calc_FlagS(result); Calc_FlagZ(result); diff --git a/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.cs b/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.cs index 35dddc8131..ee52fa3cff 100644 --- a/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.cs +++ b/BizHawk.Emulation.Cores/CPUs/CP1610/CP1610.cs @@ -29,8 +29,8 @@ namespace BizHawk.Emulation.Cores.Components.CP1610 public int TotalExecutedCycles; public int PendingCycles; - public Func ReadMemory; - public Func WriteMemory; + public Func ReadMemory; + public Func WriteMemory; private static bool Logging = false; private static readonly StreamWriter Log;