- Evaluating 'naked' array name `A` gives pointer to payload (same as `&A` or even `&A[0]`)
- Improved loading message in VM
- Got array pass-by-reference to work in compiler
- Fixed eval stack leak in array initialization code generated by compiler
- Improved Makefile to make it easier to configure paths to tools
- Made number of signicant characters for subroutine and variable names a `#define` constant and tested it works with different values
- Modified memory allocation in `HEAP2` - the source code is now allocated at the bottom, growing up. The compiler's linkage table is allocated at the top growing down. This makes it easy to dispose of the linkage table after compilation is done.
- This revealed that my memory limits were wrong so code was crashing on C64, Apple II. I bumped up the bottom of `HEAP2` by 0x500 or so. Not sure why this is needed.
- Added a signon banner to the virtual machine so it is clear it is loading bytecode. Screen is cleared after loading is complete, so user knows when execution begins.
- Adjusted memory limits. Found a few extra bytes for source code buffer on Apple II.
- Compiler: Changed multiply by two to left shift in indexing math for array of word. More efficient.
End of line on CBM is 13, not 10.
Converted sieve4.8b and unittest,8b to PETSCII and added them to test.d64
Unit tests run on C64 with only one failure (same failure as when running under Linux VM).
This fixes a memory corruption bug that occurred when compiling code with subroutines. The symbol table was corrupting the source code. This was showing up on 6502 systems only (seemed okay on Linux).