diff -Naurp ./dis.h ../dis6502-0.12-mywork/dis.h --- ./dis.h 2012-07-22 23:49:11.000000000 +0200 +++ ../dis6502-0.12-mywork/dis.h 2012-07-23 02:18:21.000000000 +0200 @@ -42,6 +42,7 @@ extern unsigned char f[]; extern unsigned char d[]; extern long offset[]; +extern unsigned long trace_inits[1000]; #define getword(x) (d[x] + (d[x+1] << 8)) #define getbyte(x) (d[x]) diff -Naurp ./initopts.c ../dis6502-0.12-mywork/initopts.c --- ./initopts.c 2012-07-22 23:51:01.000000000 +0200 +++ ../dis6502-0.12-mywork/initopts.c 2012-07-23 02:25:46.000000000 +0200 @@ -30,7 +30,8 @@ void usage (void) " options: -a assembly output\n" " -p predefs\n" " -v
alternate vector address\n" - " -7 mask character data to 7-bit\n", + " -7 mask character data to 7-bit\n" + " -t add trace address\n", progname); exit (1); } @@ -41,6 +42,7 @@ void initopts (int argc, char *argv[]) char *ca; char *p; int fileset = 0; + int t=0; progname = argv[0]; @@ -85,6 +87,13 @@ void initopts (int argc, char *argv[]) case '7': sevenbit = 1; break; + case 't': + trace_inits[t++]=strtoul (*++argv, &p, 0); + if (*p) + crash ("address required"); + argc--; + trace_inits[t]=0; + break; default: crash("Invalid option letter"); } } diff -Naurp ./main.c ../dis6502-0.12-mywork/main.c --- ./main.c 2012-07-23 02:06:50.000000000 +0200 +++ ../dis6502-0.12-mywork/main.c 2012-07-23 02:21:31.000000000 +0200 @@ -27,6 +27,7 @@ #include "dis.h" +unsigned long trace_inits[1000]; int sevenbit = 0; /* if true, mask character data with 0x7f to ignore MSB */ #define NTSTART 2500 @@ -201,12 +202,18 @@ void trace_all (void) void start_trace (addr_t loc, char *name) { + int t=0; + + do { fprintf(stderr, "Trace: %4x %s\n", loc, name); f[loc] |= (NAMED | SREF); if (!get_name(loc)) save_name(loc, name); save_ref(0, loc); add_trace(loc); + + loc=trace_inits[t]; + } while (trace_inits[t++]); }