Implemented a load more Z80 OpCodes

This commit is contained in:
2026-04-09 16:08:56 +01:00
parent 340583d663
commit f22da937b5
3 changed files with 179 additions and 6 deletions

View File

@@ -182,19 +182,19 @@
// lstDisassembly
//
lstDisassembly.FormattingEnabled = true;
lstDisassembly.Location = new Point(533, 11);
lstDisassembly.Location = new Point(523, 11);
lstDisassembly.Margin = new Padding(2);
lstDisassembly.Name = "lstDisassembly";
lstDisassembly.Size = new Size(186, 264);
lstDisassembly.Size = new Size(252, 264);
lstDisassembly.TabIndex = 16;
//
// lstStack
//
lstStack.FormattingEnabled = true;
lstStack.Location = new Point(723, 11);
lstStack.Location = new Point(779, 11);
lstStack.Margin = new Padding(2);
lstStack.Name = "lstStack";
lstStack.Size = new Size(186, 264);
lstStack.Size = new Size(130, 264);
lstStack.TabIndex = 17;
//
// btnExit
@@ -212,7 +212,7 @@
//
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(927, 350);
ClientSize = new Size(928, 350);
Controls.Add(btnExit);
Controls.Add(lstStack);
Controls.Add(lstDisassembly);

View File

@@ -208,9 +208,27 @@ namespace Desktop
mnemonic = $"LD DE, 0x{deHigh:X2}{deLow:X2}";
instructionLength = 3;
break;
case 0x19:
mnemonic = "ADD HL, DE";
break;
case 0x20:
sbyte jrOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
ushort destination = (ushort)(currentPc + 2 + jrOffset);
mnemonic = $"JR NZ, 0x{destination:X4}";
instructionLength = 2;
break;
case 0x23:
mnemonic = "INC HL";
break;
case 0x2B:
mnemonic = "DEC HL";
break;
case 0x30:
sbyte jrNcOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
ushort dest = (ushort)(currentPc + 2 + jrNcOffset);
mnemonic = $"JR NC, 0x{dest:X4}";
instructionLength = 2;
break;
case 0x36:
byte memValue = _memoryBus.Read((ushort)(currentPc + 1));
mnemonic = $"LD (HL), 0x{memValue:X2}";
@@ -229,9 +247,15 @@ namespace Desktop
case 0x6B:
mnemonic = "LD L, E";
break;
case 0xA7:
mnemonic = "AND A";
break;
case 0xAF:
mnemonic = "XOR A";
break;
case 0xBC:
mnemonic = "CP H";
break;
case 0xC3:
// JP nn
byte jpLow = _memoryBus.Read((ushort)(currentPc + 1));
@@ -259,7 +283,10 @@ namespace Desktop
mnemonic = "LD I, A";
instructionLength = 2; // 0xED + 0x47
break;
case 0x52:
mnemonic = "SBC HL, DE";
instructionLength = 2; // ED 52
break;
// Example: ED B0 is LDIR (a massive block copy instruction)
case 0xB0:
mnemonic = "LDIR";