mirror of https://github.com/trudnai/Steve2.git
- More memory addressing to monitor
- Faster m6502 save and restore
This commit is contained in:
parent
ba4a99ad0d
commit
97ce58420e
|
@ -118,7 +118,8 @@ void m6502_Debug(void) {
|
|||
for (
|
||||
m6502_saved = m6502, clk_6502_per_frm_max = clk_6502_per_frm;
|
||||
m6502.clkfrm < clk_6502_per_frm_max;
|
||||
m6502_saved = m6502, m6502.clkfrm += m6502_Step_dbg()
|
||||
memcpy(&m6502_saved, &m6502, 7), // copy over only A, X, Y, Status, PC & SP...
|
||||
m6502.clkfrm += m6502_Step_dbg()
|
||||
){
|
||||
switch (m6502.interrupt) {
|
||||
case HALT:
|
||||
|
@ -144,8 +145,7 @@ void m6502_Debug(void) {
|
|||
// memory break happens *after* executing
|
||||
// the instruction, therefore we need to
|
||||
// step back to get it right in the debugger
|
||||
m6502_saved.interrupt = m6502.interrupt;
|
||||
m6502 = m6502_saved;
|
||||
memcpy(&m6502, &m6502_saved, 7); // copy over only A, X, Y, Status, PC & SP...
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -158,8 +158,7 @@ void m6502_Debug(void) {
|
|||
// memory break happens *after* executing
|
||||
// the instruction, therefore we need to
|
||||
// step back to get it right in the debugger
|
||||
m6502_saved.interrupt = m6502.interrupt;
|
||||
m6502 = m6502_saved;
|
||||
memcpy(&m6502, &m6502_saved, 7); // copy over only A, X, Y, Status, PC & SP...
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -260,7 +259,7 @@ void m6502_dbg_init(void) {
|
|||
m6502_dbg_bp_del_all(mem_write_breakpoints);
|
||||
|
||||
// TODO: TESTING ONLY!!!
|
||||
m6502_dbg_bp_add(mem_read_breakpoints, 0xC000);
|
||||
// m6502_dbg_bp_add(mem_read_breakpoints, 0xC000);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1212,11 +1212,21 @@ INLINE uint8_t _src_abs_dis() {
|
|||
INLINE int8_t _rel_addr() {
|
||||
return _fetch();
|
||||
}
|
||||
INLINE int8_t _rel_addr_dbg() {
|
||||
uint16_t addr = _fetch();
|
||||
is_mem_rd_bp(addr);
|
||||
return addr;
|
||||
}
|
||||
INLINE int8_t _rel_addr_dis() {
|
||||
_disPrintf(disassembly.oper, sizeof(disassembly.oper), "$%04X", m6502.PC + 1 + (int8_t)memread8(m6502.PC));
|
||||
return _fetch_dis();
|
||||
}
|
||||
INLINE uint16_t _abs_addr() {
|
||||
uint16_t addr = _fetch16();
|
||||
is_mem_rd_bp(addr);
|
||||
return addr;
|
||||
}
|
||||
INLINE uint16_t _abs_addr_dbg() {
|
||||
return _fetch16();
|
||||
}
|
||||
INLINE uint16_t _abs_addr_dis() {
|
||||
|
@ -1226,6 +1236,9 @@ INLINE uint16_t _abs_addr_dis() {
|
|||
INLINE uint16_t _ind_addr() {
|
||||
return memread16( _fetch16() );
|
||||
}
|
||||
INLINE uint16_t _ind_addr_dbg() {
|
||||
return _memread16_dbg( _fetch16() );
|
||||
}
|
||||
INLINE uint16_t _ind_addr_dis() {
|
||||
_disPrintf(disassembly.oper, sizeof(disassembly.oper), "($%04X)", memread16(m6502.PC));
|
||||
_disPrintf(disassembly.comment, sizeof(disassembly.comment), "ind_addr:%04X", memread16(memread16(m6502.PC)));
|
||||
|
@ -1305,6 +1318,9 @@ INLINE uint8_t _addr_zp_dis() {
|
|||
INLINE uint8_t _src_zp() {
|
||||
return memread8_low(_addr_zp());
|
||||
}
|
||||
INLINE uint8_t _src_zp_dbg() {
|
||||
return _memread_dbg(_addr_zp());
|
||||
}
|
||||
INLINE uint8_t _src_zp_dis() {
|
||||
return memread8_low(_addr_zp_dis());
|
||||
}
|
||||
|
@ -1387,6 +1403,11 @@ INLINE uint8_t _src_X_ind_dis() {
|
|||
INLINE uint16_t _addr_ind_Y() {
|
||||
return memread16( _fetch() ) + m6502.Y;
|
||||
}
|
||||
INLINE uint16_t _addr_ind_Y_dbg() {
|
||||
uint16_t addr = _memread16_dbg( _fetch() ) + m6502.Y;
|
||||
is_mem_rd_bp(addr);
|
||||
return addr;
|
||||
}
|
||||
INLINE uint16_t _addr_ind_Y_dis() {
|
||||
_disPrintf(disassembly.oper, sizeof(disassembly.oper), "($%02X),Y", memread8(m6502.PC) );
|
||||
_disPrintf(disassembly.comment, sizeof(disassembly.comment), "ind_addr:%04X", memread16( memread8(m6502.PC) ) + m6502.Y );
|
||||
|
@ -1423,6 +1444,9 @@ INLINE uint8_t _addr_zp_X_dis() {
|
|||
INLINE uint8_t _src_zp_X() {
|
||||
return memread8_low(_addr_zp_X());
|
||||
}
|
||||
INLINE uint8_t _src_zp_X_dbg() {
|
||||
return _memread_dbg(_addr_zp_X());
|
||||
}
|
||||
INLINE uint8_t _src_zp_X_dis() {
|
||||
return memread8_low(_addr_zp_X_dis());
|
||||
}
|
||||
|
@ -1446,6 +1470,9 @@ INLINE uint8_t _addr_zp_Y_dis() {
|
|||
INLINE uint8_t _src_zp_Y() {
|
||||
return memread8_low(_addr_zp_Y());
|
||||
}
|
||||
INLINE uint8_t _src_zp_Y_dbg() {
|
||||
return _memread_dbg(_addr_zp_Y());
|
||||
}
|
||||
INLINE uint8_t _src_zp_Y_dis() {
|
||||
return memread8_low(_addr_zp_Y_dis());
|
||||
}
|
||||
|
|
|
@ -427,10 +427,13 @@ INLINE uint8_t _src_abs(void);
|
|||
INLINE uint8_t _src_abs_dbg(void);
|
||||
INLINE uint8_t _src_abs_dis(void);
|
||||
INLINE int8_t _rel_addr(void);
|
||||
INLINE int8_t _rel_addr_dbg(void);
|
||||
INLINE int8_t _rel_addr_dis(void);
|
||||
INLINE uint16_t _abs_addr(void);
|
||||
INLINE uint16_t _abs_addr_dbg(void);
|
||||
INLINE uint16_t _abs_addr_dis(void);
|
||||
INLINE uint16_t _ind_addr(void);
|
||||
INLINE uint16_t _ind_addr_dbg(void);
|
||||
INLINE uint16_t _ind_addr_dis(void);
|
||||
INLINE uint16_t _addr_abs_X(void);
|
||||
INLINE uint16_t _addr_abs_X_dis(void);
|
||||
|
@ -447,6 +450,7 @@ INLINE uint8_t _imm_dis(void);
|
|||
INLINE uint8_t _addr_zp(void);
|
||||
INLINE uint8_t _addr_zp_dis(void);
|
||||
INLINE uint8_t _src_zp(void);
|
||||
INLINE uint8_t _src_zp_dbg(void);
|
||||
INLINE uint8_t _src_zp_dis(void);
|
||||
INLINE uint16_t _addr_ind(void);
|
||||
INLINE uint16_t _addr_ind_dis(void);
|
||||
|
@ -459,6 +463,7 @@ INLINE uint8_t _src_X_ind(void);
|
|||
INLINE uint8_t _src_X_ind_dbg(void);
|
||||
INLINE uint8_t _src_X_ind_dis(void);
|
||||
INLINE uint16_t _addr_ind_Y(void);
|
||||
INLINE uint16_t _addr_ind_Y_dbg(void);
|
||||
INLINE uint16_t _addr_ind_Y_dis(void);
|
||||
INLINE uint8_t _src_ind_Y(void);
|
||||
INLINE uint8_t _src_ind_Y_dbg(void);
|
||||
|
@ -466,10 +471,12 @@ INLINE uint8_t _src_ind_Y_dis(void);
|
|||
INLINE uint8_t _addr_zp_X(void);
|
||||
INLINE uint8_t _addr_zp_X_dis(void);
|
||||
INLINE uint8_t _src_zp_X(void);
|
||||
INLINE uint8_t _src_zp_X_dbg(void);
|
||||
INLINE uint8_t _src_zp_X_dis(void);
|
||||
INLINE uint8_t _addr_zp_Y(void);
|
||||
INLINE uint8_t _addr_zp_Y_dis(void);
|
||||
INLINE uint8_t _src_zp_Y(void);
|
||||
INLINE uint8_t _src_zp_Y_dbg(void);
|
||||
INLINE uint8_t _src_zp_Y_dis(void);
|
||||
|
||||
|
||||
|
@ -516,26 +523,26 @@ INLINE uint8_t _src_zp_Y_dis(void);
|
|||
#define memwrite(addr,data) _memwrite(addr,data);
|
||||
#define addr_abs() _addr_abs()
|
||||
#define src_abs() _src_abs_dbg()
|
||||
#define rel_addr() _rel_addr()
|
||||
#define abs_addr() _abs_addr()
|
||||
#define ind_addr() _ind_addr()
|
||||
#define rel_addr() _rel_addr_dbg()
|
||||
#define abs_addr() _abs_addr_dbg()
|
||||
#define ind_addr() _ind_addr_dbg()
|
||||
#define addr_abs_X() _addr_abs_X()
|
||||
#define src_abs_X() _src_abs_X_dbg()
|
||||
#define addr_abs_Y() _addr_abs_Y()
|
||||
#define src_abs_Y() _src_abs_Y_dbg()
|
||||
#define imm() _imm()
|
||||
#define addr_zp() _addr_zp()
|
||||
#define src_zp() _src_zp()
|
||||
#define src_zp() _src_zp_dbg()
|
||||
#define addr_ind() _addr_ind()
|
||||
#define src_ind() _src_ind_dbg()
|
||||
#define addr_ind_X() _addr_ind_X()
|
||||
#define src_X_ind() _src_X_ind_dbg()
|
||||
#define addr_ind_Y() _addr_ind_Y()
|
||||
#define src_ind_Y() _src_ind_Y()
|
||||
#define addr_ind_Y() _addr_ind_Y_dbg()
|
||||
#define src_ind_Y() _src_ind_Y_dbg()
|
||||
#define addr_zp_X() _addr_zp_X()
|
||||
#define src_zp_X() _src_zp_X()
|
||||
#define src_zp_X() _src_zp_X_dbg()
|
||||
#define addr_zp_Y() _addr_zp_Y()
|
||||
#define src_zp_Y() _src_zp_Y()
|
||||
#define src_zp_Y() _src_zp_Y_dbg()
|
||||
|
||||
#else // DEBUGGER
|
||||
|
||||
|
|
Loading…
Reference in New Issue