Commit Graph

1468 Commits

Author SHA1 Message Date
Irmen de Jong
c960246eee add some utility methods to PtNode to find the defining subroutine/block 2022-04-10 21:20:01 +02:00
Irmen de Jong
b6eb343234 moving string escaping out of antlr project 2022-04-10 17:31:30 +02:00
Irmen de Jong
a0face4a28 vm: implementing rol/ror 2022-04-09 11:13:49 +02:00
Irmen de Jong
a8cf9f5cc4 vm: syscalls can now return value 2022-04-05 20:46:34 +02:00
Irmen de Jong
8e4c0f7c22 vm: add sorting and reverse functions, fix value arg out of range errors 2022-04-05 17:48:49 +02:00
Irmen de Jong
d78bfcc35c vm: more optimal code when array index is constant value 2022-04-05 00:19:37 +02:00
Irmen de Jong
2b7c09e6ee vm: more optimal code for loops ending on 0 2022-04-05 00:08:38 +02:00
Irmen de Jong
036d9dbe59 got rid of unnecessary cast of boolean expressions by making their type dynamically adjust to byte or word 2022-04-04 23:43:55 +02:00
Irmen de Jong
1d342cc6af optimize cx16 textio.setcc()/setcc2() 2022-04-04 22:23:06 +02:00
Irmen de Jong
62b32b2211 todos 2022-04-03 22:56:13 +02:00
Irmen de Jong
5b3ccab7dc vm: support noreinit option 2022-04-03 17:19:50 +02:00
Irmen de Jong
d616cb283b vm: implemented Pipe expression 2022-04-03 15:25:32 +02:00
Irmen de Jong
6ff56dc0bb vm: implemented When 2022-04-02 19:04:12 +02:00
Irmen de Jong
1e63615592 tweaks 2022-04-02 18:04:41 +02:00
Irmen de Jong
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
20d06d9f9d fix return type error for asmsubs with >1 result values 2022-04-01 22:30:15 +02:00
Irmen de Jong
e2886e5303 x16 r39: update vtui lib and example 2022-04-01 21:09:40 +02:00
Irmen de Jong
c6cf330e70 fix bug in codegen for containment check in bytearrays and strings 2022-04-01 20:46:28 +02:00
Irmen de Jong
f7431f809e fix colorbars example issue with memcopy due to overlapping buffers 2022-04-01 00:54:06 +02:00
Irmen de Jong
ea43c34de8 x16 r39: fix screen colors after changing screen mode 2022-04-01 00:21:22 +02:00
Irmen de Jong
fb6e9fa58f x16 r39: fix textio routines for new vera memory layout 2022-03-31 23:47:11 +02:00
Irmen de Jong
86a7200012 x16 r39: cx16.screen_set_mode() -> cx16.screen_mode() 2022-03-31 18:17:28 +02:00
Irmen de Jong
6ddb7453e1 vm postincrdecr on array done 2022-03-31 02:13:20 +02:00
Irmen de Jong
ad2355f8d3 vm forloop done 2022-03-31 01:41:59 +02:00
Irmen de Jong
0a0c58d450 added for loop over constant ranges 2022-03-30 23:42:15 +02:00
Irmen de Jong
0dc592b819 working on vm 2022-03-30 22:23:25 +02:00
Irmen de Jong
f46300016d working on vm 2022-03-30 01:58:31 +02:00
Irmen de Jong
3e1a7c6102 fix vm signed comparisons 2022-03-29 00:57:33 +02:00
Irmen de Jong
f07065bf84 some x16 example changes to use the improved mode $80 screen resolution 2022-03-28 22:30:34 +02:00
Irmen de Jong
6d79903eb3 workin on vm issues 2022-03-28 01:49:43 +02:00
Irmen de Jong
bb1bf6a88c working on vm 2022-03-28 00:40:15 +02:00
Irmen de Jong
30cbb6c9a8 implementing more of the vm 2022-03-27 21:59:46 +02:00
Irmen de Jong
4e33ab1e89 cx16 target: update float routine addresses to new r39 kernal FP package 2022-03-27 19:34:49 +02:00
Irmen de Jong
5494f309c0 working on vm 2022-03-27 17:46:15 +02:00
Irmen de Jong
3b6e7eccdd simplified containment check, only possible on string and arrays (as per the docs) 2022-03-27 16:59:55 +02:00
Irmen de Jong
e41d6787bb working on vm 2022-03-27 14:23:01 +02:00
Irmen de Jong
ed30108961 removed '**' power-operator. Use floats.pow() instead. 2022-03-27 13:16:34 +02:00
Irmen de Jong
12712ef812 working on vm 2022-03-27 11:48:44 +02:00
Irmen de Jong
0307f6b42c working on vm 2022-03-25 20:22:41 +01:00
Irmen de Jong
b5331d821c fix string encoding for escaped characters 2022-03-25 00:17:41 +01:00
Irmen de Jong
27f6d47efa working on vm codegen 2022-03-24 23:26:57 +01:00
Irmen de Jong
06b38506d1 working on vm translator 2022-03-22 01:43:02 +01:00
Irmen de Jong
fd581ffc37 moved pattern_match() from prog8_lib to string module 2022-03-21 21:32:10 +01:00
Irmen de Jong
7d2bf892b1 added start of virtual machine compilation target 2022-03-19 00:57:35 +01:00
Irmen de Jong
a99e77093f added syscall() builtin functions (only useful for experimental code gen) 2022-03-17 01:19:58 +01:00
Irmen de Jong
92737bb695 better handling of loadAddress 2022-03-13 16:21:02 +01:00
Irmen de Jong
9b81955544 optimizing new Ast 2022-03-13 11:49:07 +01:00
Irmen de Jong
4a0031080a getting rid of directives in new Ast 2022-03-13 00:30:20 +01:00
Irmen de Jong
40e9fba312 working on new Ast and XML export to test it 2022-03-12 22:38:16 +01:00
Irmen de Jong
e227cc92ff new ast: regular subroutine has just 0 or 1 return type 2022-03-12 14:12:06 +01:00
Irmen de Jong
abcdd331db started with a simulator 2022-03-10 21:23:00 +01:00
Irmen de Jong
0a04e626d7 added new intermediate (simplified) AST meant for new codegen 2022-03-10 21:21:15 +01:00
Irmen de Jong
a03c4c3659 working on symbol table 2022-03-04 22:26:46 +01:00
Irmen de Jong
38beebe720 fix pipe check for number of args 2022-03-02 21:29:09 +01:00
Irmen de Jong
fc1c3c6808 working on altered pipe syntax 2022-03-02 20:58:38 +01:00
Irmen de Jong
96ba895b84 working on altered Pipe syntax 2022-02-27 02:42:28 +01:00
Irmen de Jong
df35dfe3bf added atari XEX output format with default $2000 load address 2022-02-26 15:36:22 +01:00
Irmen de Jong
c5504c6657 added ATASCII encoding table for atari 2022-02-25 23:48:39 +01:00
Irmen de Jong
530e109433 added altirra as atari emu2 2022-02-25 19:16:37 +01:00
Irmen de Jong
6185d5eca1 Merge remote-tracking branch 'origin/master' 2022-02-24 22:52:08 +01:00
Irmen de Jong
891f870ec0 todo 2022-02-23 21:58:27 +01:00
Freddy
ad9933f0f6 fixed chrout for atari and added two examples 2022-02-23 16:42:22 +01:00
Irmen de Jong
eeb3c968d6 streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher. 2022-02-22 22:43:14 +01:00
Irmen de Jong
406658a10f reimplemented sys.memcopy and sys.memset on cx16 to work without kernal too 2022-02-22 21:07:19 +01:00
Irmen de Jong
6a0551cea1 added 'atari' compiler target beginnings (Atari 800 XL)
also default char and string encoding now taken from compiler target
2022-02-22 00:52:35 +01:00
Irmen de Jong
21e9723bb2 allow the last term in a pipe statement to be a variable, rewrites this as var = <rest of pipe> 2022-02-21 02:33:19 +01:00
Irmen de Jong
60b2c44a44 fix returntype handling of builtinfunctions, fix errors in pipe expressions 2022-02-21 01:44:29 +01:00
Irmen de Jong
c4fe3ecc0a refactor 2022-02-20 22:04:18 +01:00
Irmen de Jong
7a2164b4d0 introduced BuiltinFunctionCallStatement node for codegen 2022-02-18 23:27:11 +01:00
Irmen de Jong
0a43eae184 rework registerArgsViaStackEvaluation to use cpu hardware stack instead 2022-02-18 22:38:00 +01:00
Irmen de Jong
3117e2b2a3 more tweaks 2022-02-18 01:25:08 +01:00
Irmen de Jong
7aa807ec7f proper error if attempting to do a containment check against non const range, and some cleanup in asmgen 2022-02-16 00:39:19 +01:00
Irmen de Jong
4d16e1e14a now checks for invalid text encodings for given compilation target 2022-02-15 01:39:12 +01:00
Irmen de Jong
73fc18099e properly report duplicate label names 2022-02-15 00:39:10 +01:00
Irmen de Jong
2725c4ad4d slight tweaks to zp and allocator 2022-02-12 00:15:52 +01:00
Irmen de Jong
c8cd6e9460 removed old @"screencodes" string encoding syntax (use sc:"hello" instead) 2022-02-11 22:07:14 +01:00
Irmen de Jong
0cd27d6129 fix empty lines in subroutine ast printing 2022-02-11 21:44:38 +01:00
Irmen de Jong
c13b7fd883 report free/occupied Zeropage space at end of compilation 2022-02-10 21:59:44 +01:00
Irmen de Jong
41b1c80492 label name from memory() no longer interned as string var 2022-02-10 00:45:20 +01:00
Irmen de Jong
e5d7316e5d streamlining non-zpvars asmgen using new mechanism 2022-02-10 00:09:09 +01:00
Irmen de Jong
b043c3a6da streamlining vars asmgen using new mechanism 2022-02-09 21:58:25 +01:00
Irmen de Jong
98b2855b9c cleanups 2022-02-09 16:35:52 +01:00
Irmen de Jong
f3c52c409f variable zp allocation now only done in the allocator 2022-02-08 23:44:21 +01:00
Irmen de Jong
8c2e6971fc start using vars instead of callgraph (2) 2022-02-08 21:09:00 +01:00
Irmen de Jong
1903990f30 start using vars instead of callgraph 2022-02-08 20:40:10 +01:00
Irmen de Jong
7d67005709 more rewrite variable allocation 2022-02-08 20:40:10 +01:00
Irmen de Jong
6bdd81623f cleaning up AsmGen interface 2022-02-06 17:07:03 +01:00
Irmen de Jong
8ae3bad6f7 fix rts in empty asmsub 2022-02-06 05:05:58 +01:00
Irmen de Jong
77de99b383 rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen 2022-02-06 04:03:03 +01:00
Irmen de Jong
312949f336 added experimental codegen backend option 2022-02-05 21:42:03 +01:00
Irmen de Jong
30e1c3307c simplify SourceCode: just read the full text immediately. Also optimized imports. 2022-02-05 03:50:54 +01:00
Irmen de Jong
08e052380a comments 2022-02-05 03:14:26 +01:00
Irmen de Jong
548374ac2d fix: do proper sign exension when multiplying signed word and byte vars 2022-02-05 01:52:13 +01:00
Irmen de Jong
69b9dfa468 fix invalid recursion warning for code referencing subroutine but not via a call 2022-02-01 23:09:52 +01:00
Irmen de Jong
5c8c64242f callgraph: nameInAssemblyCode searches smarter (for unused()) 2022-02-01 00:33:05 +01:00
Irmen de Jong
f965804e6d fix invalid optimization of returning a parameter variable in a subroutine 2022-01-28 16:44:42 +01:00
Irmen de Jong
ec078eba72 optimize w=msb(w) => w>>=8, w=lsb(w) ==> w&=$00ff 2022-01-28 16:11:52 +01:00
Irmen de Jong
7b3cd71085 fixed improper optimization of word<<8 and word>>8 2022-01-28 13:54:06 +01:00
Irmen de Jong
06128b5d07 optimize word&=$ff00 and word&=$00ff 2022-01-28 13:40:28 +01:00
Irmen de Jong
5ecf2a3357 enable more optimizations for typecasted assignments. Fixed missing codegen for assigning bytes to words in certain cases. 2022-01-27 18:05:25 +01:00