Skip to content

Releases

Version 3.2.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 17:24

This is a bug fix release.

  • Fixed wrong byte order in TI() function's return value
  • Fixed ON RASTER n GOSUB resulting in syntax error
  • Fixed stack error when IF was followed by a non-byte expression
  • Fixed double argument escaping when executing dasm

Version 3.2.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 18:35

New features

  • Commander X16 and MEGA65 targets are now incorporated to the stable branch.
  • Added VIC-20 16 KB and 24 KB targets.
  • OPTION ASCII emits strings as ASCII instead of PETSCII.
  • STATIC routines support the FAST modifier and FAST parameters.
  • INCBIN accepts an optional offset parameter.
  • Added LOCATE support for PET.
  • Added -z command line option to zero- fill variable memory

Breaking changes

  • Numeric literals and CONST values defined without an explicit type are now untyped.
    An untyped constant adapts to the type of the other operand, e.g. b + 1 is a BYTE
    operation if b is a BYTE. If the constant does not fit in that type, the operation is
    promoted to the smallest type that can hold both, e.g. b + 300 is a WORD operation and
    b * -1 is an INT operation.
  • Constant expressions (numeric literals and CONST values) are evaluated at compile time with
    exact arithmetic, e.g. 250 + 6 now evaluates to 256 instead of wrapping to 0.
    Division truncates toward zero and MOD follows the runtime rules. Division by zero and
    results out of the 24-bit range are compile-time errors.
  • Constants in an expression are combined where possible, e.g. b + 200 + 100 is compiled
    as b + 300.
  • Assigning or passing an untyped constant that does not fit the target type is now an error
    (e.g. b = 300 or POKE addr, -1). Use an explicitly typed constant or a variable if
    wrapping is intended.
  • Arithmetic on typed operands (variables, functions, typed constants) is unchanged and still
    wraps within its type, e.g. b1 + b2 where both are BYTE.
  • CONST accepts constant expressions (e.g. CONST SIZE = WIDTH * HEIGHT). A constant
    declared with AS <type> is typed and behaves like a variable of that type in expressions.
  • Untyped constant arguments match any numeric parameter type that can hold their value when
    resolving overloaded routines.
  • A FOR loop with an unsigned counter and a negative constant STEP is now an error.

Bugfixes and improvements

  • Fixed SELECT CASE comparisons, including range cases.
  • Fixed DATA statements without an explicit type.
  • Fixed PET PRINT TAB behavior.
  • Fixed VOICE command.
  • Fixed float constant folding in comparisons and division chains.
  • Fixed error where the compiler failed to resolve shared routine prototypes.
  • Fixed the -l command-line switch and improved argument quoting on Windows.
  • Optimizer improvements

Version 3.1.13

Choose a tag to compare

@neilsf neilsf released this 25 Mar 05:11

Improvements and bug fixes:

  • #247 - Implicit type conversion is not working if argument list contains string arguments
  • #266 - Add REM comments to assembly listing to help debugging
  • #267 - Fixed TI() function
  • #269 - Fixed Screen RAM address on VIC-20
  • #274 - Variables of unused subroutines and functions now excluded from variable segment
  • #270 - Keyboard scan code constants for multiple targets

Release v3.1.12

Choose a tag to compare

@neilsf neilsf released this 15 May 08:34
  • DATA statements now support labels (#261)

Version 3.1.11

Choose a tag to compare

@neilsf neilsf released this 04 Feb 11:24

This release contains long-awaited bug fixes.

  • Fixes #249 ON BACKGROUND not working
  • #250 Whitespace now mandatory after LET and CONST statements
  • Fixes #252 SPRITE XYSIZE wrong argument order
  • Fixes #253 shorthand boolean expressions
  • Fixes #254 assembly error
  • Fixes #256 SPRITEBGHIT() function
  • Fixed timer interrupt problems

Version 3.1.10

Choose a tag to compare

@neilsf neilsf released this 07 Oct 13:21

This release fixes a bug where timer interrupts were disfunctional after a LOAD command.

Version 3.1.9

Choose a tag to compare

@neilsf neilsf released this 11 Aug 13:48

Fixed wrong sign in LONG division

Version 3.1.8

Choose a tag to compare

@neilsf neilsf released this 08 Aug 07:47

Fixes regression: missing DOKE keyword.

Version 3.1.7

Choose a tag to compare

@neilsf neilsf released this 25 Jul 04:41

This release fixes some bugs:

  • Wrong line number in error messages on Windows
  • Some string operations leaving garbage on stack

Full Changelog: v3.1.6...v3.1.7

Version 3.1.6

Choose a tag to compare

@neilsf neilsf released this 18 Jul 04:29

Hotfix update

  • Fixed variable name in NEXT statement misread
  • Fixed SPRITE statement overwriting reference to THIS