- [NEW] makefile més util
- [FIX] next (F11) no longer keeps breaking on current line - [NEW] b alone sets breakpoint on current line - [NEW] d alone clears breakpoint on current line - [NEW] d all removes all breakpoints - [FIX] IX bit & IY bit instruction visualization is fixed - [FIX] RRD & RLD were swaped
This commit is contained in:
8
Makefile
8
Makefile
@@ -1,2 +1,8 @@
|
||||
default:
|
||||
compile:
|
||||
g++ -g *.cpp -lSDL2 -o z80
|
||||
|
||||
run: compile
|
||||
./z80
|
||||
|
||||
debug: compile
|
||||
gdb z80
|
||||
|
||||
5
main.cpp
5
main.cpp
@@ -55,13 +55,12 @@ int main(int argc, char *argv[])
|
||||
z80debug::refresh();
|
||||
zxscreen::refresh();
|
||||
} else if (e.key.keysym.scancode==SDL_SCANCODE_F11) {
|
||||
z80debug::next();
|
||||
//t += z80::step();
|
||||
t += z80debug::next();
|
||||
fps=0;
|
||||
fps_time = SDL_GetTicks();
|
||||
zxscreen::refresh();
|
||||
} else if (e.key.keysym.scancode==SDL_SCANCODE_F5) {
|
||||
z80::step();
|
||||
t += z80::step();
|
||||
z80debug::cont();
|
||||
fps=0;
|
||||
fps_time = SDL_GetTicks();
|
||||
|
||||
10
z80.cpp
10
z80.cpp
@@ -457,8 +457,8 @@ namespace z80
|
||||
{
|
||||
uint8_t a = rA;
|
||||
uint8_t hl = READ_MEM_8(rHL);
|
||||
rA = (rA & 0xF0) | (hl >> 4);
|
||||
hl = (hl<<4) | (a & 0X0F);
|
||||
rA = (rA & 0xF0) | (hl & 0x0F);
|
||||
hl = (hl >> 4) | (a << 4);
|
||||
WRITE_MEM_8(rHL, hl);
|
||||
KEEP_FLAGS(fC);
|
||||
FLAGS_SZXY(rA);
|
||||
@@ -470,8 +470,8 @@ namespace z80
|
||||
{
|
||||
uint8_t a = rA;
|
||||
uint8_t hl = READ_MEM_8(rHL);
|
||||
rA = (rA & 0xF0) | (hl & 0x0F);
|
||||
hl = (hl >> 4) | (a << 4);
|
||||
rA = (rA & 0xF0) | (hl >> 4);
|
||||
hl = (hl << 4) | (a & 0x0F);
|
||||
WRITE_MEM_8(rHL, hl);
|
||||
KEEP_FLAGS(fC);
|
||||
FLAGS_SZXY(rA);
|
||||
@@ -710,7 +710,7 @@ namespace z80
|
||||
|
||||
static inline const uint8_t SLL(const uint8_t v)
|
||||
{
|
||||
const uint8_t res = (v<<1) & 1;
|
||||
const uint8_t res = (v<<1) | 1;
|
||||
rF=0;
|
||||
FLAGS_SZXY(res);
|
||||
if (v&0x80) SET_FLAGS(fC);
|
||||
|
||||
@@ -365,6 +365,7 @@ namespace z80debug
|
||||
z80debug::refresh();
|
||||
} else if (strcmp(cmd, "b")==0 || strcmp(cmd, "break")==0) {
|
||||
getcmd();
|
||||
if (cmd[0] == 0) { breakpoints[z80::getPC()]=1; return; }
|
||||
int address = getnum(cmd);
|
||||
if (address<0 || address>65536) { strcpy(console_error, "Illegal break address"); return; }
|
||||
getcmd();
|
||||
@@ -384,6 +385,8 @@ namespace z80debug
|
||||
breakpoints[address] |= break_type;
|
||||
} else if (strcmp(cmd, "d")==0 || strcmp(cmd, "delete")==0) {
|
||||
getcmd();
|
||||
if (strcmp(cmd, "all")==0) { for (int i=0;i<65536;++i) breakpoints[i]=0; return; }
|
||||
if (cmd[0] == 0) { breakpoints[z80::getPC()]=0; return; }
|
||||
int address = getnum(cmd);
|
||||
if (address<0 || address>65536) { strcpy(console_error, "Illegal address"); return; }
|
||||
getcmd();
|
||||
@@ -414,9 +417,11 @@ namespace z80debug
|
||||
return (breakpoints[address]&type);
|
||||
}
|
||||
|
||||
void next()
|
||||
uint32_t next()
|
||||
{
|
||||
breakpoints[z80::getPC()+z80dis::getOpcodeSize(z80::getPC())] |= 8;
|
||||
const uint32_t t = z80::step();
|
||||
cont();
|
||||
return t;
|
||||
}
|
||||
}
|
||||
@@ -15,5 +15,5 @@ namespace z80debug
|
||||
void executeConsole();
|
||||
|
||||
const bool isbreak(const uint16_t address, const uint8_t type=1);
|
||||
void next();
|
||||
uint32_t next();
|
||||
}
|
||||
@@ -118,7 +118,7 @@ namespace z80dis
|
||||
}
|
||||
}
|
||||
|
||||
if (strstr(base, "hhd")) {
|
||||
if (strstr(buffer, "hhd")) {
|
||||
opcode_size+=1;
|
||||
|
||||
strcpy(base, buffer);
|
||||
|
||||
Reference in New Issue
Block a user