v11.3
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
andcx16.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
andpalette.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