Releases: irmen/prog8
release 7.0 beta2
This version will likely be very close to the final 7.0 release because I'm not considering adding or changing anything new from now on (except bug fixes).
Some of the most important fixes/changes since the previous beta release:
- string encoding and string interning bug fixes
- various compiler crashes fixed
- %asminclude fixed (scopelabel argument removed as well)
- repeat loop code gen optimized some more
Once again: the CommanderX16 target targets the upcoming "V39" of the cx16 emulator and roms.
Programs targeting the cx16 compiled with this new Prog8 version may no longer work on the previous version of the emulator (although if you're not using floating point and bank switching, they will likely still work)
Detailed change list will be added when this 7.0 version is finalized, which will probably be shortly after the "V39" of the commanderx16 is officially released as well.
release 7.0 beta
Beta release of the next version.
Most important changes are in the CommanderX16 target: we now target the upcoming "V39" of the cx16 emulator and roms.
Programs targeting the cx16 compiled with this new Prog8 version may no longer work on the previous version of the emulator.
Also the struct
language feature has been removed. (hence the new 7.0 major version because this breaks old programs that use this. Rewrite structs as separate variables).
Also the random number generator (used for rnd() etc) has been replaced by a slower but much better one.
Detailed change list will be added when this 7.0 version is finalized, which will probably be shortly after the "V39" of the commanderx16 is officially released as well.
release 6.4
- assembly code generator is now finally fully completed! All missing code generation are now resolved, there should be no more cases where there is a (known) missing assembly code generation step. Last ones were word/byte and word%byte expressions.
- added cx16.vload() that mirrors VLOAD basic command
- added cmp(x,y) builtin function to just do a compare of both operands, so you can use a conditional jump instruction afterwards (however, just use regular comparison operators)
- fixed c64 zero page address allocation when using floats
- fixed invalid code generated for some comparison operators (<, > , <=, >=) in certain cases
- various compiler crash fixes
- improved various compiler errors
- optimized integer square routine (x*x)
- fixed graphics bresenham line inaccuracy, and optimized it a bit more
- improved code generated for all comparison operators
- Vim syntax highlighting added, contributed by @Elektron72
release 6.3
- rnd() now uses the much better RNG shared with rndw().
- added fastrnd8() for the old rnd() behavior
- added a bunch of more convenient number-to-string routines in conv
- fixed min(), max(), sum() and abs()
- various commanderx16 / 65c02 optimizations
- repeat loops optimized a bit more
- array and struct assignments now use memcopy instead of per-field assignment
- fixed compiler crash for certain const expression evaluations
- added 'kefrenbars' and 'bobs' demos
release 6.2
- like the R0..R15 virtual registers, the carry status bit Pc does no longer have to be specified as the last parameter but you can put it anywhere. The compiler will sort it.
- simplified the set_irq routines
- added irq handling routines for the commander x16
- added commanderx16 rasterbars irq example
- added cx16 vtui-library example, improved graphics on cx16 port of tehtriz and added sounds to it
- added animal guessing game example
- duplicate string literals are optimized better
- slightly optimized the gfx2 module pixel position calculations
- commanderX16 compiler target improvements
- source code restructurings to reduce internal dependencies
- bugfixes
- documentation fixes
release 6.1
- some changes in gfx2 module to make screen mode numbering more intuitive
- gfx2 can now draw in highres 4 color mode as well
- fixed bug in repeat()
- fixed bug in mkword()
- fixed bug in signed word shift right
- fixed argument register clobber bug in certain asmsubs
- tehtriz example ported to CommanderX16
- added amiga desktop mockup draw example
- added peekw() and pokew() functions
- textelite game now has a star chart and nicer table printing
- some small for loop and other optimizations
- code restructuring to make all ast related code into its own separate module
version 6.0
Big new release with many improvements and changes (some backwards-incompatible). Hence a new major version number 6.
The most important improvements and changes are:
- restructured part of the library modules, may break old code
- moved many built in functions that should just be subroutines, to the library module "sys" or "string", may break old code
- added some new handy functions to several library modules such as txt, conv, sys, diskio, cx16
- commanderX16 virtual registers
cx16.r0 .. r15
available (for both cx16 and c64 compiler targets!) - added new library modules and routines such as
gfx2
and newdiskio
stuff - much more efficient code generated for most pointer indexing operations. For some programs this means prog8 now outperforms CC65 by a significant margin
- added several new builtin functions: target(), offsetof(), memory()
- the string to number conversion routines in conv module are now more robust and return the parsed length.
- more 65c02 specific code optimizations (commanderx16 target)
- improved several compiler errors and warnings
- graphics drawing code is a lot faster. Especially on the c64, straight lines, circles and discs
- moved the cx16 imageviewer and file based assembler out of this repo into their own git repositories
- many bugfixes and other tweaks
version 6.0 beta
Big new release with many improvements and changes (some backwards-incompatible). Hence a new major version number 6.
This is a BETA release and as such things may still change.
I'll write better release notes for the final 6.0 version once it's done.
The most important improvements and changes are:
- restructured part of the library modules, may break old code
- moved many built in functions that should just be subroutines, to the library module "sys" or "string", may break old code
- commanderX16 virtual registers
cx16.r0 .. r15
available (for both cx16 and c64 compiler targets) - added new library modules and routines such as
gfx2
and newdiskio
stuff
release 5.4
- added multi-format image file viewer example program for CommanderX16
- diskio.status() now returns the status string instead of printing it by itself
- added iterative file loading functions to diskio module
- implemented workaround subroutine for the FB_set_pixels bug (and made a PR for the ROM to fix it there too) commanderx16/x16-rom#179
- fixed parameter signature for FB_set_8_pixels_opaque()
- ** operator fixed
- bit shifting operations now 'expanded' to the size of the target variable so no more unexpected values if shifting by 8 or more into a word
- added progend() function
- added strcopy() function
- fixed compiler crash when importing modules from the current directory
- removed x16emu rom argument used by the -emu switch, should now work on non-linux systems too
- some small bugfixes and performance improvements.
release 5.3
- added a few syntax highlighting files
- diskio now closes channels better when done
- added iterative directory listing and filtering functions to diskio
- added c64colors module for the cx16 target
- removed the unused dummy argument for the various txt.scroll_xxx() routines on the cx16 target
- now require explicit address-of & when assigning strings or arrays to uword pointervars
- text screen fill/clear is a bit faster
- koalaviewer example added for cx16
- if_xxx could simetimes generate wrong jumps, fixed
- various optimizations
- various compiler crashes fixed