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 |
|
Irmen de Jong
|
e75d0c58a9
|
reducing dependencies
|
2022-03-10 23:46:43 +01:00 |
|
Irmen de Jong
|
9a798360f4
|
introduced codeAst and codeCore modules to reduce dependencies
|
2022-03-10 22:38:16 +01:00 |
|
Irmen de Jong
|
844ad09464
|
reducing dependencies
|
2022-03-10 21:36:51 +01:00 |
|
Irmen de Jong
|
abcdd331db
|
started with a simulator
|
2022-03-10 21:23:00 +01:00 |
|
Irmen de Jong
|
775d136b91
|
new compileText result
|
2022-03-10 21:22:32 +01:00 |
|
Irmen de Jong
|
dc93691fd9
|
working on new ast
|
2022-03-10 21:22:32 +01:00 |
|
Irmen de Jong
|
48d782c69c
|
added flat mapping to symboltable
|
2022-03-10 21:22:31 +01:00 |
|
Irmen de Jong
|
0a04e626d7
|
added new intermediate (simplified) AST meant for new codegen
|
2022-03-10 21:21:15 +01:00 |
|
Irmen de Jong
|
251b6fcf70
|
reducing dependencies
|
2022-03-10 02:09:34 +01:00 |
|
Irmen de Jong
|
ab1fffb721
|
reducing dependencies
|
2022-03-10 01:41:42 +01:00 |
|
Irmen de Jong
|
da352a322c
|
reducing dependencies
|
2022-03-10 01:27:27 +01:00 |
|
Irmen de Jong
|
7d20458e82
|
fixed arrayliteral regression
|
2022-03-10 01:02:40 +01:00 |
|
Irmen de Jong
|
5a54066f81
|
unravel more dependency of SymbolTable on the ASt nodes (Expression), and fix initializing zp-allocated array
|
2022-03-09 01:42:05 +01:00 |
|
Irmen de Jong
|
9872f43cbf
|
repeat-forever loop is now replaced by label+jump
|
2022-03-08 03:25:34 +01:00 |
|
Irmen de Jong
|
db7ae028b2
|
simplified CompilationResult a bit
|
2022-03-07 21:41:12 +01:00 |
|
Irmen de Jong
|
f7aa0c45df
|
optimize imports
|
2022-03-05 15:54:42 +01:00 |
|
Irmen de Jong
|
067283834a
|
got rid of old IVariablesAndConsts object
|
2022-03-05 14:40:41 +01:00 |
|
Irmen de Jong
|
496245c801
|
working on symboltable
|
2022-03-05 12:10:20 +01:00 |
|
Irmen de Jong
|
859ab36347
|
variables extraction moved to the very end, so no need anymore to change the table after the fact
|
2022-03-04 23:12:24 +01:00 |
|
Irmen de Jong
|
1d740c7c36
|
removed need to store ast scope on each zp allocated var, now uses scoped name to find them
|
2022-03-04 22:58:05 +01:00 |
|
Irmen de Jong
|
38beebe720
|
fix pipe check for number of args
|
2022-03-02 21:29:09 +01:00 |
|
Irmen de Jong
|
fc1c3c6808
|
working on altered pipe syntax
|
2022-03-02 20:58:38 +01:00 |
|
Irmen de Jong
|
96ba895b84
|
working on altered Pipe syntax
|
2022-02-27 02:42:28 +01:00 |
|
Irmen de Jong
|
df35dfe3bf
|
added atari XEX output format with default $2000 load address
|
2022-02-26 15:36:22 +01:00 |
|
Irmen de Jong
|
c5504c6657
|
added ATASCII encoding table for atari
|
2022-02-25 23:48:39 +01:00 |
|
Irmen de Jong
|
eeb3c968d6
|
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
|
2022-02-22 22:43:14 +01:00 |
|
Irmen de Jong
|
6a0551cea1
|
added 'atari' compiler target beginnings (Atari 800 XL)
also default char and string encoding now taken from compiler target
|
2022-02-22 00:52:35 +01:00 |
|
Irmen de Jong
|
553f3b45d2
|
compile time calculated values of sin/cos routines fixed to be identical to the results of the run-time functions
|
2022-02-21 21:30:42 +01:00 |
|
Irmen de Jong
|
21e9723bb2
|
allow the last term in a pipe statement to be a variable, rewrites this as var = <rest of pipe>
|
2022-02-21 02:33:19 +01:00 |
|