Skip to content

v11.3

Compare
Choose a tag to compare
@irmen irmen released this 23 Apr 00:31
· 37 commits to master since this release

⚠️ this release contains a bug for the original 6502 machines such as the C64/C128 where invalid code is generated for a goto array[index] statement. A new release with a fix will be made shortly. For the Commander-X16, there is no problem.

what's new: ROMable programs

Use the new %option romable to tell prog8 to generate programs that can be run from ROM.
This means no inline variables and no self-modifying code (something which prog8 uses for 'normal' programs because sometimes it creates smaller or faster code.
Almost all library routines have been made ROM-compatible to support programs like this.
Read the paragraph in the manual for more details.
Note: some routines such as math.rnd have not been modified for ROM use, because the performance hit might be unacceptable for regular programs. Instead, a slower math.rnd_rom has been introduced for ROM use.

other changes

  • a floating point value is now allowed to be part of a multi-value-return
  • psg module no longer writes vera psg registers for voices it doesn't use
  • compiler now supports symlinks in paths
  • an integer range is now allowed as a choice value in when statements, but be aware that checking large ranges is slow because it will be done simply by value inclusion check and not < or > comparisons
  • added diskio.loadlib() convenience function to load library blobs
  • custom compiler targets now include an output_type setting which is XEX for the atari target, for instance.
  • added -quiet flag to no longer print noise output
  • examples/vm was renamed to examples/virtual
  • added cx16.memory_decompress_from_func
  • added cx16.push_rambank/rombank and cx16.pop_rambank/rombank to avoid having to sacrifice a variable when temporarily setting the bank to another value and restoring it
  • new routines palette.get_default and palette.set_default to get and set the full 256 colors default VERA palette (requires cx16 kernal rom V49)
  • strings.rfind now returns the correct result for empty strings

bugfixes

  • fixed diskio.f_read returning 1 byte less than the actual size read
  • fixed diskio.f_read_all to deal with errors in a more robust manner, this fixes a problem with the X16 Calypso
  • better EOF handling in diskio
  • fix memtop limit when using -varshigh option
  • fix IRQ related crash because stored vector was overwritten
  • various other bugfixes and improvements