Commit graph

85 commits

Author SHA1 Message Date
a1c9e16abe Fixed up so trying to read (from script) symlinks outside project folder result in error 2026-06-12 16:06:06 +02:00
9f24408a0b Added pragma to control number of steps in scripts and macros. Now that we support file loading some scripts might need more steps to process images or whatnot. 2026-06-12 15:12:34 +02:00
b2e9e3dc17 Added file loading (bin, text files) into SCRIPTS 2026-06-12 14:48:33 +02:00
d4f1213c06 Added meaningful error messages for Starlark code 2026-06-11 02:16:38 +02:00
205ae92d0e Optimized and, or and xor commands 2026-06-04 02:15:35 +02:00
1abad8bb92 Add experimental peephole optimizer with 5 passes, CLI flags, pragmas, and I/O region protection. 2026-06-04 01:21:10 +02:00
28723878b1 Optimizer removed redundant lda's 2026-06-04 00:05:24 +02:00
89bd30bfbd Fixed optimizer bugs 2026-06-03 23:23:54 +02:00
037d232c55 First naive version of optimizer 2026-06-03 21:51:29 +02:00
b6fce2a7f9 Fix pragma auto-removal for multi-FUNC groups sharing one FEND 2026-05-17 16:23:14 +02:00
411106ea36 Added pragma _P_ASM_AFTER_VARS to control is ASM blocks should be generated after everything else (vars and string constants) 2026-04-17 23:01:42 +02:00
59f056734f Added c65cm stdlib as embedded into the c65gm exe so it's completely self contained, for easy distribution. 2026-04-17 11:53:20 +02:00
5f25d66aeb bit shift operators prefer shifting in ACC if possible 2026-04-15 07:11:56 +02:00
822326f993 Optimizations of shift operators 2026-04-15 03:03:35 +02:00
0357df9873 Added right and left shift operators 2026-04-15 01:29:38 +02:00
bc6fdaf8f2 Also removing all function vars, consts and labels when a function is removed on pragma _P_REMOVE_UNUSED 2026-04-13 21:28:16 +02:00
bd4dc5d885 Updated tests so they work with new FuncHandler signature 2026-04-13 20:29:45 +02:00
652e147298 Added functionality to cull unused functions (by pragma _P_REMOVE_UNUSED) 2026-04-13 19:57:16 +02:00
4660b54d70 Added unused function warning. 2026-04-13 16:59:45 +02:00
51b9476a85 Fixed disabling some pragmas and test to go with them 2026-04-13 16:02:16 +02:00
2d2d665ebd Added pragma _P_IGNORE_UNUSED to suppress warnings for unused variables. 2026-04-13 15:13:21 +02:00
865930b161 Cleaned up bitfield handling so it's future proof (OR) 2026-04-13 13:36:59 +02:00
b400728893 Added so line numbers and source files are indicated on types declared but never used 2026-04-13 13:16:32 +02:00
0bfbfcdde5 Now unused vars seem to work 2026-04-13 12:57:27 +02:00
b25c11ae64 First commit refactoring and centralizing constant handling all over 2026-04-13 12:21:11 +02:00
4f4df41c18 Local variable expansion when calling macro 2026-03-04 22:32:53 +01:00
b614bcb043 Added the WORD <name> = @<label | variable> syntax. Initializes a WORD variable with the address of (pointer to) that symbol. 2026-02-24 23:04:58 +01:00
4acd8f2e87 Local variable expansion and macro expansion in ASM block now takes into account comments and ommits those. 2026-02-13 09:29:40 +01:00
83a0a20393 Added SCRIPT MACRO blocks 2026-02-11 13:56:21 +01:00
c6b67f8044 Added SCRIPT LIBRARY block for reusable StarLark code. 2026-02-11 13:25:07 +01:00
d717002b27 Updated FOR loop to do check at NEXT instead of at FOR handling edge cases 255 and 65536 better. Removed STEP 2026-01-11 14:45:15 +01:00
275f4782c8 Made error messages display the source and some context. 2026-01-03 12:05:02 +01:00
ebad3c2e16 Added call graph functionality and analysis/warning of absolute address variable reuse overlap 2026-01-02 15:15:57 +01:00
35e4b77ee3 optimized xor generation somewhat. 2026-01-02 14:10:53 +01:00
e33460d84d Added SWITCH/CASE/DEFAULT/ENDSWITCH 2025-12-19 22:56:16 +01:00
5f01282df5 Fixed so functions can do type conversion between in/out params and arguments. Lossy conversions give a warning now. 2025-12-12 14:11:31 +01:00
22e6759409 Minor optimization on FOR when assignment and loop var is the same 2025-11-27 16:25:33 +01:00
23a721217d Fixed up memlib.c65 and added errors to POKEW and PEEKW if using the same variable for pointer and value. 2025-11-22 11:26:19 +01:00
8f947f7149 Fixed func calls with string literal arguments and $-replacements in #DEFINE. memlib.c65 is still borked. 2025-11-21 16:27:57 +01:00
040c03467b Fixed to function without params can be called as myfunction() with empty parens 2025-11-21 10:59:51 +01:00
c6b3e619c3 Added xor (^) operator to constant expressions 2025-11-20 22:01:23 +01:00
1617297067 New syntax to PEEK and added tests 2025-11-20 20:19:45 +01:00
315be292bf Added sensible handling for byte iterators 2025-11-18 23:23:05 +01:00
4f51572477 Changed for to not implement DOWNTO. 2025-11-17 23:58:51 +01:00
ee74135839 Fixed up comparision operator for FOR 2025-11-17 22:58:58 +01:00
37296cf627 First non-working version of FOR/NEXT loops. (tests failing) 2025-11-17 22:19:20 +01:00
4b5f8b30b7 Renamed loop stacks to prepare for FOR loop 2025-11-17 21:20:29 +01:00
c8c1d7e705 Added support for absolute variable declarations in func declarations. 2025-11-17 20:40:24 +01:00
c543dde600 Changed binary prefix from ! to % (as acme) 2025-11-09 12:15:50 +01:00
d57a40a7cf Improved funchandler.go HandleFuncCall to handle consts and expressions better 2025-11-08 13:46:41 +01:00