diff options
author | Michael Pavone <pavone@retrodev.com> | 2016-10-04 18:28:35 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2016-10-04 18:28:35 -0700 |
commit | 1c0867451c135eb31f3bbda0235f4326c3aa1043 (patch) | |
tree | 9296214e87a75b1fb821c83c1e1280a86f2bd55b | |
parent | 4a56a7e2dfe615e03e81e29952003291090470fe (diff) |
Added some hacky support for specifying a start offset in 68K disassembler
-rw-r--r-- | dis.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -153,6 +153,7 @@ int main(int argc, char ** argv) uint8_t labels = 0, addr = 0, only = 0, vos = 0, reset = 0; tern_node * named_labels = NULL; + uint32_t address_off = 0, address_end; for(uint8_t opt = 2; opt < argc; ++opt) { if (argv[opt][0] == '-') { FILE * address_log; @@ -173,6 +174,14 @@ int main(int argc, char ** argv) case 'r': reset = 1; break; + case 's': + opt++; + if (opt >= argc) { + fputs("-s must be followed by an offset\n", stderr); + exit(1); + } + address_off = strtol(argv[opt], NULL, 0); + break; case 'f': opt++; if (opt >= argc) { @@ -208,14 +217,12 @@ int main(int argc, char ** argv) } } } - FILE * f = fopen(argv[1], "rb"); fseek(f, 0, SEEK_END); filesize = ftell(f); fseek(f, 0, SEEK_SET); char int_key[MAX_INT_KEY_SIZE]; - uint32_t address_off, address_end; if (vos) { vos_program_module header; @@ -250,8 +257,7 @@ int main(int argc, char ** argv) named_labels = add_label(named_labels, "reset", filebuf[2] << 16 | filebuf[3]); } } else { - address_off = 0; - address_end = filesize; + address_end = address_off + filesize; filebuf = malloc(filesize); if (fread(filebuf, 2, filesize/2, f) != filesize/2) { |