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
|
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
|
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
|
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
|
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
|
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 |
|
Irmen de Jong
|
eb53e44cb0
|
zsound stream test
|
2022-06-24 01:51:33 +02:00 |
|
Irmen de Jong
|
69f3106062
|
first vm peephole optimizer
|
2022-06-22 00:21:06 +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
|
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
|
8f9a0a244a
|
trying to add zsound pcm player example as well
|
2022-06-10 23:35:37 +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
|
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
|
9e3e2ff81a
|
fix assembly generation error when pipe character is part of string literal
|
2022-06-04 22:25:51 +02:00 |
|
Irmen de Jong
|
a9fe6472d9
|
remove old screencode syntax from docs
|
2022-06-04 22:07:31 +02:00 |
|
Irmen de Jong
|
a862a81480
|
added unit test for name shadowing warning
|
2022-06-04 21:35:48 +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
|
3c8c44155d
|
vm: loadix instruction added for indirect addressing via pointer
|
2022-06-04 18:07:57 +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
|
c4eaa944e2
|
thoughts
|
2022-05-30 23:37:41 +02:00 |
|
Irmen de Jong
|
6ed5f04970
|
version 8.1
|
2022-05-25 20:00:26 +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
|
e659b91c4d
|
vm: fix storezm/storezx instructions
|
2022-05-23 21:01:02 +02:00 |
|
Irmen de Jong
|
e09f054058
|
vm: implemented in-place bit rotate instructions
|
2022-05-23 20:30:25 +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
|
26ea1da146
|
vm: add in-place bitwise or,and,xor
|
2022-05-20 20:50:27 +02:00 |
|
Irmen de Jong
|
c9e8c7a290
|
vm: add in-place division
|
2022-05-19 23:38:16 +02:00 |
|
Irmen de Jong
|
181b98ef9e
|
vm: implemented some self-assign instructions
|
2022-05-18 22:15:42 +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
|
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
|
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
|
74c05d00a9
|
vm: fix comparison operator codegen for floats
|
2022-05-11 17:07:21 +02:00 |
|
Irmen de Jong
|
677613d30a
|
vm: expressiongen: use resultRegister arg instead of allocating new leftResultReg
|
2022-05-11 15:58:55 +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
|
dad5b17ac8
|
fix regression compiler crash in string comparison
|
2022-05-08 13:47:24 +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
|
348b3036ff
|
now correctly accepts "xxx" * constexpr (where constexpr is not just a single const number)
|
2022-05-05 23:21:20 +02:00 |
|
Irmen de Jong
|
09d3451d9d
|
vm: accept %asmbinary (but it is eventually ignored in code execution)
|
2022-05-05 21:43:31 +02:00 |
|
Irmen de Jong
|
b1a49e5f29
|
vm: implement rest of float instructions
|
2022-05-04 22:31:45 +02:00 |
|
Irmen de Jong
|
da01a5b4dc
|
vm: implement float to integer cast, any, all, reverse
|
2022-05-04 22:08:21 +02:00 |
|
Irmen de Jong
|
3f9cdd9b56
|
vm: fix mul and div instructions
|
2022-05-04 01:10:59 +02:00 |
|
Irmen de Jong
|
0f9e87d7bb
|
fixed compiler crash when casting float to integer, fixed float to int cast value error on cx16
|
2022-05-03 23:43:38 +02:00 |
|
Irmen de Jong
|
0869789214
|
vm: implement float type casts to integer types
|
2022-05-02 23:38:32 +02:00 |
|
Irmen de Jong
|
10c8cc35c5
|
vm: implement float divide multiply sub add
|
2022-05-02 21:53:43 +02:00 |
|
Irmen de Jong
|
30c2e3e8ff
|
vm: fix comparisons codegen
|
2022-05-02 21:32:45 +02:00 |
|
Irmen de Jong
|
86cc2f1075
|
vm: implementing more fp instructions
|
2022-05-02 21:06:14 +02:00 |
|
Irmen de Jong
|
b32641db87
|
remove syscall() builtin functions
vm code can do this via inline assembly
|
2022-05-01 00:41:30 +02:00 |
|
Irmen de Jong
|
0ee790969d
|
vm: allow inline "assembly"
|
2022-04-30 23:24:25 +02:00 |
|
Irmen de Jong
|
7844ace934
|
vm: implementing floating-point
|
2022-04-29 22:27:02 +02:00 |
|
Irmen de Jong
|
47c53fa60a
|
todo
|
2022-04-23 20:44:59 +02:00 |
|
Irmen de Jong
|
cf50e4f6ec
|
vm: printing of numbers now via conv module.
assigning strings now converted to strcopy function call in the compiler ast.
|
2022-04-23 02:15:51 +02:00 |
|
Irmen de Jong
|
7eea97d741
|
- floats: remove all floating point builtin functions and move them to the floats module instead
|
2022-04-22 00:45:54 +02:00 |
|
Irmen de Jong
|
88b55ab93e
|
vm: add abs() and fix 6502 abs() code.
|
2022-04-18 21:20:17 +02:00 |
|
Irmen de Jong
|
ee36d47c27
|
vm: added cmp() and most of the status-branch instructions
|
2022-04-18 19:59:48 +02:00 |
|
Irmen de Jong
|
6f2fdbe447
|
added %option merge, also fixed problem with unit test building in newer IntelliJ version
|
2022-04-15 22:38:32 +02:00 |
|
Irmen de Jong
|
0f4a197e34
|
improve ast check on pipe expressions
|
2022-04-14 00:49:06 +02:00 |
|
Irmen de Jong
|
7dbff5b9e6
|
abs: remove support for floats. Use floats.fabs() instead.
this solves: can't use abs() etc in pipe expression because return type depends on argument type
|
2022-04-14 00:38:31 +02:00 |
|
Irmen de Jong
|
220246278a
|
removed sum(), max(), min(). abs() now always returns uword type.
This greatly simplifies internal handling of builtin functions by always having one fixed return type.
|
2022-04-14 00:21:16 +02:00 |
|
Irmen de Jong
|
349e5a15e9
|
min/max give proper error for string args
als implmented more vm builtin functions/syscalls
|
2022-04-13 23:09:25 +02:00 |
|
Irmen de Jong
|
bf7f4bba7b
|
doc
|
2022-04-13 20:43:07 +02:00 |
|
Irmen de Jong
|
ab1766a559
|
moved all *integer* builtin trig functions (sin8u, cos8u etc) as regular asmsubs in math module
|
2022-04-13 00:27:35 +02:00 |
|
Irmen de Jong
|
890b1c2d52
|
more readable
|
2022-04-10 22:31:37 +02:00 |
|
Irmen de Jong
|
a8cf9f5cc4
|
vm: syscalls can now return value
|
2022-04-05 20:46:34 +02:00 |
|
Irmen de Jong
|
461b38e653
|
add -vm option to load an existing p8virt file directly in the virtual machine
|
2022-04-05 18:42:31 +02:00 |
|
Irmen de Jong
|
8e4c0f7c22
|
vm: add sorting and reverse functions, fix value arg out of range errors
|
2022-04-05 17:48:49 +02:00 |
|
Irmen de Jong
|
2b7c09e6ee
|
vm: more optimal code for loops ending on 0
|
2022-04-05 00:08:38 +02:00 |
|
Irmen de Jong
|
036d9dbe59
|
got rid of unnecessary cast of boolean expressions by making their type dynamically adjust to byte or word
|
2022-04-04 23:43:55 +02:00 |
|
Irmen de Jong
|
1d342cc6af
|
optimize cx16 textio.setcc()/setcc2()
|
2022-04-04 22:23:06 +02:00 |
|
Irmen de Jong
|
62b32b2211
|
todos
|
2022-04-03 22:56:13 +02:00 |
|
Irmen de Jong
|
5b3ccab7dc
|
vm: support noreinit option
|
2022-04-03 17:19:50 +02:00 |
|
Irmen de Jong
|
95f16c38a9
|
removed 'aug' property in PtAssignment , it wasn't used for anything
|
2022-04-03 15:56:14 +02:00 |
|
Irmen de Jong
|
d616cb283b
|
vm: implemented Pipe expression
|
2022-04-03 15:25:32 +02:00 |
|
Irmen de Jong
|
6ff56dc0bb
|
vm: implemented When
|
2022-04-02 19:04:12 +02:00 |
|
Irmen de Jong
|
1e63615592
|
tweaks
|
2022-04-02 18:04:41 +02:00 |
|
Irmen de Jong
|
3e62ffed0a
|
x16 r39: optimize diskio.load_raw() to use kernal's headerless load support
|
2022-04-02 03:26:48 +02:00 |
|
Irmen de Jong
|
156cf7315c
|
x16 r39: add new keyboard apis and more vector location definitions
|
2022-04-01 21:41:38 +02:00 |
|
Irmen de Jong
|
e2886e5303
|
x16 r39: update vtui lib and example
|
2022-04-01 21:09:40 +02:00 |
|
Irmen de Jong
|
c6cf330e70
|
fix bug in codegen for containment check in bytearrays and strings
|
2022-04-01 20:46:28 +02:00 |
|
Irmen de Jong
|
6be3b62d78
|
fix new Ast gosub node translation
|
2022-04-01 18:07:06 +02:00 |
|
Irmen de Jong
|
c57af5e81b
|
todo
|
2022-04-01 01:10:13 +02:00 |
|
Irmen de Jong
|
f7431f809e
|
fix colorbars example issue with memcopy due to overlapping buffers
|
2022-04-01 00:54:06 +02:00 |
|
Irmen de Jong
|
ea43c34de8
|
x16 r39: fix screen colors after changing screen mode
|
2022-04-01 00:21:22 +02:00 |
|
Irmen de Jong
|
fb6e9fa58f
|
x16 r39: fix textio routines for new vera memory layout
|
2022-03-31 23:47:11 +02:00 |
|
Irmen de Jong
|
b2ce1e8029
|
x16 r39: fix gfx2.text() charset rendering due to new Vera mem layout
|
2022-03-31 18:51:54 +02:00 |
|
Irmen de Jong
|
d90c51220f
|
x16 r39: additional FP routine changes
|
2022-03-31 18:43:32 +02:00 |
|
Irmen de Jong
|
d1b14b68fa
|
x16 r39: more free ZP registers possible by enabling floatsafe option
|
2022-03-31 18:30:26 +02:00 |
|
Irmen de Jong
|
d911728611
|
x16 r39: cx16.mouse_config() API changed, added mouse_config2() convenience wrapper
|
2022-03-31 18:24:23 +02:00 |
|
Irmen de Jong
|
86a7200012
|
x16 r39: cx16.screen_set_mode() -> cx16.screen_mode()
|
2022-03-31 18:17:28 +02:00 |
|
Irmen de Jong
|
6ddb7453e1
|
vm postincrdecr on array done
|
2022-03-31 02:13:20 +02:00 |
|
Irmen de Jong
|
ad2355f8d3
|
vm forloop done
|
2022-03-31 01:41:59 +02:00 |
|
Irmen de Jong
|
582c498fe3
|
major version bump because upcoming breaking changes in cx16 r39 release target (kernal routines)
|
2022-03-31 00:12:26 +02:00 |
|
Irmen de Jong
|
0dc592b819
|
working on vm
|
2022-03-30 22:23:25 +02:00 |
|
Irmen de Jong
|
f46300016d
|
working on vm
|
2022-03-30 01:58:31 +02:00 |
|
Irmen de Jong
|
3e1a7c6102
|
fix vm signed comparisons
|
2022-03-29 00:57:33 +02:00 |
|
Irmen de Jong
|
f07065bf84
|
some x16 example changes to use the improved mode $80 screen resolution
|
2022-03-28 22:30:34 +02:00 |
|
Irmen de Jong
|
6d79903eb3
|
workin on vm issues
|
2022-03-28 01:49:43 +02:00 |
|
Irmen de Jong
|
e166329f34
|
fix error for certain typecasted expressions inside comparisons
|
2022-03-28 01:38:01 +02:00 |
|
Irmen de Jong
|
bb1bf6a88c
|
working on vm
|
2022-03-28 00:40:15 +02:00 |
|
Irmen de Jong
|
4e33ab1e89
|
cx16 target: update float routine addresses to new r39 kernal FP package
|
2022-03-27 19:34:49 +02:00 |
|
Irmen de Jong
|
5494f309c0
|
working on vm
|
2022-03-27 17:46:15 +02:00 |
|
Irmen de Jong
|
3b6e7eccdd
|
simplified containment check, only possible on string and arrays (as per the docs)
|
2022-03-27 16:59:55 +02:00 |
|
Irmen de Jong
|
0307f6b42c
|
working on vm
|
2022-03-25 20:22:41 +01:00 |
|
Irmen de Jong
|
3e44620966
|
add unit test for the string encoders special handling of 0x0000 and 0x8000-0x80ff
|
2022-03-25 18:26:23 +01:00 |
|
Irmen de Jong
|
7424f1f768
|
remove kernal bug workaround for joystick_get() routine. Fixes #39
|
2022-03-25 18:03:33 +01:00 |
|
Irmen de Jong
|
b5331d821c
|
fix string encoding for escaped characters
|
2022-03-25 00:17:41 +01:00 |
|
Irmen de Jong
|
27f6d47efa
|
working on vm codegen
|
2022-03-24 23:26:57 +01:00 |
|
Irmen de Jong
|
dbc7ad2ec4
|
no more Gosub node in new Ast, back to Functioncalls there.
|
2022-03-22 22:48:19 +01:00 |
|
Irmen de Jong
|
97b3a0b093
|
don't use the temp-variables introducing optimizations for the vm target
|
2022-03-22 20:21:32 +01:00 |
|
Irmen de Jong
|
06b38506d1
|
working on vm translator
|
2022-03-22 01:43:02 +01:00 |
|
Irmen de Jong
|
fd581ffc37
|
moved pattern_match() from prog8_lib to string module
|
2022-03-21 21:32:10 +01:00 |
|
Irmen de Jong
|
ff57c5e9d3
|
working on vm and new ast
|
2022-03-21 01:36:11 +01:00 |
|
Irmen de Jong
|
9b16d7c786
|
working on vm
|
2022-03-20 15:06:29 +01:00 |
|
Irmen de Jong
|
92737bb695
|
better handling of loadAddress
|
2022-03-13 16:21:02 +01:00 |
|
Irmen de Jong
|
9b81955544
|
optimizing new Ast
|
2022-03-13 11:49:07 +01:00 |
|
Irmen de Jong
|
40e9fba312
|
working on new Ast and XML export to test it
|
2022-03-12 22:38:16 +01:00 |
|
Irmen de Jong
|
e75d0c58a9
|
reducing dependencies
|
2022-03-10 23:46:43 +01:00 |
|
Irmen de Jong
|
7d20458e82
|
fixed arrayliteral regression
|
2022-03-10 01:02:40 +01:00 |
|
Irmen de Jong
|
5a54066f81
|
unravel more dependency of SymbolTable on the ASt nodes (Expression), and fix initializing zp-allocated array
|
2022-03-09 01:42:05 +01:00 |
|
Irmen de Jong
|
f7aa0c45df
|
optimize imports
|
2022-03-05 15:54:42 +01:00 |
|
Irmen de Jong
|
094ecceaac
|
fix bug where non-inlined asmsub didn't always get a proper RTS, causing program crash
was caused by a change in 7.8; 8ae3bad6f7 "fix rts in empty asmsub"
|
2022-03-03 01:10:33 +01:00 |
|
Irmen de Jong
|
2812736ae5
|
preparing version 7.9
|
2022-03-03 00:42:53 +01:00 |
|
Irmen de Jong
|
6f87f8706c
|
can only call unary functions in pipe at this time
|
2022-03-02 23:16:40 +01:00 |
|
Irmen de Jong
|
fc1c3c6808
|
working on altered pipe syntax
|
2022-03-02 20:58:38 +01:00 |
|
Irmen de Jong
|
df35dfe3bf
|
added atari XEX output format with default $2000 load address
|
2022-02-26 15:36:22 +01:00 |
|
Irmen de Jong
|
891f870ec0
|
todo
|
2022-02-23 21:58:27 +01:00 |
|
Irmen de Jong
|
1b86117754
|
todo
|
2022-02-22 23:38:09 +01:00 |
|
Irmen de Jong
|
eeb3c968d6
|
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
|
2022-02-22 22:43:14 +01:00 |
|
Irmen de Jong
|
406658a10f
|
reimplemented sys.memcopy and sys.memset on cx16 to work without kernal too
|
2022-02-22 21:07:19 +01:00 |
|
Irmen de Jong
|
6a0551cea1
|
added 'atari' compiler target beginnings (Atari 800 XL)
also default char and string encoding now taken from compiler target
|
2022-02-22 00:52:35 +01:00 |
|
Irmen de Jong
|
553f3b45d2
|
compile time calculated values of sin/cos routines fixed to be identical to the results of the run-time functions
|
2022-02-21 21:30:42 +01:00 |
|
Irmen de Jong
|
21e9723bb2
|
allow the last term in a pipe statement to be a variable, rewrites this as var = <rest of pipe>
|
2022-02-21 02:33:19 +01:00 |
|
Irmen de Jong
|
60b2c44a44
|
fix returntype handling of builtinfunctions, fix errors in pipe expressions
|
2022-02-21 01:44:29 +01:00 |
|
Irmen de Jong
|
c4fe3ecc0a
|
refactor
|
2022-02-20 22:04:18 +01:00 |
|
Irmen de Jong
|
2f18a8f6d0
|
introduced BuiltinFunctionCall (expression) node for codegen
|
2022-02-20 02:48:27 +01:00 |
|
Irmen de Jong
|
7a2164b4d0
|
introduced BuiltinFunctionCallStatement node for codegen
|
2022-02-18 23:27:11 +01:00 |
|
Irmen de Jong
|
0a43eae184
|
rework registerArgsViaStackEvaluation to use cpu hardware stack instead
|
2022-02-18 22:38:00 +01:00 |
|
Irmen de Jong
|
3117e2b2a3
|
more tweaks
|
2022-02-18 01:25:08 +01:00 |
|
Irmen de Jong
|
41fece4643
|
slight tweaks related to builtin functions in the ast
|
2022-02-17 01:25:13 +01:00 |
|
Irmen de Jong
|
7aa807ec7f
|
proper error if attempting to do a containment check against non const range, and some cleanup in asmgen
|
2022-02-16 00:39:19 +01:00 |
|
Irmen de Jong
|
2725c4ad4d
|
slight tweaks to zp and allocator
|
2022-02-12 00:15:52 +01:00 |
|
Irmen de Jong
|
c8cd6e9460
|
removed old @"screencodes" string encoding syntax (use sc:"hello" instead)
|
2022-02-11 22:07:14 +01:00 |
|
Irmen de Jong
|
0cd27d6129
|
fix empty lines in subroutine ast printing
|
2022-02-11 21:44:38 +01:00 |
|
Irmen de Jong
|
de6ef7ef5e
|
doc
|
2022-02-11 00:16:39 +01:00 |
|
Irmen de Jong
|
c13b7fd883
|
report free/occupied Zeropage space at end of compilation
|
2022-02-10 21:59:44 +01:00 |
|
Irmen de Jong
|
343f01d5e1
|
re-enabled unused variable removal from library modules (+fixed some @shared vars in libraries)
|
2022-02-10 03:10:47 +01:00 |
|
Irmen de Jong
|
08bacdd090
|
temp vars are now dynamically added to AST as needed
|
2022-02-10 02:52:47 +01:00 |
|
Irmen de Jong
|
41b1c80492
|
label name from memory() no longer interned as string var
|
2022-02-10 00:45:20 +01:00 |
|
Irmen de Jong
|
e5d7316e5d
|
streamlining non-zpvars asmgen using new mechanism
|
2022-02-10 00:09:09 +01:00 |
|
Irmen de Jong
|
98b2855b9c
|
cleanups
|
2022-02-09 16:35:52 +01:00 |
|
Irmen de Jong
|
f3c52c409f
|
variable zp allocation now only done in the allocator
|
2022-02-08 23:44:21 +01:00 |
|
Irmen de Jong
|
1307bdc612
|
more cleanups to the allocator
|
2022-02-08 22:46:49 +01:00 |
|
Irmen de Jong
|
8c2e6971fc
|
start using vars instead of callgraph (2)
|
2022-02-08 21:09:00 +01:00 |
|
Irmen de Jong
|
7d67005709
|
more rewrite variable allocation
|
2022-02-08 20:40:10 +01:00 |
|