aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2024-07-15 15:45:22 -0400
committerB. Watson <urchlay@slackware.uk>2024-07-15 15:45:22 -0400
commitaa7c742ae667c8f827256e097a6c5b9c9bf20483 (patch)
treeaa1c955cde26d908b85f377c6321d68b5cf2edd6
parent4b72993e746bc654178ba80b66ed6a1f854210e1 (diff)
downloadbw-atari8-tools-aa7c742ae667c8f827256e097a6c5b9c9bf20483.tar.gz
bas.c: handle weirdness when VNTP > $100 (e.g. SPIDER.TB).
-rw-r--r--bas.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/bas.c b/bas.c
index 94ba310..5321070 100644
--- a/bas.c
+++ b/bas.c
@@ -103,6 +103,8 @@ void dump_header_vars(void) {
}
void parse_header(void) {
+ int vntp_offset;
+
lomem = getword(0);
vntp = getword(2);
vntd = getword(4);
@@ -110,11 +112,20 @@ void parse_header(void) {
stmtab = getword(8);
stmcur = getword(10);
starp = getword(12);
+
codestart = stmtab - TBL_OFFSET - (vntp - 256);
vnstart = vntp - TBL_OFFSET;
vvstart = vvtp - TBL_OFFSET;
code_end = starp - TBL_OFFSET;
+ if(vnstart > 0x0e) {
+ if(verbose)
+ fprintf(stderr, "VNTP is $%02x (not ($100), adjusting pointers.\n", vntp);
+ vntp_offset = vnstart - 0x0e;
+ vnstart -= vntp_offset;
+ vvstart -= vntp_offset;
+ }
+
if(filelen < code_end) {
fprintf(stderr, "Warning: file is truncated: %d bytes, should be %d.\n", filelen, code_end);
}