Commit Graph

1603 Commits

Author SHA1 Message Date
Irmen de Jong
35af53828a fix endless loop in optimizer, fix cx16 register clobbering in psg interrupt handler, fix crash on certain arrays, fix undefined symbol when it's in another imported module 2022-07-13 18:42:06 +02:00
Irmen de Jong
10ddd5b127 fixed missing non-boolean operand cast in logical expressions 2022-07-12 22:28:06 +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
ff1fc28287 added immediate value vm logical instructions because these are so common 2022-07-12 16:12:32 +02:00
Irmen de Jong
314398ba4c added immediate value vm arithmetic instructions because these are so common 2022-07-12 15:21:26 +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
fb63434eee tweak maze example 2022-07-09 22:13:30 +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
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
9500fc11ac document new bool datatype and removal of boolean() conversion function 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
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
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
25aad8d7be improve const-evaluation of builtin expressions 2022-07-02 16:29:01 +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
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
2ad4fdbbb9 added cx16 version of bdmusic, needs ADSR though 2022-06-30 21:33:48 +02:00
Irmen de Jong
97cb0cbd08 tweak "not" removal/rewriting 2022-06-30 02:16:30 +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
a6d0ea347c bank caching not required for pcm_play() 2022-06-26 22:08:10 +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
5656ec11d3 fix missing abs(byte) routine 2022-06-24 01:51:54 +02:00
Irmen de Jong
eb53e44cb0 zsound stream test 2022-06-24 01:51:33 +02:00
Irmen de Jong
8ab99f6129 zsound combo example 2022-06-21 00:38:59 +02:00
Irmen de Jong
bda016bb3b optimized 6502 codegen for logical expressions 2022-06-15 22:17:15 +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
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
dca092fd7c fix pipe expression when start term is constant number 2022-06-12 16:59:28 +02:00
Irmen de Jong
c6e92ecac4 some code cleanup 2022-06-12 16:15:08 +02:00
Irmen de Jong
93008ff605 tweak zsound examples 2022-06-12 14:51:24 +02:00
Irmen de Jong
43c7b935df fixed zsound pcm player example 2022-06-11 03:31:42 +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
fd13bd864e some notes added to zsound demo player 2022-06-09 23:36:07 +02:00
Irmen de Jong
f537793b0b added zsound demo player example (cx16) 2022-06-08 23:57:01 +02:00
Irmen de Jong
f7183e38ee tweak trivial subroutine inlining 2022-06-08 21:05:03 +02:00
Irmen de Jong
0a65dfdd10 optimized codegen for some more simple expressions with +/- 2022-06-07 22:30:08 +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
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
dbb92881a1 fixed X register corruption in some cases of rol() and ror() 2022-06-04 21:10: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
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
5fe6aa2800 fix swap() code for pointervars 2022-06-03 23:13:35 +02:00
Irmen de Jong
b459b09b2f vm: fix comparison datatype error; primes.p8 works again 2022-05-24 18:26:07 +02:00
Irmen de Jong
3f5877dbcc vm: fix array iteration 2022-05-23 21:24:36 +02:00
Irmen de Jong
e659b91c4d vm: fix storezm/storezx instructions 2022-05-23 21:01:02 +02:00
Irmen de Jong
b646f50265 vm: implemented in-memory bit shift instructions 2022-05-23 20:15:20 +02:00
Irmen de Jong
0a48ef3030 vm: just use new register instead of trying to (ab)use reg 0 2022-05-22 23:38:46 +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
26ea1da146 vm: add in-place bitwise or,and,xor 2022-05-20 20:50:27 +02:00
Irmen de Jong
461b6499ef vm: add in-place add/sub 2022-05-19 22:54:50 +02:00
Irmen de Jong
c769920b6e vm: fix signed divide 2022-05-19 22:24:57 +02:00
Irmen de Jong
181b98ef9e vm: implemented some self-assign instructions 2022-05-18 22:15:42 +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
e52d9e3210 vm: split off assignment codegen to its own file 2022-05-17 22:38:31 +02:00
Irmen de Jong
dc6475c91b vm: fixed non-byte array indexing 2022-05-17 18:53:33 +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
6e31eebfb5 vm: ifElse codegen uses proper branching instructions now 2022-05-12 21:26:17 +02:00
Irmen de Jong
a7df828932 vm: codegen uses INCM/DECM if possible 2022-05-12 19:40:31 +02:00
Irmen de Jong
517cf61d11 vm: limit int instructions to just 2 register args 2022-05-11 22:36:47 +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
74c05d00a9 vm: fix comparison operator codegen for floats 2022-05-11 17:07:21 +02:00
Irmen de Jong
bacba629a5 vm: use shift-one instructions in codegen 2022-05-11 15:50:51 +02:00
Irmen de Jong
14e36f1362 vm: fix assignment to array 2022-05-11 15:26:54 +02:00
Irmen de Jong
d43ad849d1 vm: actually use the store-zero instructions in codegen 2022-05-11 15:18:36 +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
fef52c0112 automatically convert multi-compare expression (if X==1 or X==2..) to contaiment check if X in [1,2,..] 2022-05-08 13:21:34 +02:00
Irmen de Jong
8c4765b386 vm: support non-unary functions in pipe expressions 2022-05-07 20:42:05 +02:00