Skip to content

Release 2.1.0

Compare
Choose a tag to compare
@TollyH TollyH released this 11 Nov 22:45
· 384 commits to main since this release
87d5048

.NET 6, Self-contained (.NET install not required)

Additions:

  • Character literals: The language now has support for character literals surrounded by single quotes. These contain a single character only and are assembled into numeric literals representing the UTF-8 encoding of the contained character. Some examples include:
    • MVQ rg0, 'a', which will assemble to MVQ rg0, 97
    • CMP rg1, '\n', which will assemble to CMP rg1, 10
    • WCN '\u30C8', which will assemble to WCN 8946659

Fixes:

  • The REPL environment will no longer convert some special characters to question marks.
  • The stack debugger command will no longer cause a crash when used in a subroutine with no parent stack.
  • Invalid syntax where a label definition would contain a space followed by additional characters will no longer be ignored silently.
  • Numerous additional syntax errors now have checks that provide descriptive error messages and VSCode linting, replacing previous generic errors such as "IndexOutOfRangeException".

Example program changes:

  • Example programs that used numeric values to represent characters now use character literals instead.
  • The read_file.asm example program has been updated with a slight code size optimisation and an error message for non-existent files.

Internal changes:

  • All applicable strings in the code have been moved to an external resource file to aid any potential future localisation.
  • The BNF graphs have been removed.
  • FLPT_WFN now explicitly uses the Invariant culture when converting to a string and writing.
  • General code refactoring has been carried out to remove or shorten redundant code and to make the code style more consistent.

Documentation Errors

  • The first code example in the "Address" subsection of the "Operand Types" section should use MVB, not MVQ.