diff options
-rw-r--r-- | unprotbas.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/unprotbas.c b/unprotbas.c index a4a2129..3486ac4 100644 --- a/unprotbas.c +++ b/unprotbas.c @@ -16,6 +16,9 @@ or whatever), we "fix" that by making up new variable names. */ +/* maximum size of the program in memory. 64KB is actually way overkill. */ +#define BUFSIZE 65536 + /* the difference between the VVTP and VNTP values in the file, and the actual file positions of the variable names and values. */ #define TBL_OFFSET 0xf2 @@ -26,8 +29,12 @@ can't process. */ #define MIN_PROG_SIZE 21 -/* maximum size of the program in memory. 64KB is actually way overkill. */ -#define BUFSIZE 65536 +/* maximum practical size for a BASIC program. if a file exceeds this + size, we warn about it, but otherwise process it normally. + this value is derived by subtracting the default LOMEM without DOS + ($0700) from the start of the display list in GR.0 ($9c20, on a 48K Atari). + */ +#define MAX_PROG_SIZE 38176 /* maximum number of variables in the variable name and value tables. this could be 128, but "ERROR- 4" still expands the tables. Entries >128 @@ -115,7 +122,7 @@ int readfile(void) { if(verbose) fprintf(stderr, "Read %d bytes.\n", got); if(!feof(input_file)) fprintf(stderr, "Warning: file is >64KB, way too big for a BASIC program.\n"); - else if(got > 38176) + else if(got > MAX_PROG_SIZE) fprintf(stderr, "Warning: file is %d bytes, suspiciously large for a BASIC program.\n", got); fclose(input_file); if(got < MIN_PROG_SIZE) |