Skip to content

Releases: irmen/prog8

version 8.12

30 Apr 12:10
Compare
Choose a tag to compare
  • improved C128 support
  • removed broken floating point support from c128 target (its FP routines are currently incompatible with prog8)
  • cx16 api change: renamed cx16.push/pop_vera_context() to save/restore_vera_context()
  • cx16: added cx16.poweroff_system() and cx16.set_leds_brightness()
  • cx16: fix golden ram area
  • various bugfixes

version 8.11

06 Apr 19:43
Compare
Choose a tag to compare
  • A,X,Y now are valid identifiers
  • floating point literals such as .123 (without leading zero) are now also valid
  • added divmod() and divmodw() builtin functions
  • added txt.width() and txt.height() for the 'virtual' target
  • added a memory map diagram to the 'targetsystem' chapter in the documentation.
  • CX16 system init code no longer resets the Vera display chip
  • CX16 fixed wrong ubyte to float conversion
  • CX16 got a few more Vera registers and some new audio ROM routines
  • CX16 graphics.plot() colors fix
  • CX16 FB_set_palette() fix
  • added cx16 bubbleuniverse example
  • removed 2 problematic ZP locations from the free list on the C64 target
  • fixed the cx16/bdmusic and sincos examples
  • got rid of too greedy asm optimizer that caused issues when writing to I/O registers
  • added another optimization for simple for loops
  • fix occasional crash in pokew() code gen
  • documentation menu fix on readthedocs
  • when now allowed to use simple 1,2,3 etc value literals in its cases for a word variable, without needing a cast to word
  • improved some error messages
  • fixed some problems with array intialization values
  • fixed some issues in the IR codegen
  • fixed some bugs and compiler crashes
  • updated 3rd party library versions
  • new IR return value mechanism
  • experimental '-newexpr' option to select new expression codegen that doesn't use the software eval stack.

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