1
0
mirror of https://github.com/prirun/p50em.git synced 2026-01-13 15:17:32 +00:00

Add "off" trace option: initially disabled, ctrl-t to toggle it

This commit is contained in:
Jim 2011-08-13 10:58:16 -04:00
parent f69f9e9696
commit 26b86c84e9
2 changed files with 13 additions and 13 deletions

17
em.c
View File

@ -538,10 +538,11 @@ typedef struct {
FILE *tracefile; /* trace.log file */
int traceflags; /* each bit is a trace flag */
int savetraceflags;
int traceuser; /* OWNERL to trace */
int traceseg; /* RPH segment # to trace */
int numtraceprocs; /* # of procedures we're tracing */
short traceuser; /* OWNERL to trace */
short traceseg; /* RPH segment # to trace */
short numtraceprocs; /* # of procedures we're tracing */
unsigned long traceinstcount; /* only trace if instcount > this */
short tracetriggered; /* Ctrl-T toggles tracing */
#endif
} gv_t;
@ -4384,6 +4385,7 @@ main (int argc, char **argv) {
gvp->traceseg = 0;
gvp->numtraceprocs = 0;
gvp->traceinstcount = 0;
gvp->tracetriggered = 1;
#endif
invalidate_brp();
eap = &gvp->brp[0];
@ -4587,6 +4589,8 @@ main (int argc, char **argv) {
gvp->traceflags |= T_TERM;
else if (strcmp(argv[i],"rio") == 0)
gvp->traceflags |= T_RIO;
else if (strcmp(argv[i],"off") == 0)
gvp->tracetriggered = 0;
else if (strcmp(argv[i],"lm") == 0)
gvp->traceflags |= T_LM;
else if (strcmp(argv[i],"put") == 0)
@ -4645,7 +4649,7 @@ main (int argc, char **argv) {
/* finish setting up tracing after all options are read, ie, maps */
#ifndef NOTRACE
TRACEA("Trace flags = 04x%x\n", gvp->traceflags);
TRACEA("Trace flags = 0x%x\n", gvp->traceflags);
gvp->savetraceflags = gvp->traceflags;
gvp->traceflags = 0;
if (gvp->traceuser != 0)
@ -4889,7 +4893,8 @@ fetch:
#ifndef NOTRACE
gvp->traceflags = 0;
if ((gvp->instcount >= gvp->traceinstcount) &&
if (gvp->tracetriggered &&
(gvp->instcount >= gvp->traceinstcount) &&
(TRACEUSER && ((gvp->traceseg == 0) || (gvp->traceseg == (RPH & 0xFFF))))
)
gvp->traceflags = gvp->savetraceflags;
@ -5162,7 +5167,7 @@ xec:
x=1, opcode='15 03 -> jsx (RV) (aka '35 03)
*/
TRACE(T_EAR|T_EAV, " opcode=%#05o, i=%o, x=%o\n", ((inst & 036000) != 032000) ? ((inst & 036000) >> 4) : ((inst & 076000) >> 4), inst & 0100000, ((inst & 036000) != 032000) ? (inst & 040000) : 0);
TRACE(T_EAR|T_EAV, " op=%#05o, i=%o, x=%o, mode=%d\n", ((inst & 036000) != 032000) ? ((inst & 036000) >> 4) : ((inst & 076000) >> 4), inst & 0100000, ((inst & 036000) != 032000) ? (inst & 040000) : 0, (crs[KEYS] & 016000) >> 10);
if ((crs[KEYS] & 016000) == 014000) { /* 64V mode */
ea = ea64v(inst, earp);

View File

@ -482,16 +482,11 @@ readasr:
}
#ifndef NOTRACE
if (ch == '') {
printf("Trace owner = %o/%o\n", crs[OWNER], crs[OWNERL]);
if (gvp->savetraceflags == 0) {
gvp->tracetriggered = !gvp->tracetriggered;
if (gvp->tracetriggered) {
TRACEA("\nTRACE ENABLED:\n\n");
gvp->savetraceflags = ~T_MAP;
gvp->savetraceflags = T_GET;
gvp->savetraceflags = ~0;
gvp->savetraceflags = T_FLOW|T_FAULT;
} else {
TRACEA("\nTRACE DISABLED:\n\n");
gvp->savetraceflags = 0;
}
fflush(gvp->tracefile);
goto readasr;