if(num >= 2) {
if((strcasecmp(params[xnum], "0") == 0)) {
- steps = MAX_CPU_TRACE; // TBD
+ steps = MAX_CPU_TRACE - 1; // TBD
xnum++;
} else {
- steps = min((int)my_hexatoi(target, params[xnum]), MAX_CPU_TRACE);
+ steps = min((int)atoi(params[xnum]), MAX_CPU_TRACE - 1);
if(steps > 0) xnum++;
+ if(steps <= 0) goto _ut_finish;
}
}
_TCHAR log_path[_MAX_PATH];
}
}
int steps_left = steps;
- int max_steps = MAX_CPU_TRACE;
- int begin_step = (MAX_CPU_TRACE - steps) & (MAX_CPU_TRACE - 1);
+ int max_step = target_debugger->cpu_trace_ptr & (MAX_CPU_TRACE - 1);
+ int begin_step = (target_debugger->cpu_trace_ptr - steps) & (MAX_CPU_TRACE - 1);
if(!(target_debugger->cpu_trace_overwrap)) {
- max_steps = target_debugger->cpu_trace_ptr;
- begin_step = 0;
- steps_left = (max_steps > steps_left) ? steps_left : max_steps;
+ if(steps_left > max_step) {
+ begin_step = 0;
+ steps_left = max_step;
+ steps = max_step;
+ }
}
if(steps_left > 1024) {
if(logging) {
my_printf(p->osd, "** NOTE: Trace %d steps, but display only 1024 steps,more are only logging.", steps_left);
} else {
my_printf(p->osd, "** NOTE: Request to trace %d steps, but display only 1024 steps.", steps_left);
- begin_step = max_steps - 1024;
- if(begin_step < 0) begin_step = 0;
+ begin_step = (max_step - 1024) & (MAX_CPU_TRACE - 1);
steps_left = 1024;
}
}
- for(int i = begin_step; i < max_steps; i++) {
+
+ for(int i = begin_step; i != max_step; i = ((i + 1) & (MAX_CPU_TRACE - 1)) ) {
if(logging) {
if((log_fio != NULL)) {
if(!(log_fio->IsOpened())) {
logging = false;
}
}
- int index = (target_debugger->cpu_trace_ptr + i) & (MAX_CPU_TRACE - 1);
+ int index = i;
if(!(target_debugger->cpu_trace[index] & ~target->get_debug_prog_addr_mask())) {
const _TCHAR *name = my_get_symbol(target, target_debugger->cpu_trace[index] & target->get_debug_prog_addr_mask());
- int len = target->debug_dasm(target_debugger->cpu_trace[index] & target->get_debug_prog_addr_mask(), buffer, array_length(buffer));
+ int len = target->debug_dasm_with_userdata(target_debugger->cpu_trace[index] & target->get_debug_prog_addr_mask(), buffer, array_length(buffer), target_debugger->cpu_trace_userdata[index]);
_TCHAR tmps[8192];
_TCHAR tmps2[512];
memset(tmps, 0x00, sizeof(tmps));
my_printf(p->osd, "%s", tmps);
}
steps_left--;
+ if(steps_left <= 0) break;
}
}
// if(logging) {
+ _ut_finish:
if(log_fio != NULL) {
if(log_fio->IsOpened()) {
{
message("* vm/common_vm")
-SET(THIS_LIB_VERSION 2.16.0)
+SET(THIS_LIB_VERSION 2.16.1)
#include(cotire)
set(s_vm_common_vm_srcs
memset(cpu_trace, 0xff, sizeof(cpu_trace));
memset(cpu_trace_exp, 0x00, sizeof(cpu_trace_exp));
memset(cpu_trace_exp_map, 0x00, sizeof(cpu_trace_exp_map));
+ memset(cpu_trace_userdata, 0x00, sizeof(cpu_trace_userdata));
exception_happened = false;
stop_on_exception = true;
prev_cpu_trace = 0xffffffff;
cpu_trace_exp[(cpu_trace_ptr - 1) & (MAX_CPU_TRACE - 1)] = exception_code;
cpu_trace_exp_map[(cpu_trace_ptr - 1) & (MAX_CPU_TRACE - 1)] = true;
}
+ // Userdata should after executing instruction.
+ void add_cpu_trace_userdata(uint32_t data, uint32_t mask)
+ {
+ cpu_trace_userdata[(cpu_trace_ptr - 1) & (MAX_CPU_TRACE - 1)] &= ~mask;
+ cpu_trace_userdata[(cpu_trace_ptr - 1) & (MAX_CPU_TRACE - 1)] |= (data & mask);
+ }
void add_cpu_trace(uint32_t pc)
{
if(prev_cpu_trace != pc) {
cpu_trace_exp_map[cpu_trace_ptr] = false;
+ cpu_trace_userdata[cpu_trace_ptr] = 0;
cpu_trace_exp[cpu_trace_ptr] = 0;
cpu_trace[cpu_trace_ptr++] = prev_cpu_trace = pc;
- if(cpu_trace_ptr >= MAX_CPU_TRACE) cpu_trace_overwrap = true;
- cpu_trace_ptr &= (MAX_CPU_TRACE - 1);
+ if(cpu_trace_ptr >= MAX_CPU_TRACE) {
+ cpu_trace_overwrap = true;
+ cpu_trace_ptr = 0;
+ }
}
}
break_point_t bp, rbp, wbp, ibp, obp;
int history_ptr;
uint32_t cpu_trace[MAX_CPU_TRACE], prev_cpu_trace;
uint64_t cpu_trace_exp[MAX_CPU_TRACE];
+ uint32_t cpu_trace_userdata[MAX_CPU_TRACE]; // ToDo: Is need larger userdata?
+
bool cpu_trace_exp_map[MAX_CPU_TRACE];
int cpu_trace_ptr;
bool cpu_trace_overwrap;
}
virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
{
+ return debug_dasm_with_userdata(pc, buffer, buffer_len, 0);
+ }
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0)
+ {
return 0;
}
#endif
SET_NZ8(r);
}
-int HD6301::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int HD6301::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
uint8_t ops[4];
for(int i = 0; i < 4; i++) {
~HD6301() {}
bool process_state(FILEIO* state_fio, bool loading);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len) override;
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0) override;
};
#endif
uint32_t read_debug_io8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0) override;
//#endif
// unique function
// disassembler
-int HUC6280_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int HUC6280_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
uint8_t oprom[8];
uint8_t *opram = oprom;
return true;
}
-int I286::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int I286::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
cpu_state *cpustate = (cpu_state *)opaque;
UINT64 eip = pc - cpustate->base[CS];
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
uint32_t read_debug_reg(const _TCHAR *reg);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
+
#endif
void save_state_cpustate(FILEIO* state_fio);
void load_state_cpustate(FILEIO* state_fio);
cpustate->prev_total_cycles = cpustate->total_cycles;
return true;
}
-
-int I386::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int I386::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
i386_state *cpustate = (i386_state *)opaque;
UINT64 eip = pc - cpustate->sreg[CS].base;
ops[i] = d_mem->read_data8w(pc + i, &wait);
}
UINT8 *oprom = ops;
-
- if(cpustate->operand_size) {
+ bool __op32 = (userdata & I386_TRACE_DATA_BIT_USERDATA_SET) ? ((userdata & I386_TRACE_DATA_BIT_OP32) ? true : false) : ((cpustate->operand_size != 0) ? true : false);
+ if(__op32) {
return CPU_DISASSEMBLE_CALL(x86_32) & DASMFLAG_LENGTHMASK;
} else {
return CPU_DISASSEMBLE_CALL(x86_16) & DASMFLAG_LENGTHMASK;
#define SIG_I386_A20 1
#define SIG_I386_NOTIFY_RESET 2
+
+#define I386_TRACE_DATA_BIT_USERDATA_SET 0x80000000
+#define I386_TRACE_DATA_BIT_OP32 0x00000001
//#ifdef USE_DEBUGGER
class DEBUGGER;
//#endif
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
uint32_t read_debug_reg(const _TCHAR *reg);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
//#endif
bool process_state(FILEIO* state_fio, bool loading);
// disassembler
-int I8080_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int I8080_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
uint8_t ops[4];
int ptr = 0;
uint32_t read_debug_io8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
//#endif
// unique function
void set_context_mem(DEVICE* device)
return true;
}
-int I286::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int I286::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
cpu_state *cpustate = (cpu_state *)opaque;
UINT64 eip = pc - cpustate->base[CS];
uint32_t read_debug_io16(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
+
#endif
bool process_state(FILEIO* state_fio, bool loading);
}
int DEVICE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
{
+ return debug_dasm_with_userdata(pc, buffer, buffer_len, 0);
+}
+
+int DEVICE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
+{
return 0;
}
/*
virtual uint32_t read_debug_reg(const _TCHAR *reg);
virtual bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
/*
These functions are used for debugging non-cpu device
Insert debugger between standard read/write functions and these functions for checking breakpoints
const UINT32 DASMFLAG_LENGTHMASK = 0x0000ffff; // the low 16-bits contain the actual length
extern CPU_DISASSEMBLE(m6502);
-int M6502::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int M6502::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
#ifdef USE_DEBUGGER
uint8_t oprom[4];
uint32_t read_debug_data8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
//#endif
// unique functions
void initialize();
void reset();
int run(int clock);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
bool process_state(FILEIO* state_fio, bool loading);
};
void initialize();
void reset();
int run(int clock);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
bool process_state(FILEIO* state_fio, bool loading);
};
#include "mame/emu/cpu/m6502/6502dasm.c"
-int M6502_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int M6502_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
return 0;
}
try
{
I386OP(decode_opcode)(cpustate);
+ UINT32 _ops = (cpustate->operand_size) ? (I386_TRACE_DATA_BIT_USERDATA_SET | I386_TRACE_DATA_BIT_OP32) : (I386_TRACE_DATA_BIT_USERDATA_SET);
+ cpustate->debugger->add_cpu_trace_userdata(_ops, (I386_TRACE_DATA_BIT_USERDATA_SET | I386_TRACE_DATA_BIT_OP32));
+
if(cpustate->exception_caused != 0) {
exception_pc = cpustate->exception_pc;
exception_code = cpustate->exception_code;
try
{
I386OP(decode_opcode)(cpustate);
+ UINT32 _ops = (cpustate->operand_size) ? (I386_TRACE_DATA_BIT_USERDATA_SET | I386_TRACE_DATA_BIT_OP32) : (I386_TRACE_DATA_BIT_USERDATA_SET);
+ cpustate->debugger->add_cpu_trace_userdata(_ops, (I386_TRACE_DATA_BIT_USERDATA_SET | I386_TRACE_DATA_BIT_OP32));
if(cpustate->TF && old_tf)
{
cpustate->prev_eip = cpustate->eip;
#include "mc6800_consts.h"
-int MB8861::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int MB8861::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata )
{
uint8_t ops[4];
if(d_mem_stored != NULL) {
set_device_name(_T("MB8861 MPU"));
}
~MB8861() {}
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len) override;
-
-
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
};
#endif
}
}
-int MC6800::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int MC6800::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
uint8_t ops[4];
if(d_mem_stored != NULL) {
uint32_t read_debug_data32(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
//#endif
virtual bool process_state(FILEIO* state_fio, bool loading);
}
}
-int MC6801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int MC6801::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
uint8_t ops[4];
for(int i = 0; i < 4; i++) {
bool process_state(FILEIO* state_fio, bool loading);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len) override;
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0) override;
//#if defined(HAS_MC6801) || defined(HAS_HD6301)
void set_context_port1(DEVICE* device, int id, uint32_t mask, int shift)
{
now_debugging = false;
}
- d_debugger->add_cpu_trace(PC);
+ d_debugger->add_cpu_trace(PC & 0xffff);
int first_icount = icount;
pPPC = pPC;
uint8_t ireg = ROP(PCD);
d_mem = d_mem_stored;
}
} else {
- d_debugger->add_cpu_trace(PC);
+ d_debugger->add_cpu_trace(PC & 0xffff);
int first_icount = icount;
pPPC = pPC;
uint8_t ireg = ROP(PCD);
}
} else {
pPPC = pPC;
+ d_debugger->add_cpu_trace(PC & 0xffff);
uint8_t ireg = ROP(PCD);
PC++;
icount -= cycles1[ireg];
}
}
-int MC6809::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int MC6809::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
if(__USE_DEBUGGER) {
_TCHAR buffer_tmp[1024]; // enough ???
}
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
virtual uint32_t cpu_disassemble_m6809(_TCHAR *buffer, uint32_t pc, const uint8_t *oprom, const uint8_t *opram);
virtual void debugger_hook(void);
// common functions
void initialize();
void run_one_opecode();
uint32_t cpu_disassemble_m6809(_TCHAR *buffer, uint32_t pc, const uint8_t *oprom, const uint8_t *opram);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
void debugger_hook(void);
};
#endif
return 0;
}
-int MC6809_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int MC6809_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
return 0;
}
uint32_t read_debug_io8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
//#endif
// unique functions
***************************************************************************/
-int MCS48_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int MCS48_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
mcs48_state *cpustate = (mcs48_state *)opaque;
uint32_t ptr = pc;
extern CPU_DISASSEMBLE(m6502);
-int N2A03::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int N2A03::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
#ifdef USE_DEBUGGER
uint8_t oprom[4];
#include "mame/emu/cpu/tms9900/9900dasm.c"
-int TMS9995::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int TMS9995::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
UINT8 oprom[16], opram[16];
for(int i = 0; i < 16; i++) {
uint32_t read_debug_io8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
#endif
bool process_state(FILEIO* state_fio, bool loading);
// unique functions
return getb();
}
-int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int UPD7801::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
if(d_debugger == NULL) return 0;
for(int i = 0; i < 4; i++) {
uint32_t read_debug_io8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
+
//#endif
bool process_state(FILEIO* state_fio, bool loading);
// disassembler
-int UPD7810::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int UPD7810::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
{
uint8_t oprom[8];
uint8_t *opram = oprom;
uint32_t read_debug_io8(uint32_t addr);
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
#endif
bool process_state(FILEIO* state_fio, bool loading);
extern int z80_dasm_ptr;
}
-int Z80::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int Z80::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata )
{
for(int i = 0; i < 4; i++) {
int wait;
}
bool write_debug_reg(const _TCHAR *reg, uint32_t data);
bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
//#endif
// unique functions
void set_context_mem(DEVICE* device)
void reset();
int run(int clock) override;
- int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+ int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
#ifdef USE_DEBUGGER
void write_debug_data8(uint32_t addr, uint32_t data);
uint32_t read_debug_data8(uint32_t addr);
// disassembler
-int Z80_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+int Z80_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata )
{
return -1;
}