Implemented SNA files. More OpCodes. Chuckie Egg Title SCreen!
This commit is contained in:
@@ -323,6 +323,7 @@ namespace Desktop
|
||||
case 0x08:
|
||||
mnemonic = "EX AF, AF'";
|
||||
break;
|
||||
case 0x0A: mnemonic = "LD A, (BC)"; break;
|
||||
case 0x12: mnemonic = "LD (DE), A"; break;
|
||||
case 0x13: mnemonic = "INC DE"; break;
|
||||
case 0x33: mnemonic = "INC SP"; break;
|
||||
@@ -391,9 +392,7 @@ namespace Desktop
|
||||
break;
|
||||
case 0x18:
|
||||
sbyte dUnconditional = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
|
||||
// Calculate the target address based on the PC *after* this 2-byte instruction
|
||||
ushort targetAddressUnconditional = (ushort)(currentPc + 2 + dUnconditional);
|
||||
|
||||
mnemonic = $"JR 0x{targetAddressUnconditional:X4}";
|
||||
instructionLength = 2;
|
||||
break;
|
||||
@@ -981,6 +980,7 @@ namespace Desktop
|
||||
|
||||
switch (extendedOp)
|
||||
{
|
||||
case 0x42: mnemonic = "SBC HL, BC"; instructionLength = 2; break;
|
||||
case 0x43:
|
||||
ushort bcAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
|
||||
mnemonic = $"LD (0x{bcAddr:X4}), BC";
|
||||
@@ -994,11 +994,17 @@ namespace Desktop
|
||||
mnemonic = "LD I, A";
|
||||
instructionLength = 2; // 0xED + 0x47
|
||||
break;
|
||||
// Inside your ED prefix switch statement in the debugger:
|
||||
case 0x4A: mnemonic = "ADC HL, BC"; instructionLength = 2; break;
|
||||
case 0x4B:
|
||||
ushort addr4B = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
|
||||
mnemonic = $"LD BC, (0x{addr4B:X4})";
|
||||
instructionLength = 4;
|
||||
break;
|
||||
case 0x4D:
|
||||
mnemonic = "RETI";
|
||||
instructionLength = 2;
|
||||
break;
|
||||
case 0x52:
|
||||
mnemonic = "SBC HL, DE";
|
||||
instructionLength = 2; // ED 52
|
||||
@@ -1012,11 +1018,14 @@ namespace Desktop
|
||||
mnemonic = "IM 1";
|
||||
instructionLength = 2;
|
||||
break;
|
||||
case 0x5A: mnemonic = "ADC HL, DE"; instructionLength = 2; break;
|
||||
case 0x5B:
|
||||
ushort addr5B = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
|
||||
mnemonic = $"LD DE, (0x{addr5B:X4})";
|
||||
instructionLength = 4;
|
||||
break;
|
||||
case 0x6A: mnemonic = "ADC HL, HL"; instructionLength = 2; break;
|
||||
case 0x62: mnemonic = "SBC HL, HL"; instructionLength = 2; break;
|
||||
case 0x73:
|
||||
ushort addr73 = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
|
||||
mnemonic = $"LD (0x{addr73:X4}), SP";
|
||||
@@ -1030,6 +1039,7 @@ namespace Desktop
|
||||
mnemonic = "IN A, (C)";
|
||||
instructionLength = 2;
|
||||
break;
|
||||
case 0x7A: mnemonic = "ADC HL, SP"; instructionLength = 2; break;
|
||||
case 0x7B: // LD SP, (nn)
|
||||
ushort nn = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
|
||||
mnemonic = $"LD SP, (0x{nn:X4})";
|
||||
|
||||
15
Desktop/Form1.Designer.cs
generated
15
Desktop/Form1.Designer.cs
generated
@@ -32,6 +32,7 @@
|
||||
menuStrip1 = new MenuStrip();
|
||||
fileToolStripMenuItem = new ToolStripMenuItem();
|
||||
openToolStripMenuItem = new ToolStripMenuItem();
|
||||
openSnapshotToolStripMenuItem = new ToolStripMenuItem();
|
||||
((System.ComponentModel.ISupportInitialize)picScreen).BeginInit();
|
||||
menuStrip1.SuspendLayout();
|
||||
SuspendLayout();
|
||||
@@ -59,7 +60,7 @@
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { openToolStripMenuItem });
|
||||
fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { openToolStripMenuItem, openSnapshotToolStripMenuItem });
|
||||
fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
fileToolStripMenuItem.Size = new Size(54, 29);
|
||||
fileToolStripMenuItem.Text = "File";
|
||||
@@ -67,10 +68,17 @@
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
openToolStripMenuItem.Size = new Size(158, 34);
|
||||
openToolStripMenuItem.Text = "Open";
|
||||
openToolStripMenuItem.Size = new Size(270, 34);
|
||||
openToolStripMenuItem.Text = "Open TAP";
|
||||
openToolStripMenuItem.Click += loadTAPToolStripMenuItem_Click;
|
||||
//
|
||||
// openSnapshotToolStripMenuItem
|
||||
//
|
||||
openSnapshotToolStripMenuItem.Name = "openSnapshotToolStripMenuItem";
|
||||
openSnapshotToolStripMenuItem.Size = new Size(270, 34);
|
||||
openSnapshotToolStripMenuItem.Text = "Open Snapshot";
|
||||
openSnapshotToolStripMenuItem.Click += openSNAToolStripMenuItem_Click;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(10F, 25F);
|
||||
@@ -96,5 +104,6 @@
|
||||
private MenuStrip menuStrip1;
|
||||
private ToolStripMenuItem fileToolStripMenuItem;
|
||||
private ToolStripMenuItem openToolStripMenuItem;
|
||||
private ToolStripMenuItem openSnapshotToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,6 +88,18 @@ namespace Desktop
|
||||
}
|
||||
}
|
||||
}
|
||||
private void openSNAToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
||||
{
|
||||
ofd.Filter = "Spectrum Snapshot Files (*.sna)|*.sna";
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
byte[] snaBytes = System.IO.File.ReadAllBytes(ofd.FileName);
|
||||
_cpu.LoadSNA(snaBytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Public so the Debugger's background thread can call it 50 times a second
|
||||
public void RenderScreen()
|
||||
|
||||
Reference in New Issue
Block a user