Releases: irmen/prog8
Releases · irmen/prog8
version 8.12
- 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
- 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
- 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 usecx16.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
- 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
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
- 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 tolist_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
rnd
andrndw
are no longer builtin functions, but are now regular routines in themath
module.rnd
andrndf
routines can now be seeded withrndseed
andrndseedf
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
- 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
- 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
- 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