summaryrefslogtreecommitdiff
path: root/lib/simulator.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/simulator.c')
-rw-r--r--lib/simulator.c54
1 files changed, 32 insertions, 22 deletions
diff --git a/lib/simulator.c b/lib/simulator.c
index c7c709c..8db38ef 100644
--- a/lib/simulator.c
+++ b/lib/simulator.c
@@ -14,7 +14,7 @@
#include "linker.h"
#include "terminal.h"
-int HasToRun = 1, HasToReset = 0, debug = 0;
+int HasToRun = 1, HasToReset = 0, debug = 0, trace = 0;
Uint32 base_addr = 0;
@@ -424,28 +424,38 @@ void Debogueur(void)
Champ1(instruction), Champ2(instruction), Champ3(instruction));
fprintf(stderr, "%08lX:%08lX - %08lX - %08lX > ",
LireRegistrePC(), instruction, LD(LireRegistrePC() + 1), LD(LireRegistrePC() + 2));
-
- switch (fgetc(input)) {
- case 'G':
- case 'g':
- fprintf(stderr, "Go\n\n");
- debug = 0;
- out = 1;
- break;
- case 'p':
- case 'P':
- fprintf(stderr, "Proceed\n\n");
+
+ if (!trace) {
+ switch (fgetc(input)) {
+ case 'G':
+ case 'g':
+ fprintf(stderr, "Go\n\n");
+ debug = 0;
+ out = 1;
+ break;
+ case 'p':
+ case 'P':
+ fprintf(stderr, "Proceed\n\n");
+ out = 1;
+ break;
+ case 'R':
+ case 'r':
+ break;
+ case 'T':
+ case 't':
+ trace = 1;
+ out = 1;
+ break;
+ case 'Q':
+ case 'q':
+ clearterm();
+ exception(1, _("Shutdown requested"));
+ default:
+ fprintf(stderr, _("Help:\nG: go\nP: Proceed\nR: display registers\nT: trace\nQ: quit\n"));
+ }
+ } else {
+ fprintf(stderr, "Tracing...\n\n");
out = 1;
- break;
- case 'R':
- case 'r':
- break;
- case 'Q':
- case 'q':
- clearterm();
- exception(1, _("Shutdown requested"));
- default:
- fprintf(stderr, _("Help:\nG: go\nP: Proceed\nR: display registers\nQ: quit\n"));
}
}
}