Commit Graph

370 Commits

Author SHA1 Message Date
Irmen de Jong
3ff3f5e1cc compiler errors in standard format so that you can click on them in IDE to jump to the line 2020-09-20 22:24:35 +02:00
Irmen de Jong
dfa1d5e398 removed the ".w" word suffix (it confused the parser). 2020-09-19 23:27:40 +02:00
Irmen de Jong
bf4da1655b doc 2020-09-18 23:57:40 +02:00
Irmen de Jong
e6d945f835 doc 2020-09-18 23:35:02 +02:00
Irmen de Jong
4fe408f1fd doc 2020-09-18 23:34:32 +02:00
Irmen de Jong
9b66a597bb array literal const check added 2020-09-18 21:30:59 +02:00
Irmen de Jong
2a6d9d7e31 more optimal codegen for some typecasts 2020-09-15 03:26:57 +02:00
Irmen de Jong
32a7cd31da more optimal codegen for if statements 2020-09-15 00:31:44 +02:00
Irmen de Jong
aff6b1fca5 added some more optimized mul_word asm routines 2020-09-14 23:03:18 +02:00
Irmen de Jong
49a0584c54 added a %target directive 2020-09-09 22:53:34 +02:00
Irmen de Jong
90c4a26d52 we don't implement asmsub params via @stack yet 2020-09-07 01:24:10 +02:00
Irmen de Jong
1377bed988 fix assembly for cx16 when zp is not basicsafe 2020-09-06 17:58:05 +02:00
Irmen de Jong
0f9ce319d4 readme 2020-08-30 18:36:02 +02:00
Irmen de Jong
0b55372b3b cleanup cx16 things and added call signatures. c64graphics moved into built-in libraries. 2020-08-28 21:42:53 +02:00
Irmen de Jong
3ad7fb010f clearer about emulator 2020-08-27 21:09:59 +02:00
Irmen de Jong
3f64d1bb5a oops. 2020-08-27 21:04:08 +02:00
Irmen de Jong
4ffb194847 readme and version 2020-08-27 18:18:29 +02:00
Irmen de Jong
f08fc18ab5 renamed c64scr. to txt. 2020-08-27 18:10:22 +02:00
Irmen de Jong
4a4f8ff5db subroutine parameters can be allocated on the zp now as well 2020-08-25 16:47:21 +02:00
Irmen de Jong
60a9209a14 plasma 2020-08-25 01:48:23 +02:00
Irmen de Jong
bd9ebf4603 flipped the order of the parameters of mkword() so it's now mkword(msb, lsb) for easier readability 2020-08-22 21:13:38 +02:00
Irmen de Jong
679965410a todo 2020-08-22 17:13:23 +02:00
Irmen de Jong
20cdcc673b identifiers can no longer start with an underscore. (this interfered with 64tass syntax) 2020-08-22 17:03:40 +02:00
Irmen de Jong
bfc8a26381 implemented bit shifting for non-const amounts 2020-08-22 16:13:52 +02:00
Irmen de Jong
edfd9d55ba added sizeof() function 2020-08-20 13:50:28 +02:00
Irmen de Jong
77c1376d6d proper error message for arrays that are declared too big 2020-08-18 14:47:52 +02:00
Irmen de Jong
c0887b5f08 removed 'continue' statement to be able to generate more optimized loop assembly code. started with for loop optimizations 2020-08-17 19:22:29 +02:00
Irmen de Jong
fbe3ce008b slight expression rewrite in case of certain in-place assignments, to try to get the in-place variable operand to the leftmost position 2020-07-30 01:30:21 +02:00
Irmen de Jong
cd651aa416 use repeat 2020-07-26 13:50:14 +02:00
Irmen de Jong
c38508c262 introduced repeat loop. repeat-until changed to do-util.
forever loop is gone (use repeat without iteration count).
struct literal is now same as array literal [...] to avoid parsing ambiguity with scope blocks.
2020-07-25 16:56:34 +02:00
Irmen de Jong
0c461ffe2e removed Register expression (directly accessing cpu register) 2020-07-25 14:14:24 +02:00
Irmen de Jong
71e678b382 fixed possible register subroutine arg clobbering 2020-07-04 17:05:36 +02:00
Irmen de Jong
3050156325 reverted subroutine inlining, it was a mistake 2020-07-04 01:02:36 +02:00
Irmen de Jong
d89f5b0df8 todo about fixing argclobbering 2020-07-03 23:49:17 +02:00
Irmen de Jong
76cda82e23 v2.2 2020-06-16 01:43:44 +02:00
Irmen de Jong
ceb2c9e4f8 added string value assignment, leftstr, rightstr, substr functions 2020-06-06 00:05:39 +02:00
Irmen de Jong
6408cc46a8 cmdrx16 github ref 2020-05-15 00:32:45 +02:00
Irmen de Jong
f5e6db9d66 big compiler speedup due to optimized scope lookups 2020-05-14 23:59:02 +02:00
Irmen de Jong
5ebd9b54e4 added some more optimized array assignments 2020-04-10 23:30:19 +02:00
Irmen de Jong
cc4e272526 the new assignment code (once complete) really is a big enough change to bump the version to 2.0 2020-04-09 00:24:37 +02:00
Irmen de Jong
d22780ee44 implemented asm for lsl array values 2020-04-03 21:45:52 +02:00
Irmen de Jong
267adb4612 doc 2020-03-29 03:06:51 +02:00
Irmen de Jong
bed34378be doc 2020-03-28 14:24:00 +01:00
Irmen de Jong
4108a528e1 proepr compiler error when there's no main module 2020-03-26 23:22:01 +01:00
Irmen de Jong
5f3a9e189a doc 2020-03-26 01:20:04 +01:00
Irmen de Jong
2f05ebb966 bitmap lines and circles 2020-03-25 01:07:42 +01:00
Irmen de Jong
a335ba519a fix warnings about unreachable code 2020-03-24 22:37:42 +01:00
Irmen de Jong
f2bb238e9b cleaned up various ast checks/mutations 2020-03-24 19:37:54 +01:00
Irmen de Jong
6dd44aaf0d compiler main cleanup 2020-03-23 02:54:04 +01:00
Irmen de Jong
f89457ba68 fixed var initialization bug in anonymous scopes 2020-03-23 02:09:30 +01:00
Irmen de Jong
efef205fcf doc 2020-03-23 01:24:54 +01:00
Irmen de Jong
0c561d8528 fixed subroutine parameter value issue 2020-03-23 00:13:46 +01:00
Irmen de Jong
3a99115070 Initial variable values semantics changed: now always sets value at program (re)start (except strings/arrays).
This may change later by introducing a compiler option to choose a strategy, perhaps.
2020-03-22 15:12:26 +01:00
Irmen de Jong
63c073c93f got rid of the Simulator / AST VM 2020-03-22 02:50:34 +01:00
Irmen de Jong
4929c198ba tweak error reporting, expanded lines and circles example 2020-03-22 00:43:46 +01:00
Irmen de Jong
21dbc6da97 doc 2020-03-21 12:51:32 +01:00
Irmen de Jong
f265199fbe replaced typecastsAdder with version based on astwalker 2020-03-20 22:28:18 +01:00
Irmen de Jong
a326ffa00a added warning about sgn() of unsigned type 2020-03-14 21:09:34 +01:00
Irmen de Jong
1de328b2e8 added forever-loop and optimizer 2020-03-14 18:11:04 +01:00
Irmen de Jong
4fd14f1366 doc updates 2020-03-14 15:20:04 +01:00
Irmen de Jong
64d682bfde todo 2020-03-13 02:33:02 +01:00
Irmen de Jong
b182f7e693 optimizer removes unreachable code following call to exit() 2020-03-13 02:31:53 +01:00
Irmen de Jong
e6be428589 compiler warning for unreachable code following a call to exit() 2020-03-13 02:21:37 +01:00
Irmen de Jong
85c7f8314b added exit(rc) builtin function to immediately exit the program with a return code in A register 2020-03-13 02:08:18 +01:00
Irmen de Jong
796d07a7f8 fix crash in asm code generated for bitshift operation with memory address operand 2020-03-13 01:26:53 +01:00
Irmen de Jong
2af86a10b2 remove stack error comments 2020-03-13 00:52:52 +01:00
Irmen de Jong
7fbe486dff fix eval stack register X error in print_uw 2020-03-13 00:50:30 +01:00
Irmen de Jong
fbecedaf41 added error for unsupported sort(floatarray) 2020-03-11 23:33:06 +01:00
Irmen de Jong
8d1a4588d3 added 'downto' range expression 2020-03-11 20:59:14 +01:00
Irmen de Jong
66d2af4453 added '@' alternative string/char encoding 2020-03-11 00:41:58 +01:00
Irmen de Jong
ef6c731bb3 added '@' alternative string/char encoding 2020-03-11 00:32:50 +01:00
Irmen de Jong
98a638a2f3 split asmsub and romsub declarations 2020-03-10 23:09:31 +01:00
Irmen de Jong
e2cb031386 added 'void' keyword to explicitly ignore subroutine return values (and no longer get a warning) 2020-02-09 01:29:09 +01:00
Irmen de Jong
a0bc97b90c fix byte array iteration for bb in [1,2,3]
improved array literal datatype detection
2020-02-09 00:45:53 +01:00
Irmen de Jong
885b22df40 fixed while and repeat warning messages line number
fixed invalid while and repeat asm label names
fixed boolean checking of numbers
2020-02-08 19:45:30 +01:00
Irmen de Jong
b8816a0e2f got rid of separate str_s datatype 2020-02-07 20:47:38 +01:00
Irmen de Jong
772e48105e fixed some type cast compiler errors in for loops 2019-08-26 23:38:59 +02:00
Irmen de Jong
89d469e77e examples 2019-08-25 00:46:46 +02:00
Irmen de Jong
aa94300bdd added output directory command line option
improved cli parser by using kotlinx.cli
2019-08-23 00:11:08 +02:00
Irmen de Jong
b79af624ae added more asmgen for bitshift operations 2019-08-22 00:34:17 +02:00
Irmen de Jong
0f1485f30b added sorted, sgn, reverse to the AstVm 2019-08-18 16:39:08 +02:00
Irmen de Jong
eb94c678bd doc 2019-08-18 14:18:46 +02:00
Irmen de Jong
50d792a121 fix doc about for loops 2019-08-18 14:14:14 +02:00
Irmen de Jong
bb7b063757 revert inline var declaration in for loops 2019-08-18 03:16:23 +02:00
Irmen de Jong
1cc1f2d91d reverse() added (byte+word) 2019-08-18 02:05:51 +02:00
Irmen de Jong
27f987f0ae fixed bit shifts, added sgn() function 2019-08-17 16:44:28 +02:00
Irmen de Jong
3ae2597261 irq driven music player example 2019-08-17 13:13:15 +02:00
Irmen de Jong
68df1730f5 cleaned up some stuff, improved checking of asmsub statement body 2019-08-14 23:17:50 +02:00
Irmen de Jong
d62ab93b24 word >> 8 optimized to msb(word) 2019-08-14 22:28:44 +02:00
Irmen de Jong
b5c5560af8 info 2019-08-11 18:21:15 +02:00
Irmen de Jong
b44e76db57 fix any/all assembly routine, added asm for min/max/sum/ etc aggregates
removed avg function because of hidden internal overflow issues
2019-08-11 16:13:09 +02:00
Irmen de Jong
fe5b225732 asmsub stack arg 2019-08-11 12:29:18 +02:00
Irmen de Jong
d499e40a4b doc tweaks 2019-08-11 10:56:36 +02:00
Irmen de Jong
7ddc01f883 added continuous compilation mode (file watching) 2019-08-05 23:36:24 +02:00
Irmen de Jong
2c3b8a9819 more ++ and -- code, 'dontuse' zeropage option 2019-08-04 22:35:27 +02:00
Irmen de Jong
a1cd202cd2 some more array asm 2019-08-04 15:33:00 +02:00
Irmen de Jong
b842493cf0 trying to fix arithmetic and funcion calls and var scoping issues 2019-08-03 13:21:38 +02:00
Irmen de Jong
4718f09cb7 trying to fix arithmetic and funcion calls 2019-08-03 01:51:12 +02:00
Irmen de Jong
fba149ee28 removed the ~ before block names 2019-07-29 23:11:13 +02:00
Irmen de Jong
411bedcc46 fixed assignment type error with structs
added structs example
2019-07-16 23:56:00 +02:00
Irmen de Jong
07d8caf884 string literal concatenation and repeating added again 2019-07-16 23:34:43 +02:00
Irmen de Jong
17be722e2b arrays without init value are once again cleared with zeros 2019-07-15 23:05:04 +02:00
Irmen de Jong
78d7849197 fixes 2019-07-15 03:08:26 +02:00
Irmen de Jong
1f5420010d prevent struct member vars from shuffling around, can take address of struct now 2019-07-13 01:16:34 +02:00
Irmen de Jong
a089c48378 finalize v 1.11 2019-07-12 20:31:18 +02:00
Irmen de Jong
3e5deda46c struct finished 2019-07-12 20:07:41 +02:00
Irmen de Jong
7500c6efd0 struct fixes 2019-07-12 17:57:56 +02:00
Irmen de Jong
7c9b8f7d43 cleaned up some buildprocess scripts 2019-07-11 17:27:57 +02:00
Irmen de Jong
44fe2369d6 multitarget assignments removed 2019-07-10 10:11:37 +02:00
Irmen de Jong
a85743f241 docs about 'when' statement 2019-07-10 00:45:53 +02:00
Irmen de Jong
14cabde5cf when statement extended with multiple choice values 2019-07-10 00:25:21 +02:00
Irmen de Jong
e8caf6d319 1.9 2019-07-09 08:42:38 +02:00
Irmen de Jong
5b9cc9592f removed kotlin.reflection dependency
optimized gradle build now using shadowjar
2019-07-09 08:27:47 +02:00
Irmen de Jong
f4f113da7b parser for 'when' statement 2019-07-09 00:02:38 +02:00
Irmen de Jong
dbe048158c cleaned up the ast processing:
- visitor pattern names are now used for the interfaces and the methods
- separated a modifying and a read-only ast visitor
There is now also an AstPrinter that produces original source code back from an AST
2019-07-08 21:51:16 +02:00
Irmen de Jong
fd0abf61df fix build script docs 2019-07-02 04:56:31 +02:00
Irmen de Jong
343978d164 for loop and cleaner iteration over values 2019-06-25 21:49:02 +02:00
Irmen de Jong
c559682c0b refresh IDE project files 2019-05-30 16:03:53 +02:00
Irmen de Jong
ef6e364339 intellij idea config 2019-04-20 01:18:47 +02:00
Irmen de Jong
3b37e0f99d new build scripts 2019-04-20 00:50:15 +02:00
Irmen de Jong
78fbbf7119 %asmbinary implemented 2019-04-17 01:33:07 +02:00
Irmen de Jong
0ee43294c4 check for file with %asmbinary, %asminclude 2019-04-17 00:55:42 +02:00
Irmen de Jong
390043e9e8 some fixes in syntaxchecking array initializer values 2019-04-16 01:50:12 +02:00
Irmen de Jong
e384822b2c array size in vardecl is optional when initializer array value is given 2019-04-16 01:19:51 +02:00
Irmen de Jong
f219ae43f7 more inspiring code example 2019-04-12 22:34:43 +02:00
Irmen de Jong
a9bbe0bc40 removed the memory keyword instead use & now (reuse the address-of operator to reduce the number of different concepts in the grammar) 2019-04-12 22:00:32 +02:00
Irmen de Jong
35aa954be8 doc 2019-04-12 01:06:46 +02:00
Irmen de Jong
9f302cc640 docs about '&' operator 2019-04-11 21:41:46 +02:00
Irmen de Jong
905d8a0c06 actually, get rid of integer pow() because a naive multiplication loop approach is way too slow 2019-03-31 18:04:19 +02:00
Irmen de Jong
83ace753b2 got rid of problematic signed POW operator, added compiler checks for this 2019-03-31 13:56:03 +02:00
Irmen de Jong
ec2e7db23e doc fix 2019-03-30 00:40:09 +01:00
Irmen de Jong
f6bc69139d added some example images to the index page of the docs 2019-03-19 21:39:01 +01:00
Irmen de Jong
747c9604dd improve ast check for multiple returnvalues assignment 2019-03-18 04:01:25 +01:00
Irmen de Jong
0820716e7b added sqrt16() integer square root 2019-03-16 19:25:47 +01:00
Irmen de Jong
d9d83248fe implemented strlen() function 2019-03-15 23:10:26 +01:00
Irmen de Jong
747ee32e81 updated tehtriz screenshot 2019-03-10 20:22:33 +01:00
Irmen de Jong
f5ba072294 removed str_p and str_ps pascal string types, fixes #10 2019-03-10 18:11:26 +01:00
Irmen de Jong
87d6312a37 tetriz screen 2019-03-10 05:38:14 +01:00
Irmen de Jong
aa98104d54 doc 2019-03-07 02:46:24 +01:00
Irmen de Jong
06f0984fa1 docs about irq handlers 2019-03-07 01:02:11 +01:00
Irmen de Jong
77dc35dc6a added read_flags() function, uword2bcd routine no longer enables irq again if it wasn't enabled before calling it. 2019-03-05 23:10:00 +01:00
Irmen de Jong
5ea2f2d4db docs about @zp tag 2019-02-28 00:13:59 +01:00
Irmen de Jong
2f1249489b datatype cleanups 2019-02-25 01:22:56 +01:00
Irmen de Jong
3b32fb74f7 suggest non-Oracle jdk 2019-02-03 22:23:17 +01:00
Irmen de Jong
7ff1af3934 avoid zp corruption issues and added zp mode for floating point (todo: allocate) 2019-02-03 00:26:07 +01:00
Irmen de Jong
ae21e03e1d attempt at optimization to register parameter passing 2019-02-01 22:51:30 +01:00
Irmen de Jong
f83b9732ee User defined blocks are sorted first, before library blocks. This prioritizes zero page allocation to user code (and makes reading the program easier) 2019-02-01 01:22:27 +01:00
Irmen de Jong
73b0cc4056 docs 2019-01-31 23:46:58 +01:00
Irmen de Jong
53045b9e36 idea 2019-01-29 23:48:26 +01:00
Irmen de Jong
d35d28ac5a docs about gradle and building the compiler, fix shell build script 2019-01-29 23:32:43 +01:00