All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Optimisation
sfor removing double quotes from strings in DATA lines.
- Optimisation
qfor removing closing double quotes from end of lines.
- Fixed line joining to skip lines that end with a string constant without closing the double quote pair.
- Optimisation
0for changing0numeric literals to.that is parsed faster by the interpreter. (Thanks to Csaba "Csabo" Pankaczy for the idea.)
- Useless semicolon (
:) will not be added to the beginning of a joined line when previous line contains a line number only.
- Parameters
code,data,remarkandprintto#includedirective for reading binary files and converting them into source code. - Pre-processing directives
#functionand#callfor declaring and calling functions (subroutines) with parameters.
- Missing file and line info from source reading error.
- Optimisation
ifor simplifyingIFstatements when a variable is checked against non-zero value that can be reduced to the variable itself. (Thanks to Valentino "SVS" Zenari for the idea.)
- Literal labels are ordered by name instead of value in label list dump.
- Missing file and line info from pre-processing directive error.
- Line joining when previous line finished with an
ENDcommand. - Changed order of source processing steps. Previous version completed code optimisation before pre-processing and produced less optimal code. In this version pre-processing is completed before optimisation then line number assignment. This way line joining and other optimisations are producing better outcome.
- Line joining to also join following lines to a line with line label at the beginning.
- Line joining to ignore strings in double quotes when assessing whether the line could be joined with others.
- Check for variables that are marked as frequently used to assign short BASIC names to these variables.
- Variable type was not considered when BASIC variable names are picked, now same name can be reused for different types.
- Conditional section definitions using
#ifdef-#endifpre-processing directives. - Pre-processing directive
#defineand#undeffor creating and removing pre-processing flags. - Command line option
-dfor creating pre-processing flags. - Optimisation
tfor removingGOTOcommand afterTHENandELSEcommands. (Thanks to Rafael Gerlicze for the idea.) - Processing flag
vfor using short, one character long variable names when possible. (Thanks to Csaba "Csabo" Pankaczy for the idea.) - Pre-processing directive
#frequentand#endfrequentfor marking certain part of the code as frequently executed. (Thanks to Rafael Gerlicze for the idea.) - Flag for frequently used variables to be defined as early as possible. (Thanks to Rafael Gerlicze for the idea.)
- Handling of space character in path names for included files.
- Remove whitespace from beginning and end of literal label values.
- Selecting BASIC variable names to accept non-alphanumeric characters in the label name, but pick valid BASIC variable name instead.
- Optional command line parameter
-ldfor specifying source library directory. - Optimisation
rfor removing REM commands from source code. - Processing flag
$for converting hexadecimal numbers to decimal in the source code.
- When literal label is located at the beginning of the line, but not followed by equal sign then it is considered a label usage instead of definition and processing doesn't throw an error.
- Literal labels can be embedded into each other to create more complex structures, infinite recursion is detected.
- Handling of one character long variable names, previously these names could cause processing errors.
- Join line optimisation when a line started with a label then it was joined with the next line if that did not start with a label.
Initial public release.