Handle invalid variables
Inform6 will happily compile a statement like @store $ffff $0000;. It is obviously illegal because you don't have more than 255 variables + the stack. Currently it compiles to:
43ba: cd 1f ff ff store gffef #00
I suggest a message like 43ba: cd 1f ff ff store [invalid variable: ffff] #00 instead.
This can be done by changing the function print_variable in txd.c to:
#ifdef __STDC__
static void print_variable (int varnum)
#else
static void print_variable (varnum)
int varnum;
#endif
{
if (varnum < 16) {
if (option_symbols &&
print_local_name (start_of_routine, varnum - 1)) /* null */
;
else if (option_inform)
tx_printf ("local%d", varnum - 1);
else
tx_printf ("L%02x", varnum - 1);
}
else if (varnum < 256) {
if (option_symbols &&
print_global_name(start_of_routine, varnum - 16)) /* null */
;
else
tx_printf("%c%02x", (option_inform) ? 'g' : 'G', varnum - 16);
}
else
tx_printf("[invalid variable: %lx]", varnum);
}