void debug_interf(void) { char in_buf[256]; char val[32]; char cmd; int in_a, in_b, in_c; int i, j; while (1) { printf("> "); fflush(stdout); // in_buf[0]=0; // memset(in_buf,0,255); //scanf("%s %s",in_buf); fgets(in_buf, 255, stdin); switch (in_buf[0]) { case 'q': case 'c': dbg_step = 0; return; break; case 's': dbg_step = 1; return; case 'b': sscanf(in_buf, "%c %x", &cmd, &in_a); add_bp(in_a); break; case 'B': sscanf(in_buf, "%c %x", &cmd, &in_a); del_bp(in_a); break; case 'd': sscanf(in_buf, "%c %s", &cmd, val); /* printf("in : %s\n",in_buf); printf("val: %s\n",val); */ in_a = strtol(val, NULL, 0); // printf("ina: %x\n",in_a); cpu_68k_disassemble(in_a, 10); break; case 'p': cpu_68k_dumpreg(); break; } printf("\n"); } }
static void dbg_get(char* s, int size) { //char buf[size]; char *args,*argsend; int pc; fgets(s, size, stdin); args = s + 1; while((*args) && ((*args) < 32)) args++; switch (s[0]) { case '?': printf("B [address] Add a breakpoint at [address]\n" "N [address] Del breakpoint at [address]\n" "R Run until breakpoint\n"); return; case 'B': if (args) { pc=strtoul(args,&argsend,0); if (args != argsend) add_bp(pc); else printf("Invalid input\n"); } s[0]=0; break; case 'N': if (args) { pc=strtoul(args,&argsend,0); if (args != argsend) del_bp(pc); else printf("Invalid input\n"); } s[0]=0; break; case 'R': while(check_bp(cpu_68k_getpc())!=SDL_TRUE && dbg_step==0) { cpu_68k_dpg_step(); } if (dbg_step) dbg_step=0; s[0]=0; break; } }