Mercurial > repos > blastem
diff dis.c @ 632:80e111b48d4b
Add -r option to indicate VOS program module contains a 68K reset vector
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 11 Oct 2014 21:20:02 -0700 |
parents | de6f00204fa2 |
children | a759f4e38488 |
line wrap: on
line diff
--- a/dis.c Sat Oct 11 20:32:17 2014 -0700 +++ b/dis.c Sat Oct 11 21:20:02 2014 -0700 @@ -108,7 +108,7 @@ unsigned short * cur; deferred *def = NULL, *tmpd; - uint8_t labels = 0, addr = 0, only = 0, vos = 0; + uint8_t labels = 0, addr = 0, only = 0, vos = 0, reset = 0; for(uint8_t opt = 2; opt < argc; ++opt) { if (argv[opt][0] == '-') { @@ -127,6 +127,9 @@ case 'v': vos = 1; break; + case 'r': + reset = 1; + break; case 'f': opt++; if (opt >= argc) { @@ -174,7 +177,10 @@ named_labels = add_label(named_labels, "main_entry_link", header.main_entry_link.code_address); for (int i = 0; i < header.n_modules; i++) { - def = defer(header.module_map_entries[i].code_address, def); + if (!reset || header.module_map_entries[i].code_address != header.user_boundary) + { + def = defer(header.module_map_entries[i].code_address, def); + } named_labels = add_label(named_labels, header.module_map_entries[i].name.str, header.module_map_entries[i].code_address); } fseek(f, 0x1000, SEEK_SET); @@ -188,6 +194,11 @@ { *cur = (*cur >> 8) | (*cur << 8); } + if (reset) + { + def = defer(filebuf[2] << 16 | filebuf[3], def); + named_labels = add_label(named_labels, "reset", filebuf[2] << 16 | filebuf[3]); + } } else { address_off = 0; address_end = filesize;