Commit Graph

825 Commits

Author SHA1 Message Date
Irmen de Jong
690782bf60 added -verafxmul compiler option to use vera fx multiplication routine on cx16 2023-10-01 22:44:45 +02:00
Irmen de Jong
755cc4835e \n (newline) now also maps to Petscii $0d (return), like \r.
It used to map to $8d (shift-return)
2023-09-29 01:49:15 +02:00
Irmen de Jong
a684ea46e4 fix c64 zp test and improve error for text encoding problem 2023-09-29 01:25:05 +02:00
Irmen de Jong
55646edc3e added cx16 chunkedfile example 2023-09-24 20:56:36 +02:00
Irmen de Jong
880c0a5da8 allow taking address of array element 2023-09-18 04:37:41 +02:00
Irmen de Jong
0bbbb12ed2 fix bench8 examples 2023-09-05 23:40:54 +02:00
Irmen de Jong
31458ffd81 examples cleanup and improving c64 graphics module (shift bitmap to higher ram area) 2023-09-05 20:39:12 +02:00
Irmen de Jong
b125901717 added cx16 plasma example 2023-09-04 23:54:13 +02:00
Irmen de Jong
9cc0cda0fb added sprites library module (cx16 only) 2023-09-01 17:35:07 +02:00
Irmen de Jong
ff35ba3696 added warnshadow cli option to enable assembler warnings about symbol shadowing 2023-08-28 16:41:46 +02:00
Irmen de Jong
f98ee326b4 error when doing txt.print('@') where "@" was intended (byte for string parameter) 2023-08-14 19:25:31 +02:00
Irmen de Jong
2c9e50873c use math.square for optimized X*X calculation (words only).
Added IR SQUARE instruction.
2023-08-14 01:05:17 +02:00
Irmen de Jong
e3fbe37f9f fixed optimized code for >= and <= 2023-08-12 13:45:08 +02:00
Irmen de Jong
584be44743 fix compiler error on float comparison expressions 2023-08-12 00:09:38 +02:00
Irmen de Jong
b92e22e4a6 IR: fix for loop over range with step 2023-08-11 03:05:47 +02:00
Irmen de Jong
3e6d16a7a8 add error message for invalid step size in range expression 2023-08-11 02:35:52 +02:00
Irmen de Jong
dff1d9e4dd cleanup range expression doc 2023-08-09 22:58:04 +02:00
Irmen de Jong
7c0bde7310 parser: allow curly brace on next line for asmsub too
downgrade antlr4 one version again to what is used in IntelliJ's antlr plugin, to avoid potential version conflicts
2023-08-09 20:01:12 +02:00
Irmen de Jong
a4d093afa1 added -sourcelines cli option to include src lines in generated assembly (which is now off by default) 2023-08-02 23:05:24 +02:00
Irmen de Jong
c223702ea0 code cleanups 2023-07-30 18:42:45 +02:00
Irmen de Jong
70a78e74f6 get rid of binexpr splitter 2023-07-20 01:36:43 +02:00
Irmen de Jong
9f247901d4 Merge branch 'master' into remove_evalstack
# Conflicts:
#	codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
#	codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
#	compiler/src/prog8/buildversion/BuildVersion.kt
#	examples/test.p8
2023-07-16 23:45:04 +02:00
Irmen de Jong
5659742d97 fixed assigning byte to word not clearing msb sometimes 2023-07-16 23:16:32 +02:00
Irmen de Jong
da57f76de3 fix augassign 2023-07-15 22:26:56 +02:00
Irmen de Jong
6033a9e20c remove optfloatx option 2023-07-15 22:24:22 +02:00
Irmen de Jong
84925ab69c remove eval stack options 2023-07-15 22:24:19 +02:00
Irmen de Jong
b8284a147d allow boolean when conditions, optimize into a regular if 2023-07-11 21:33:29 +02:00
Irmen de Jong
e6b158bc97 @(..) argument must be of type UWORD 2023-07-08 22:34:47 +02:00
Irmen de Jong
d2154f5f2e remove empty when choices, fixes ir compilation error on those 2023-07-07 20:34:24 +02:00
Irmen de Jong
b4e94ae4dd optimizer: avoid symbol name clash when inlining subroutine 2023-07-05 23:15:04 +02:00
Irmen de Jong
07c606bfc9 optimizer: don't replace for loop with repeat loop (the loop variable might be used elsewhere!) 2023-07-05 21:16:17 +02:00
Irmen de Jong
f570b70827 fix type error with returning an array from a subroutine returning uword 2023-07-02 22:09:19 +02:00
Irmen de Jong
c544b7f5ba fixing up p8_ prefixing 2023-07-02 21:15:05 +02:00
Irmen de Jong
bdf8aa9168 get rid of newexpr compiler option 2023-07-02 15:26:04 +02:00
Irmen de Jong
bb95484c8a uniform symbol prefixing with p8_ 2023-07-02 06:15:09 +02:00
Irmen de Jong
cad18b8a3a uniform symbol prefixing with p8_ 2023-07-02 06:15:02 +02:00
Irmen de Jong
aac5a4c27f optimize word repeat loop codegen 2023-07-02 04:51:22 +02:00
Irmen de Jong
d3f6415387 vm: fix repeat 256 2023-07-02 02:38:35 +02:00
Irmen de Jong
bf703a8a66 unittest 2023-06-27 23:43:35 +02:00
Irmen de Jong
0a83b51e00 allow more curly brace styles 2023-06-27 01:59:22 +02:00
Irmen de Jong
b0794cf35e added hiram bank number to -varshigh 2023-06-27 00:27:34 +02:00
Irmen de Jong
eae41de27d improve errors generated for undefined symbols 2023-06-25 15:19:51 +02:00
Irmen de Jong
8c617515ba don't prefix 3-letter symbols too aggressively (could cause some compilation errors) 2023-06-23 23:36:59 +02:00
Irmen de Jong
04e4e71f2e uword == str is now possible (sugar for string.compare) 2023-06-22 00:20:30 +02:00
Irmen de Jong
f56c12ee4e cx16 spotlight example 2023-06-18 12:49:22 +02:00
Irmen de Jong
5da3abe6b4 fix silent typecast on return statements that could lose data (word->byte) 2023-06-17 14:44:36 +02:00
Irmen de Jong
a521982576 fix subroutine inline problem with strings 2023-06-09 21:45:05 +02:00
Irmen de Jong
ea6926e57d fix float expression crash: fl = abs/sqrt (fl)+0.5 2023-06-09 19:28:34 +02:00
Irmen de Jong
1bdae53f4e fix unit tests 2023-06-03 21:39:34 +02:00
Irmen de Jong
bb9d29b061 fix an array literal assignment type error for word arrays 2023-05-30 22:46:37 +02:00
Irmen de Jong
b9d8ec1463 add -splitarrays command line option 2023-05-30 19:08:34 +02:00
Irmen de Jong
bbc02752c9 use split word arrays in various examples, fix codegen issue, docs 2023-05-29 15:34:33 +02:00
Irmen de Jong
c94e292176 more split array stuff 2023-05-27 12:47:11 +02:00
Irmen de Jong
300e2fe9f8 IR: wrong attempt at optimizing register usage by reusing registers inside different code chunks 2023-05-18 21:57:21 +02:00
Irmen de Jong
1af38e62bc removed floats.fabs() and floats.sqrt()/fsqrt() 2023-05-17 00:46:15 +02:00
Irmen de Jong
1e469b3b0f Merge branch 'master' into version_9
# Conflicts:
#	docs/source/todo.rst
#	examples/test.p8
2023-05-09 22:45:21 +02:00
Irmen de Jong
bff3c4f95c IR now converts IRInlineAsmChunk (of type IR) into regular code chunks directly.
.p8ir files usually won't contain <INLINEASM> nodes any longer
2023-05-09 21:04:31 +02:00
Irmen de Jong
38efe25c68 abs() now works on multiple data types including float.
no need to use floats.fabs() anymore
2023-05-02 01:19:53 +02:00
Irmen de Jong
319079de7a sqrt 2023-05-02 01:19:53 +02:00
Irmen de Jong
4274296cf3 api change: new 'cbm' module that now contains the common CBM kernal variables and routines. 2023-05-02 01:19:53 +02:00
Irmen de Jong
76a203d4df api change: rename builtin func sqrt16 to sqrtw 2023-05-02 01:19:53 +02:00
Irmen de Jong
f465b2e2a0 some improvements to IR peephole optimizer 2023-05-02 00:29:04 +02:00
Irmen de Jong
9b952fbc44 tweaking IR instruction set branch instructions 2023-04-09 22:17:19 +02:00
Irmen de Jong
ccdf05e922 tweaking IR instruction formats 2023-04-09 16:12:16 +02:00
Irmen de Jong
c3d74f2ae9 fix golden ram area for x16, remove romsub restriction
note: romsubs still won't work in the VM but at least they compile again
2023-04-08 00:40:52 +02:00
Irmen de Jong
c4f53fe525 IR: small optimization 2023-04-05 22:55:54 +02:00
Irmen de Jong
b6a837cbea fix boolean array with initialization value 2023-04-04 22:11:51 +02:00
Irmen de Jong
4598a83e8e fixing new comparisons 2023-03-29 22:06:32 +02:00
Irmen de Jong
a7b9f53967 fix word comparison bug in asmgen 2023-03-26 23:44:06 +02:00
Irmen de Jong
629ed74d09 got rid of rpn deadend code... 2023-03-25 18:45:17 +01:00
Irmen de Jong
134fd62da8 RPN: better handling of bit shifts 2023-03-21 02:58:26 +01:00
Irmen de Jong
df2d7d4734 fix RPN comparison exprs 2023-03-19 16:08:48 +01:00
Irmen de Jong
6e4ae034b2 more Rpn optimizations 2023-03-19 00:48:12 +01:00
Irmen de Jong
9241479da4 add "-rpn" command line switch to transform exprs to RPN in codegen 2023-03-17 22:28:22 +01:00
Irmen de Jong
fd25e85d59 added unroll loop construct 2023-03-14 23:37:49 +01:00
Irmen de Jong
dc316fd7b4 IR: more optimal branch instructions for comparisons against zero 2023-03-13 23:17:53 +01:00
Irmen de Jong
dc32318cec fix possible string error on inlined subroutines 2023-03-12 18:16:48 +01:00
Irmen de Jong
ebd9f1471b fix crash when using const word as pointer and implement 2 missing assign codegen paths 2023-03-11 15:39:03 +01:00
Irmen de Jong
d76547ead4 don't crash on certain undefined symbols, give proper error instead
Also the error handlers in unit tests now de-duplicate messages just like the compiler itself does
2023-03-11 14:58:41 +01:00
Irmen de Jong
ed597423cd fix problem with initializing certain array decls with single value 2023-03-11 00:43:30 +01:00
Irmen de Jong
f20ca06f85 give correct error when using memory mapped var as array pointer 2023-03-11 00:26:19 +01:00
Irmen de Jong
a636d3f394 give correct error on attempt to const array 2023-03-10 23:46:13 +01:00
Irmen de Jong
e779a07bce allow when with byte 1,2,3 for word variables without having to cast the values to word explicitly 2023-03-09 22:15:56 +01:00
Irmen de Jong
c968bacb01 fix pokew() crash with certain address expressions 2023-03-08 23:29:57 +01:00
Irmen de Jong
fc253237c9 fix issues with reporting inlined subroutines as unused 2023-03-07 23:47:14 +01:00
Irmen de Jong
fd07ae5225 fix various IR file and symboltable issues 2023-03-07 19:40:11 +01:00
Irmen de Jong
448d176c24 fix vm crash on empty string 2023-03-04 15:35:54 +01:00
Irmen de Jong
540b3ae2f4 tweak BinaryExpression splitting 2023-02-28 21:45:38 +01:00
Irmen de Jong
dbfe4140e1 improved import search paths 2023-02-28 20:08:11 +01:00
Irmen de Jong
ba9268a09e added -varshigh compiler option to move BSS section.
Documented BSS a bit in the manual.
2023-02-22 22:44:29 +01:00
Irmen de Jong
435b9d8973 get rid of 'noreinit' option for now, because it resulted in unreliable code 2023-02-20 23:29:16 +01:00
Irmen de Jong
c3c82282ba reinitGlobals option is clearer than the inverse 2023-02-19 19:09:29 +01:00
Irmen de Jong
dddf9a9396 remove explicit 'bss' from St var, changed to 'uninitialized' 2023-02-19 16:50:06 +01:00
Irmen de Jong
9ca6860ffa tweak 2023-02-19 15:08:16 +01:00
Irmen de Jong
c59df6ec20 optimize isZpVar 2023-02-16 00:41:20 +01:00
Irmen de Jong
5c3f41f64d reintroduce explicit PtAugmentedAssign ast node 2023-02-15 22:54:32 +01:00
Irmen de Jong
cf3523f49f Merge branch 'codegen-on-new-ast' 2023-02-14 22:48:11 +01:00
Irmen de Jong
db794752cb fix ast error on inline sub 2023-02-14 22:37:33 +01:00
Irmen de Jong
bceaebe856 fix crash on sort/reverse unused arrays
fixes #95
2023-02-14 00:26:29 +01:00
Irmen de Jong
0cbc56b82e remove unused ast print func 2023-02-13 00:19:48 +01:00
Irmen de Jong
b95608f68a new common ICodeGeneratorBackend interface for all code generator classes 2023-02-12 23:52:54 +01:00
Irmen de Jong
b6e5dbd06c optimized away VarDecl.subroutineParameter 2023-02-12 23:19:35 +01:00
Irmen de Jong
75d486b124 fix variable node casting 2023-02-12 17:04:58 +01:00
Irmen de Jong
4914609485 local varnames and fix uninitialized parents 2023-02-12 16:00:58 +01:00
Irmen de Jong
75bd66326a fix variable zpwish 2023-02-11 15:18:57 +01:00
Irmen de Jong
30d20a453b tweak SymbolTable and fix its unittest 2023-02-09 22:58:21 +01:00
Irmen de Jong
6aabbffc62 some cleanups 2023-02-09 02:34:18 +01:00
Irmen de Jong
f117805129 order 2023-02-05 12:36:32 +01:00
Irmen de Jong
c75b1581d2 lookup via new ST 2023-02-05 01:15:23 +01:00
Irmen de Jong
201b77d5b6 boolean vs byte cast fixing, and pointervar error 2023-02-02 00:57:20 +01:00
Irmen de Jong
0f5cd22bb7 more codegen fixes 2023-01-31 22:57:26 +01:00
Irmen de Jong
2f5bed36b3 remove bool to ubyte typecasts 2023-01-31 01:25:44 +01:00
Irmen de Jong
5b6534bb28 fix symbol lookup in new ast and minor codegen errors 2023-01-31 00:18:21 +01:00
Irmen de Jong
07d5fafe2e Merge branch 'master' into codegen-on-new-ast
# Conflicts:
#	compiler/src/prog8/compiler/astprocessing/IntermediateAstMaker.kt
2023-01-29 13:34:00 +01:00
Irmen de Jong
e08da659e5 got rid of PtScopeVarsDecls node, just insert variable nodes directly 2023-01-29 13:25:15 +01:00
Irmen de Jong
3f3b01b5f6 Merge branch 'master' into codegen-on-new-ast 2023-01-26 01:40:30 +01:00
Irmen de Jong
19a2791c65 vm target can't use asmsub at all, give better error for that 2023-01-26 01:38:13 +01:00
Irmen de Jong
117d848466 consolidate builtin function definitions into codeCore 2023-01-25 00:23:00 +01:00
Irmen de Jong
b2cb125bd4 more 6502 codegen on new Pt-AST. 2023-01-22 17:10:52 +01:00
Irmen de Jong
32c1c19224 tweak sys.wait() routines on various targets
add warning to docs about FP usage in IRQ
2023-01-20 03:29:10 +01:00
Irmen de Jong
3718b9d768 less joins 2023-01-02 02:10:38 +01:00
Irmen de Jong
c25eb088ec redo 8e730ef93d to avoid larger code generated 2023-01-01 23:43:33 +01:00
Irmen de Jong
3feb3e52f8 optimizing scoped names in zeropage 2022-12-31 03:57:51 +01:00
Irmen de Jong
8e730ef93d optimizing scoped names more and fix scoping of identifier names in arrays (pointers) in SymbolTable 2022-12-31 03:20:20 +01:00
Irmen de Jong
e0913a39ab optimizing 2022-12-30 18:50:45 +01:00
Irmen de Jong
7a27fbc001 add params for future changes 2022-12-30 17:43:55 +01:00
Irmen de Jong
002006517a rewrite bool=bool^1 into bool=not bool 2022-12-29 19:42:38 +01:00
Irmen de Jong
81bd5c784e don't remove consecutive assigns to IO space location 2022-12-24 18:01:54 +01:00
Irmen de Jong
1860f66de5 allow "x not in array" as equivalent to "not x in array"
update antlr parsing lib
2022-12-23 17:59:56 +01:00
Irmen de Jong
ded9ada9bc allow "not xx in array" expression in 6502 codegen
fix compiler crash on certain bool to byte casts
2022-12-23 17:07:34 +01:00
Irmen de Jong
d0e6a2eb8b fix compiler crash on hoisting certain vardecls from inner scopes 2022-12-22 18:49:53 +01:00
Irmen de Jong
def7e87151 fixed silly if-goto expression code in IR codegen where it used too many branching instructions 2022-12-12 22:47:15 +01:00
Irmen de Jong
d1d0115aed removed unused option 'keepIR' 2022-12-09 18:44:44 +01:00
Irmen de Jong
bf0604133c fix error in IR for inline asm and BSS vars. 2022-12-04 16:48:44 +01:00
Irmen de Jong
a82b2da16e Fix some FP related assignment issues in 6502 codegen. 2022-12-04 13:03:38 +01:00
Irmen de Jong
17bedac96c vm: memory is randomized on start instead of 0. P8ir file now has BSS segment. Vm clears BSS vars to 0. 2022-12-03 17:46:06 +01:00
Irmen de Jong
5e896cf582 preparing to add Golden RAM 2022-12-03 00:21:31 +01:00
Irmen de Jong
f470576822 it's now possible to use symbols that are the same name as 6502 instructions
because these are now prefixed internally before generating assembly.
2022-11-30 18:39:56 +01:00
Irmen de Jong
b8fb391022 - ir codegen now allows subroutine having the same name as its block
this is not possible for the 6502 codegen due to 64tass scoping limitation
2022-11-28 21:54:33 +01:00
Irmen de Jong
ec64a68a71 fixed compiler crash: unsigned = (-(unsigned as word) as uword) 2022-11-27 17:25:47 +01:00
Irmen de Jong
d8409a9d2b fix compiler crash: if uwordvar > label 2022-11-26 14:39:03 +01:00
Irmen de Jong
e2f20ebf94 fix crash on empty conditional branch statement (if_cc { } ) 2022-11-23 02:14:48 +01:00
Irmen de Jong
f870e4965a added cx16diskio.f_seek() function to seek to a position in an opened file
f_open uses channel 12 now, f_open_w uses 13
2022-11-23 01:48:04 +01:00
Irmen de Jong
d8e87bd881 make uword xx = 1<<shift into a word shifting 2022-11-16 01:39:34 +01:00
Irmen de Jong
f4f355c74a added cx16/diskspeed example 2022-11-14 17:55:55 +01:00
Irmen de Jong
e6688f4b9d clearer error for VM limitation cannot load label address as value 2022-11-12 13:45:02 +01:00
Irmen de Jong
9d7b9771c2 p8ir file format is now valid XML 2022-11-11 23:35:52 +01:00
Irmen de Jong
e67c05c274 ir: fix asmsub contents not appearing in IR file 2022-11-02 20:50:51 +01:00
Irmen de Jong
b22804efaf ir: fix inlineasm linking 2022-10-31 23:59:33 +01:00
Irmen de Jong
5b6569d0f9 ir: fix overwriting chunk label 2022-10-30 19:03:02 +01:00
Irmen de Jong
0eda7ac498 vm: don't crash on empty code chunks 2022-10-30 17:05:08 +01:00
Irmen de Jong
a5ef353484 ir: fix memory mapped var as for loop counter 2022-10-30 14:54:47 +01:00
Irmen de Jong
67a36d8d31 more robust 'return' statement checks in subroutines 2022-10-30 14:41:28 +01:00
Irmen de Jong
7cc3cc3990 ir: fix non-code chunk linkage 2022-10-30 12:55:06 +01:00
Irmen de Jong
5b35232ab4 fix "fpReg1 out of bounds" crash for vm target for in-place float array assignment. #85 2022-10-29 17:04:39 +02:00
Irmen de Jong
434515d957 fix: array[x] = ~array[x] no longer crashes the codegen 2022-10-27 23:56:38 +02:00
Irmen de Jong
094f7803b7 fix: array[x] = -array[x] no longer crashes the codegen 2022-10-27 23:20:40 +02:00
Irmen de Jong
b0c7bad391 fix: array[x] = -value no longer crashes the codegen 2022-10-27 21:58:37 +02:00
Irmen de Jong
8f9d1cfa30 fix regression: indexing pointer variable with word (>255) didn't work anymore since release 8.2 or so 2022-10-24 23:43:47 +02:00
Irmen de Jong
0d7b14e2d8 fix crash when assigning certain memory read to word variable. Fixes #82 2022-10-23 11:57:23 +02:00
Irmen de Jong
e94bf4c63c replace rnd()/rndw() builtin functions by regular routines in math module 2022-10-22 17:02:43 +02:00
Irmen de Jong
7b722a0001 ir: fix count register uses 2022-10-04 00:25:55 +02:00
Irmen de Jong
5a8f97a0b6 ir: adding last missing features to be able to encode all of Prog8 2022-09-30 16:01:00 +02:00
Irmen de Jong
0d4dd385b8 added '%ir' to write inline IR code, '%asm' is now only for real 6502 assembly.
(%ir is probably only used in the library modules for the virtual machine target)
2022-09-30 15:12:26 +02:00
Irmen de Jong
7c1bdfe713 ir: uninitialized vars remain empty, bss section classifier (unused for now as there are no segements yet) 2022-09-28 16:56:50 +02:00
Irmen de Jong
06cf2e0bd7 vm: fix memory slabs (bsieve example) 2022-09-27 16:32:44 +02:00
Irmen de Jong
db1aa8fcbd vm: new translation of IRProgram into vm program list 2022-09-27 01:50:00 +02:00
Irmen de Jong
0da117efd2 vm: get rid of .p8virt file and cruft 2022-09-26 19:28:40 +02:00
Irmen de Jong
1d65d63bd9 ir: making sure all names are scoped properly. textelite now runs in vm 2022-09-25 18:02:35 +02:00
Irmen de Jong
dda19c29fe vm: fix symbols to be case sensitive properly in p8virt assembler 2022-09-25 15:51:50 +02:00
Irmen de Jong
ca41669f4f vm: fix scoped name in address-of inside array 2022-09-24 18:26:35 +02:00
Irmen de Jong
0e1886e6bd vm: fix nested label prefixing 2022-09-24 16:00:25 +02:00
Irmen de Jong
c26e116f0e vm: fix crashes when array contains pointers/strings 2022-09-24 14:42:07 +02:00
Irmen de Jong
ca2fb6cef3 IR no longer depends on VM syscalls but has its own syscall list for the few builtin functions that still require it 2022-09-23 14:27:51 +02:00
Irmen de Jong
fb22f78fb3 added '-keepIR' option to save the IR file if it's generated. 2022-09-20 12:30:22 +02:00
Irmen de Jong
f37a822725 move 2022-08-14 13:17:03 +02:00
Irmen de Jong
d8e18df3a1 added c64 starfield example 2022-08-14 12:02:23 +02:00
Irmen de Jong
b6eef3612f added some ported bench8 test programs 2022-08-12 22:08:27 +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
93ce74eeb1 removed problematic expression "simplifications" (that introduced arbitrary r9 temp register usage) 2022-08-07 12:26:11 +02:00
Irmen de Jong
f718f4251b working on better encoding of romsub in new ast/vmtarget 2022-08-07 12:21:10 +02:00
Irmen de Jong
4644c9b621 got rid of GoSub ast node and codegen complexity related to that.
sometimes programs get smaller, sometimes bigger.
2022-08-07 03:24:20 +02:00
Irmen de Jong
90ddec2ad8 avoid multiple change events in watch mode
added bsieve example
2022-07-31 11:58:27 +02:00
Irmen de Jong
f531daa872 on C64, the cx16.r0...cx16.r15 virtual regs are now in zeropage as well when using kernalsafe or full 2022-07-28 19:13:33 +02:00
Irmen de Jong
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
5189eaca36 move the vm unit tests to codeGenVirtual module and remove virtualmachine dependency in the compiler module 2022-07-17 12:56:22 +02:00
Irmen de Jong
cfb31377fc c64 zeropage: added a few more locations to Kernalsafe free list that should be safe
this makes $02-$21 inclusive, available for use later (x16 virtual registers are placed here on x16...)
2022-07-17 12:12:47 +02:00
Irmen de Jong
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
4bc65e9ef7 fix stack crash in cx16.push_vera_context() 2022-07-14 16:33:09 +02:00
Irmen de Jong
2d600da8b6 fix codegen crash on certain nested typecast 2022-07-13 22:24:31 +02:00
Irmen de Jong
feb5c8be95 vm: some more peephole optimizations 2022-07-12 19:04:19 +02:00
Irmen de Jong
edf12bec71 improve bool params typecasting, fix compiler crash on abs(floatvar) 2022-07-12 17:52:37 +02:00
Irmen de Jong
840331347b added a few more vm optimizations and unit tests 2022-07-12 12:42:37 +02:00
Irmen de Jong
6181b12ab8 added -esa option to override the evalstack location, and shift cx16.r0-r15 accordingly 2022-07-11 19:29:04 +02:00
Irmen de Jong
88cbb6913d tweak bool type handling 2022-07-11 14:55:50 +02:00
Irmen de Jong
92eb3b0bf6 bool logical testcase 2022-07-09 22:29:38 +02:00
Irmen de Jong
97f90d9684 Merge branch 'master' into bool_type 2022-07-09 22:09:49 +02:00
Irmen de Jong
f91786367f added maze example 2022-07-09 22:00:46 +02:00
Irmen de Jong
6a57337a68 improved bool type checking 2022-07-08 22:59:35 +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
65daf29acd fix compiler crash related to word types in certain comparison expressions 2022-07-07 22:23:56 +02:00
Irmen de Jong
298b25cf7d fix compiler crash on certain typecasting assignment 2022-07-07 22:23:56 +02:00
Irmen de Jong
b41779bd02 added -D command line option to define symbols in the assembly file 2022-07-06 23:40:36 +02:00
Irmen de Jong
4b336b1853 if passing a subroutine or label name as an uword argument, without &, add the addressof automatically 2022-07-02 23:55:32 +02:00
Irmen de Jong
e1c77ce236 fix pop() name scoping 2022-07-02 23:27:08 +02:00
Irmen de Jong
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
2eb41a8caf temporary workaround for code problem around 'not' 2022-07-01 00:38:19 +02:00
Irmen de Jong
97cb0cbd08 tweak "not" removal/rewriting 2022-06-30 02:16:30 +02:00
Irmen de Jong
4b358abbb7 "not" operator removed from ast and codegen (it's been replaced with x==0 as equivalent) 2022-06-29 01:13:08 +02:00
Irmen de Jong
dc82a0fc16 better not(x) replacement by x==0 2022-06-28 23:50:23 +02:00
Irmen de Jong
435d6f6f3f vm: and/or/xor/not are all bitwise operations again 2022-06-28 03:17:51 +02:00
Irmen de Jong
ef92451d1a fix logical expressions on arbitrary values, for now with boolean() around the operands 2022-06-28 01:18:36 +02:00
Irmen de Jong
c75bd97537 update kotest 2022-06-26 18:51:03 +02:00
Irmen de Jong
eea09f4de5 fix invalid asm label sometimes generated for multiple loops in same subroutine 2022-06-24 02:26:45 +02:00
Irmen de Jong
bf9d120081 logical operators now always return a boolean byte result, instead of sometimes word type as well
(preparing for codegen simplifications for these)
2022-06-13 01:37:16 +02:00
Irmen de Jong
5a756aaed9 Pipe expression "|>" removed from the language 2022-06-12 18:41:42 +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
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
8f1c86f550 fixed several old test files 2022-06-05 14:20:08 +02:00
Irmen de Jong
af2ca7a67e fix problematic characters that cause path errors on Windows 2022-06-05 11:46:37 +02:00
Irmen de Jong
9e3e2ff81a fix assembly generation error when pipe character is part of string literal 2022-06-04 22:25:51 +02:00
Irmen de Jong
a862a81480 added unit test for name shadowing warning 2022-06-04 21:35:48 +02:00
Irmen de Jong
1e61d84fd1 vm: fix expression codegen for pointer indexing 2022-06-04 19:32:35 +02:00
Irmen de Jong
c40cfaa388 preparing optimizing pointer indexing 2022-06-04 14:23:02 +02:00
Irmen de Jong
ba614801ee cleanup 2022-05-22 23:11:22 +02:00
Irmen de Jong
dad5b17ac8 fix regression compiler crash in string comparison 2022-05-08 13:47:24 +02:00
Irmen de Jong
fef52c0112 automatically convert multi-compare expression (if X==1 or X==2..) to contaiment check if X in [1,2,..] 2022-05-08 13:21:34 +02:00
Irmen de Jong
8c4765b386 vm: support non-unary functions in pipe expressions 2022-05-07 20:42:05 +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
6f2fdbe447 added %option merge, also fixed problem with unit test building in newer IntelliJ version 2022-04-15 22:38:32 +02:00
Irmen de Jong
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
ab1766a559 moved all *integer* builtin trig functions (sin8u, cos8u etc) as regular asmsubs in math module 2022-04-13 00:27:35 +02:00
Irmen de Jong
3f6393f732 PtNumber can now be compared 2022-04-10 17:48:03 +02:00
Irmen de Jong
b6eb343234 moving string escaping out of antlr project 2022-04-10 17:31:30 +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
b133d51a83 make the parser report '&&' as an error instead of treating it as bitwise and followed by address-of. 2022-04-02 02:08:01 +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
3e44620966 add unit test for the string encoders special handling of 0x0000 and 0x8000-0x80ff 2022-03-25 18:26:23 +01:00
Irmen de Jong
27f6d47efa working on vm codegen 2022-03-24 23:26:57 +01:00
Irmen de Jong
ff57c5e9d3 working on vm and new ast 2022-03-21 01:36:11 +01:00
Irmen de Jong
9b16d7c786 working on vm 2022-03-20 15:06:29 +01:00
Irmen de Jong
7d2bf892b1 added start of virtual machine compilation target 2022-03-19 00:57:35 +01:00
Irmen de Jong
92737bb695 better handling of loadAddress 2022-03-13 16:21:02 +01:00
Irmen de Jong
4a0031080a getting rid of directives in new Ast 2022-03-13 00:30:20 +01:00
Irmen de Jong
3961f26635 consolidating modules 2022-03-11 20:45:39 +01:00
Irmen de Jong
e51c274a18 reducing dependencies 2022-03-11 20:32:35 +01:00