Fixed Linux strncpy warning in INIReader.h properly for the Rasberry Pi 400.
Fixed a nasty lazy unsigned cast bug that should have been an explicit check in Operators::handleDualOp();
this was only causing issues for the Rasberry Pi 400
Fixed compiler warnings and errors for the RPI400, thanks to Maniccyberdog.
Added an SDCard browsing utility and ROM for Norgate's Pluggy Reloaded.
Added more sytax error messages to the BASIC compiler.
Added the SPC$() function to the BASIC compiler, this allows you to generate sequences of spaces, (max 255
within a print statement using a literal count, otherwise max 94).
Added the STRING$() function to the BASIC compiler, this allows you to construct a string from a memory
address, e.g. s$ = STRING().
Added the EXEC statement to the BASIC compiler, this allows you to execute vCPU code embedded within ROM,
e.g. EXEC .
Added literal characters as a shortcut to anywhere you would use the ASC() function, (including static initialisation
code), e.g. f = 'A'
Added better name collision detection for ints, consts and arrays.
Added uninitiated arrays as an option, thereby allowing .gt1 files to potentially be much smaller for the exact same
code, (this can be crucial when embedding .gt1 files into ROM). The side effect of this change is that previously 'DIM a(9)' would initialise 10 words to 0 in the .gt1 file using DW ASM commands, now your array is initialised with random values. To get the previous functionality, change the code to 'DIM a(9) = 0'
Refactored horribly overloaded function names for Expression::tokenise() and Compiler::parse().
Fixed ROM addresses in the disassembler and the hex editor from wrapping back to zero incorrectly.
Fixed a sly nasty bug whereby int arrays were needlessly stealing a global int var slot during their construction.