Implemented many more OpCodes - again!

This commit is contained in:
2026-04-13 22:32:05 +01:00
parent 2b40960496
commit 9496c26004
2 changed files with 180 additions and 3 deletions

View File

@@ -285,6 +285,9 @@ namespace Desktop
case 0x19:
mnemonic = "ADD HL, DE";
break;
case 0x1B:
mnemonic = "DEC DE";
break;
case 0x20:
sbyte jrOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
ushort destination = (ushort)(currentPc + 2 + jrOffset);
@@ -306,6 +309,11 @@ namespace Desktop
case 0x23:
mnemonic = "INC HL";
break;
case 0x26:
byte hImm = _memoryBus.Read((ushort)(currentPc + 1));
mnemonic = $"LD H, 0x{hImm:X2}";
instructionLength = 2;
break;
case 0x28:
sbyte jrZOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
ushort jrZDest = (ushort)(currentPc + 2 + jrZOffset);
@@ -343,6 +351,9 @@ namespace Desktop
mnemonic = $"LD (HL), 0x{memValue:X2}";
instructionLength = 2;
break;
case 0x37:
mnemonic = "SCF";
break;
case 0x3E:
mnemonic = $"LD A, 0x{_memoryBus.Read((ushort)(currentPc + 1)):X2}";
instructionLength = 2;
@@ -350,6 +361,15 @@ namespace Desktop
case 0x47:
mnemonic = "LD B, A";
break;
case 0x4E:
mnemonic = "LD C, (HL)";
break;
case 0x56:
mnemonic = "LD D, (HL)";
break;
case 0x5E:
mnemonic = "LD E, (HL)";
break;
case 0x5F:
mnemonic = "LD E, A";
break;
@@ -359,9 +379,21 @@ namespace Desktop
case 0x6B:
mnemonic = "LD L, E";
break;
case 0x6F:
mnemonic = "LD L, A";
break;
case 0x77:
mnemonic = "LD (HL), A";
break;
case 0x7A:
mnemonic = "LD A, D";
break;
case 0x7E:
mnemonic = "LD A, (HL)";
break;
case 0x87:
mnemonic = "ADD A, A";
break;
case 0x91:
mnemonic = "SUB C";
break;
@@ -371,6 +403,12 @@ namespace Desktop
case 0xAF:
mnemonic = "XOR A";
break;
case 0xB3:
mnemonic = "OR E";
break;
case 0xB9:
mnemonic = "CP C";
break;
case 0xBC:
mnemonic = "CP H";
break;
@@ -381,6 +419,16 @@ namespace Desktop
mnemonic = $"JP 0x{jpHigh:X2}{jpLow:X2}";
instructionLength = 3;
break;
case 0xC6:
{
byte addImm = _memoryBus.Read((ushort)(currentPc + 1));
mnemonic = $"ADD A, 0x{addImm:X2}";
instructionLength = 2;
break;
}
case 0xC8:
mnemonic = "RET Z";
break;
case 0xC9:
mnemonic = "RET";
break;
@@ -389,6 +437,9 @@ namespace Desktop
mnemonic = $"CALL 0x{callDest:X4}";
instructionLength = 3;
break;
case 0xD0:
mnemonic = "RET NC";
break;
case 0xD3:
byte outPort = _memoryBus.Read((ushort)(currentPc + 1));
mnemonic = $"OUT (0x{outPort:X2}), A";
@@ -490,6 +541,14 @@ namespace Desktop
{
mnemonic = $"BIT 1, (IY{sign}{d})";
}
else if (cbOpcode == 0x86)
{
mnemonic = $"RES 0, (IY{sign}{d})";
}
else if (cbOpcode == 0xA6)
{
mnemonic = $"RES 4, (IY{sign}{d})";
}
else if (cbOpcode == 0xCE)
{
mnemonic = $"SET 1, (IY{sign}{d})";