- debugger reset command added.
return pin_status.nmi;
}
+void set_reset_pin(int val) {
+ pin_status.reset = val;
+}
+
+int get_reset_pin(void) {
+ return pin_status.reset;
+}
+
int init_bus(void) {
addr_bus = 0;
data_bus = 0;
void set_nmi_pin(int val);
int get_nmi_pin(void);
+void set_reset_pin(int val);
+int get_reset_pin(void);
+
#endif /*__bus_h__*/
static int fetch_and_decode_inst(void);
static int decode_inst(void);
static int execute_inst(void);
+static int reset_handler1(void);
int reset6502(void);
int reset_exec6502(void);
//dprint("%d\n", clock_cnt);
clock_cnt++;
+ if (get_reset_pin()) {
+ execute_func = reset_handler1;
+ set_reset_pin(0);
+ return execute_func();
+ }
+
ret = execute_func();
return ret;
}
void reset_cpu(void) {
- execute_func = reset_handler1;
+ set_reset_pin(1);
}
static int nmi_handler(void) {
void d2_set(int on_off);
void d3_set(int on_off);
void d4_set(int on_off);
+void reset_cpu(void);
#define MAX_HISTORY 10
printf(" command:\n");
printf(" s: step\n");
printf(" c: continue\n");
+ printf(" r: reset\n");
printf(" b addr: set break point\n");
printf(" (break point can be set only 1 address.)\n");
printf(" del: delete break point\n");
debug_mode = FALSE;
break;
}
+ else if (!strcmp(buf, "r")){
+ reset_cpu();
+ }
else if (!strcmp(buf, "show")){
dump_6502(TRUE);
}
printf(" left 8 pix bg:%d\n", ctrl_reg2.show_left_8bg);
printf(" col mode:%d\n", ctrl_reg2.color_mode);
+ printf("\nstatus reg\n");
+ printf(" vram_ignore:%d\n", status_reg.vram_ignore);
+ printf(" sprite_overflow:%d\n", status_reg.sprite_overflow);
+ printf(" sprite0_hit:%d\n", status_reg.sprite0_hit);
+ printf(" vblank:%d\n", status_reg.vblank);
+
+ printf("\nvram_addr_reg:%04x\n", vram_addr_reg.addr.s);
+ printf("vram_data_reg:%02x\n", vram_data_reg);
+ printf("\nscroll_reg:\n");
+ printf(" x:%d\n", scroll_reg.x);
+ printf(" y:%d\n", scroll_reg.y);
}