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
4b7b1379d9
also binexpr split on and,or,xor if appropriate
2022-08-08 00:09:18 +02:00
Irmen de Jong
1e441c2ddf
tweak vm codegen
2022-08-07 13:45:03 +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
a0deb463c9
optimized codegen for some equality comparison expressions and some logical expressions
2022-07-31 15:25:54 +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
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
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
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
2d600da8b6
fix codegen crash on certain nested typecast
2022-07-13 22:24:31 +02:00
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
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
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
cc41218d37
added nicer vm example
2022-07-03 00:41:04 +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
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
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
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
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
Irmen de Jong
7c121bfc01
first steps to support multiple args in pipe expressions
2022-05-07 19:00:47 +02:00
Irmen de Jong
942c5cc04b
fix crash when optimizing pipe expression too aggressively
2022-05-07 17:29:36 +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
0fab806f36
vm: some preparations for floating point
2022-04-27 17:45:58 +02:00
Irmen de Jong
be2113d291
vm: starting to implement floating point instructions
2022-04-26 21:25:59 +02:00
Irmen de Jong
625d5b2313
vm: some preparations for floating point
2022-04-26 21:08:32 +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
0f36be0001
vm: simple optimizations for +/-/*/div with constants
2022-04-14 22:42:25 +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
51bf33040a
vm: add many builtin functions
2022-04-11 22:39:33 +02:00
Irmen de Jong
a2c7273801
vm: use memory load instruction better
2022-04-11 20:55:06 +02:00
Irmen de Jong
ec6ac5bf24
vm: added swap()
2022-04-11 01:50:47 +02:00
Irmen de Jong
ec7501782d
vm: added 1-bit variants of lsr/lsl opcodes
2022-04-11 00:25:00 +02:00
Irmen de Jong
890b1c2d52
more readable
2022-04-10 22:31:37 +02:00
Irmen de Jong
c25d07259a
add block directive options to PtBlock
2022-04-10 21:37:47 +02:00
Irmen de Jong
c960246eee
add some utility methods to PtNode to find the defining subroutine/block
2022-04-10 21:20:01 +02:00
Irmen de Jong
b6eb343234
moving string escaping out of antlr project
2022-04-10 17:31:30 +02:00
Irmen de Jong
a0face4a28
vm: implementing rol/ror
2022-04-09 11:13:49 +02:00
Irmen de Jong
a8cf9f5cc4
vm: syscalls can now return value
2022-04-05 20:46:34 +02:00
Irmen de Jong
d78bfcc35c
vm: more optimal code when array index is constant value
2022-04-05 00:19:37 +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
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
20d06d9f9d
fix return type error for asmsubs with >1 result values
2022-04-01 22:30:15 +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
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
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
0a0c58d450
added for loop over constant ranges
2022-03-30 23:42:15 +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
6d79903eb3
workin on vm issues
2022-03-28 01:49:43 +02:00
Irmen de Jong
bb1bf6a88c
working on vm
2022-03-28 00:40:15 +02:00
Irmen de Jong
30cbb6c9a8
implementing more of the vm
2022-03-27 21:59:46 +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
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
e41d6787bb
working on vm
2022-03-27 14:23:01 +02:00
Irmen de Jong
ed30108961
removed '**' power-operator. Use floats.pow() instead.
2022-03-27 13:16:34 +02:00
Irmen de Jong
12712ef812
working on vm
2022-03-27 11:48:44 +02:00
Irmen de Jong
0307f6b42c
working on vm
2022-03-25 20:22:41 +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
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
7d2bf892b1
added start of virtual machine compilation target
2022-03-19 00:57:35 +01:00
Irmen de Jong
a99e77093f
added syscall() builtin functions (only useful for experimental code gen)
2022-03-17 01:19:58 +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
4a0031080a
getting rid of directives in new Ast
2022-03-13 00:30:20 +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
e227cc92ff
new ast: regular subroutine has just 0 or 1 return type
2022-03-12 14:12:06 +01:00
Irmen de Jong
abcdd331db
started with a simulator
2022-03-10 21:23:00 +01:00
Irmen de Jong
0a04e626d7
added new intermediate (simplified) AST meant for new codegen
2022-03-10 21:21:15 +01:00
Irmen de Jong
a03c4c3659
working on symbol table
2022-03-04 22:26:46 +01:00
Irmen de Jong
38beebe720
fix pipe check for number of args
2022-03-02 21:29:09 +01:00
Irmen de Jong
fc1c3c6808
working on altered pipe syntax
2022-03-02 20:58:38 +01:00
Irmen de Jong
96ba895b84
working on altered Pipe syntax
2022-02-27 02:42:28 +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
c5504c6657
added ATASCII encoding table for atari
2022-02-25 23:48:39 +01:00
Irmen de Jong
530e109433
added altirra as atari emu2
2022-02-25 19:16:37 +01:00
Irmen de Jong
891f870ec0
todo
2022-02-23 21:58:27 +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
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
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
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
4d16e1e14a
now checks for invalid text encodings for given compilation target
2022-02-15 01:39:12 +01:00
Irmen de Jong
73fc18099e
properly report duplicate label names
2022-02-15 00:39:10 +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
c13b7fd883
report free/occupied Zeropage space at end of compilation
2022-02-10 21:59:44 +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
b043c3a6da
streamlining vars asmgen using new mechanism
2022-02-09 21:58:25 +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
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
Irmen de Jong
6bdd81623f
cleaning up AsmGen interface
2022-02-06 17:07:03 +01:00
Irmen de Jong
8ae3bad6f7
fix rts in empty asmsub
2022-02-06 05:05:58 +01:00
Irmen de Jong
77de99b383
rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen
2022-02-06 04:03:03 +01:00
Irmen de Jong
312949f336
added experimental codegen backend option
2022-02-05 21:42:03 +01:00
Irmen de Jong
30e1c3307c
simplify SourceCode: just read the full text immediately. Also optimized imports.
2022-02-05 03:50:54 +01:00
Irmen de Jong
08e052380a
comments
2022-02-05 03:14:26 +01:00
Irmen de Jong
548374ac2d
fix: do proper sign exension when multiplying signed word and byte vars
2022-02-05 01:52:13 +01:00
Irmen de Jong
69b9dfa468
fix invalid recursion warning for code referencing subroutine but not via a call
2022-02-01 23:09:52 +01:00
Irmen de Jong
5c8c64242f
callgraph: nameInAssemblyCode searches smarter (for unused())
2022-02-01 00:33:05 +01:00
Irmen de Jong
f965804e6d
fix invalid optimization of returning a parameter variable in a subroutine
2022-01-28 16:44:42 +01:00
Irmen de Jong
ec078eba72
optimize w=msb(w) => w>>=8, w=lsb(w) ==> w&=$00ff
2022-01-28 16:11:52 +01:00
Irmen de Jong
7b3cd71085
fixed improper optimization of word<<8 and word>>8
2022-01-28 13:54:06 +01:00
Irmen de Jong
06128b5d07
optimize word&=$ff00 and word&=$00ff
2022-01-28 13:40:28 +01:00
Irmen de Jong
5ecf2a3357
enable more optimizations for typecasted assignments. Fixed missing codegen for assigning bytes to words in certain cases.
2022-01-27 18:05:25 +01:00
Irmen de Jong
e2b8c069d7
check for missing '&' in string + value expressions (can't just add a value to a string)
2022-01-24 23:30:40 +01:00
Irmen de Jong
08db72903c
for long containment checks use a subroutine instead of huge cmp-table
2022-01-24 22:40:22 +01:00
Irmen de Jong
46f9fab140
library API change: string.find now returns index of character + carry bit status (instead of substring address)
2022-01-24 21:37:04 +01:00
Irmen de Jong
b7d06f2c0a
API change: added alignment parameter to memory() function
2022-01-24 18:58:57 +01:00
Irmen de Jong
586ce1fc80
tweak return's use of intermediate variable
2022-01-24 01:10:04 +01:00
Irmen de Jong
adb979df38
tweak comment
2022-01-23 22:34:05 +01:00
Irmen de Jong
3401cb5b4a
fixed compiler recursion crash when returning certain typecasted value
2022-01-23 19:13:20 +01:00
Irmen de Jong
5766208207
fix compiler crash when initializing an array var with another array var
2022-01-23 14:23:34 +01:00
Irmen de Jong
4bf4771f08
fix @requirezp in astToSource. Fix sometimes allocating zeropage variables in normal ram.
2022-01-23 13:42:52 +01:00
Irmen de Jong
0e87db9eb7
fix invalid size copied when initializing arrays in Zeropage
2022-01-23 13:00:01 +01:00
Irmen de Jong
1e053783f3
fix invalid size copied when assigning non-byte arrays
2022-01-23 02:42:36 +01:00
Irmen de Jong
7afc96112b
now correctly requires using & (address-of) when assigning the address of a label or subroutine, used to generate invalid code when it was omitted
2022-01-23 02:23:30 +01:00
Irmen de Jong
7bb41a30ed
fixed compiler crash when assigning number larger than 65535
2022-01-23 01:44:16 +01:00
Irmen de Jong
3d1b0eb843
fixed compiler crash when using cx16.r0H as function call argument
2022-01-23 01:28:16 +01:00
Irmen de Jong
9219ec539d
allow "goto pointervar" for indirect jumps
2022-01-21 22:55:59 +01:00
Irmen de Jong
c8bd57cd4d
fixed signature of mouse_get(): it returns the buttonstatus in A. Added convenience cx16.mouse_pos() routine.
2022-01-21 22:06:17 +01:00
Irmen de Jong
9ed7587e3e
document new string encoding syntax
2022-01-19 21:21:33 +01:00
Irmen de Jong
3b59592110
generalize string encoding flag into enum
2022-01-18 21:21:49 +01:00
Irmen de Jong
72640ae058
no longer add nops around breakpoint for vice
2022-01-17 22:12:58 +01:00
Irmen de Jong
d916027e75
labels no longer start with '_' fixes #62
2022-01-17 22:03:53 +01:00
Irmen de Jong
a3b5c2ad71
fix zp address output and adjust vars datastructure
2022-01-16 17:20:36 +01:00
Irmen de Jong
fb4c1473c5
array and string initialization in zeropage
2022-01-16 17:20:36 +01:00
Irmen de Jong
641477d6f6
add @requirezp and allow str/array to be on zp (with warning)
2022-01-16 17:20:32 +01:00
Irmen de Jong
8e56656c8d
fix broken code generated for certain ==/!= expressions
2022-01-16 17:10:49 +01:00
Irmen de Jong
c58b8a4973
fix ast to source: @shared wasn't printed
...
fix grammar: @shared and @zp can occur in any order now in vardecl
2022-01-13 02:29:55 +01:00
Irmen de Jong
e425c4cca8
optimizing pipe codegen
2022-01-11 23:17:35 +01:00
Irmen de Jong
3831679772
VarDecl: make its origin explicit
2022-01-10 01:53:03 +01:00
Irmen de Jong
124befe9d6
slightly optimized code for assigning boolean expressions such as `b = xx>99
`
2022-01-09 18:49:44 +01:00
Irmen de Jong
895534f32b
don't remove dead variable assignments if they are a function call
2022-01-09 18:41:01 +01:00
Irmen de Jong
50c16fe6de
code size optimization: don't copy floats with inlined copy code but use copy_float routine
2022-01-09 16:18:13 +01:00
Irmen de Jong
a9b45630d7
optimized code for variable comparisons to zero
2022-01-09 13:10:01 +01:00
Irmen de Jong
c1a39c269e
optimized code for stack eval comparisons with zero
2022-01-09 03:19:49 +01:00
Irmen de Jong
9e5e3d1559
pipe expression not evaluated via stack
2022-01-08 17:51:23 +01:00
Irmen de Jong
7135205299
fix codegen bug for pipe expressions to actually return correct value and not corrupt X register
2022-01-08 17:41:46 +01:00
Irmen de Jong
7dd7e562bc
pipes also as expressions, cleanup codegen, fix various typecasting issues
2022-01-08 13:45:19 +01:00
Irmen de Jong
75d857027e
cleanup of Pipe codegen
2022-01-08 01:33:40 +01:00
Irmen de Jong
749ad700d8
naming consistency for some expression classes
2022-01-07 21:02:55 +01:00
Irmen de Jong
8f3df3039a
added pipe operator `|>
`
2022-01-06 22:54:18 +01:00
Irmen de Jong
c57ef7725e
preparing v7.6
2022-01-04 20:40:35 +01:00
Irmen de Jong
74257163b1
fix that memory("name", ...) also allocates a STR variable for the name
2022-01-02 17:07:04 +01:00
Irmen de Jong
7bc75fd220
fix that memory("a b c", ...) produces invalid symbol
2022-01-02 16:11:53 +01:00
Irmen de Jong
a23281afab
added experimental -noreinit option
2022-01-01 16:35:36 +01:00
Irmen de Jong
d4153da8b9
setup float routine addresses for c128
2021-12-25 02:34:52 +01:00
Irmen de Jong
3e3da38de1
correctly disable charset switching
2021-12-22 21:47:41 +01:00
Irmen de Jong
cabf1e82e8
some shadow registers added to make uppercase()/lowercase() work
2021-12-22 21:20:34 +01:00
Irmen de Jong
6da83e2bd7
first steps to add C128 compiler target
2021-12-21 19:08:33 +01:00
Irmen de Jong
e051e09c1d
trim down number of warnings a bit
2021-12-17 20:21:14 +01:00
Irmen de Jong
77c2b2b326
fix position of @shared in array var declarations so that the order is now type[] @shared
2021-12-16 20:36:05 +01:00
Irmen de Jong
3cf9b9d9a5
code size optimization: subroutine calls with 2 byte arg will pass it via A/Y registers instead of separate param assignments at every call site
2021-12-16 01:48:22 +01:00
Irmen de Jong
629117e594
code size optimization: subroutine calls with 1 int arg will pass it via register instead of separate param assignment at every call site
2021-12-16 00:56:59 +01:00
Irmen de Jong
08f87c321f
fixed capitalization of operator sets to be consistent with other sets names
2021-12-15 23:43:14 +01:00
Irmen de Jong
1ff13723fe
implicit int to float conversion is now an error if floats are not enabled.
2021-12-15 01:52:28 +01:00
Irmen de Jong
510bda1b28
fix compiler crash when using floats in a comparison expression
2021-12-15 01:24:25 +01:00
Irmen de Jong
890327b381
the returnvalue of the diskio.load() function family now is just the last load address+1 (like kernal's LOAD routine).
...
This fixes the inconsistent attempt to calculate a size, just let the caller do this if required.
Added a small helper function in cx16diskio to do this for loads that span multiple banks.
2021-12-14 23:54:42 +01:00
Irmen de Jong
b21f7411dd
fix compiler crash when trying to concatenate string var and string literal.
2021-12-14 23:07:46 +01:00
Irmen de Jong
1e9d249f71
fixed output of float values in cmp instructions
2021-12-13 00:17:59 +01:00
Irmen de Jong
a7b5949e6a
fix compiler crash when using a gosub/subroutinecall in a branch statement
2021-12-11 15:11:16 +01:00
Irmen de Jong
02010170ce
fix compiler crash when attempting to call a non-function
2021-12-11 13:20:13 +01:00
Irmen de Jong
35998142fe
version 7.5
2021-12-10 20:18:17 +01:00
Irmen de Jong
33061aaa0d
fix: allow scoped variables such as cx16.rX as loop variable in forloops
2021-12-10 14:59:04 +01:00
Irmen de Jong
e342311bef
fix wrong code for inplace modification of a pointervariable's memory value
2021-12-10 14:48:53 +01:00
Irmen de Jong
3d743a1ba1
added more constfolding
2021-12-09 23:32:48 +01:00
Irmen de Jong
abca618008
added more constfolding
2021-12-09 23:12:12 +01:00
Irmen de Jong
0d2c3901a3
added more constfolding
2021-12-09 22:12:31 +01:00
Irmen de Jong
d8d56b195f
comments
2021-12-09 21:13:13 +01:00
Irmen de Jong
98315de723
allow using ubyte[] as subroutine parameter type (because it is equivalent to uword pointer var)
2021-12-07 23:28:45 +01:00
Irmen de Jong
c812b5ee09
elaborate pointervar indexing a bit more in the docs
2021-12-07 22:25:14 +01:00
Irmen de Jong
dcf487bdc1
fix: correctly insert return statement if needed to prevent 'fall through' into following subroutine
...
this wasn't working correctly anymore when the last statement before the subroutine was a jump/goto
2021-12-07 21:34:50 +01:00
Irmen de Jong
547b1d3720
comment corrections
2021-12-06 23:33:18 +01:00
Irmen de Jong
ff69da3fa2
error when 'else' choice in when statemetn isn't the last one, also generate slightly better code for when statements
2021-12-05 21:54:46 +01:00
Irmen de Jong
edffe92a24
astchecker is smarter in detecting rts in inline assembly
2021-12-05 21:28:31 +01:00
Irmen de Jong
b6fe40ada4
fix: cx16.r0 now properly treated as zeropage var on cx16 so @(cx16.r0) won't copy it to temp var anymore
2021-12-05 21:21:41 +01:00
Irmen de Jong
837804b231
test for string x and u escape sequences
2021-12-05 18:39:34 +01:00
Irmen de Jong
81deed143b
fix grammar problem: \x and \u escape sequences didn't work in character literals.
2021-12-05 18:11:40 +01:00
Irmen de Jong
20401b99d8
added cx16.getrambank() / getrombank() to retrieve the current ram and rom bank numbers.
2021-12-04 15:27:54 +01:00
Irmen de Jong
e545ea9504
fix and optimize storing A into pointervar
2021-12-04 04:43:58 +01:00
Irmen de Jong
9a68864b67
version 7.5-dev
2021-12-04 00:18:44 +01:00
Irmen de Jong
72d7178762
added diskio.load_raw() to load headerless files
2021-12-04 00:07:21 +01:00
Irmen de Jong
fbcd9a0c1d
reduce number of similar errors for type problem in assignment
2021-12-02 17:44:52 +01:00
Irmen de Jong
5b56e0462d
also deal with zero args
2021-12-01 22:26:36 +01:00
Irmen de Jong
b7fffbb6df
release 7.4.1 - oops, funcion call arg count validation was broken
2021-12-01 21:44:03 +01:00
Irmen de Jong
ea0fe8d3d2
PrefixExpression doesn't cause clobber risk
2021-11-30 02:32:37 +01:00
Irmen de Jong
9ecf95b075
fix syntaxerror in const processing of ranges if it contained variables
2021-11-29 23:36:41 +01:00
Irmen de Jong
a2db44f80c
also consider Y register for clobber check for functioncall arguments
2021-11-29 22:09:05 +01:00
Irmen de Jong
b438d8aec0
fix invalid range size check when stepval is not a positive integer
2021-11-29 02:01:19 +01:00
Irmen de Jong
32068a832a
split some additional binary expressions to avoid stack-based evaluation
2021-11-28 18:27:28 +01:00
Irmen de Jong
47c2c0376a
added some cpu stack related assembly-level optimizations
2021-11-28 17:27:01 +01:00
Irmen de Jong
f0dadc4a43
optimize 1-arg functioncalls
2021-11-28 16:55:10 +01:00
Irmen de Jong
960b60cd2d
tweak
2021-11-28 14:06:12 +01:00
Irmen de Jong
d6abd72e55
fix push() of signed values
2021-11-28 13:01:46 +01:00
Irmen de Jong
0a568f2530
fix the check of double-defined subroutine variables
2021-11-28 12:52:32 +01:00
Irmen de Jong
3d23b39f4c
moved A to the end of the param list to avoid having to store its value
2021-11-28 04:03:18 +01:00
Irmen de Jong
f3a4048ebf
improved setting Carry bit as asmsub parameter
2021-11-28 03:31:32 +01:00
Irmen de Jong
1b07637cc4
better error checking for wrong pop()
2021-11-28 02:49:18 +01:00
Irmen de Jong
68b75fd558
fix: also allow pass-by-reference arguments to builtin functions that accept UWORD (adds implicit type cast)
2021-11-28 02:34:53 +01:00
Irmen de Jong
7c5ec1853d
nice error message if pop() argument is wrong
2021-11-28 02:20:35 +01:00
Irmen de Jong
e8f4686430
undid failed attempt of using sys.push/sys.pop for stack args - now using new push(), pushw(), pop(), popw() builtin functions
2021-11-28 01:22:40 +01:00
Irmen de Jong
02348924d0
failed attempt of using sys.push/pop for stack args
2021-11-27 23:52:47 +01:00
Irmen de Jong
69dcb4dbda
fix reporting of (not) unused code after GoSub jump
2021-11-27 21:22:34 +01:00
Irmen de Jong
c838821615
refactor fuction arguments codegen a bit
2021-11-27 21:14:21 +01:00
Irmen de Jong
e8e25c6fd6
added sys.push() and sys.pop() to put values on cpu stack. Added missing builtin functions to syntax-files.
2021-11-27 18:09:15 +01:00
Irmen de Jong
62485b6851
allow assigns to asmsub parameters (registers), but this is not very useful in practice.
2021-11-27 15:41:44 +01:00
Irmen de Jong
54025d2bf5
small refactor and spelling fixes
2021-11-27 14:49:18 +01:00
Irmen de Jong
f5ebf79e71
make sure X register is also saved if needed when GoSub is used
2021-11-26 22:11:52 +01:00
Irmen de Jong
58d9c46a9b
got rid of old makeScopedName routine
2021-11-26 20:56:30 +01:00
Irmen de Jong
e4648e2138
proper rounding of builtin functions that return int from float
2021-11-26 20:32:12 +01:00
Irmen de Jong
110e047681
replace subroutine calls (statement) by GoSub
2021-11-26 19:47:01 +01:00
Irmen de Jong
ff715881bc
allow scoped identifiers to reference a subroutine parameter directly.
...
also for asmsubroutines, but the asm generation for that is not yet done.
2021-11-21 23:21:39 +01:00
Irmen de Jong
8095c4c155
added GoSub node (internal use only later for calling subroutines)
2021-11-21 16:23:48 +01:00
Irmen de Jong
8887e6af91
fix substituting 0 only if its actually the same variable that's substituted
2021-11-21 12:34:57 +01:00
Irmen de Jong
3c39baf1d6
don't optimize seemingly redundant assembly instructions away that manipulate IO memory space
2021-11-21 03:24:03 +01:00
Irmen de Jong
c0035ba1a2
char encodings now use UByte type instead of short
2021-11-21 00:07:17 +01:00
Irmen de Jong
107935ed31
add some more const folding patterns
2021-11-20 22:47:49 +01:00
Irmen de Jong
31491c62c5
add some more const folding patterns
2021-11-20 22:40:12 +01:00
Irmen de Jong
eacf8b896a
fix augmentable check to align with what the asmgen understands
2021-11-20 22:06:51 +01:00
Irmen de Jong
74db5c6be7
fix referencesIdentifier() and better removal of unnecessary assignments
2021-11-20 17:41:41 +01:00
Irmen de Jong
8f379e2262
give an error when initializing an integer var with a float value instead of silently rounding
2021-11-18 01:56:11 +01:00
Irmen de Jong
fa11a6e18b
removed faulty and too aggressive assembly optimization of double-store
2021-11-18 01:43:22 +01:00
Irmen de Jong
6af3209d4d
add more const foldings
2021-11-17 00:57:00 +01:00
Irmen de Jong
5d362047e2
add some more comparison expression optimizations to compare against 0 if possible
2021-11-17 00:04:52 +01:00
Irmen de Jong
f48d6ca9f8
simplified NumericLiteral to always just contain a Double instead of a Number for the value
2021-11-16 23:52:54 +01:00
Irmen de Jong
c80df4140b
until-loop condition now also simplified to avoid stack-eval
2021-11-14 22:51:02 +01:00
Irmen de Jong
53e1729e2f
introduce option to use internal scratch variables via prog8_lib definitions (ony for compiler, not for user code!)
2021-11-14 16:01:54 +01:00
Irmen de Jong
ab2d1122a9
conditional expressions are optimized more intelligently (simple ones are not split off in separate assignments)
2021-11-14 12:38:56 +01:00
Irmen de Jong
c858ceeb58
compiler shouldn't use cx16.r15 as temp var
2021-11-14 02:38:59 +01:00
Irmen de Jong
00c6f74481
tweak temp float
2021-11-13 12:56:59 +01:00
Irmen de Jong
75a06d2a40
preparing for more optimizations
2021-11-12 02:17:37 +01:00
Irmen de Jong
53ac11983b
better unused variable removal
2021-11-11 03:03:21 +01:00
Irmen de Jong
686483f51a
fixed division of signed byte number by 2. (!)
2021-11-10 00:17:56 +01:00
Irmen de Jong
b909facfe5
fix compiler stackoverflow crash on certain typecasted expressions containing floats.
2021-11-09 19:31:19 +01:00
Irmen de Jong
4937e004b5
fix compiler crash where it used wrong datatype in split assignment
...
fixes crash for "ubyte bb ;; uword ww ;; bb = not bb or not ww"
2021-11-09 01:13:23 +01:00
Irmen de Jong
4cb383dccb
discovered crash about storage size mismatch
2021-11-08 21:44:06 +01:00
Irmen de Jong
857724c7e6
attempt to make if-statement not use stack eval anymore
2021-11-08 19:07:36 +01:00
Irmen de Jong
b9ce94bb68
migrated codeGeneration module to KoTest
2021-11-07 15:40:05 +01:00
Irmen de Jong
f40620aa25
"not x" as a condition (if, while, until) is optimized into "x==0", this avoids calculating the value
2021-11-06 23:25:32 +01:00
Irmen de Jong
57a9fed42b
todo
2021-11-06 19:09:33 +01:00
Irmen de Jong
18d820da94
correct assignment type
2021-11-06 18:52:54 +01:00
Irmen de Jong
26e66f046f
implement some more missing codegen for inplace Prefix expressions
2021-11-06 18:48:42 +01:00
Irmen de Jong
62dc824bc0
tweaks
2021-11-06 17:14:07 +01:00
Irmen de Jong
1605791f1b
float swap() no longer uses evaluation stack but a single temp var instead + FAC1
2021-11-06 03:36:14 +01:00
Irmen de Jong
37a46aa2cf
complex memory assignment also tries to avoid estack evaluation (but not done yet)
2021-11-06 00:03:19 +01:00
Irmen de Jong
1d2d217b94
non-optimized typecast assignments now attempt to not use evalstack
2021-11-05 23:25:07 +01:00
Irmen de Jong
730b208617
relaxed some type checks on certain word register assignment
...
preparing to optimize asmsub arg passing for complex expressions
2021-11-04 23:57:25 +01:00
Irmen de Jong
b4fa72c058
fix parent node linkage for reading array parameter
2021-11-03 21:57:31 +01:00
Irmen de Jong
b0a865b0f1
update todo
2021-11-02 23:55:50 +01:00
Irmen de Jong
7e287a5359
proper parent node linkage in generated const values out of typecast expressions. Fixes crash mentioned in #72
2021-11-02 00:47:01 +01:00
Irmen de Jong
1110bd0851
fix vardecl initialization value to not use stack eval anymore but separate assignment
...
(this causes the optimized assignment code gen to be used instead)
but some programs now end up larger in output size
2021-11-01 00:24:15 +01:00
Irmen de Jong
1b576f826d
remove unneeded sibling methods
2021-10-31 16:50:15 +01:00
Irmen de Jong
fe17566370
improved reporting of slow stack based evaluation code
2021-10-31 14:18:49 +01:00
Irmen de Jong
e3c00669c1
fixed improved asm generation for conditions that compare signed word to zero
2021-10-31 02:39:45 +02:00
Irmen de Jong
33d17afc32
improved asm generation for conditions that compare byte/word to zero
2021-10-31 01:58:16 +02:00
Irmen de Jong
2388359a99
improved asm generation for conditions that compare ubyte/uword to zero
2021-10-31 01:39:37 +02:00
Irmen de Jong
2df0c9503c
improved asm generation for conditions that compare floats to zero
2021-10-31 01:28:08 +02:00
Irmen de Jong
61fa3bc77c
comparisonjump tweak
2021-10-31 00:57:22 +02:00
Irmen de Jong
9ccc65bf8f
more petscii tests
2021-10-30 15:15:11 +02:00
Irmen de Jong
495a18805c
move asmgen test to codeGeneration module
2021-10-29 16:20:53 +02:00
Irmen de Jong
ce75b776bb
refactor loadAsmIncludeFile response
2021-10-29 01:01:24 +02:00
Irmen de Jong
7d22b9b9f9
simplified name conflict check for sub params
2021-10-29 00:20:33 +02:00
Irmen de Jong
08d2f8568b
refactoring symbol lookups
2021-10-27 23:48:12 +02:00
Irmen de Jong
ac5f45d2d4
fix nested label lookups in anon scopes (partly)
2021-10-27 02:41:24 +02:00
Irmen de Jong
743c8b44a2
AnonymousScope refactor: it's no longer a INameScope
...
because it doesn't contain scoped variables (these are moved to the subroutine's scope)
2021-10-26 23:01:51 +02:00
Irmen de Jong
5e1459564a
no longer take AddressOf a str-variable that is a subroutine's parameter with str type (it's just an address/uword already)
2021-10-25 23:49:01 +02:00
Irmen de Jong
69a8813a3d
first steps to add support for str parameter type
2021-10-24 20:57:10 +02:00
Irmen de Jong
6b32535cb6
don't complain about uninitialized str var if it's not a var
2021-10-24 15:13:38 +02:00
Irmen de Jong
35e88dd529
(7.2) correctly parse datatype of array parameters
2021-10-21 22:06:21 +02:00
Irmen de Jong
df2d5c6585
tests for callgraph and unused subroutine removal in optimizer
2021-10-20 22:24:10 +02:00
Irmen de Jong
761aac7a23
replace inferredType.istype() by infix form
2021-10-15 00:28:23 +02:00
Irmen de Jong
855e18b31c
fix SourceCode to properly set the sourceName of a resource or string as well
2021-10-13 21:46:38 +02:00
Irmen de Jong
6070afa6b6
cleanup SourceCode class
2021-10-13 19:16:01 +02:00
Irmen de Jong
6b8c3ef614
renamed command line option -libdirs to -srcdirs
...
this more clearly separates this meaning from the internal library modules
2021-10-13 18:16:51 +02:00
Irmen de Jong
557f4f689f
doc
2021-10-13 00:50:54 +02:00
Irmen de Jong
f891fc698c
switched to more featureful Result library
2021-10-12 21:35:27 +02:00
Irmen de Jong
2c2d474059
fix crash when attempting to import non-existing module
2021-10-11 20:37:55 +02:00
Irmen de Jong
9898791771
clean test.p8
2021-10-09 16:32:44 +02:00
Irmen de Jong
e8f308f654
a few more inlinings of trivial return values
2021-10-09 01:36:13 +02:00
Irmen de Jong
07132a2c42
removed unreliable inlining of non-asmsub subroutines. Fixes #60
2021-10-08 23:09:38 +02:00
Irmen de Jong
0204002d9b
bugfix: non-existing asm function was sometimes called to swap floats
2021-10-08 04:14:43 +02:00
Irmen de Jong
fd1f30f92b
removed %target directive (didn't add much, too confusing, only supported single target)
2021-09-04 15:01:16 +02:00
Irmen de Jong
9bd3a6758a
improve testability: use error returnvalues instead of using exitProcess()
2021-07-02 00:11:21 +02:00
Irmen de Jong
fd2bbd2b59
no longer allow subroutine name same as its block name due to asm symbol scoping issues
2021-06-12 17:31:09 +02:00
Irmen de Jong
127c470746
add some explanation about Cx16 v38 - v39 issue
2021-06-12 15:48:04 +02:00
Irmen de Jong
19e99204b9
fix asm symbol name scoping bug and add unit tests for this
2021-06-04 22:42:28 +02:00
Irmen de Jong
3a2498401d
working on unit tests for symbol scope bug
2021-06-03 21:21:38 +02:00
Irmen de Jong
e7f6f0950f
identified asm symbol name scoping bugs
2021-06-01 22:21:50 +02:00
Irmen de Jong
d4b69ac79c
improved repeat counter vars allocation (re-use var if possible)
2021-05-30 15:30:34 +02:00
Irmen de Jong
e61a2d7083
slightly optimized repeat loop asmgen
2021-05-30 13:10:05 +02:00
Irmen de Jong
c03f6604af
added free words counting method to zeropage
2021-05-30 00:55:11 +02:00
Irmen de Jong
572bb38ddb
update to kotlin 1.5.10
2021-05-29 15:25:17 +02:00
Irmen de Jong
0e614ad6fc
added @shared flag to vardecl to mark variable as shared with assembly code elsewhere, to not have it optimized away
2021-05-19 01:19:25 +02:00
Irmen de Jong
ca61248861
printing 2-letter strings is now only optimized into direct CHROUT if it's a const string literal
2021-05-16 15:00:40 +02:00
Irmen de Jong
0416aacbbd
fix %asminclude by removing scopelabel argument and improving docs to remove false promise about labels
2021-05-16 00:14:57 +02:00
Irmen de Jong
25d80f4df1
added compiler option to choose string literal deduplication yes/no -- default changed to NO
2021-05-13 00:35:22 +02:00
Irmen de Jong
74f918d911
fix crashes for string encoding errors: give normal compiler error instead
2021-05-11 21:33:11 +02:00
Irmen de Jong
a20efa56eb
print unmappable character in escaped form in errormessage
2021-05-11 18:09:09 +02:00
Irmen de Jong
dae59238cd
fix array type checking crash when attempting to use str literal to initialize a byte array.
...
Fixes #34
2021-05-07 00:04:29 +02:00
Irmen de Jong
8736da1a21
strings of 1 and 2 length no longer optimized into one call to CHROUT - also upgrade to kotlin 1.5.0
2021-05-06 23:46:18 +02:00
Irmen de Jong
1a59019fc8
add generic error in diskio.status() if drive status can't be read
2021-05-01 15:39:39 +02:00
Irmen de Jong
0a5b30e21c
added fast code for x*640
2021-04-30 22:30:21 +02:00
Irmen de Jong
664818fd29
try fixing a weird problem with pointervar[idx] -> memread rewriting
...
this was introduced in the removal of structs somehow
2021-04-30 01:34:03 +02:00
Irmen de Jong
71fec4c555
added a few more simple special codegen segements for the logic operators on a memmory-read
2021-04-29 19:38:42 +02:00
Irmen de Jong
4aba0c7405
unused variables are removed more aggressively (no longer checking asm blocks for their names)
2021-04-29 00:48:16 +02:00
Irmen de Jong
a9a7068818
removed support for structs. It was too much hassle and complexity and subtle bugs.
2021-04-29 00:01:20 +02:00
Irmen de Jong
81a91d62cb
improved horizontal_line in highres 4c
2021-04-28 02:55:49 +02:00
Irmen de Jong
2575263438
optimized gfx2.plot() for hires-4c
2021-04-28 02:49:25 +02:00
Irmen de Jong
7f0e25cb50
optimized gfx2.plot() for hires-monochrome
2021-04-28 02:32:11 +02:00
Irmen de Jong
a1e4e9c50f
optimized gfx2.plot() for lores-256c
2021-04-28 02:22:21 +02:00
Irmen de Jong
8b84f87217
removed fastrnd8() because it was hilariously bad, just use rnd()
2021-04-28 01:53:12 +02:00
Irmen de Jong
306a1b7bc2
optimized gfx2.vertical_line for hires monochrome mode
2021-04-28 01:19:10 +02:00
Irmen de Jong
481214c46e
optimized gfx2.vertical_line for lores monochrome mode
2021-04-28 01:02:29 +02:00
Irmen de Jong
a5961cbeab
optimized gfx2.vertical_line for highres 4c mode
2021-04-28 00:29:21 +02:00
Irmen de Jong
68f696d165
added 'callrom' builtin function (for cx16 target) that calls a routine in banked ROM
2021-04-25 18:04:56 +02:00
Irmen de Jong
1170aed026
added 'callfar' builtin function (for cx16 target) that uses jsrfar to call a routine in banked RAM
2021-04-25 17:47:13 +02:00
Irmen de Jong
bf1b2066b6
fix crashes in peekw() and pokew()
2021-04-22 18:26:46 +02:00
Irmen de Jong
4c080afb76
added compiler check against impossible for loop range (unsigned downto exactly 0 with non-const startvalue and step != -1)
2021-04-21 23:03:29 +02:00
Irmen de Jong
ee1c43ca91
improved scanning for return statement in routines that should return a value.
2021-04-21 20:31:29 +02:00
Irmen de Jong
1c2e6f9e4c
lower() and upper() now also return the lenght of the processed string.
2021-04-21 20:21:58 +02:00
Irmen de Jong
dd379430d9
added docs on flexible string character mapping to petscii
2021-04-20 01:22:49 +02:00
Irmen de Jong
42033ebd35
added petscii mappings for ^, _, \, {, } and |
2021-04-19 02:18:55 +02:00
Irmen de Jong
a086d6e009
allow labels also in blocks instead of only in subroutines
2021-04-18 23:03:18 +02:00
Irmen de Jong
c70bbdab26
fixed missing type checking in vardecl initializer values. Fixes #29
...
Also fix wrong assert of 0 const check in assembly gen for if-statement comparisons.
2021-04-18 22:46:21 +02:00
Irmen de Jong
3d956ef554
fix wrong values for register used in array indexing expressions
...
added the L/H byte parts of the cx16 virtual registers
2021-04-18 13:53:02 +02:00
Irmen de Jong
329f491c30
fix compiler crash with scoped const vardecls
2021-04-18 01:56:26 +02:00
Irmen de Jong
e93701f50e
fix compiler error when initializing var with memory(...) in block scope instead of subroutine
2021-04-17 15:49:41 +02:00
Irmen de Jong
e680de05ea
workaround for the joystick_get() irq problem
2021-04-15 22:56:52 +02:00
Irmen de Jong
56fec674c5
actually not simplifying if-code generation, leads to larger code at the moment
2021-04-13 00:03:22 +02:00
Irmen de Jong
54d92a027a
fix problems with moving vardecls from inner scope to subroutine scope
2021-04-12 22:53:25 +02:00
Irmen de Jong
0a03c46351
preparing optimization plan for if statements
2021-04-12 02:37:15 +02:00
Irmen de Jong
ae1b62e147
optimized integer comparison expressions some more
2021-04-12 01:23:17 +02:00
Irmen de Jong
8d567f6b06
added cx16.joystick_get2() for convenience api
2021-04-12 01:07:46 +02:00
Irmen de Jong
b1ef09675b
fix compiler crash for some struct/array initialization assignment literals containing not just numbers
2021-04-10 00:28:32 +02:00
Irmen de Jong
2b7b925090
codegen now uses correct machine target's string encoder/decoder. Encoding more robust by checking upper case mapping if lowercase mapping fails.
2021-04-09 23:33:32 +02:00
Irmen de Jong
e0454e95db
warn about for-loop wrapped iteration if loop range is inverted from normal
2021-04-08 22:54:47 +02:00