summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dis.c12
-rw-r--r--vos_program_module.obin5360 -> 17752 bytes
2 files changed, 6 insertions, 6 deletions
diff --git a/dis.c b/dis.c
index c6216c9..b7a11fc 100644
--- a/dis.c
+++ b/dis.c
@@ -235,7 +235,7 @@ int main(int argc, char ** argv)
encoded = NULL;
address = def->address;
if (!is_visited(address)) {
- encoded = filebuf + address/2;
+ encoded = filebuf + (address - address_off)/2;
}
tmpd = def;
def = def->next;
@@ -245,7 +245,7 @@ int main(int argc, char ** argv)
break;
}
for(;;) {
- if (address > filesize) {
+ if (address > address_end || address < address_off) {
break;
}
visit(address);
@@ -262,7 +262,7 @@ int main(int argc, char ** argv)
if (instbuf.op == M68K_BCC || instbuf.op == M68K_DBCC || instbuf.op == M68K_BSR) {
if (instbuf.op == M68K_BCC && instbuf.extra.cond == COND_TRUE) {
address = instbuf.address + 2 + instbuf.src.params.immed;
- encoded = filebuf + address/2;
+ encoded = filebuf + (address - address_off)/2;
reference(address);
if (is_visited(address)) {
break;
@@ -275,13 +275,13 @@ int main(int argc, char ** argv)
} else if(instbuf.op == M68K_JMP) {
if (instbuf.src.addr_mode == MODE_ABSOLUTE || instbuf.src.addr_mode == MODE_ABSOLUTE_SHORT) {
address = instbuf.src.params.immed;
- encoded = filebuf + address/2;
+ encoded = filebuf + (address - address_off)/2;
if (is_visited(address)) {
break;
}
} else if (instbuf.src.addr_mode = MODE_PC_DISPLACE) {
address = instbuf.src.params.regs.displacement + instbuf.address + 2;
- encoded = filebuf + address/2;
+ encoded = filebuf + (address - address_off)/2;
if (is_visited(address)) {
break;
}
@@ -305,7 +305,7 @@ int main(int argc, char ** argv)
}
puts("");
}
- for (address = address_off; address < filesize; address+=2) {
+ for (address = address_off; address < address_end; address+=2) {
if (is_visited(address)) {
encoded = filebuf + (address-address_off)/2;
m68k_decode(encoded, &instbuf, address);
diff --git a/vos_program_module.o b/vos_program_module.o
index 3066b9d..5208bcf 100644
--- a/vos_program_module.o
+++ b/vos_program_module.o
Binary files differ