Irmen de Jong
6886b61186
also output inline asm chunks
2022-09-13 23:06:05 +02:00
Irmen de Jong
502a665ffc
getting address-of into IR without allocations
2022-09-13 23:06:05 +02:00
Irmen de Jong
c6c5ff2089
added joystick controls to cx16 tehtriz
2022-08-23 18:11:35 +02:00
Irmen de Jong
176ec8ac7d
fix 6502 codegen bug: complex comparison expression is evaluated wrong.
...
Fixed by reintroducing splitting of comparison expression in if statements by using a temporary variable and/or register to precompute left/right values.
2022-08-23 00:05:57 +02:00
Irmen de Jong
dcdd4b3255
found bug in comparison expr codegen
2022-08-22 23:16:56 +02:00
Irmen de Jong
bb5ffb24a8
add IDEA antlr parser build info to documentation
2022-08-21 13:32:31 +02:00
Irmen de Jong
6454bf8ec4
added mouse cursor to amiga example
...
slightly sped up text rendering in gfx2 highres mode
2022-08-16 04:25:59 +02:00
Irmen de Jong
f37a822725
move
2022-08-14 13:17:03 +02:00
Irmen de Jong
f249ccd414
added asm optimization for same pointer index
2022-08-14 12:50:46 +02:00
Irmen de Jong
7ef4ddf0f3
fixed operator precedence: bitwise must come before comparisons
2022-08-14 12:34:00 +02:00
Irmen de Jong
d8e18df3a1
added c64 starfield example
2022-08-14 12:02:23 +02:00
Irmen de Jong
0aa0ec5abd
fix c64 zeropage locations of cx16 virtual registers
2022-08-13 00:14:19 +02:00
Irmen de Jong
b6eef3612f
added some ported bench8 test programs
2022-08-12 22:08:27 +02:00
Irmen de Jong
44ee4b989f
optimize code for logical expressions more if right operand is simple
2022-08-12 00:49:40 +02:00
Irmen de Jong
18790d867c
optimize conditional expression WORD & $ff00 to just msb(WORD)&$ff
2022-08-12 00:21:44 +02:00
Irmen de Jong
d6b8936376
fix mkword(@(ptr), 0) wrong asm
2022-08-11 23:01:19 +02:00
Irmen de Jong
4d840c7db8
optimized mkword(0, X)
2022-08-11 22:51:09 +02:00
Irmen de Jong
4d2b21816d
optimized uword <<8 and >>8
2022-08-11 22:25:15 +02:00
Irmen de Jong
2d34fdd28f
in a block marked option force_output, make all subroutines in asm use .block rather than .proc
...
this fixes some obscure assembly issues where subroutines were omitted from the output program by 64tass
2022-08-10 21:28:40 +02:00
Irmen de Jong
68abda1219
fix a few small compiler errors (removing functioncall, removing block, assigning virtual register return value)
2022-08-09 23:38:29 +02:00
Irmen de Jong
ac1bd2fb7b
virtual: properly output "memmapped" variables too
...
still as regular variables though
2022-08-08 20:42:17 +02:00
Irmen de Jong
e560e2ab3f
vm instructions now contain info on input/output registers
2022-08-07 18:49:16 +02:00
Irmen de Jong
1e441c2ddf
tweak vm codegen
2022-08-07 13:45:03 +02:00
Irmen de Jong
93ce74eeb1
removed problematic expression "simplifications" (that introduced arbitrary r9 temp register usage)
2022-08-07 12:26:11 +02:00
Irmen de Jong
f718f4251b
working on better encoding of romsub in new ast/vmtarget
2022-08-07 12:21:10 +02:00
Irmen de Jong
4644c9b621
got rid of GoSub ast node and codegen complexity related to that.
...
sometimes programs get smaller, sometimes bigger.
2022-08-07 03:24:20 +02:00
Irmen de Jong
34aa917ca4
allow bool return type (and arguments) for asmsub / romsub
2022-08-02 23:07:42 +02:00
Irmen de Jong
5b9576df4e
added diskio.send_command()
...
diskio now reuses some buffer internally for file names to save some memory
2022-08-01 22:59:27 +02:00
Irmen de Jong
a0deb463c9
optimized codegen for some equality comparison expressions and some logical expressions
2022-07-31 15:25:54 +02:00
Irmen de Jong
90ddec2ad8
avoid multiple change events in watch mode
...
added bsieve example
2022-07-31 11:58:27 +02:00
Irmen de Jong
f531daa872
on C64, the cx16.r0...cx16.r15 virtual regs are now in zeropage as well when using kernalsafe or full
2022-07-28 19:13:33 +02:00
Irmen de Jong
046dceb5c2
added optimized case for signed division by 2
2022-07-24 13:59:35 +02:00
Irmen de Jong
dcc1f00048
fix rounding errors in signed divide by power-of-two
...
The optimized bit-shifting division is removed (for now)
2022-07-24 12:34:55 +02:00
Irmen de Jong
05f935b598
simplify & fix recursion detector
2022-07-22 22:22:43 +02:00
Irmen de Jong
f2d27403c5
add string.endswith() to efficiently test for a suffix without copying
...
add string.startswith() to efficiently test for string prefix without copying
2022-07-21 00:38:30 +02:00
Irmen de Jong
aeabf0f324
nicer colors
2022-07-17 21:37:15 +02:00
Irmen de Jong
80ab552ad8
fix wrong code for signed word >= 0
2022-07-17 19:02:56 +02:00
Irmen de Jong
7d4695c5b2
cx16: graphics module y resolution corrected from 200 to 240. added 'cx16/circles' example.
2022-07-17 18:59:52 +02:00
Irmen de Jong
5189eaca36
move the vm unit tests to codeGenVirtual module and remove virtualmachine dependency in the compiler module
2022-07-17 12:56:22 +02:00
Irmen de Jong
cfb31377fc
c64 zeropage: added a few more locations to Kernalsafe free list that should be safe
...
this makes $02-$21 inclusive, available for use later (x16 virtual registers are placed here on x16...)
2022-07-17 12:12:47 +02:00
Irmen de Jong
a07c52e112
conv.any2uword / conf.hex2uword can now deal with iso lower and upper case letters as well.
2022-07-17 02:39:40 +02:00
Irmen de Jong
8e1071aa89
fix compiler crashes: txt.chrout("a"), uword[] a = ["ls", subroutine] without & before subroutine.
2022-07-15 23:17:03 +02:00
Irmen de Jong
350dc731f1
cx16: sys.reset_system() now resets vera fully as well (such as PSG sound), kernal didn't seem to do that
2022-07-14 23:44:53 +02:00
Irmen de Jong
f690f58bd4
callfar() now accepts a variable as address, so it can be used to indirect JSR to a subroutine whose address is not fixed. ('goto' already could indirect JMP to a variable address.)
2022-07-14 19:29:59 +02:00
Irmen de Jong
4bc65e9ef7
fix stack crash in cx16.push_vera_context()
2022-07-14 16:33:09 +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
f46e131f18
todo
2022-07-12 19:41:51 +02:00
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
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
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
9633c0b07a
added bool to syntax files
2022-07-07 23:30:41 +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
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
7ff8923569
document -D command
2022-07-06 23:45:41 +02:00
Irmen de Jong
beea6bc794
about bool
2022-07-04 20:26:03 +02:00
Irmen de Jong
fee58e98c5
tiny optimization
2022-07-03 13:05:30 +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
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
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
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
7901ec2a64
"not" no longer in LogicalOperators because it makes assembler generate invalid code somehow
2022-06-30 22:49:27 +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
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