Commit graph

84 commits

Author SHA1 Message Date
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
2dc591f40d Optimized equality and non equality tests with zero in comparison.go 2025-11-06 07:09:19 +01:00