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
whennow 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
varshighcompiler 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
noreinitcompiler 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_filesdoesn'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
gfx2text 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
rndandrndware no longer builtin functions, but are now regular routines in themathmodule.rndandrndfroutines can now be seeded withrndseedandrndseedfroutines. You can get a reproducible sequence of random numbers this way.- new integer
rndroutine that is smaller and faster than the previous one. - added
cx16diskio.vload_rawto load headerless file into VRAM. - added
gfx2.pgetto 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