Skip to content
Lorenzi edited this page Jun 30, 2024 · 13 revisions

v0.13.7 - 2024 Jun 30

  • Fixes a regression in the instruction matcher (#204).
  • Improves the intelhex output format to ignore blank space. (#206).

v0.13.6 - 2024 May 31

  • Makes it so instruction arguments are parsed both with and without the "lookahead character" to increase flexibility and enable more instructions to parse without conflict. (See for example #203)

v0.13.5 - 2024 Jan 20

  • Reimplements the token-walker lexical analyzer to allow tokens to be split and reinterpreted, mostly useful in asm blocks, when an argument is passed down "verbatim" to a sub-rule.
  • Adds the strlen() function to get the UTF-8 byte count of a string.
  • Adds optional range arguments to the incbin(), inchexstr(), and incbinstr() functions.
  • Adds the tcgame output format, compatible with the "Turing Complete" game.
  • Adds the addr_unit parameter to the intelhex output format.

v0.13.4

  • Fixes the optimized instruction matcher algorithm, used by default, which was incorrectly rejecting short instructions with "glued" parameters.

v0.13.3

  • Fixes a bad interaction between #include and #once, where the resulting AST would be incorrect.

v0.13.2

  • Fixes certain errors not being caught by the assembler, one related to ruledef-typed parameters, and another one to asm blocks.

v0.13.1

  • Adds the conditional compilation directives #if, #elif, and #else.
  • Adds constant overwriting via the command-line with -d.
  • Makes it possible again to reference constants in #bankdef arguments.

v0.13.0

  • A complete internal overhaul, this version enables speed-ups of up to 7x for big projects.
  • You can now use alternative-style number literals anywhere, such as %0110 for binary literals, and $12abcd for hexadecimal literals.
  • You can specify multiple output formats for a single execution of the assembler, separated by --, such as customasm main.asm -f binary -o main.bin -- -f symbols -o symbols.txt.
  • Some format options have been extended with parameters, such as -f annotated,base:8,group:3.
  • You can now specify --color=off to disable colored output.
  • Breaking change: The usage of some directives has changed. #bits and #labelalign should now only appear inside a #bankdef definition. #noemit on should be replaced by something like #const(noemit) x = 0 at each affected constant declaration.

v0.12.0

  • Breaking change: Whitespace is now respected within rule patterns.
  • Adds the decspace and hexspace output formats.
  • Removed the old sized-literal syntax with a standard quotation mark 'X. New code should use backquote slices `X.

v0.11.14

v0.11.13

  • Adds the #once directive. Details here.
  • Adds string encoding conversion functions: utf8(), ascii(), utf16be(), utf16le(), utf32be(), and utf32le(). Details here.

v0.11.9

  • Makes it so the assembler will select the rule with the fewest amount of output bits in the case of multiple matches.
  • Adds the mesen-mlb symbol output format, for use with the Mesen NES emulator.

v0.11.8

  • Adds the built-in function le(), which reverses the bytes of an integer, essentially performing little-endian encoding. It's important that the argument be sized with a multiple of 8 bits. For example: le(0x1234) or le(65000`16). Details here.
  • Makes it so assembly won't stop at the first resolve error, which allows more errors to be caught in a single execution.