Releases: dmsc/fastbasic
Releases · dmsc/fastbasic
Release 3.5 - String Update
Adds more strings capabilities to the language:
- Strings indexing (sub-strings), via the bracket operator:
A$[Position, Count]
. The indexing can be applied to any string expression, including constant strings, so you can write expressions likeX = Asc("123456"[i])
. - String concatenation, with the
=+
assignment operator:A$ =+ " appended"
. - String arrays. Note that string arrays don't use memory for the cells that are not assigned, so you can DIM a big arrays and fill only some positions.
Some enhancements to the cross-compiler:
- Better error messages on some errors.
- Optimizations to more constant expressions.
The new integer IDE is 8156 bytes and the floating-point IDE is 9441 bytes.
Release 3.4
Some bugfixes and optimizations:
- Fixes floating-point STR$ function.
- Makes the IDE process much larger source lines without "long line" errors.
- Allows joining lines in the editor by pressing DELETE at the end of one line.
- Many simplifications to the editor, making the IDE smaller.
Release 3.3
A few bugfixes and enhancements to the language:
- Fixes abbreviation of SOUND to "S.", and adds a "SOUND" with only one parameter to silence one sound voice.
- Adds STR$ function, with integer and floating-point arguments.
Fixes to the IDE:
- Detect bytecode parsing overflows on very big and complex lines, the parser shows the las correctly parsed position in the line on error.
- Turn off al sounds before returning to the editor.
- More simple optimizations to keep the integer-IDE size under 8k.
Fixes to the cross-compiler:
- Allows end-of-line characters inside strings, this fixes compilation of sources in ATASCII that have the $0A (CONTROL-J) character inside strings.
Release 3.2
Fixes minor bugs in the cross-compiler:
- include linker script into release ZIPs,
- fixes windows cross-compiler BAT files.
Release 3.1
This is a minor release with mostly bugfixes and optimizations:
Fixes in the IDE compiler:
- Fixes parsing of long lines with many ":".
Changes in the cross-compiler:
- Accept ATASCII end of lines in the cross-compiler.
- Adds a new optimization pass to remove redundant I/O channel settings, producing shorter code for PRINT.
Fixes in the IDE:
- Prompt to save file only if there are unsaved changes.
- Allow to cancel New / Quit / Load commands with "ESC", to cancel only the saving of current file, use CONTROL-C.
Release 3
New release with many enhancements, mayor ones:
- Added string comparison operators,
- Interpreter is about 3% faster in FOR loops and other simple operations. SIEVE benchmark now takes 17 seconds.
- The integer-only IDE is now less than 8KB, the floating point IDE is 9.2kB.
- Cross compiler produces smaller executables by only including used parts of the runtime.
Minor improvements to the IDE and language:
- The IDE now can edit files with lines of up to 255 bytes.
- The IDE is a little faster to parse large files.
- More abbreviations to the statements, The list of abbreviations is in the manual.
Mayor improvements to the cross-compiler and optimizer:
- New scripts for the cross-compilers allows passing options to the compiler and linker, also writes label files for debugging.
- Cross compiler gives better errors in many cases.
- Optimizer for NEG/MUL/DIV/MOD and all bitwise operations.
- Optimizer ignores comments and can span multiple lines.
- Adds tail-call optimizations (replaces CALL/RET with JUMP and JUMP to RET with RET)
And many fixes:
- Optimizer no longer ignores negative numbers,
- Correct corner cases with MOVE / -MOVE, updates docs.
- Cleanup all variables and arrays on run, fixes on memory-clearing function.
- Fixes some cases of integer to floating point comparisons.
- Fixes parsing of NOT with parenthesis and NOT/NOT.
- Fixes errors on line numbers > 255 in the IDE.
- Fixes some corner cases in the IDE editor with lines at top/bottom of screen.
- Parsing of statements after a ':' ignored errors.
Release 2
First released version
- Full integer and floating point support,
- Integrated editor (IDE), in standard and integer only versions,
- Cross compiler 100% compatible with native compiler (needs cc65).