- [FIX] Corregit el acces als port amb OUT
- [NEW] Nou model de gestió de memòria
This commit is contained in:
46
z80dis.cpp
46
z80dis.cpp
@@ -1,6 +1,6 @@
|
||||
#include "z80dis.h"
|
||||
#include "z80.h"
|
||||
#include "z80mem.h"
|
||||
#include "zx_mem.h"
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
@@ -69,31 +69,31 @@ namespace z80dis
|
||||
|
||||
const char *getBase(const uint16_t pos)
|
||||
{
|
||||
if (z80mem::get()->readMem(pos) == 0xCB) {
|
||||
if (mem::readMem(pos) == 0xCB) {
|
||||
opcode_size=2;
|
||||
return cb_opcodes[z80mem::get()->readMem(pos+1)];
|
||||
} else if (z80mem::get()->readMem(pos) == 0xDD) {
|
||||
if (z80mem::get()->readMem(pos+1) == 0xCB) {
|
||||
return cb_opcodes[mem::readMem(pos+1)];
|
||||
} else if (mem::readMem(pos) == 0xDD) {
|
||||
if (mem::readMem(pos+1) == 0xCB) {
|
||||
opcode_size=4;
|
||||
return ix_bit_opcodes[z80mem::get()->readMem(pos+3)];
|
||||
return ix_bit_opcodes[mem::readMem(pos+3)];
|
||||
} else {
|
||||
opcode_size=2;
|
||||
return ix_opcodes[z80mem::get()->readMem(pos+1)];
|
||||
return ix_opcodes[mem::readMem(pos+1)];
|
||||
}
|
||||
} else if (z80mem::get()->readMem(pos) == 0xED) {
|
||||
} else if (mem::readMem(pos) == 0xED) {
|
||||
opcode_size=2;
|
||||
return misc_opcodes[(z80mem::get()->readMem(pos+1))-64];
|
||||
} else if (z80mem::get()->readMem(pos) == 0xFD) {
|
||||
if (z80mem::get()->readMem(pos+1) == 0xCB) {
|
||||
return misc_opcodes[(mem::readMem(pos+1))-64];
|
||||
} else if (mem::readMem(pos) == 0xFD) {
|
||||
if (mem::readMem(pos+1) == 0xCB) {
|
||||
opcode_size=4;
|
||||
return iy_bit_opcodes[z80mem::get()->readMem(pos+3)];
|
||||
return iy_bit_opcodes[mem::readMem(pos+3)];
|
||||
} else {
|
||||
opcode_size=2;
|
||||
return iy_opcodes[z80mem::get()->readMem(pos+1)];
|
||||
return iy_opcodes[mem::readMem(pos+1)];
|
||||
}
|
||||
} else {
|
||||
opcode_size=1;
|
||||
return base_opcodes[z80mem::get()->readMem(pos)];
|
||||
return base_opcodes[mem::readMem(pos)];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ namespace z80dis
|
||||
for (int i=0; i<4;++i)
|
||||
{
|
||||
if (opcode_size>i)
|
||||
sprintf(hex, "%02x ", z80mem::get()->readMem(pos+i));
|
||||
sprintf(hex, "%02x ", mem::readMem(pos+i));
|
||||
else
|
||||
sprintf(hex, " ");
|
||||
strcat(buffer, hex);
|
||||
@@ -119,9 +119,9 @@ namespace z80dis
|
||||
if (strstr(buffer, "4x"))
|
||||
{
|
||||
opcode_size+=2;
|
||||
const uint8_t memvalue = z80mem::get()->readMem(pos);
|
||||
const uint8_t memvalue = mem::readMem(pos);
|
||||
const uint16_t address = pos + ((memvalue==0xFD) || (memvalue==0xDD) || (memvalue==0xED)?2:1);
|
||||
const uint16_t word = z80mem::get()->readMem(address) + (z80mem::get()->readMem(address+1)<<8);
|
||||
const uint16_t word = mem::readMem(address) + (mem::readMem(address+1)<<8);
|
||||
if (symbols[word][0]!=0) {
|
||||
char *p = strstr(buffer, "$");
|
||||
(*p)='%'; p++;
|
||||
@@ -142,7 +142,7 @@ namespace z80dis
|
||||
{
|
||||
opcode_size = 4;
|
||||
strcpy(base, buffer);
|
||||
sprintf(buffer, base, z80mem::get()->readMem(pos+2), (int8_t)z80mem::get()->readMem(pos+3));
|
||||
sprintf(buffer, base, mem::readMem(pos+2), (int8_t)mem::readMem(pos+3));
|
||||
return buffer;
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ namespace z80dis
|
||||
{
|
||||
opcode_size+=1;
|
||||
strcpy(base, buffer);
|
||||
sprintf(buffer, base, z80mem::get()->readMem(pos+1));
|
||||
sprintf(buffer, base, mem::readMem(pos+1));
|
||||
}
|
||||
|
||||
if (strstr(buffer, "Xx"))
|
||||
@@ -161,9 +161,9 @@ namespace z80dis
|
||||
|
||||
if (opcode_size>4) {
|
||||
opcode_size=4;
|
||||
sprintf(buffer, base, pos + opcode_size + (int8_t)z80mem::get()->readMem(pos+2));
|
||||
sprintf(buffer, base, pos + opcode_size + (int8_t)mem::readMem(pos+2));
|
||||
} else {
|
||||
sprintf(buffer, base, pos + opcode_size + (int8_t)z80mem::get()->readMem(pos+1));
|
||||
sprintf(buffer, base, pos + opcode_size + (int8_t)mem::readMem(pos+1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,9 +173,9 @@ namespace z80dis
|
||||
strcpy(base, buffer);
|
||||
if (opcode_size>4) {
|
||||
opcode_size=4;
|
||||
sprintf(buffer, base, (int8_t)z80mem::get()->readMem(pos+3));
|
||||
sprintf(buffer, base, (int8_t)mem::readMem(pos+3));
|
||||
} else {
|
||||
sprintf(buffer, base, (int8_t)z80mem::get()->readMem(pos+2));
|
||||
sprintf(buffer, base, (int8_t)mem::readMem(pos+2));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user