Skip to content

Releases: irmen/prog8

version 8.10

05 Mar 11:53
Compare
Choose a tag to compare
  • uninitialized variables are now put into a 'bss' section instead of in the resulting PRG itself, this can shrink the PRG size by hundreds or even thousands of bytes
  • added varshigh compiler option to move the bss section out of regular program memory space altogether, to allow PRGs to be larger. On the c64 it is moved to $c000+ and on the cx16 to bank 1 of banked ram at $a000+
  • the internal expression evaluation stack as been reduced to 1 page of memory (was 2 pages)
  • on the cx16, the eval stack was moved from bottom of golden ram to top of golden ram to make it easier to load other things in golden ram ($0400-$06ff is free now).
  • the experimental noreinit compiler option has been removed for now
  • removed cx16.callrom() , just use cx16.callfar()
  • cx16 programs now turn off the mouse cursor at startup
  • added streaming audio player example to cx16/examples/pcmaudio
  • internal change: code generators uses unified interface and no longer uses internal compiler Ast
  • vm improvements
  • bugfixes
  • documentation improvements

version 8.9

12 Feb 16:59
Compare
Choose a tag to compare
  • removed workaround for black cursor bug in older X16 kernal
  • cx16.numbanks() now returns a word because the result can be >255
  • fixed cx16/keyboardhandler example
  • sys.wait() behaves better
  • no longer allow ~ (bitwise invert) on booleans
  • some boolean logic optimizations
  • fixed zsound example
  • fix some casting type errors
  • upgrade to kotlin 1.8.0

version 8.8.1

27 Dec 13:13
Compare
Choose a tag to compare

Patches a few nasty issues found since the last release that couldn't wait for the next full release.

  • fix compiler crash on hoisting certain variable declarations from inner scopes to subroutine scope.
  • don't remove non-trivial initialization assignments for unused variables
  • don't remove consecutive assigns to certain memory locations or memorymapped vars (I/O space)
  • now able to compile "not xx in array" expression (for 6502 targets)
  • "xx not in array" is not synonymous for "not xx in array"
  • as a bonus, includes an updated "christmas season" snow example

version 8.8

17 Dec 22:09
Compare
Choose a tag to compare
  • fix several FP rom routine addresses on cx16. Some floating point operations didn't work before.
  • it's now possible to use symbols that are the same name as 6502 instructions
  • removed unused command line option keepIR
  • API change: diskio.list_files doesn't have an internal buffer anymore, you now have to supply a buffer + size yourself. Function renamed to list_filenames
  • added cx16diskio.f_seek() to seek to a position in an opened file
  • diskio file lister routine now also remember the file type (prg, seq, dir)
  • fixed endless loop in optimizer on certain expressions
  • fixed gfx2 text color and more robust screen mode reset on real hardware (retains display mode)
  • added cx16 snow example for the season
  • added cx16 diskspeed example
  • added more $03xx vector definitions to C64/C128/CX16 syslib
  • various other bugfixes and optimizations
  • various changes in IR

version 8.7

06 Nov 22:09
Compare
Choose a tag to compare
  • rnd and rndw are no longer builtin functions, but are now regular routines in the math module.
  • rnd and rndf routines can now be seeded with rndseed and rndseedf routines. You can get a reproducible sequence of random numbers this way.
  • new integer rnd routine that is smaller and faster than the previous one.
  • added cx16diskio.vload_raw to load headerless file into VRAM.
  • added gfx2.pget to get a pixel color value.
  • bit shifts of 8 and more no longer silently result in 0 but give a warning.
  • removed silent promotion of byte -> word bit shift that would occur if it was a simple assignment.
  • fixed indexing pointer variable with word index.
  • fixed various compiler problems with negating array values.
  • documentation improvements and spelling corrections.
  • other bug fixes.
  • the IR and VM have been rewritten to use a graph based code chunk representation. A dead code remover has been added that can remove all unused/unreachable code lines. NOTE: this codegen backend still only works in the vm target.

version 8.6.2

27 Sep 20:54
Compare
Choose a tag to compare
  • fix compiler issue on windows (line endings...)
  • fix for the documentation build error on readthedocs.io (should be up to date again)
  • ".p8virt" virtual machine source file format removed - vm now directly reads and executes the ".p8ir" IR file.
  • code cleanups in IR and VM.

version 8.6.1

25 Sep 19:59
Compare
Choose a tag to compare
  • added string.lowerchar() and string.upperchar()
  • added a few more complex vm examples
  • fixed a lot of issues in the IR and VM that I forgot to fix in the 8.6 release..... finally the IR and VM are feature complete and can run complex prog8 programs such as textelite.

version 8.5

22 Sep 14:10
Compare
Choose a tag to compare
  • removed the 16 bits sin/cos routines from math library (sin16, sin16r etc) - just create your own specialized tables if you need
  • added '-keepIR' option to save the IR file if it's generated.
  • command line '-vm' option now also reads .p8ir files
  • fixed operator precedence: bitwise must come before comparisons
  • added cx16.kbdbuf_clear() routine
  • several documentation improvements
  • added c64 starfield example
  • lots of VM fixes and improvements.
  • (internal) massive rewrite of VM code generator, now has Intermediate Representation step. Intended to also be used for future code generators.
  • several bug fixes

version 8.4

13 Aug 10:46
Compare
Choose a tag to compare
  • added a few new library functions: string.endswith(), diskio.send_command(), diskio.diskname()
  • improved error checking in diskio.directory()
  • fixed rounding errors in signed divide by power-of-two
  • on C64, the cx16.r0...cx16.r15 virtual registers are now moved into zeropage if possible.
  • allow bool return type (and arguments) for asmsub / romsub
  • removed several problematic code optimizations (may lead to larger code size unfortunately)
  • added a few new code optimizations related to mkword() and logical expressions
  • several bugfixes and improvements.

version 8.3.1

17 Jul 20:26
Compare
Choose a tag to compare

A quick update to address some issues discovered in the previous release.

  • fix possible endless loop in optimizer
  • fix codegen crash on certain nested typecast
  • fix cx16 register clobbering in psg module irq routine
  • fix crash on certain array definitions, and a few other places
  • fix undefined symbol error when it's simply located in another imported module
  • fix stack crash in cx16.push_vera_context()
  • fix wrong assembly code generated for signed word >= 0
  • enhancement: callfar() now also accepts variable jump address, so can be used as an (inefficient) indirect JSR
  • enhancement: sys.reset_system() on cx16 now more thoroughly resets the Vera so any psg sounds playing are silenced as well
  • enhancement: conv.any2uword() / conv.hex2uword() can now deal with iso lower and uppercase letters too
  • graphics module's Y resolution on cx16 has been corrected to 240