Irmen de Jong
|
feb5c8be95
|
vm: some more peephole optimizations
|
2022-07-12 19:04:19 +02:00 |
|
Irmen de Jong
|
edf12bec71
|
improve bool params typecasting, fix compiler crash on abs(floatvar)
|
2022-07-12 17:52:37 +02:00 |
|
Irmen de Jong
|
840331347b
|
added a few more vm optimizations and unit tests
|
2022-07-12 12:42:37 +02:00 |
|
Irmen de Jong
|
6181b12ab8
|
added -esa option to override the evalstack location, and shift cx16.r0-r15 accordingly
|
2022-07-11 19:29:04 +02:00 |
|
Irmen de Jong
|
68da661edc
|
optimize comparison to true/1 into comparison to zero, optimize while/until conditions
|
2022-07-11 16:42:52 +02:00 |
|
Irmen de Jong
|
88cbb6913d
|
tweak bool type handling
|
2022-07-11 14:55:50 +02:00 |
|
Irmen de Jong
|
7a26646e1b
|
tweak bool type handling
|
2022-07-11 02:08:12 +02:00 |
|
Irmen de Jong
|
92eb3b0bf6
|
bool logical testcase
|
2022-07-09 22:29:38 +02:00 |
|
Irmen de Jong
|
97f90d9684
|
Merge branch 'master' into bool_type
|
2022-07-09 22:09:49 +02:00 |
|
Irmen de Jong
|
f91786367f
|
added maze example
|
2022-07-09 22:00:46 +02:00 |
|
Irmen de Jong
|
6a57337a68
|
improved bool type checking
|
2022-07-08 22:59:35 +02:00 |
|
Irmen de Jong
|
211e2bb37a
|
improved bool type checking
|
2022-07-08 22:29:13 +02:00 |
|
Irmen de Jong
|
d2d08bf143
|
fix compiler error about bool vs ubyte
|
2022-07-08 22:03:05 +02:00 |
|
Irmen de Jong
|
8acb37b6c2
|
use bool type in examples and libraries
|
2022-07-08 21:50:32 +02:00 |
|
Irmen de Jong
|
81b3d2db4f
|
fix compiler crash
|
2022-07-08 21:50:06 +02:00 |
|
Irmen de Jong
|
1dfa8ee7d8
|
add ARRAY_BOOL array type
|
2022-07-07 23:07:30 +02:00 |
|
Irmen de Jong
|
1163543a98
|
fix bool param lookup problem
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
bdb7de34be
|
added several compiler checks against weird boolean type use in expressions
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
65daf29acd
|
fix compiler crash related to word types in certain comparison expressions
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
298b25cf7d
|
fix compiler crash on certain typecasting assignment
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
41f4e22a17
|
introduce BOOL type
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
b41779bd02
|
added -D command line option to define symbols in the assembly file
|
2022-07-06 23:40:36 +02:00 |
|
Irmen de Jong
|
fee58e98c5
|
tiny optimization
|
2022-07-03 13:05:30 +02:00 |
|
Irmen de Jong
|
c51c1da618
|
psg micro optimizations
|
2022-07-03 11:55:13 +02:00 |
|
Irmen de Jong
|
ea2812f50f
|
add max volume to psg envelope
|
2022-07-03 11:26:56 +02:00 |
|
Irmen de Jong
|
3ec05709d5
|
convert the sounds in cx16 tehtriz to use the psg module instead
|
2022-07-03 01:40:29 +02:00 |
|
Irmen de Jong
|
4bdac7404a
|
added sustain to psg envelope
|
2022-07-03 00:55:25 +02:00 |
|
Irmen de Jong
|
cc41218d37
|
added nicer vm example
|
2022-07-03 00:41:04 +02:00 |
|
Irmen de Jong
|
4b336b1853
|
if passing a subroutine or label name as an uword argument, without &, add the addressof automatically
|
2022-07-02 23:55:32 +02:00 |
|
Irmen de Jong
|
e1c77ce236
|
fix pop() name scoping
|
2022-07-02 23:27:08 +02:00 |
|
Irmen de Jong
|
064d412ec8
|
added cx16.push_vera_context() and cx16.pop_vera_context() for use in irq handlers
|
2022-07-02 23:13:00 +02:00 |
|
Irmen de Jong
|
7fff4f249d
|
optimize msb(cx16.r0) -> cx16.r0H, lsb(cx16.r0) -> cx16.r0L
|
2022-07-02 21:38:22 +02:00 |
|
Irmen de Jong
|
7a3745f642
|
psg tweaks
|
2022-07-02 20:33:40 +02:00 |
|
Irmen de Jong
|
f8658f6afa
|
precalc vera freq to not use floating point math anymore
|
2022-07-02 19:40:18 +02:00 |
|
Irmen de Jong
|
223b725a10
|
psg abstraction and attack/release envelope
|
2022-07-02 18:47:12 +02:00 |
|
Irmen de Jong
|
b2c9b7635d
|
revert restriction on certain associative operator reshuffling
it caused larger generated code
|
2022-07-02 13:59:24 +02:00 |
|
Irmen de Jong
|
24d13dd120
|
fix problematic optimizations to logical expressions
|
2022-07-02 00:56:24 +02:00 |
|
Irmen de Jong
|
965340ff90
|
logical and/or/xor/not all replaced by bitwise &,|,^,~ (ast, codegens)
this also fixed some invalid outcomes of logical expressions!
|
2022-07-02 00:38:17 +02:00 |
|
Irmen de Jong
|
8e36fe6bef
|
temporary workaround for code problem around 'not'
|
2022-07-01 01:01:15 +02:00 |
|
Irmen de Jong
|
2eb41a8caf
|
temporary workaround for code problem around 'not'
|
2022-07-01 00:38:19 +02:00 |
|
Irmen de Jong
|
fb989ae62f
|
cx16: reset rom/ram/monitor banks at program exit to sane values.
|
2022-07-01 00:14:38 +02:00 |
|
Irmen de Jong
|
f675dbc726
|
vm var allocator now also recognises the memory-mapped variables. no longer crashes
|
2022-06-30 22:09:49 +02:00 |
|
Irmen de Jong
|
97cb0cbd08
|
tweak "not" removal/rewriting
|
2022-06-30 02:16:30 +02:00 |
|
Irmen de Jong
|
4ca0805de1
|
bump version
|
2022-06-29 01:35:14 +02:00 |
|
Irmen de Jong
|
4b358abbb7
|
"not" operator removed from ast and codegen (it's been replaced with x==0 as equivalent)
|
2022-06-29 01:13:08 +02:00 |
|
Irmen de Jong
|
dc82a0fc16
|
better not(x) replacement by x==0
|
2022-06-28 23:50:23 +02:00 |
|
Irmen de Jong
|
435d6f6f3f
|
vm: and/or/xor/not are all bitwise operations again
|
2022-06-28 03:17:51 +02:00 |
|
Irmen de Jong
|
ef92451d1a
|
fix logical expressions on arbitrary values, for now with boolean() around the operands
|
2022-06-28 01:18:36 +02:00 |
|
Irmen de Jong
|
06184bdcb1
|
get rid of failed mccarthy shortcut evaluation
|
2022-06-27 21:44:52 +02:00 |
|
Irmen de Jong
|
af98d01053
|
failed attempt at McCarthy shortcut evaluation
|
2022-06-27 21:40:48 +02:00 |
|
Irmen de Jong
|
bb1cda0916
|
fix: boolean values of terms in logical expressions are now properly evaluated
|
2022-06-26 23:55:34 +02:00 |
|
Irmen de Jong
|
0fcd57192b
|
cx16diskio.f_read() now correctly deals with banked ram boundary
|
2022-06-26 21:42:56 +02:00 |
|
Irmen de Jong
|
c75bd97537
|
update kotest
|
2022-06-26 18:51:03 +02:00 |
|
Irmen de Jong
|
eea09f4de5
|
fix invalid asm label sometimes generated for multiple loops in same subroutine
|
2022-06-24 02:26:45 +02:00 |
|
Irmen de Jong
|
5656ec11d3
|
fix missing abs(byte) routine
|
2022-06-24 01:51:54 +02:00 |
|
Irmen de Jong
|
df36983049
|
version 8.2
|
2022-06-15 22:31:29 +02:00 |
|
Irmen de Jong
|
cc174b7b85
|
added boolean() builtin function and use it to get rid of !=0 comparisons
|
2022-06-14 23:34:45 +02:00 |
|
Irmen de Jong
|
bf9d120081
|
logical operators now always return a boolean byte result, instead of sometimes word type as well
(preparing for codegen simplifications for these)
|
2022-06-13 01:37:16 +02:00 |
|
Irmen de Jong
|
775c85fc18
|
don't swap operands that would change function evaluation order + vm: fix label casing error
|
2022-06-13 00:25:45 +02:00 |
|
Irmen de Jong
|
5a756aaed9
|
Pipe expression "|>" removed from the language
|
2022-06-12 18:41:42 +02:00 |
|
Irmen de Jong
|
c6e92ecac4
|
some code cleanup
|
2022-06-12 16:15:08 +02:00 |
|
Irmen de Jong
|
8f9a0a244a
|
trying to add zsound pcm player example as well
|
2022-06-10 23:35:37 +02:00 |
|
Irmen de Jong
|
710f27afa9
|
bump library versions
|
2022-06-09 22:44:17 +02:00 |
|
Irmen de Jong
|
f7183e38ee
|
tweak trivial subroutine inlining
|
2022-06-08 21:05:03 +02:00 |
|
Irmen de Jong
|
3075578245
|
optimized codegen for assigning value or variable to indexed pointer. (6502)
|
2022-06-06 18:30:19 +02:00 |
|
Irmen de Jong
|
b042b7705e
|
fix invalid removal of repeated assignments.
|
2022-06-06 17:27:06 +02:00 |
|
Irmen de Jong
|
d56eb397f9
|
fix codegen for rol/ror on pointer indexed
|
2022-06-06 16:07:45 +02:00 |
|
Irmen de Jong
|
3054a1d32d
|
api change: removed swap() builtin function (too complex in codegen for little used function)
|
2022-06-06 16:01:11 +02:00 |
|
Irmen de Jong
|
0a3cd652b0
|
vm: fix codegen for storing to pointer indexed
|
2022-06-06 14:18:12 +02:00 |
|
Irmen de Jong
|
f70b914779
|
fix optimized codegen for 2 arg functions, sometimes was passing wrong arg value due to register overwriting
|
2022-06-06 13:21:45 +02:00 |
|
Irmen de Jong
|
46ca0ac10d
|
properly optimize X - -1 and X + -1, this also fixes type change of ubyte - 2 + 10
|
2022-06-05 15:35:29 +02:00 |
|
Irmen de Jong
|
031f647952
|
allow casting negative numbers to unsigned, result = 2's complement
|
2022-06-05 14:21:10 +02:00 |
|
Irmen de Jong
|
8f1c86f550
|
fixed several old test files
|
2022-06-05 14:20:08 +02:00 |
|
Irmen de Jong
|
af2ca7a67e
|
fix problematic characters that cause path errors on Windows
|
2022-06-05 11:46:37 +02:00 |
|
Irmen de Jong
|
9e3e2ff81a
|
fix assembly generation error when pipe character is part of string literal
|
2022-06-04 22:25:51 +02:00 |
|
Irmen de Jong
|
a862a81480
|
added unit test for name shadowing warning
|
2022-06-04 21:35:48 +02:00 |
|
Irmen de Jong
|
10bf7f5d07
|
fix: again gives proper name redefinition errors in same scope
|
2022-06-04 20:15:46 +02:00 |
|
Irmen de Jong
|
1e61d84fd1
|
vm: fix expression codegen for pointer indexing
|
2022-06-04 19:32:35 +02:00 |
|
Irmen de Jong
|
8618ba1b60
|
fix 6502 expression codegen for pointer indexing
|
2022-06-04 18:46:16 +02:00 |
|
Irmen de Jong
|
2002412026
|
optimized codegen for pointer indexing (read expressions)
|
2022-06-04 17:20:17 +02:00 |
|
Irmen de Jong
|
7f69517fd4
|
preparing optimizing pointer indexing
|
2022-06-04 16:18:27 +02:00 |
|
Irmen de Jong
|
c40cfaa388
|
preparing optimizing pointer indexing
|
2022-06-04 14:23:02 +02:00 |
|
Irmen de Jong
|
0349d1d57c
|
diskio: moved cx16 optimized f_read() to cx16diskio instead
so unfortunately you have to select the faster version yourself when on cx16
|
2022-06-04 00:33:27 +02:00 |
|
Irmen de Jong
|
73a3a61729
|
swap() checks for unsupported code gen
|
2022-06-03 23:41:24 +02:00 |
|
Irmen de Jong
|
c7eafd7c79
|
cx16: fix macptr() signature and use it in diskio.f_read() for big increase in load speed
|
2022-06-02 00:37:18 +02:00 |
|
Irmen de Jong
|
10b5fb5d72
|
fix for total size returnvalue of diskio.f_read_all()
|
2022-06-01 01:13:19 +02:00 |
|
Irmen de Jong
|
a735939d1e
|
removed confusing GPL software license reference and copyright header from library files. (because of exclusion in output files)
Reworded software license and exclusion clause somewhat again in attempt to make it even clearer.
|
2022-05-30 20:12:20 +02:00 |
|
Irmen de Jong
|
6ed5f04970
|
version 8.1
|
2022-05-25 20:00:26 +02:00 |
|
Irmen de Jong
|
b646f50265
|
vm: implemented in-memory bit shift instructions
|
2022-05-23 20:15:20 +02:00 |
|
Irmen de Jong
|
ba614801ee
|
cleanup
|
2022-05-22 23:11:22 +02:00 |
|
Irmen de Jong
|
fd6eb47e68
|
added inlining certain trivial non-asm subroutine calls
|
2022-05-22 20:22:09 +02:00 |
|
Irmen de Jong
|
e69aeb8b98
|
added warning about shadowing variables
|
2022-05-22 17:34:08 +02:00 |
|
Irmen de Jong
|
4e1184a400
|
vm: added some of the sin cos tables in math.p8
|
2022-05-17 22:56:00 +02:00 |
|
Irmen de Jong
|
52f9956e92
|
clarify use of direct-memory in functions that modify in place such as rol/swap
|
2022-05-16 22:41:31 +02:00 |
|
Irmen de Jong
|
0bf00d1ca4
|
c64/c128 targets: perform cleanup at program exit such as re-enabling run-stop key and character set switching.
|
2022-05-15 16:44:26 +02:00 |
|
Irmen de Jong
|
d1a707df57
|
fix assigning a pointer (uword) to string not copying the correct memory
|
2022-05-15 16:10:58 +02:00 |
|
Irmen de Jong
|
4dc9b45297
|
vm: fixed string comparisons, added missing vm string module
|
2022-05-13 23:10:13 +02:00 |
|
Irmen de Jong
|
4be7bc8323
|
vm: limit float instructions to just 2 register args
|
2022-05-11 22:09:46 +02:00 |
|
Irmen de Jong
|
627aa61184
|
clean up subroutine inlining, basis for new try
|
2022-05-09 15:42:58 +02:00 |
|
Irmen de Jong
|
dad5b17ac8
|
fix regression compiler crash in string comparison
|
2022-05-08 13:47:24 +02:00 |
|