Commit Graph

1611 Commits

Author SHA1 Message Date
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
d8d56b195f comments 2021-12-09 21:13:13 +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
547b1d3720 comment corrections 2021-12-06 23:33:18 +01:00
Irmen de Jong
84f75f4156 tweaked some more .getOrElse 2021-12-06 21:22:00 +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
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
ce3c34e458 tweak in error output for file links, corrected column number off-by-one 2021-12-04 16:52:03 +01:00
Irmen de Jong
397f98513b optimize loading A from pointervar 2021-12-04 05:36:48 +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
1f346230e3 release 7.4 2021-11-30 22:50:12 +01:00
Irmen de Jong
a2860a7c8c todo 2021-11-30 22:45:43 +01:00
Irmen de Jong
ea0fe8d3d2 PrefixExpression doesn't cause clobber risk 2021-11-30 02:32:37 +01:00
Irmen de Jong
2560042ac7 fix compiler crashes on in-place operations on cx16 registers or invalid signed types 2021-11-30 02:27:37 +01:00
Irmen de Jong
83f893f50b doc 2021-11-30 00:54:03 +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
7748c261da rsave/rrestore moved from sys to builtin function to solve the stack related problem when calling it as a regular subroutine 2021-11-29 23:13:04 +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
4ac169b210 formatting 2021-11-29 01:25:21 +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
0a568f2530 fix the check of double-defined subroutine variables 2021-11-28 12:52:32 +01:00
Irmen de Jong
c52aa648c0 use an AnonymousScope to contain GoSub changes instead of adding separate statements 2021-11-28 12:09:13 +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
64a411628d doc fixes 2021-11-27 19:58:08 +01:00
Irmen de Jong
54025d2bf5 small refactor and spelling fixes 2021-11-27 14:49:18 +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
17d403d812 Merge branch 'ref-subroutine-param' into v7.4-dev
# Conflicts:
#	compilerAst/src/prog8/ast/AstToplevel.kt
2021-11-26 01:12:14 +01:00
Irmen de Jong
e52d05c7db fix some scoping related symbol lookup issues, clarified scoping rules in docs 2021-11-23 23:43:23 +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
e86246a985 todo 2021-11-21 14:00:19 +01:00
Irmen de Jong
625aaa02eb documented the compiler's command line options in more detail 2021-11-21 13:53:22 +01:00
Irmen de Jong
787e35c9f3 asm optimizer can now also see of a symbol reference if it is in IO space or not (to a certain extent), so that these instructions are no longer optimized away 2021-11-21 13:12:51 +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
b292124f3c replaced many short/int values by unsigned types if appropriate 2021-11-21 00:55:56 +01:00
Irmen de Jong
107935ed31 add some more const folding patterns 2021-11-20 22:47:49 +01:00
Irmen de Jong
adfaddbcf4 give a nicer error when given a wrong compilation target. 2021-11-20 18:30:55 +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
f9399bcce7 r=(q+r)-c and r=q+(r-c) are now both also 'augmentable', and BinExprSplitter doesn't check for associativeOperator anymore 2021-11-20 02:03:32 +01:00
Irmen de Jong
b334d89715 refactor and fix the way memory addresses are checked to be in IO space or regular ram 2021-11-18 22:47:58 +01:00
Irmen de Jong
4f5d36a84d optimization added: bitwise operations with a negative constant number -> replace the number by its positive 2 complement 2021-11-18 02:51:42 +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
52bedce8f4 added test for assignment.isAugmented 2021-11-18 01:05:16 +01:00
Irmen de Jong
4c82af36e6 fix improperly changed behavior about =0 initializer 2021-11-18 00:17:22 +01:00
Irmen de Jong
dafa0d9138 fix compiler crash bug due to reused ast expression nodes. Now all (relevant) Nodes have a copy() function to make a clone. 2021-11-17 23:05:59 +01:00
Irmen de Jong
6af3209d4d add more const foldings 2021-11-17 00:57:00 +01:00
Irmen de Jong
964e8e0a17 update to Kotlin 1.6.0 2021-11-16 22:36:23 +01:00
Irmen de Jong
1f60a2d8b9 comments 2021-11-15 01:30:12 +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
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
5190594c8a added several more assembly-level optimizations to remove redundant instructions 2021-11-14 12:23:46 +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
f0f52b9166 optimize typecasted binary expression to avoid even more estack use. also fix wrong parent crash in removal of unused variable's assignments. 2021-11-13 14:22:37 +01:00
Irmen de Jong
00c6f74481 tweak temp float 2021-11-13 12:56:59 +01:00
Irmen de Jong
2177ba0ed2 added signed versions of the cx16 virtual registers 2021-11-13 02:42:21 +01:00
Irmen de Jong
69f4a4d4f8 tweak expr.typecastTo() a bit 2021-11-11 00:15:09 +01:00
Irmen de Jong
222bcb808f optimize load-store-load combo in output asm 2021-11-10 23:47:35 +01:00
Irmen de Jong
8df3da11e3 add cosr8, sinr8, cosr16 and sinr16 builtin functions that take a degree 0..179 (= 0..358 in 2 degree steps)
to more easily scale halves/quarters etc of a circle than possible with the ones that take 0..255 'degrees'.
2021-11-09 23:39:26 +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
7780d94de1 discovered crash related to float typecasting in asm assignment codegen 2021-11-09 03:45:07 +01:00
Irmen de Jong
f2c440e466 new sin/cos idea 2021-11-09 02:38:43 +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
60627ce756 kotest migration done, fixes #70 2021-11-08 16:19:24 +01:00
Irmen de Jong
7e8db16e18 moved to kotest assertions in compilerAst module tests 2021-11-07 21:18:18 +01:00
Irmen de Jong
1fbbed7e23 remove unittest machinery from modules that don't have tests 2021-11-07 17:34:14 +01:00
Irmen de Jong
984272beb4 migrated compilerAst module to KoTest (but not finished with the assertions yet) 2021-11-07 17:25:53 +01:00
Irmen de Jong
793596614e attempt to fix ReadTheDocs build issue 2021-11-07 00:37:31 +01:00
Irmen de Jong
136280100c attempt to fix ReadTheDocs build issue 2021-11-07 00:23:44 +01:00
Irmen de Jong
72a7e61fd0 version 7.2 2021-11-06 23:42:13 +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
74456d1135 optimized prefix-expression in to use stack evaluation less 2021-11-06 17:57:00 +01:00
Irmen de Jong
be73739c62 todo 2021-11-03 23:08:11 +01:00
Irmen de Jong
eea3fb48a8 add command line option 'optfloatx' to explicitly re-enable float expr optimization as this can increase code size significantly.
The output size of the various example programs using floating point, when not using this optimization, has been reduced significantly.
The resulting code runs a (tiny) bit slower though.
2021-11-03 22:52:08 +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
3410aea788 fix regression: don't add 0 initializer when variable is assigned to anyway (or is loopvar in a for-loop) 2021-11-02 21:23:59 +01:00
Irmen de Jong
bc0a133bb1 doc 2021-11-02 20:24:45 +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
97836e18b2 simplified gradle config, automatically run installDist task after build 2021-10-30 12:01:52 +02:00
Irmen de Jong
7b69df4db2 todos 2021-10-30 00:38:48 +02:00
Irmen de Jong
4d5bd0fa32 simplify ZeroPage reserved locations handling a bit 2021-10-29 17:34:42 +02:00
Irmen de Jong
0b5ddcdc9b split out the code generator into own project submodule 2021-10-29 05:00:30 +02:00
Irmen de Jong
f21dcaa6fb split out the code optimizers into own project submodule 2021-10-29 02:42:10 +02:00
Irmen de Jong
d4513364fb fix compiler crash when file on command line doesn't exist 2021-10-27 00:23:54 +02:00
Irmen de Jong
f4186981fd todo 2021-10-26 23:30:48 +02:00
Irmen de Jong
4668932bac todo 2021-10-19 23:38:07 +02:00
Irmen de Jong
502bf90007 comments 2021-10-19 01:12:28 +02:00
Irmen de Jong
cf0e395921 got rid of SourceCode.pathString() and the 'need' to strip < and > 2021-10-16 17:15:22 +02:00
Irmen de Jong
6ef438ce50 todo 2021-10-16 15:08:36 +02:00
Irmen de Jong
06defd0cb0 paths are now always relative 2021-10-16 02:43:22 +02:00
Irmen de Jong
0f80897c50 todo 2021-10-15 01:02:32 +02:00
Irmen de Jong
57bb1c2c0d performance optimized checks against short ranges of values 2021-10-15 00:51:45 +02:00
Irmen de Jong
7b35b414e8 tweak check of DataType against multiple values 2021-10-15 00:39:42 +02:00
Irmen de Jong
761aac7a23 replace inferredType.istype() by infix form 2021-10-15 00:28:23 +02:00
Irmen de Jong
15a02d7664 making InferredType easier to use 2021-10-15 00:18:13 +02:00
Irmen de Jong
16ed68c1ec Module.name is now derived back from the source's origin string 2021-10-14 23:58:14 +02:00
Irmen de Jong
4d27c2901b fix weird error printing when doing %import textio.p8 2021-10-13 21:55:51 +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
d790878af6 enabled test 2021-10-13 20:28:42 +02:00
Irmen de Jong
6070afa6b6 cleanup SourceCode class 2021-10-13 19:16:01 +02:00
Irmen de Jong
975594703d doc 2021-10-13 18:21:48 +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
ca3a990f9e todo 2021-10-13 01:33:29 +02:00
Irmen de Jong
66574d058a renamed InferredType.typeOrElse to getOr()
this is closer to the convention of most functional return types
2021-10-13 00:21:38 +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
af99173cd7 range expressions are on integers only 2021-09-06 22:15:27 +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
85897ef8cd launch box16 emulator with the vice monlist file that contains symbols+breakpoints 2021-07-06 22:27:47 +02:00
Irmen de Jong
6367c6d116 add support for second alternative emulator (box16 in case of cx16 target) 2021-07-05 22:47:51 +02:00
Irmen de Jong
049dbf5a78 improve compiler error when defining duplicate block names 2021-07-04 15:14:39 +02:00
Irmen de Jong
95a62fcdd1 tidy up todo doc 2021-07-02 21:47:27 +02:00
Irmen de Jong
7880ac1909 wording and version 2021-06-24 21:34:11 +02:00
Irmen de Jong
f53848b4b9 wording and version 2021-06-24 21:25:35 +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
c5bfef4264 slight improvement on scope doc, added doc example for %asminclude/%asmbinary 2021-06-09 23:46:07 +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
13f5b94c3e Clarified instructions of how to obtain the compiler. Fixed sphinx css config issue. 2021-06-03 21:21:44 +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
31ae9e1243 refactor repeat loop counter var creation into single routine 2021-05-22 13:01:51 +02:00
Irmen de Jong
29e2d4e0c8 give error when passing invalid command line option 2021-05-20 23:34:20 +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
ca1a8cd617 improve doc about string (im)mutability 2021-05-19 00:15:17 +02:00
Irmen de Jong
ba96a637be remove strdedup compiler argument again
(string deduplication is the default again but only for known-const strings, i.e. string literals)
2021-05-18 23:52:43 +02:00
Irmen de Jong
6b7216f4ec todo 2021-05-17 19:00:20 +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
68d7b4649e label and directive location docs 2021-05-16 12:32:08 +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
ae5d7705bb allow correct parsing of source files that don't end in a EOL character. Fixes #40 2021-05-14 17:14:44 +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
meisl
ee23ac0537 * docs: fix typo 2021-05-07 15:28:22 +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
meisl
63d67bc6cb + docs: add missing word 2021-05-06 15:49:58 +02:00
Irmen de Jong
d906fcea0e refactor some type checks 2021-04-30 00:09:15 +02:00
Irmen de Jong
29c8e8b740 doc 2021-04-29 19:57:14 +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
5ee36c897d todo 2021-04-29 00:57:32 +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
8d3d5f726a removed Datatype.STRUCT 2021-04-29 00:13:17 +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
17068130bb removed PROG8_LIBDIR env variables and replaced with -libdirs command line option 2021-04-28 20:04:23 +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
3bf335e0a0 todo 2021-04-27 23:13:46 +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
dd379430d9 added docs on flexible string character mapping to petscii 2021-04-20 01:22:49 +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
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
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
319ac3a641 preparing optimizations for if statements 2021-04-12 03:34:58 +02:00
Irmen de Jong
0a03c46351 preparing optimization plan for if statements 2021-04-12 02:37:15 +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
Irmen de Jong
91e421d961 optimize x % p where p=power-of-2, into just x & (p-1) 2021-04-08 22:21:16 +02:00
Irmen de Jong
1a64cb38d5 fix compiler crash with assigning certain array values as vardecl initializer 2021-04-08 19:21:17 +02:00
Irmen de Jong
e5ff61f201 allow inlining of subroutines with parameters, and fix inlining of subroutines with variables 2021-04-07 23:38:25 +02:00
Irmen de Jong
123473dfc8 cleanup 2021-04-06 00:16:29 +02:00
Irmen de Jong
d9eccd4fba set correct rom banks when using floats 2021-04-05 23:21:07 +02:00
Irmen de Jong
64c85b9617 fix cx16 rom v39 float changes 2021-04-05 22:54:40 +02:00
Irmen de Jong
3e3b0bcd8b callgraph improved unused node checking 2021-04-05 20:45:18 +02:00
Irmen de Jong
75d5117a2d fix struct flattening parent node mismatch 2021-04-05 00:30:42 +02:00
Irmen de Jong
374e2b311d refactoring unused code removal and noModification 2021-04-04 16:36:33 +02:00
Irmen de Jong
49036abbaf docs 2021-04-04 12:55:29 +02:00
Irmen de Jong
6b4896b8f5 doc 2021-04-02 21:28:23 +02:00
Irmen de Jong
d582d1cc42 fix inlining subroutines multiple times 2021-04-02 21:23:40 +02:00
Irmen de Jong
6fdc733941 inlining subroutines that contain variable declarations is now possible (gives a warning though) 2021-04-02 18:30:32 +02:00
Irmen de Jong
422b390c48 fix ast node duplication/reference bug in certain optimizers 2021-04-02 16:56:52 +02:00
Irmen de Jong
67a9d1285c some words about how the X register can't or can be used 2021-04-02 00:19:46 +02:00
Irmen de Jong
8e26e38ecc fix RTS-issue with inlined return statement 2021-04-01 23:30:19 +02:00
Irmen de Jong
02e12d8575 improvements for inlined subroutines: fix identifier scoping 2021-04-01 23:16:04 +02:00
Irmen de Jong
fe2954ce08 todo 2021-04-01 22:10:04 +02:00
Irmen de Jong
3f30d3aa89 added sys.waitrastborder() for c64 2021-04-01 18:53:16 +02:00
Irmen de Jong
129e17b33a added sys.waitvsync() + missing documentation 2021-04-01 18:31:33 +02:00
Irmen de Jong
0991131fa8 don't stript unused asmsub definitions 2021-03-21 19:55:21 +01:00
Irmen de Jong
ca868ae19e added cx16.vload() (like the VLOAD basic instruction) 2021-03-20 02:39:53 +01:00
Irmen de Jong
3e286dd14c move test 2021-03-18 19:34:54 +01:00
Irmen de Jong
11247d52b1 fix bugs in word <= and >= comparisons 2021-03-18 19:20:48 +01:00
Irmen de Jong
b30b8b7368 fix bug in float < and > comparisons 2021-03-18 01:41:54 +01:00
Irmen de Jong
7f21d89fea moved test programs to test folder in compiler module 2021-03-17 20:15:16 +01:00
Irmen de Jong
6381d2b6ac improve word '<', word (u)word '<=' , uword '>=' codegen 2021-03-16 18:15:47 +01:00
Irmen de Jong
496a3b0d2c todo 2021-03-15 18:56:25 +01:00
Irmen de Jong
6922333755 add a cmp(x,y) function that returns no value but only sets the status bits based off the comparison (can be used with a conditional jump afterwards) 2021-03-13 15:11:22 +01:00
Irmen de Jong
1c1da8e38e additional optimization to the bresenham line routines 2021-03-10 18:49:40 +01:00
Irmen de Jong
50a306f492 line drawing fixes 2021-03-09 22:11:30 +01:00
Irmen de Jong
60e169bd87 added optimized integer square (x*x) routine 2021-03-08 23:08:47 +01:00
Irmen de Jong
e4bca5fe47 version 2021-03-06 23:07:30 +01:00
Irmen de Jong
2950d26c8e array and struct value assignments now via memcopy instead of assignment per element 2021-03-06 22:10:03 +01:00
Irmen de Jong
4f8d4a9585 use memcopy to assign arrays 2021-03-06 19:01:16 +01:00
Irmen de Jong
2770254fd9 removed inline assembly from bobs demo 2021-03-06 14:31:26 +01:00
Irmen de Jong
de04bd8cfa added more convenient number-to-string functions to conv library 2021-03-06 13:47:27 +01:00
Irmen de Jong
076a547f91 added more convenient number-to-string functions to conv library 2021-03-06 13:34:57 +01:00
Irmen de Jong
dffd0a2706 added fastrnd8() with the old rnd() generator code in it, new code for rnd() uses the much better rndw() generator now. 2021-03-05 22:49:14 +01:00
Irmen de Jong
6c66f86103 todo 2021-03-05 21:07:35 +01:00
Irmen de Jong
26502c949a add unlimited bobs example 2021-03-05 19:05:13 +01:00
Irmen de Jong
9fe32c1c34 codegen uses 'bra' on 65c02 instead of 'jmp' 2021-02-28 16:46:08 +01:00
Irmen de Jong
7e3e18a5c7 deal with 'bra' better on 65c02 2021-02-28 16:20:03 +01:00
Irmen de Jong
8e3ebc84f0 readme 2021-02-28 15:40:04 +01:00
Irmen de Jong
2b435fe6a5 vtui example updated to vtui 0.6 2021-02-27 03:30:21 +01:00
Irmen de Jong
8b1e1e68fa switch to Kotlin's new JVM IR compilation 2021-02-26 01:10:00 +01:00
Irmen de Jong
cd500fee8c wording 2021-02-25 00:52:27 +01:00
Irmen de Jong
1bd32c0f19 added animal guessing game example 2021-02-24 22:58:16 +01:00
Irmen de Jong
d14dac3872 got rid of final traces of heapid, fixed compiler warnings 2021-02-24 00:01:04 +01:00
Irmen de Jong
6e65cb2c0a added sounds to cx16 tehtriz 2021-02-23 01:29:45 +01:00
Irmen de Jong
334f86480a added irq routines for cx16 2021-02-22 00:48:41 +01:00
Irmen de Jong
edf9a500d3 kernel -> kernal 2021-02-21 22:48:06 +01:00
Irmen de Jong
001d01fdaf slight tweak to 64tass .cpu to enable wdc65c02 variant on cx16 with its extra opcodes 2021-02-21 22:45:23 +01:00
Irmen de Jong
a95677564e changed system irq/rasterirq setting routines 2021-02-21 22:23:50 +01:00
Irmen de Jong
5540482888 compiler error for duplicate when choice labels 2021-02-21 21:26:15 +01:00
Irmen de Jong
b5289511ba don't remove empty when choice from the list of choices! 2021-02-21 15:11:19 +01:00
Irmen de Jong
b6ded8501f added 'align_word' and 'align_page' block options to control block start address alignment in the assembler 2021-02-21 01:24:44 +01:00
Irmen de Jong
781915d2cf reducing dependencies 2021-02-20 17:54:33 +01:00
Irmen de Jong
d23c2eed86 test 2021-02-20 16:58:24 +01:00
Irmen de Jong
15695a304e start address of blocks without explicit memory address, is now word-aligned in memory 2021-02-20 03:06:00 +01:00
Irmen de Jong
0ed3d951a7 don't require carry parameter Pc to asmsubs to be last 2021-02-20 02:27:57 +01:00
Irmen de Jong
b543cc34cd no longer warn about removing unused asmsubs 2021-02-18 01:52:56 +01:00
Irmen de Jong
791dbbab9b fixed block label itself not getting the correct memory address in the assembly
fixed %asmbinary relative path issues
2021-02-18 01:28:33 +01:00
Irmen de Jong
2f97aedc3c fixed invalid removal of string tag from memory() 2021-02-16 23:58:31 +01:00
Irmen de Jong
ab544ee965 improved string constant interning; no longer output duplicate strings in the Ast 2021-02-16 23:43:38 +01:00
Irmen de Jong
92ee0aefee docs: replaced old invalid c64scr names with txt 2021-02-16 23:28:35 +01:00
Irmen de Jong
194fbcdd91 todos 2021-02-15 04:41:33 +01:00
Irmen de Jong
1e3930aae2 fix bug in evaluating logical expressions if one of the operands was not boolean 1 or 0 2021-02-14 18:29:05 +01:00
Irmen de Jong
53f0318187 version 6.1 2021-02-14 00:07:45 +01:00
Irmen de Jong
02cb237623 added poke() and pokew() builtin functions 2021-02-13 23:16:50 +01:00
Irmen de Jong
cc0f19653e added peek() and peekw() builtin functions 2021-02-13 22:38:39 +01:00
Irmen de Jong
f6136891cc optimized for loop over const bytes, fixed downto 1 2021-02-13 13:46:02 +01:00
Irmen de Jong
1e22170302 added graphical starmaps to textelite 2021-02-11 00:23:36 +01:00
Irmen de Jong
321fdd10d1 ported tehtriz to Cx16 2021-02-10 21:55:14 +01:00
Irmen de Jong
7c09ac632c got rid of the --longOptionNames in the cli argparser 2021-02-10 21:26:46 +01:00
Irmen de Jong
bcd0db984d reducing ast dependencies - moved ErrorReporter back to compiler module 2021-02-09 01:15:31 +01:00
Irmen de Jong
1070dedd7c todo 2021-02-07 19:08:47 +01:00
Irmen de Jong
d7a6b20028 todo 2021-02-07 01:14:10 +01:00
Irmen de Jong
cefef3d1be todo 2021-02-06 15:22:31 +01:00
Irmen de Jong
cc96ab7a9b assignment source now also treats cx16.r[0-15] as registers
no longer create useless assignment code for r0=r0
2021-02-06 13:01:45 +01:00
Irmen de Jong
49ea31c0a4 fix shift signed word right 2021-02-06 01:23:31 +01:00
Irmen de Jong
2395863e7e asmsubs: fix clobbering and optimize register usage for loading the arguments 2021-01-29 01:52:49 +01:00
Irmen de Jong
dd2c436dc6 tweaked repeat 2021-01-25 23:39:54 +01:00
Irmen de Jong
9f047ba752 palette.set_monochrome() now has 2 arguments: screen and draw color RGB values 2021-01-24 04:15:15 +01:00
Irmen de Jong
cdc6d9aa65 moved cx16 imageviewer into its own git repo. Version 6.0. 2021-01-23 23:49:17 +01:00
Irmen de Jong
997bc21feb added offsetof() to get the byte offset of struct members. 2021-01-23 23:11:57 +01:00
Irmen de Jong
bf69219f98 allow uwordpointer[index] syntax as equivalent to @(uwordpointer+index) index can be >255 here! 2021-01-23 22:39:30 +01:00
Irmen de Jong
f34f9329f1 fixed bug in memcopy 2021-01-23 19:49:53 +01:00
Irmen de Jong
90271d0dcd textelite was okay 2021-01-23 19:01:02 +01:00
Irmen de Jong
f9fd426843 Merge branch 'pointer-index-optimize'
# Conflicts:
#	docs/source/todo.rst
2021-01-23 15:57:23 +01:00
Irmen de Jong
6f0103398b fix Y register clobbering in pointer access code 2021-01-23 15:24:41 +01:00
Irmen de Jong
afb60db382 todo 2021-01-20 18:43:08 +01:00
Irmen de Jong
5731b876ff textelite save bug found 2021-01-20 01:36:46 +01:00
Irmen de Jong
055f917a2e fixed missing code for certain memread expressions when casted to uword 2021-01-20 01:30:11 +01:00
Irmen de Jong
4ed7fb771c started pointer access optimization 2021-01-20 00:17:33 +01:00
Irmen de Jong
40cc216557 optimize pointer var access if var is already on zeropage 2021-01-16 18:31:37 +01:00
Irmen de Jong
1481f92cb0 optimize memory read expression of ptr + constant index 2021-01-16 17:41:15 +01:00
Irmen de Jong
3dcef89a74 optimize (zp),y instructions for 65c02 to use (zp) 2021-01-15 19:14:35 +01:00
Irmen de Jong
b128b79132 clearer description of memory() 2021-01-13 22:32:17 +01:00
Irmen de Jong
b9ddde0f12 assem 2021-01-12 03:45:18 +01:00
Irmen de Jong
72b4198301 added string.lower() / string.upper() 2021-01-10 15:29:43 +01:00
Irmen de Jong
b4d1d545a8 introduced txt.nl() 2021-01-08 16:56:17 +01:00
Irmen de Jong
f61682cdc7 moved various miscellaneous builtin functions such as exit() and progend() to sys.* 2021-01-08 16:44:34 +01:00
Irmen de Jong
d61420f1c6 oops 2021-01-08 01:31:28 +01:00
Irmen de Jong
3d09d605e1 moved memcopy, memset, memsetw builtin functions to sys.* 2021-01-08 01:09:37 +01:00
Irmen de Jong
025dde264a move target() builtin to sys.target constant 2021-01-07 23:36:28 +01:00
Irmen de Jong
58f37513e7 removed all string related builtin functions and moved them to separate routines in new 'string' library module 2021-01-07 20:01:11 +01:00
Irmen de Jong
bec2224c3d clearer naming 2021-01-07 01:25:50 +01:00
Irmen de Jong
76101d7f8d assem 2021-01-05 22:56:52 +01:00
Irmen de Jong
6fa7debee5 todo 2021-01-05 02:17:51 +01:00
Irmen de Jong
e6a1442296 sys.wait() no longer resets the jiffyclock to zero 2021-01-03 02:45:25 +01:00
Irmen de Jong
cb65480c6c moved wait() and reset_system() to sys block so they are now unified across c64 and cx16 2021-01-03 02:36:45 +01:00
Irmen de Jong
f0930d8a18 added c64.RDTIM16() utility routine to just get the lower 16 bits of the jiffy clock 2021-01-02 20:59:48 +01:00
Irmen de Jong
baf9dfb46c assem 2021-01-02 20:33:07 +01:00
Irmen de Jong
edd3a22848 added strfind() 2021-01-02 17:49:58 +01:00
Irmen de Jong
89230ade7a change in pattern arguments of diskio.list_files() and lf_start_list(): you can now use a simple pattern with ? and * wildcards 2020-12-30 23:34:00 +01:00
Irmen de Jong
b4931c9a1f optimize horzontal_line drawing 2020-12-30 18:58:47 +01:00
Irmen de Jong
6777d952c1 fixed crash when loopvar in for loop wasn't defined 2020-12-28 00:30:08 +01:00
Irmen de Jong
9e2c52e1ec added Cx16 highresbitmap example. added stippled drawing to gfx2 monochrome mode 2020-12-27 23:57:13 +01:00
Irmen de Jong
dd82e550d5 adding rect and fillrect to gfx2 2020-12-27 17:34:25 +01:00
Irmen de Jong
b40e1eabb9 added memory() function for memory slab allocations 2020-12-27 02:28:30 +01:00
Irmen de Jong
3b8e18004c fixed callgraph issue that allocated ALL variables in a (library) module even though some clearly weren't used at all. Variables declared in block level scope in a library are still all allocated / defined due to the nature of a library module with lists of definitions 2020-12-27 01:02:36 +01:00
Irmen de Jong
4c03950c28 changed 'c64colors' module to 'palette' and added more general Cx16 palette manipulation routines in there. 2020-12-27 00:35:25 +01:00
Irmen de Jong
170a0183f8 added 'inline' keyword to force inlining of trivial subroutines 2020-12-26 05:34:14 +01:00
Irmen de Jong
8f224afed9 added color cycling support to iff viewer 2020-12-23 23:23:16 +01:00
Irmen de Jong
b3b3cf3807 todo 2020-12-23 02:53:30 +01:00
Irmen de Jong
f0f6150e18 fix problem with reuse of auto-indexer-variables that could result in wrong code for routines using multiple array indexings 2020-12-23 02:30:46 +01:00
Irmen de Jong
d65cfbf093 fixed math.mul_word_40 that was actually doing *80... 2020-12-23 00:54:11 +01:00
Irmen de Jong
85abf4d123 update docs 2020-12-22 16:44:05 +01:00
Irmen de Jong
44b8291540 update docs 2020-12-22 13:29:16 +01:00
Irmen de Jong
5a2f8fdfe1 asm-subroutines that ONLY return a value in the Carry or Overflow status register can now be used in an assignment to store that value. 2020-12-22 12:44:03 +01:00
Irmen de Jong
bba4f84503 added target() function 2020-12-22 06:13:14 +01:00
Irmen de Jong
928611eb20 Got rid of problematic attempts to save status register after function calls. If you really need it (for instance for if_XX instructions) it's probably better to use a short asmsub wrapper.
For function calls, register saves go via stack (to allow nested saves) for simpler cases, registers are saved in a local variable.
Fixed too agressive removal of sta-lda sequence if the lda is followed by a branching instruction.
Insert missing cmp #0 after functioncall if the value of the A register is needed in a comparison expression (could otherwise test wrong status flag)
2020-12-22 03:35:00 +01:00
Irmen de Jong
d22df22f7d fix examples for cx16 register syntax 2020-12-21 23:45:26 +01:00
Irmen de Jong
787f52d1f8 doc 2020-12-21 18:28:10 +01:00
Irmen de Jong
50213f146a undefined symbol errors are no longer reported one at a time but all at once 2020-12-21 13:03:56 +01:00
Irmen de Jong
7f2aea60c9 addition 2020-12-19 03:36:52 +01:00
Irmen de Jong
168621f7c2 addition 2020-12-19 03:27:08 +01:00
Irmen de Jong
8b630798d8 documented the subroutine calling convention 2020-12-19 03:18:40 +01:00
Irmen de Jong
e0315bffdc decided not to change mkword() again, added note to docs about argument order 2020-12-15 22:25:06 +01:00
Irmen de Jong
4977d1fbd5 bit shift expressions are "expanded" to the target value's datatype, now also for subroutine arguments.
implemented word bit shifts by variable number of bits.
2020-12-14 20:44:48 +01:00
Irmen de Jong
3b7a92f1b4 adding strcopy() 2020-12-14 17:26:17 +01:00
Irmen de Jong
41e1e1cbb0 adding pcxviewer 2020-12-12 02:40:54 +01:00
Irmen de Jong
34babfb5de added diskio.list_files(). ci-viewer now loads all *.ci files it finds. 2020-12-11 22:36:14 +01:00
Irmen de Jong
8dcd49934a added progend() builtin function 2020-12-10 23:33:45 +01:00
Irmen de Jong
83ceb0fde9 optimize various simple cases for '**' (pow) like 2**x => bitshift 2020-12-10 22:37:12 +01:00
Irmen de Jong
4094f89d4a not a bug 2020-12-10 03:22:43 +01:00
Irmen de Jong
74e5644f55 working on CI viewer 2020-12-10 03:00:37 +01:00
Irmen de Jong
2265ae9600 optimized setting word values into array if index is fixed number 2020-12-08 22:54:20 +01:00
Irmen de Jong
ecbd9d739e completed diskio file lister 2020-12-08 01:34:08 +01:00
Irmen de Jong
a92ec14989 use 'stz' more often on 65c02 cpu (cx16) 2020-12-06 08:30:13 +01:00
Irmen de Jong
bec5a261e5 optimizing koalaviewer 2020-12-06 07:47:54 +01:00
Irmen de Jong
44019d1a61 strings and arrays are no longer directly assignable to an UWORD, you need an explicit & (address-of) now 2020-12-03 18:39:32 +01:00
Irmen de Jong
6f74fb49bd added c64colors module. added vpeek/vpoke to cx16 syslib. koalaviewer example now uses better c64 color palette. 2020-12-03 18:14:49 +01:00
Irmen de Jong
f7953e4ef3 fix float comparison error that creeped in with no longer using the stack for that 2020-12-01 22:19:03 +01:00
Irmen de Jong
63483d1f0e warnings, errors and todos 2020-12-01 03:24:06 +01:00
Irmen de Jong
57ac820767 readme 2020-11-30 22:42:51 +01:00
Irmen de Jong
05d3a2450c optimized reg_less_w (word < word) 2020-11-30 01:53:44 +01:00
Irmen de Jong
6d8c4f403f updated Kotlin version to 1.4.20, updated targeted JDK version to 11 (LTS) 2020-11-23 22:28:24 +01:00
Irmen de Jong
88b80fed90 returning float values now via fac1 instead of stack 2020-11-23 22:14:45 +01:00
Irmen de Jong
acdbd0c391 todos for next version 2020-11-22 19:18:57 +01:00
Irmen de Jong
510ca042c9 stack tested for most example programs 2020-11-22 18:35:43 +01:00
Irmen de Jong
125f6205f2 optimizing assigning an array value to a var 2020-11-22 17:44:55 +01:00
Irmen de Jong
8efe4c6267 Fixed compiler watch to work with multiple compilation modules 2020-11-22 13:11:33 +01:00
Irmen de Jong
d1febc0208 all in-place byte assignments now without translateExpression() 2020-11-22 01:38:53 +01:00
Irmen de Jong
340b1c2e42 added balls demo/benchmark 2020-11-21 18:03:57 +01:00
Irmen de Jong
7e0f7ba438 todos 2020-11-20 23:46:14 +01:00
Irmen de Jong
2f1f20ea11 rename 2020-11-19 00:28:49 +01:00
Irmen de Jong
d212f69d89 ++/-- and @Pc without translateExpression() 2020-11-17 23:40:42 +01:00
Irmen de Jong
edf5e69d39 optimized swap() 2020-11-15 18:04:54 +01:00
Irmen de Jong
5c9e0c9f51 emit extra nop for breakpoints so vice label list works again (requires 64tass 1.55.2257 or newer!) 2020-11-15 14:31:06 +01:00
Irmen de Jong
d29ce78c86 todos and version 2020-11-10 22:44:48 +01:00
Irmen de Jong
cd99fe46fd finished call convention change for builtin functions now no longer via stack 2020-11-10 00:43:45 +01:00
Irmen de Jong
aaa20093ef cleaning up and correcting cc for builtin functions 2020-11-06 00:56:26 +01:00
Irmen de Jong
e0c5ccc16b begun with converting builtin functions to new call convention 2020-11-02 23:00:20 +01:00
Irmen de Jong
8af2380a47 pair 2020-11-01 18:00:20 +01:00
Irmen de Jong
431f2a2088 optimized memset and memcopy on CX16, memcopy can deal with any size now 2020-11-01 08:00:32 +01:00
Irmen de Jong
47cbc7b1f9 added a custom-charset example for the c64 2020-10-31 02:26:59 +01:00
Irmen de Jong
8a6ef17fbf option 2020-10-30 21:51:15 +01:00
Irmen de Jong
87862f772a better handling of inferred type errors 2020-10-30 21:24:49 +01:00
Irmen de Jong
3ab641aa21 removed @stack in subroutine args and returnvalues, can only use variables or registers now 2020-10-30 15:02:42 +01:00
Irmen de Jong
3efa8da8e0 made versions of various builtin funcs returning value in registers 2020-10-30 14:35:20 +01:00
Irmen de Jong
44949460ed change for subroutine return values via registers instead of stack 2020-10-28 00:29:34 +01:00
Irmen de Jong
ff3f985658 refactoring 2020-10-22 23:41:16 +02:00
Irmen de Jong
74b5124a42 removed restriction on array indexer expression again from docs and code... :) 2020-10-18 14:05:26 +02:00
Irmen de Jong
fdd91170dc allow simple binary expressions as array indexing too, but not more 2020-10-17 22:43:35 +02:00
Irmen de Jong
353d6cfc55 doc about array index restriction 2020-10-17 20:35:36 +02:00
Irmen de Jong
7626c9fff7 only allow array indexing via a number, or a variable (eliminate complex expression calcs for array indexing, force explicit use of an index variable) 2020-10-17 19:57:55 +02:00
Irmen de Jong
2554bc7ef8 ordered the functions in the docs 2020-10-17 02:14:19 +02:00
Irmen de Jong
4d01a78731 introduced strcmp() builtin function 2020-10-16 19:00:06 +02:00
Irmen de Jong
9fb8526136 added conv.bin and hex string to number 2020-10-15 23:47:10 +02:00
Irmen de Jong
5060f0bb19 fixed assigning a memory byte from an array 2020-10-15 22:15:00 +02:00
Irmen de Jong
beaf6d449b added short overview of the library modules 2020-10-15 21:30:03 +02:00
Irmen de Jong
5595564a1f todo strcmp 2020-10-14 01:22:43 +02:00
Irmen de Jong
e5ee5be9c5 textelite 2020-10-10 04:42:17 +02:00
Irmen de Jong
bd237b2b95 it's now possible in more places to assign arrays and put array literals without the need to define explicit variable. 2020-10-10 04:30:28 +02:00
Irmen de Jong
d31cf766eb added missing doc picture 2020-10-10 02:51:02 +02:00
Irmen de Jong
1c8e4dba73 added \' escape character 2020-10-10 01:28:57 +02:00
Irmen de Jong
4be381c597 fixed compiler optimizer crash because of conflicting expression replacements 2020-10-09 21:51:54 +02:00
Irmen de Jong
71fd98e39e allow asmsub routines with multiple return values to be called (special case for return values in status register) 2020-10-07 00:33:42 +02:00
Irmen de Jong
71cd8b6d51 cx16 cross-compile teaser screenshot 2020-10-05 19:59:51 +02:00
Irmen de Jong
956b0c3fa7 added \xHH escape character to strings, allow strings of length zero. 2020-10-04 13:05:43 +02:00
Irmen de Jong
a6427e0949 added \$HH escape character to strings 2020-10-03 15:11:09 +02:00
Irmen de Jong
e83e021541 doc 2020-10-02 23:31:49 +02:00
Irmen de Jong
46fbe01df9 added codengeration for assigment of array of values to a struct variable (all members at once) 2020-10-02 22:37:52 +02:00
Irmen de Jong
4372de1e7e allow creating arrays of pointers to other arrays. Usefullness is very limited though... 2020-09-29 00:03:47 +02:00
Irmen de Jong
af0fb88adf allow creating string arrays. Fixed array index scaling for word arrays. 2020-09-28 02:23:36 +02:00
Irmen de Jong
066233eee8 todos 2020-09-27 22:05:44 +02:00
Irmen de Jong
d7ceda4d82 removed the automatic system reset at program exit, this did't work with the new init code 2020-09-25 22:12:14 +02:00
Irmen de Jong
f5db31b8ff do..until condition can now refer to variables defined in the loop's inner scope. 2020-09-24 19:26:07 +02:00
Irmen de Jong
e1d0dbed0c do..until condition can now refer to variables defined in the loop's inner scope. 2020-09-23 23:24:32 +02:00
Irmen de Jong
1d1fe364d0 added %option no_sysinit to avoid having the system re-initialization code executed at the start of the program 2020-09-23 23:01:47 +02:00
Irmen de Jong
2b9316c4ff reworked program init logic so that it is included as the first thing inside main.start itself, to allow better stand alone asm 2020-09-23 22:29:21 +02:00
Irmen de Jong
c50cbbb526 typo 2020-09-23 18:50:32 +02:00
Irmen de Jong
4daf75a8cc better checks for invalid %output and %launcher values. Added diskdir examples. 2020-09-23 00:22:36 +02:00
Irmen de Jong
6f78a32e64 diskdir 2020-09-22 23:12:43 +02:00
Irmen de Jong
af6731c9c8 preparing version 4.3 2020-09-22 21:50:56 +02:00
Irmen de Jong
af39502450 doc 2020-09-22 00:47:02 +02:00
Irmen de Jong
ae2619602d lib renames in docs 2020-09-21 18:21:24 +02:00
Irmen de Jong
de06353194 auto select correct library to import based on target, instead of having c64- and cx16- prefix variants
some programs are now 100% source compatible between C64 and Cx16 targets!
import libraries have been rena;med
2020-09-21 00:50:09 +02:00
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
Irmen de Jong
7459896155 finalized zeropage variable allocation 2019-01-27 22:59:40 +01:00
Irmen de Jong
798c4d7902 fix some optimizations of loops, added some conditional branch optimizations 2019-01-27 19:14:58 +01:00
Irmen de Jong
204cc03fc8 doc 2019-01-26 23:28:28 +01:00
Irmen de Jong
6f583e7092 readme 2019-01-26 19:13:42 +01:00
Irmen de Jong
c1f196f2aa readme 2019-01-26 18:56:53 +01:00
Irmen de Jong
2663781fde readme 2019-01-26 18:44:30 +01:00
Irmen de Jong
fa8a3c997a Expressions can now be split over multiple lines. Fixed datatype of len(). 2019-01-26 17:32:26 +01:00
Irmen de Jong
1ff68b06da fix compiler crash, rasterbars alignment, docs. 2019-01-25 01:35:46 +01:00
Irmen de Jong
163c6bc628 improved docs on how to run the compiler 2019-01-24 23:31:16 +01:00
Irmen de Jong
f1a7fa1870 doc 2019-01-24 02:43:25 +01:00
Irmen de Jong
39a5e341af sort assignments to enable same-value optimization 2019-01-23 21:50:43 +01:00
Irmen de Jong
d37c9d1680 argument type casts for builtin functions, added memset, tweaked memcopy/memset assembly a bit 2019-01-23 00:19:29 +01:00
Irmen de Jong
dd02d97db4 fixed and optimized branches and gotos in if statements 2019-01-22 22:52:43 +01:00
Irmen de Jong
5471c5211c make %asminclude work, restructure prog8lib into separate asm file 2019-01-21 00:49:48 +01:00
Irmen de Jong
75b38d7b84 added swap() slow version 2019-01-18 01:33:54 +01:00
Irmen de Jong
870c6ea747 stuff 2019-01-14 23:48:18 +01:00
Irmen de Jong
98e95b5707 replaced str2ubyte 2019-01-13 14:20:51 +01:00
Irmen de Jong
e3eace9e28 project folder restructure 2019-01-09 23:57:27 +01:00
Irmen de Jong
b2ecf16234 fixed some array length loop issues 2019-01-09 22:28:04 +01:00
Irmen de Jong
f1b2bd1cc4 got rid of separate '//' floordivision operator 2019-01-09 22:01:47 +01:00
Irmen de Jong
46c282d6d5 created mkword function 2019-01-09 01:03:33 +01:00
Irmen de Jong
58854ef45b doc fix 2019-01-08 02:25:22 +01:00
Irmen de Jong
0146a39ebb moved some more stuff around 2019-01-08 02:09:35 +01:00
Irmen de Jong
295f7a6c6e added unsigned versions of sin and cos (0..255, 0..65535) 2019-01-06 22:56:06 +01:00
Irmen de Jong
04bbdf5991 div and mult by a power of 2 are now optimized into shifts. Added bit shift operators << and >> 2019-01-06 08:20:22 +01:00
Irmen de Jong
d203bfaf25 normal division is always float, implemented (u)byte integer division 2019-01-06 01:43:47 +01:00
Irmen de Jong
9f4ac37a00 split off c64flt library for all floating point routines 2019-01-05 16:09:05 +01:00
Irmen de Jong
32d82e8e56 asmsubs can now specify params and return values to be on the stack.
implemented fast integer fixed-point sin and cosine functions.
2019-01-04 22:11:46 +01:00
Irmen de Jong
2f9eabeac7 c64 irq handling routines 2019-01-02 02:47:52 +01:00
Irmen de Jong
39a8b76534 force_output option added 2019-01-01 21:47:19 +01:00
Irmen de Jong
c2eb181b5a added memcopy function 2019-01-01 18:38:43 +01:00
Irmen de Jong
ac8e7f4fa9 made setting/restoring the IRQ vector explicit 2019-01-01 18:05:50 +01:00
Irmen de Jong
a319e6f9ec direct memory access and sprite fixes 2018-12-31 04:48:26 +01:00
Irmen de Jong
aeb963673a sprites example 2018-12-31 01:52:18 +01:00
Irmen de Jong
500777bf78 added direct memory access ("poke"/"peek") 2018-12-31 01:10:42 +01:00
Irmen de Jong
904e317781 cleanups, fix scope of certain generated nodes in for loops 2018-12-25 01:05:38 +01:00
Irmen de Jong
d55bbcf706 removed string conversion builtin functions, they're now subroutines in c64util 2018-12-22 01:07:43 +01:00
Irmen de Jong
ee893e5a2c multiplications 2018-12-20 23:28:03 +01:00
Irmen de Jong
5870006b2f introduced type cast "... as ..." instead of builtin functions 2018-12-20 03:17:41 +01:00
Irmen de Jong
c1204b83bd changed syntax of subroutine parameters (now the same as vardecls) 2018-12-19 02:51:22 +01:00
Irmen de Jong
3a7b341f47 fixes 2018-12-18 18:32:41 +01:00
Irmen de Jong
ca1d6bff56 log functions 2018-12-18 02:02:19 +01:00
Irmen de Jong
bcfb390077 optimizations 2018-12-17 15:52:37 +01:00
Irmen de Jong
7cb42de60e more float asm operations, fix some % operator problems 2018-12-13 01:19:43 +01:00
Irmen de Jong
be819ba8a7 got the number guessing example fully working on c64 asm 2018-12-11 00:09:37 +01:00
Irmen de Jong
f070dc22bb save X register automatically when calling sub that clobbers X 2018-12-09 19:48:59 +01:00
Irmen de Jong
89ac374db9 float stuff 2018-12-02 17:59:36 +01:00
Irmen de Jong
6c8354aef0 taking the address of strings and arrays 2018-11-23 00:31:21 +01:00
Irmen de Jong
069f6ea372 improved assignment of single character values and strings 2018-11-22 00:58:21 +01:00
Irmen de Jong
d6432df90d got rid of 16-bit register pair variables (AX, AY, XY) they were complicating things too much 2018-11-02 22:06:57 +01:00
Irmen de Jong
5bf2c4a798 got rid of matrix type 2018-10-30 20:29:03 +01:00
Irmen de Jong
1fea9e3bc4 matrix doc 2018-10-27 22:16:18 +02:00
Irmen de Jong
a825bbff96 fix array problems, limit size of arrays. 2018-10-23 00:52:51 +02:00
Irmen de Jong
ba384c9722 rsave/rrestore added 2018-10-14 22:32:03 +02:00
Irmen de Jong
b52120139c 6502 start 2018-10-14 01:55:39 +02:00
Irmen de Jong
987915a77a doc 2018-10-12 18:01:40 +02:00
Irmen de Jong
7aec14524e fix datatype conversion issues 2018-10-12 15:50:32 +02:00
Irmen de Jong
f5261a3425 added %zpreserved 2018-10-09 00:01:53 +02:00
Irmen de Jong
42394f561b syntax checks on asmsubs 2018-10-08 22:35:39 +02:00
Irmen de Jong
34d26e42e1 fixed some type checks 2018-10-07 02:05:26 +02:00
Irmen de Jong
30b58c8567 variables are reset to their declared value when entering the scope again 2018-10-07 00:21:13 +02:00
Irmen de Jong
6edd5f9b30 can now declare for loop variable on the spot 2018-10-06 22:54:03 +02:00
Irmen de Jong
1d37841575 for, while, repeat, if, branch bodies are now (anonymous) symbol scopes 2018-10-06 18:42:06 +02:00
Irmen de Jong
a7abc32368 wrd and wrdhi functions added for byte-word conversion, more constant folding optimizations 2018-10-06 00:10:30 +02:00
Irmen de Jong
42e4891fcf allowing vardecl with non-const initial value assignment 2018-10-05 00:29:46 +02:00
Irmen de Jong
4501276217 cube3d and tweaks 2018-10-03 01:57:16 +02:00
Irmen de Jong
38e7d48492 implemented floating-point arrays 2018-10-02 02:20:42 +02:00
Irmen de Jong
0cdae48ce7 implemented array indexing 2018-10-01 22:23:16 +02:00
Irmen de Jong
623b42cc14 added single character literals (petscii byte value) 2018-09-30 23:07:26 +02:00
Irmen de Jong
3278d4c945 fixed function calls, added some string-to-number conversion functions 2018-09-30 22:43:34 +02:00
Irmen de Jong
02075f2cf2 changed subroutine syntax and fixed array/matrix initalizer values 2018-09-30 18:49:58 +02:00
Irmen de Jong
c5d251073f removed broken unused symbol clean up for now
streamlined irq routine handling and compilation
2018-09-28 21:28:16 +02:00
Irmen de Jong
bf5c2e07a2 subroutines cannot use builtin function names for parameters 2018-09-27 23:58:14 +02:00
Irmen de Jong
91f9229b07 fixed memory vars in compiler, added invalid assignment check 2018-09-27 23:21:04 +02:00
Irmen de Jong
53cd50ad48 changed float handling and appropriate compiler messages 2018-09-25 19:52:59 +02:00
Irmen de Jong
70e5a38aa2 changed set/clear carry and irqd somewhat 2018-09-24 23:38:33 +02:00
Irmen de Jong
cef0aae927 compilation of builtin functions to opcode
untit tests for stackvm opcodes, value and parser literalvalue
2018-09-24 22:34:12 +02:00
Irmen de Jong
68037e4425 implemented while and repeat loops 2018-09-23 02:04:45 +02:00
Irmen de Jong
f84e06bdeb tweak branches 2018-09-22 00:33:25 +02:00
Irmen de Jong
455f60fb84 for loop and comparison expression fixes 2018-09-20 01:13:21 +02:00
Irmen de Jong
cba9e7670e added floordivision operator // 2018-09-19 01:24:28 +02:00
Irmen de Jong
00d74551b3 fix for loop code generation.
added flt conversion function.
attempt at implementing break and continue.
var initializer value can be omitted for numeric vars (and default to 0)
subroutine return statement not needed when no return values.
2018-09-18 23:14:32 +02:00
Irmen de Jong
63492a1805 stackvm functions 2018-09-18 00:38:29 +02:00
Irmen de Jong
266f98a888 doc 2018-09-16 11:25:37 +02:00
Irmen de Jong
2591f4e27e forloop in grammar 2018-09-16 03:00:32 +02:00
Irmen de Jong
19cedf91ff prog8 logos 2018-09-16 01:28:07 +02:00
Irmen de Jong
1a40a88103 added remainder operator '%' 2018-09-16 00:59:12 +02:00
Irmen de Jong
3426593a06 fixed a load of type checks regarding arrays and matrixes and strings
added more builtin functions to the compiler to access the syscalls in the stackVm
2018-09-16 00:06:06 +02:00
Irmen de Jong
c05cd72d23 vm tweaks 2018-09-15 18:43:23 +02:00
Irmen de Jong
e382be89db changed source file suffix to .p8 2018-09-15 16:35:15 +02:00
Irmen de Jong
8ff72167a4 renamed project to Prog8 2018-09-15 16:21:05 +02:00
Irmen de Jong
6da048ba4c some type conversion opcodes added 2018-09-15 04:07:42 +02:00
Irmen de Jong
70fe43a6ac improved type checking of builtin functions 2018-09-15 03:12:30 +02:00
Irmen de Jong
28aaf38f22 made position required to avoid some bugs where it was not specified
fixed some type checking bugs
2018-09-15 01:28:01 +02:00
Irmen de Jong
ea94063689 now explicit separation between byte and word literal integers 2018-09-13 23:39:54 +02:00
Irmen de Jong
949e468543 more stackvm opcodes, and sort of finished the stackvm compiler 2018-09-13 03:16:44 +02:00
Irmen de Jong
efd3b1f5c6 matrix decl parsing and fixes 2018-09-12 03:07:49 +02:00
Irmen de Jong
8ef61ffc88 various syntax checks added
first steps code generation
2018-09-08 00:07:25 +02:00
Irmen de Jong
e928997193 arrays are now a datatype as well
fixed array initializer checks
2018-09-06 22:28:37 +02:00
Irmen de Jong
3933fdab13 added lsb, msb functions.
fixed missing errormessages.
changed some zp options.
2018-09-06 21:13:49 +02:00
Irmen de Jong
0b4135698e reorder statments to please the compiler later 2018-09-06 01:35:26 +02:00
Irmen de Jong
d9865a4b97 bunch of new builtin functions, const expression evaluation now also done for array literals 2018-09-04 23:37:21 +02:00
Irmen de Jong
76d07a2de8 recursion checking and bugfix in subroutine usage determination 2018-09-03 23:19:25 +02:00
Irmen de Jong
e39ae3c346 branching instructions 2018-09-02 18:32:48 +02:00
Irmen de Jong
d4341b7afe more builtin functions 2018-09-02 12:34:50 +02:00
Irmen de Jong
6701f2a3a4 fix lib and gitignore 2018-09-01 20:38:01 +02:00
Irmen de Jong
640457f35a stuff 2018-09-01 19:40:28 +02:00
Irmen de Jong
26a7a3c8d0 zeropage 2018-08-16 23:10:28 +02:00
Irmen de Jong
4b7d656a2f range initializers 2018-08-14 16:29:08 +02:00
Irmen de Jong
397fdc61cd if statement 2018-08-14 14:33:36 +02:00
Irmen de Jong
69ff680eaf fix functions 2018-08-14 02:22:59 +02:00
Irmen de Jong
666b9b2263 functions 2018-08-14 01:15:11 +02:00
Irmen de Jong
64032d766e %option 2018-08-13 10:51:05 +02:00
Irmen de Jong
aadd50cc27 optimizer first steps 2018-08-11 19:55:04 +02:00
Irmen de Jong
d702dd1e74 more grammar 2018-08-11 03:22:55 +02:00
Irmen de Jong
437c948c05 grammar 2018-08-09 01:54:43 +02:00
Irmen de Jong
cee0f5bd2a more docs. restructure project. add antlr stuff. 2018-08-07 22:49:01 +02:00
Irmen de Jong
b34ae4c91c new docs 2018-08-07 01:23:34 +02:00
Irmen de Jong
0e785fcfb3 new docs 2018-08-06 03:35:43 +02:00
Irmen de Jong
bc8d56cbd7 rethinking some aspects and rewriting text a bit 2018-07-01 23:24:32 +02:00