- Mes informació quan arriba un opcode no vàlid
- Més informació respecte a la càrrega de cassette
This commit is contained in:
141
z80.cpp
141
z80.cpp
@@ -7,6 +7,7 @@ namespace z80
|
||||
{
|
||||
static uint8_t *memory = nullptr;
|
||||
static uint32_t t = 0;
|
||||
static uint16_t current_opcode_address = 0;
|
||||
|
||||
int (*in_ports[256])(int);
|
||||
void (*out_ports[256])(int, int);
|
||||
@@ -1022,10 +1023,11 @@ namespace z80
|
||||
}
|
||||
}
|
||||
|
||||
void INVALID()
|
||||
void INVALID(uint8_t opcode)
|
||||
{
|
||||
// [TODO]
|
||||
printf("INVALID\n");
|
||||
printf("INVALID OPCODE AT: %04x\n", current_opcode_address);
|
||||
z80debug::stop();
|
||||
}
|
||||
|
||||
void reset(uint8_t* mem)
|
||||
@@ -1056,6 +1058,7 @@ namespace z80
|
||||
|
||||
uint32_t step()
|
||||
{
|
||||
current_opcode_address = rPC;
|
||||
t = 0;
|
||||
const uint8_t opcode = READ_M1();
|
||||
uint16_t tmp;
|
||||
@@ -1626,73 +1629,73 @@ namespace z80
|
||||
|
||||
switch (opcode)
|
||||
{
|
||||
case 0x00: INVALID(); break;
|
||||
case 0x01: INVALID(); break;
|
||||
case 0x02: INVALID(); break;
|
||||
case 0x03: INVALID(); break;
|
||||
case 0x00: INVALID(opcode); break;
|
||||
case 0x01: INVALID(opcode); break;
|
||||
case 0x02: INVALID(opcode); break;
|
||||
case 0x03: INVALID(opcode); break;
|
||||
case 0x04: INC8(_rB); break;
|
||||
case 0x05: DEC8(_rB); break;
|
||||
case 0x06: rB = READ_MEM_8(); break;
|
||||
case 0x07: INVALID(); break;
|
||||
case 0x08: INVALID(); break;
|
||||
case 0x07: INVALID(opcode); break;
|
||||
case 0x08: INVALID(opcode); break;
|
||||
case 0x09: ADD16(_rIX, rBC); break;
|
||||
case 0x0A: INVALID(); break;
|
||||
case 0x0B: INVALID(); break;
|
||||
case 0x0A: INVALID(opcode); break;
|
||||
case 0x0B: INVALID(opcode); break;
|
||||
case 0x0C: INC8(_rC); break;
|
||||
case 0x0D: DEC8(_rC); break;
|
||||
case 0x0E: rC = READ_MEM_8(); break;
|
||||
case 0x0F: INVALID(); break;
|
||||
case 0x0F: INVALID(opcode); break;
|
||||
|
||||
case 0x10: INVALID(); break;
|
||||
case 0x11: INVALID(); break;
|
||||
case 0x12: INVALID(); break;
|
||||
case 0x13: INVALID(); break;
|
||||
case 0x10: INVALID(opcode); break;
|
||||
case 0x11: INVALID(opcode); break;
|
||||
case 0x12: INVALID(opcode); break;
|
||||
case 0x13: INVALID(opcode); break;
|
||||
case 0x14: INC8(_rD); break;
|
||||
case 0x15: DEC8(_rD); break;
|
||||
case 0x16: rD = READ_MEM_8(); break;
|
||||
case 0x17: INVALID(); break;
|
||||
case 0x18: INVALID(); break;
|
||||
case 0x17: INVALID(opcode); break;
|
||||
case 0x18: INVALID(opcode); break;
|
||||
case 0x19: ADD16(_rIX, rDE); break;
|
||||
case 0x1A: INVALID(); break;
|
||||
case 0x1B: INVALID(); break;
|
||||
case 0x1A: INVALID(opcode); break;
|
||||
case 0x1B: INVALID(opcode); break;
|
||||
case 0x1C: INC8(_rE); break;
|
||||
case 0x1D: DEC8(_rE); break;
|
||||
case 0x1E: rE = READ_MEM_8(); break;
|
||||
case 0x1F: INVALID(); break;
|
||||
case 0x1F: INVALID(opcode); break;
|
||||
|
||||
case 0x20: INVALID(); break;
|
||||
case 0x20: INVALID(opcode); break;
|
||||
case 0x21: rIX = READ_MEM_16(); break;
|
||||
case 0x22: WRITE_MEM_16(READ_MEM_16(),rIX); break;
|
||||
case 0x23: INC16(_rIX); break;
|
||||
case 0x24: INC8(_rIXH); break;
|
||||
case 0x25: DEC8(_rIXH); break;
|
||||
case 0x26: rIXH = READ_MEM_8(); break;
|
||||
case 0x27: INVALID(); break;
|
||||
case 0x28: INVALID(); break;
|
||||
case 0x27: INVALID(opcode); break;
|
||||
case 0x28: INVALID(opcode); break;
|
||||
case 0x29: ADD16(_rIX, rIX); break;
|
||||
case 0x2A: rIX = READ_MEM_16(READ_MEM_16());break;
|
||||
case 0x2B: DEC16(_rIX); break;
|
||||
case 0x2C: INC8(_rIXL); break;
|
||||
case 0x2D: DEC8(_rIXL); break;
|
||||
case 0x2E: rIXL = READ_MEM_8(); break;
|
||||
case 0x2F: INVALID(); break;
|
||||
case 0x2F: INVALID(opcode); break;
|
||||
|
||||
case 0x30: INVALID(); break;
|
||||
case 0x31: INVALID(); break;
|
||||
case 0x32: INVALID(); break;
|
||||
case 0x33: INVALID(); break;
|
||||
case 0x30: INVALID(opcode); break;
|
||||
case 0x31: INVALID(opcode); break;
|
||||
case 0x32: INVALID(opcode); break;
|
||||
case 0x33: INVALID(opcode); break;
|
||||
case 0x34: INCMEM8(rIX+READ_MEM_8());t+=2; break;
|
||||
case 0x35: DECMEM8(rIX+READ_MEM_8());t+=2; break;
|
||||
case 0x36: d=READ_MEM_8(); WRITE_MEM_8(rIX+d, READ_MEM_8()); t+=2; break;
|
||||
case 0x37: INVALID(); break;
|
||||
case 0x38: INVALID(); break;
|
||||
case 0x37: INVALID(opcode); break;
|
||||
case 0x38: INVALID(opcode); break;
|
||||
case 0x39: ADD16(_rIX, rSP); break;
|
||||
case 0x3A: INVALID(); break;
|
||||
case 0x3B: INVALID(); break;
|
||||
case 0x3A: INVALID(opcode); break;
|
||||
case 0x3B: INVALID(opcode); break;
|
||||
case 0x3C: INC8(_rA); break;
|
||||
case 0x3D: DEC8(_rA); break;
|
||||
case 0x3E: rA = READ_MEM_8(); break;
|
||||
case 0x3F: INVALID(); break;
|
||||
case 0x3F: INVALID(opcode); break;
|
||||
|
||||
case 0x40: rB = rB; break;
|
||||
case 0x41: rB = rC; break;
|
||||
@@ -1751,7 +1754,7 @@ namespace z80
|
||||
case 0x73: d=READ_MEM_8(); WRITE_MEM_8(rIX+d, rE);t+=5;break;
|
||||
case 0x74: d=READ_MEM_8(); WRITE_MEM_8(rIX+d, rH);t+=5;break;
|
||||
case 0x75: d=READ_MEM_8(); WRITE_MEM_8(rIX+d, rL);t+=5;break;
|
||||
case 0x76: INVALID(); break;
|
||||
case 0x76: INVALID(opcode); break;
|
||||
case 0x77: d=READ_MEM_8(); WRITE_MEM_8(rIX+d, rA);t+=5;break;
|
||||
case 0x78: rA = rB; break;
|
||||
case 0x79: rA = rC; break;
|
||||
@@ -1836,7 +1839,7 @@ namespace z80
|
||||
case 0xE5: PUSH(rIX); break;
|
||||
case 0xE9: JP(cNO, rIX); break;
|
||||
case 0xF9: rSP = rIX; t+=2; break;
|
||||
default: INVALID(); break;
|
||||
default: INVALID(opcode); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2195,7 +2198,7 @@ namespace z80
|
||||
case 0xBA: INDR(); break;
|
||||
case 0xBB: OUTDR(); break;
|
||||
|
||||
default: INVALID(); break;
|
||||
default: INVALID(opcode); break;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2207,73 +2210,73 @@ namespace z80
|
||||
|
||||
switch (opcode)
|
||||
{
|
||||
case 0x00: INVALID(); break;
|
||||
case 0x01: INVALID(); break;
|
||||
case 0x02: INVALID(); break;
|
||||
case 0x03: INVALID(); break;
|
||||
case 0x00: INVALID(opcode); break;
|
||||
case 0x01: INVALID(opcode); break;
|
||||
case 0x02: INVALID(opcode); break;
|
||||
case 0x03: INVALID(opcode); break;
|
||||
case 0x04: INC8(_rB); break;
|
||||
case 0x05: DEC8(_rB); break;
|
||||
case 0x06: rB = READ_MEM_8(); break;
|
||||
case 0x07: INVALID(); break;
|
||||
case 0x08: INVALID(); break;
|
||||
case 0x07: INVALID(opcode); break;
|
||||
case 0x08: INVALID(opcode); break;
|
||||
case 0x09: ADD16(_rIY, rBC); break;
|
||||
case 0x0A: INVALID(); break;
|
||||
case 0x0B: INVALID(); break;
|
||||
case 0x0A: INVALID(opcode); break;
|
||||
case 0x0B: INVALID(opcode); break;
|
||||
case 0x0C: INC8(_rC); break;
|
||||
case 0x0D: DEC8(_rC); break;
|
||||
case 0x0E: rC = READ_MEM_8(); break;
|
||||
case 0x0F: INVALID(); break;
|
||||
case 0x0F: INVALID(opcode); break;
|
||||
|
||||
case 0x10: INVALID(); break;
|
||||
case 0x11: INVALID(); break;
|
||||
case 0x12: INVALID(); break;
|
||||
case 0x13: INVALID(); break;
|
||||
case 0x10: INVALID(opcode); break;
|
||||
case 0x11: INVALID(opcode); break;
|
||||
case 0x12: INVALID(opcode); break;
|
||||
case 0x13: INVALID(opcode); break;
|
||||
case 0x14: INC8(_rD); break;
|
||||
case 0x15: DEC8(_rD); break;
|
||||
case 0x16: rD = READ_MEM_8(); break;
|
||||
case 0x17: INVALID(); break;
|
||||
case 0x18: INVALID(); break;
|
||||
case 0x17: INVALID(opcode); break;
|
||||
case 0x18: INVALID(opcode); break;
|
||||
case 0x19: ADD16(_rIY, rDE); break;
|
||||
case 0x1A: INVALID(); break;
|
||||
case 0x1B: INVALID(); break;
|
||||
case 0x1A: INVALID(opcode); break;
|
||||
case 0x1B: INVALID(opcode); break;
|
||||
case 0x1C: INC8(_rE); break;
|
||||
case 0x1D: DEC8(_rE); break;
|
||||
case 0x1E: rE = READ_MEM_8(); break;
|
||||
case 0x1F: INVALID(); break;
|
||||
case 0x1F: INVALID(opcode); break;
|
||||
|
||||
case 0x20: INVALID(); break;
|
||||
case 0x20: INVALID(opcode); break;
|
||||
case 0x21: rIY = READ_MEM_16(); break;
|
||||
case 0x22: WRITE_MEM_16(READ_MEM_16(),rIY); break;
|
||||
case 0x23: INC16(_rIY); break;
|
||||
case 0x24: INC8(_rIYH); break;
|
||||
case 0x25: DEC8(_rIYH); break;
|
||||
case 0x26: rIYH = READ_MEM_8(); break;
|
||||
case 0x27: INVALID(); break;
|
||||
case 0x28: INVALID(); break;
|
||||
case 0x27: INVALID(opcode); break;
|
||||
case 0x28: INVALID(opcode); break;
|
||||
case 0x29: ADD16(_rIY, rIY); break;
|
||||
case 0x2A: rIY = READ_MEM_16(READ_MEM_16());break;
|
||||
case 0x2B: DEC16(_rIY); break;
|
||||
case 0x2C: INC8(_rIYL); break;
|
||||
case 0x2D: DEC8(_rIYL); break;
|
||||
case 0x2E: rIYL = READ_MEM_8(); break;
|
||||
case 0x2F: INVALID(); break;
|
||||
case 0x2F: INVALID(opcode); break;
|
||||
|
||||
case 0x30: INVALID(); break;
|
||||
case 0x31: INVALID(); break;
|
||||
case 0x32: INVALID(); break;
|
||||
case 0x33: INVALID(); break;
|
||||
case 0x30: INVALID(opcode); break;
|
||||
case 0x31: INVALID(opcode); break;
|
||||
case 0x32: INVALID(opcode); break;
|
||||
case 0x33: INVALID(opcode); break;
|
||||
case 0x34: INCMEM8(rIY+READ_MEM_8());t+=2; break;
|
||||
case 0x35: DECMEM8(rIY+READ_MEM_8());t+=2; break;
|
||||
case 0x36: d=READ_MEM_8(); WRITE_MEM_8(rIY+d, READ_MEM_8()); t+=2; break;
|
||||
case 0x37: INVALID(); break;
|
||||
case 0x38: INVALID(); break;
|
||||
case 0x37: INVALID(opcode); break;
|
||||
case 0x38: INVALID(opcode); break;
|
||||
case 0x39: ADD16(_rIY, rSP); break;
|
||||
case 0x3A: INVALID(); break;
|
||||
case 0x3B: INVALID(); break;
|
||||
case 0x3A: INVALID(opcode); break;
|
||||
case 0x3B: INVALID(opcode); break;
|
||||
case 0x3C: INC8(_rA); break;
|
||||
case 0x3D: DEC8(_rA); break;
|
||||
case 0x3E: rA = READ_MEM_8(); break;
|
||||
case 0x3F: INVALID(); break;
|
||||
case 0x3F: INVALID(opcode); break;
|
||||
|
||||
case 0x40: rB = rB; break;
|
||||
case 0x41: rB = rC; break;
|
||||
@@ -2332,7 +2335,7 @@ namespace z80
|
||||
case 0x73: d=READ_MEM_8(); WRITE_MEM_8(rIY+d, rE);t+=5;break;
|
||||
case 0x74: d=READ_MEM_8(); WRITE_MEM_8(rIY+d, rH);t+=5;break;
|
||||
case 0x75: d=READ_MEM_8(); WRITE_MEM_8(rIY+d, rL);t+=5;break;
|
||||
case 0x76: INVALID(); break;
|
||||
case 0x76: INVALID(opcode); break;
|
||||
case 0x77: d=READ_MEM_8(); WRITE_MEM_8(rIY+d, rA);t+=5;break;
|
||||
case 0x78: rA = rB; break;
|
||||
case 0x79: rA = rC; break;
|
||||
@@ -2417,7 +2420,7 @@ namespace z80
|
||||
case 0xE5: PUSH(rIY); break;
|
||||
case 0xE9: JP(cNO, rIY); break;
|
||||
case 0xF9: rSP = rIY; t+=2; break;
|
||||
default: INVALID(); break;
|
||||
default: INVALID(opcode); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user