aboutsummaryrefslogtreecommitdiff
path: root/bas.c
diff options
context:
space:
mode:
Diffstat (limited to 'bas.c')
-rw-r--r--bas.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/bas.c b/bas.c
index cf73fef..24508e4 100644
--- a/bas.c
+++ b/bas.c
@@ -115,13 +115,17 @@ void parse_header(void) {
vvstart = vvtp - TBL_OFFSET;
code_end = starp - TBL_OFFSET;
- if(lomem) die("This doesn't look like an Atari BASIC program (no $0000 signature).");
-
if(filelen < code_end) {
fprintf(stderr, "Warning: file is truncated: %d bytes, should be %d.\n", filelen, code_end);
}
if(verbose) dump_header_vars();
+
+ /* these checks are actually kind of conservative. */
+ if(lomem) die("Not an Atari BASIC program (no $0000 signature).");
+ if(vntp < 0x100) die("Not an Atari BASIC program (invalid VNTP).");
+ if(vvtp < vntd) die("Not an Atari BASIC program (invalid VVTP).");
+ if(starp < vvtp) die("Not an Atari BASIC program (invalid STARP).");
}
void update_header(void) {