static void mon_register_print(int mem) { mos6510_regs_t *regs; if (monitor_diskspace_dnr(mem) >= 0) { if (!check_drive_emu_level_ok(monitor_diskspace_dnr(mem) + 8)) { return; } } else if (mem != e_comp_space) { log_error(LOG_ERR, "Unknown memory space!"); return; } regs = mon_interfaces[mem]->cpu_regs; mon_out(" ADDR AC XR YR SP 00 01 NV-BDIZC "); if (mon_interfaces[mem]->get_line_cycle != NULL) { mon_out("LIN CYC STOPWATCH\n"); } else { mon_out(" STOPWATCH\n"); } mon_out(".;%04x %02x %02x %02x %02x %02x %02x %d%d%c%d%d%d%d%d", addr_location(mon_register_get_val(mem, e_PC)), mon_register_get_val(mem, e_A), mon_register_get_val(mem, e_X), mon_register_get_val(mem, e_Y), mon_register_get_val(mem, e_SP), mon_get_mem_val(mem, 0), mon_get_mem_val(mem, 1), TEST(MOS6510_REGS_GET_SIGN(regs)), TEST(MOS6510_REGS_GET_OVERFLOW(regs)), '1', TEST(MOS6510_REGS_GET_BREAK(regs)), TEST(MOS6510_REGS_GET_DECIMAL(regs)), TEST(MOS6510_REGS_GET_INTERRUPT(regs)), TEST(MOS6510_REGS_GET_ZERO(regs)), TEST(MOS6510_REGS_GET_CARRY(regs))); if (mon_interfaces[mem]->get_line_cycle != NULL) { unsigned int line, cycle; int half_cycle; mon_interfaces[mem]->get_line_cycle(&line, &cycle, &half_cycle); if (half_cycle == -1) { mon_out(" %03i %03i", line, cycle); } else { mon_out(" %03i %03i %i", line, cycle, half_cycle); } } mon_stopwatch_show(" ", "\n"); }
void mon_disassemble_with_regdump(MEMSPACE mem, unsigned int addr) { monitor_cpu_type_t *monitor_cpu; const char *dis_inst; unsigned opc_size; monitor_cpu = monitor_cpu_for_memspace[mem]; dis_inst = mon_disassemble_instr_interal(&opc_size, addr); if (monitor_cpu->mon_register_print_ex) { mon_out("%-35s - %s ", dis_inst, monitor_cpu->mon_register_print_ex(mem)); } else { mon_out("%s ", dis_inst); } mon_stopwatch_show("", "\n"); }