X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fsim.src%2Fsim.cc;h=ed6fb4675d96aa2eba551e25d08605b3a7891e4e;hb=f27da39dbcab5678aca6d8462f1cc37a643f37e9;hp=d86cf5a3c5849e8297f4ec3167f840e0a54ddea1;hpb=7fe573ea83f6e0762dc73bc493f15fa2a8f6273d;p=fw%2Fsdcc diff --git a/sim/ucsim/sim.src/sim.cc b/sim/ucsim/sim.src/sim.cc index d86cf5a3..ed6fb467 100644 --- a/sim/ucsim/sim.src/sim.cc +++ b/sim/ucsim/sim.src/sim.cc @@ -183,8 +183,15 @@ cl_sim::stop(int reason) cmd->frozen_console->dd_printf("User stopped\n"); break; case resINV_INST: - cmd->frozen_console->dd_printf("Invalid instruction 0x%04x\n", - uc->get_mem(MEM_ROM, uc->PC)); + { + cmd->frozen_console->dd_printf("Invalid instruction"); + if (uc->rom) + cmd->frozen_console->dd_printf(" 0x%04x\n", + uc->rom->get(uc->PC)); + } + break; + case resERROR: + // uc::check_error prints error messages... break; default: cmd->frozen_console->dd_printf("Unknown reason\n"); @@ -199,6 +206,31 @@ cl_sim::stop(int reason) cmd->set_fd_set(); } +void +cl_sim::stop(class cl_ev_brk *brk) +{ + class cl_commander *cmd= app->get_commander(); + + state&= ~SIM_GO; + if (cmd->frozen_console) + { + class cl_console *con= cmd->frozen_console; + /* + if (reason == resUSER && + cmd->frozen_console->input_avail()) + cmd->frozen_console->read_line(); + */ + //con->dd_printf("Stop at 0x%06x\n", uc->PC); + con->dd_printf("Event `%s' at %s[0x%"_A_"x]: 0x%"_A_"x %s\n", + brk->id, brk->get_mem()->get_name(), brk->addr, + uc->instPC, + uc->disass(uc->instPC, " ")); + //con->flags&= ~CONS_FROZEN; + //con->print_prompt(); + //cmd->frozen_console= 0; + } +} + /* */ @@ -221,13 +253,13 @@ cl_sim::build_cmdset(class cl_cmdset *cmdset) "long help of stop")); cmd->init(); - cmdset->add(cmd= new cl_step_cmd("step", 0, + cmdset->add(cmd= new cl_step_cmd("step", DD_TRUE, "step Step", "long help of step")); cmd->init(); cmd->add_name("s"); - cmdset->add(cmd= new cl_next_cmd("next", 0, + cmdset->add(cmd= new cl_next_cmd("next", DD_TRUE, "next Next", "long help of next")); cmd->init(); @@ -255,15 +287,15 @@ cl_sim::build_cmdset(class cl_cmdset *cmdset) /* * Messages to broadcast */ - +/* void -cl_sim::mem_cell_changed(class cl_mem *mem, t_addr addr) +cl_sim::mem_cell_changed(class cl_address_space *mem, t_addr addr) { if (uc) uc->mem_cell_changed(mem, addr); else printf("JAJ sim\n"); } - +*/ /* End of sim.src/sim.cc */