aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--unprotbas.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/unprotbas.c b/unprotbas.c
index a367502..de7c441 100644
--- a/unprotbas.c
+++ b/unprotbas.c
@@ -236,7 +236,6 @@ void move_code(int offset) {
The maximum number of variable names is 128. If all 128 vars are in
use, the minimum table size is 230 (26 one-letter names, 102 2-letter
or letter+number or one-letter string/array names).
-
*/
int vntable_ok(void) {
@@ -376,135 +375,6 @@ int fixvars(void) {
return 1;
}
-#if 0
-int old_fixvars(void) {
- int vp = vnstart, vv = vvstart;
- int strings = 0, arrays = 0, scalars = 0, varname = 0, varnum = 0;
- int bad = 0;
-
- /* See if the variables even need fixing.
-
- This code is simpler than it should be: it checks that all
- characters in the variable name table are valid, but doesn't
- check that they're in valid sequences. Example: a variable name
- that's just an inverse dollar sign would be considered OK).
- Also multiple variables of the same type with the same name
- would be OK.
-
- However, if all the bytes are the same value, even if it's a
- valid character, that's correctly detected as invalid.
- */
-
- if(vntp == vntd) {
- fprintf(stderr, "No variables\n");
- return 0;
- }
-
- vp = vnstart + 1;
- bad = 1;
- while(vp < vvstart - 1) {
- if(data[vp] != data[vnstart]) bad = 0;
- vp++;
- }
-
- vp = vnstart;
- while(vp < vvstart) {
- unsigned char c = data[vp];
- /*
- fprintf(stderr, "%04x/%04x: %04x\n", vp, vvstart, c);
- */
-
- /* allow a null byte only at the end of the table! */
- /* if(c == 0 && vp == vvstart - 1) break; */
- /* new rule: treat a null byte as end-of-table, ignore any
- junk between it and VNTP. */
- if(c == 0) break;
-
- vp++;
-
- /* inverse $ or ( is OK */
- if(c == 0xa4 || c == 0xa8) continue;
-
- /* numbers and letters are allowed, inverse or normal. */
- c &= 0x7f;
- if(c >= 0x30 && c <= 0x39) continue;
- if(c >= 0x41 && c <= 0x5a) continue;
-
- bad++;
- break;
- }
- if(!forcevars && !bad) return 0;
-
- /* decide whether we have enough room. pretend every new variable name
- is 3 bytes (really only true for the 10th and later strings and
- arrays, but a little wasted space won't hurt anything). */
- {
- int vntblsize = vvstart - vnstart;
- int varcount = (codestart - vvstart) / 8;
- int neededsize = varcount * 3 + 1;
- int move_up_by;
-
- fprintf(stderr, "%d variables according to value table\n", varcount);
- if(neededsize > vntblsize) {
- move_up_by = neededsize - vntblsize;
- fprintf(stderr, "need %d bytes for vntable, only have %d, moving up by %d to %04x\n",
- neededsize, vntblsize, move_up_by, vvtp + move_up_by);
- move_code(move_up_by);
- }
- }
-
- vp = vnstart;
- vv = vvstart;
- while(vv < codestart) {
- unsigned char sigil = 0;
- /* type: scalar = 0, array = 1, string = 2 */
- unsigned char type = data[vv] >> 6;
- /* fprintf(stderr, "%04x: %04x, %d\n", vv, data[vv], type); */
-
- if(varnum != data[vv+1]) {
- fprintf(stderr, "Warning: variable value is corrupt!\n");
- }
- varnum++;
-
- switch(type) {
- case 1: varname = arrays++; sigil = 0xa8; break;
- case 2: varname = strings++; sigil = 0xa4; break;
- default: varname = scalars++; break;
- }
-
- if(varname < 26) {
- data[vp] = ('A' + varname);
- } else {
- varname -= 26;
- data[vp++] = 'A' + ((varname - 26) / 9);
- data[vp] = ('1' + ((varname - 26) % 9));
- }
-
- if(sigil) {
- vp++;
- data[vp++] = sigil;
- } else {
- data[vp] |= 0x80;
- vp++;
- }
-
- vv += 8;
- }
-
- /* there's supposed to be a null byte at the end of the table, unless
- all 128 table slots are used. */
- if(varnum < 128) data[vp] = 0;
-
- /* fixup the VNTD pointer */
- vntd = vntp + (vp - vnstart);
- data[4] = vntd & 0xff;
- data[5] = vntd >> 8;
-
- fprintf(stderr, "%d variables, VNTD adjusted to %04x\n", varnum, vntd);
- return 1;
-}
-#endif
-
void print_help(void) {
fprintf(stderr, "Usage: %s [-v] [-f] [-n] [-g] <inputfile> <outputfile>\n", self);
fprintf(stderr, "-v: verbose\n");