# HG changeset patch # User Michael Pavone # Date 1475630915 25200 # Node ID c4bfbf55d418a7edb6333841f6f685bc07acf152 # Parent 1a66d5165ea7b0613effb4f8bee87332a6ca5e83 Added some hacky support for specifying a start offset in 68K disassembler diff -r 1a66d5165ea7 -r c4bfbf55d418 dis.c --- a/dis.c Mon Aug 22 09:46:18 2016 -0700 +++ b/dis.c Tue Oct 04 18:28:35 2016 -0700 @@ -153,6 +153,7 @@ 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 @@ 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 @@ } } } - 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 @@ 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) {