Releases: irmen/prog8
release 5.2
- fixed various bugs in word value comparisons
- fixed the graphics bitmap mode's YSCROLL issue on C64 (was introduced in 5.1)
- optimized how float values are returned from subroutines
- optimized comparison asm code
- optimized various other in-place variable modification asm code
- optimized some typecasting
- updated Kotlin sdk to 1.4.20
- required Java version is now 11 (LTS)
release 5.1
- vice debug labels works again (requires very recent 64tass assembler 1.55.2257 or newer as well)
- compiler watch mode now also works on multiple files
- compiler watch mode now works on files in current directory instead of in a subdirectory
- improved swap()
- many assignment optimizations
- many value comparison optimizations
- some expression evaluation optimizations
- added balls example/benchmark
- various bugfixes
release 5.0
- (usually) code size reduction of compiled programs due to mainly the following two:
- subroutine args are now passed via argument-variables instead of via stack
- subroutine returnvalues are passed via registers instead of stack
- fixed some invalid expression evaluations
- added custom-charset example
- various bugfixes
release 4.6
- fixed bugs in codegen for
repeat
loops - introduced
diskio
library module andcx16logo
- fixed C64 zero page usage to allow correct disk I/O to occur
- added
strcmp
function and allow string comparisons to be done automatically by value - added more string to number conversion routines to
conv
- optimized handling and codegeneration for array indexing
- added more missing codegens for math routines in assignments
- fixed bitshifting code
- fixed many bugs
- updated
textelite
example to load/save your progress
release 4.5
- added \xHH and ' escape characters
- improved string handling and bugfixes
- fixed various compiler errors and bugs regarding type conversion of function parameters
- possible to deal with statusflag return value from certain kernel subroutines
- various assembly code optimizations
- implemented even more missing math operations
- improved error messages
- repeat loop now really does nothing when the repeat count is 0
- arrays can now be re-assigned with a new array literal instead of having to assign every element by itself
- fixed optimizer crash when dealing with overlapping node replacements
- CX16: fixed X register corruption when converting integer to float
- fixed precedence of comparison vs bitwise operators
- added textelite example game
release 4.4
- major performance improvements in generated code. Some microbenchmarks are now faster in Prog8 than equivalent C code compiled with cc65
- added %option no_sysinit to not reinitialize the system at program start, useful for simple utility routines
- do .. until condition can now refer to variables declared in the loop body itself
- can now create uword arrays with strings and struct variables (array contains their memory addresses)
- can now also initialize all struct variable's member by assigning a single array value
- fixed fallthrough bug in when block
- file path for library modules displayed in case of error
- fixed bugs in math routines and others.
release 4.3
Major: many programs can now be compiled for both the C64 and the CommanderX16 targets without change, if the code only utilizes standard kernel rom routines and standard Prog8 library routines. Many example programs have been adapted in this way and can now be compiled for both machines.
Renamed various libraries to get rid of the 'c64' or 'cx16' prefix, made the compiler to auto-select the correct one based on the selected compilation taret.
textio library for commanderx16 nopw has feature parity with the c64 version.
Got rid of the ".w" value postfix because it caused parser errors. Alternative for it is to use full word hexadecimal notation or an explicit cast.
Compiler errors are formatted in a way now that allow you to click on them in an IDE and jump directly to the source line.
Added a diskdir example that displays the disk directory without destroying the program like LOAD"$",8 would.
The Cx16 3d elite space ship example now includes hidden line removal.
Fixed many bugs.
release 4.2
- many bug fixes and small code generation improvements (both c64 and cx16 compiler targets).
- added the missing optimized multiplication assembly math routines.
release 4.1
Much improved Commander X16 support in this release.
- got floating point working for cx16, added VERA registers
- made more textio routines available for cx16
- added some more cx16 example programs
- started using 65c02 features for cx16 target
- implemented more missing math code generation
- fix compiler hang and missing type checks in for loop range values
- fix for loop code generation for word loop variables
release 4.0
- new major version because of large breaking changes.
- preliminary support for the 'cx16' CommanderX16 compiler target, see https://commanderx16.com/
- removed lsl() and lsr() functions just use <<=1 and >>=1
- renamed some library modules; c64scr -> txt , import via c64textio instead of via c64utils
- identifiers can no longer start with an underscore
- flipped the order of the parameters of mkword() so it's now mkword(msb, lsb) for easier readability
- added a bitmap graphic 3d cube example cube3d-gfx
- implemented code generation for many more math operations
- performance improvements in generated code
- bugfixes and compiler error message improvements