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 |
|