Commit Graph

1732 Commits

Author SHA1 Message Date
Irmen de Jong
7607d3d64a check for unexecuted statements in blocks is now done for all blocks, not only main 2020-12-27 03:35:20 +01:00
Irmen de Jong
d7d7147d43 added error message when not using returnvalue of a functioncall 2020-12-27 02:28:40 +01:00
Irmen de Jong
b40e1eabb9 added memory() function for memory slab allocations 2020-12-27 02:28:30 +01:00
Irmen de Jong
3b8e18004c fixed callgraph issue that allocated ALL variables in a (library) module even though some clearly weren't used at all. Variables declared in block level scope in a library are still all allocated / defined due to the nature of a library module with lists of definitions 2020-12-27 01:02:36 +01:00
Irmen de Jong
4c03950c28 changed 'c64colors' module to 'palette' and added more general Cx16 palette manipulation routines in there. 2020-12-27 00:35:25 +01:00
Irmen de Jong
170a0183f8 added 'inline' keyword to force inlining of trivial subroutines 2020-12-26 05:34:14 +01:00
Irmen de Jong
c62ff16f8b added gfx2.text_charset() 2020-12-26 03:15:24 +01:00
Irmen de Jong
ab495fe6e1 added gfx2.text() 2020-12-26 02:25:53 +01:00
Irmen de Jong
c2a8dc23d0 R0-R15 register parameter optimization if loaded with byte instead of word 2020-12-25 22:30:40 +01:00
Irmen de Jong
6734ae3c88 imageviewer now uses gfx2 for full-screen graphics. gfx2 promoted to built-in library on the cx16 target. 2020-12-25 17:57:46 +01:00
Irmen de Jong
4c1c595f14 removed requirement of virtual regs R0-R15 to be at start of subroutine params 2020-12-25 15:43:48 +01:00
Irmen de Jong
9002c67639 cleanup of cx16 regs lists 2020-12-25 14:00:07 +01:00
Irmen de Jong
b91aabd3c0 max 16 subroutine params 2020-12-25 03:02:34 +01:00
Irmen de Jong
3307f673f6 optimized cx16.vpoke etc. to be asmsubroutines instead 2020-12-24 07:12:59 +01:00
Irmen de Jong
e0d2b60d8b added diskio.f_read_exact() 2020-12-24 06:24:52 +01:00
Irmen de Jong
80e3a11268 fix faulty word[x]-- , fix invalid stz addressing modes 2020-12-24 04:08:52 +01:00
Irmen de Jong
38a6c6a866 error message for too large repeat iteration count 2020-12-24 03:25:46 +01:00
Irmen de Jong
7d08380c7f added cx16.vaddr() 2020-12-23 05:04:19 +01:00
Irmen de Jong
f0f6150e18 fix problem with reuse of auto-indexer-variables that could result in wrong code for routines using multiple array indexings 2020-12-23 02:30:46 +01:00
Irmen de Jong
dc600cc3ed fix crash when printing Ast for asmsubroutine with multiple return values 2020-12-23 02:03:27 +01:00
Irmen de Jong
ae648b8a0a subroutines can now be defined even within regular code and will not disrupt the generated code anymore (they are moved to the end of their scope by the compiler) 2020-12-23 01:55:47 +01:00
Irmen de Jong
583af3bd4f additional vpoke operations to do or,and,xor in one go without the need for a separate vpeek 2020-12-23 01:02:43 +01:00
Irmen de Jong
d65cfbf093 fixed math.mul_word_40 that was actually doing *80... 2020-12-23 00:54:11 +01:00
Irmen de Jong
118aed2e31 optimized code for 65c02 when setting constant 0 value 2020-12-22 17:59:47 +01:00
Irmen de Jong
d6444bba66 don't remove 'double' assignments that are actually doing something like calling a function 2020-12-22 12:52:55 +01:00
Irmen de Jong
5a2f8fdfe1 asm-subroutines that ONLY return a value in the Carry or Overflow status register can now be used in an assignment to store that value. 2020-12-22 12:44:03 +01:00
Irmen de Jong
bba4f84503 added target() function 2020-12-22 06:13:14 +01:00
Irmen de Jong
684e081399 optimized register save/restore on Cx16 cpu target 2020-12-22 05:59:01 +01:00
Irmen de Jong
96c700ee46 only save A's value if needed for a return value 2020-12-22 05:43:02 +01:00
Irmen de Jong
a40b3134f4 fix clobbering of A when restoring X or Y from stack 2020-12-22 04:52:46 +01:00
Irmen de Jong
c70b4daf87 cleanup obsolete routine 2020-12-22 03:40:44 +01:00
Irmen de Jong
928611eb20 Got rid of problematic attempts to save status register after function calls. If you really need it (for instance for if_XX instructions) it's probably better to use a short asmsub wrapper.
For function calls, register saves go via stack (to allow nested saves) for simpler cases, registers are saved in a local variable.
Fixed too agressive removal of sta-lda sequence if the lda is followed by a branching instruction.
Insert missing cmp #0 after functioncall if the value of the A register is needed in a comparison expression (could otherwise test wrong status flag)
2020-12-22 03:35:00 +01:00
Irmen de Jong
f1d55c688a cx16 registers should come first in subroutine arg list 2020-12-22 00:59:07 +01:00
Irmen de Jong
d22df22f7d fix examples for cx16 register syntax 2020-12-21 23:45:26 +01:00
Irmen de Jong
061e1be0a4 removed ROM-float optimizations, too troublesome. Fixed LOG2 not being defined on Cx16 as well. 2020-12-21 23:22:02 +01:00
Irmen de Jong
950bc4b937 cx16 virtual registers R0-R15 also available on C64 target (although in a different location in memory) 2020-12-21 21:04:29 +01:00
Irmen de Jong
dcb81e6bea adding CommanderX16 virtual registers language support, rewrite cx16 examples 2020-12-21 20:38:00 +01:00
Irmen de Jong
daaa83ee7d improved parsing of cpu registers (no more crash when invalid register) also adding CommanderX16 virtual registers language support 2020-12-21 19:19:53 +01:00
Irmen de Jong
b7c1450121 upgrade to Antlr 4.9 2020-12-21 19:19:04 +01:00
Irmen de Jong
787f52d1f8 doc 2020-12-21 18:28:10 +01:00
Irmen de Jong
50213f146a undefined symbol errors are no longer reported one at a time but all at once 2020-12-21 13:03:56 +01:00
Irmen de Jong
8b630798d8 documented the subroutine calling convention 2020-12-19 03:18:40 +01:00
Irmen de Jong
52e8a44517 version 5.4 2020-12-15 22:59:02 +01:00
Irmen de Jong
59f33658ad removed the rom path argument for launching the x16emu which made it fail on a non-Linux system 2020-12-15 22:51:10 +01:00
Irmen de Jong
0baa2c8b23 fix oversight in binexpr operand swap that could result in suboptimal code 2020-12-14 21:37:40 +01:00
Irmen de Jong
4977d1fbd5 bit shift expressions are "expanded" to the target value's datatype, now also for subroutine arguments.
implemented word bit shifts by variable number of bits.
2020-12-14 20:44:48 +01:00
Irmen de Jong
3b7a92f1b4 adding strcopy() 2020-12-14 17:26:17 +01:00
Irmen de Jong
8b75ceb412 diskio.list_files now has a bigger buffer to store more filenames (around 30-40 max) 2020-12-14 14:29:42 +01:00
Irmen de Jong
c39fc4010d textio.clear_screen() now uses kernal routine to clear the text screen, this also resets the cursor to top left. 2020-12-14 14:28:53 +01:00
Irmen de Jong
8df778a515 fixed crash when importing modules from the same directory as the main program 2020-12-14 13:14:12 +01:00
Irmen de Jong
e221d674d9 pcxviewer done 2020-12-13 01:32:03 +01:00
Irmen de Jong
251f947293 fixed parameter signature for FB_set_8_pixels_opaque() (docs are wrong) 2020-12-12 03:32:01 +01:00
Irmen de Jong
43c0afdea0 fixed strlen() to work on arguments other than just a variable 2020-12-11 23:32:29 +01:00
Irmen de Jong
34babfb5de added diskio.list_files(). ci-viewer now loads all *.ci files it finds. 2020-12-11 22:36:14 +01:00
Irmen de Jong
8dcd49934a added progend() builtin function 2020-12-10 23:33:45 +01:00
Irmen de Jong
bedc3bdb56 allow bit shifting to be as large as the target variable's datatype 2020-12-10 22:49:27 +01:00
Irmen de Jong
83ceb0fde9 optimize various simple cases for '**' (pow) like 2**x => bitshift 2020-12-10 22:37:12 +01:00
Irmen de Jong
1d299c56e0 fix float '**' (pow) on cx16 2020-12-10 22:19:07 +01:00
Irmen de Jong
0d735c2ccc workaround for FB_set_pixels bug 2020-12-10 21:51:32 +01:00
Irmen de Jong
cf1e8b194a fix compiler crash for expressions of the form x = x and y (the logical booleans, not the bitwise) 2020-12-10 03:12:32 +01:00
Irmen de Jong
74e5644f55 working on CI viewer 2020-12-10 03:00:37 +01:00
Irmen de Jong
b5dc5fc615 added iterative file loading to diskio 2020-12-10 00:58:59 +01:00
Irmen de Jong
7549ddcd2b added TODOs for missing assignments 2020-12-10 00:03:20 +01:00
Irmen de Jong
08f0303178 diskio status() now returns the status string instead of printing it 2020-12-10 00:02:21 +01:00
Irmen de Jong
0d7a291b81 regenerated example disk , version 5.3 2020-12-08 23:15:31 +01:00
Irmen de Jong
2265ae9600 optimized setting word values into array if index is fixed number 2020-12-08 22:54:20 +01:00
Irmen de Jong
cba502e87a fixed crash when trying to assign a string literal to an array element in a string-array 2020-12-08 22:27:42 +01:00
Irmen de Jong
ac94236614 fixed compiler crash when declaring a str(pointer) array without initializer 2020-12-08 22:19:11 +01:00
Irmen de Jong
ddf1be2a13 status condition couldn't properly be tested because restoring the X register clobbers the status flag 2020-12-08 22:15:07 +01:00
Irmen de Jong
b7694686c2 optimized code for branches containing just a goto or break statement 2020-12-08 22:00:52 +01:00
Irmen de Jong
63332c0530 fix wrong branch instructions for some if_xxx 2020-12-08 21:29:40 +01:00
Irmen de Jong
8a504f8eee fixed compiler crash: when passing the name of a subroutine instead of an array or string to an UWORD parameter
now allows taking the address of a subroutine &routine
2020-12-08 21:17:31 +01:00
Irmen de Jong
106fc5daa4 tweak 2020-12-08 03:39:45 +01:00
Irmen de Jong
7accb73993 iterative file listing instead 2020-12-08 03:34:45 +01:00
Irmen de Jong
e9aa6a0956 TODOs 2020-12-08 02:20:24 +01:00
Irmen de Jong
df20467e03 completed diskio file lister 2020-12-08 02:16:41 +01:00
Irmen de Jong
ecbd9d739e completed diskio file lister 2020-12-08 01:34:08 +01:00
Irmen de Jong
8af17c295a fixed diskio directory block sizes 2020-12-08 01:02:38 +01:00
Irmen de Jong
329b28cad1 making diskio.listfiles 2020-12-07 23:49:34 +01:00
Irmen de Jong
452c29574d added optimized mul 320 routine 2020-12-07 22:55:16 +01:00
Irmen de Jong
260bcd3a55 added syntax error for non-constant array size declaration 2020-12-06 17:02:56 +01:00
Irmen de Jong
6b5211ad12 tweak word shift unroll 2020-12-06 08:36:19 +01:00
Irmen de Jong
a92ec14989 use 'stz' more often on 65c02 cpu (cx16) 2020-12-06 08:30:13 +01:00
Irmen de Jong
b3348eb22b formatting 2020-12-06 07:52:58 +01:00
Irmen de Jong
4b53641e1d optimized text screen clear/fill and scrolling on c64 2020-12-06 01:16:31 +01:00
Irmen de Jong
00071d53d5 optimized disc (filled circle) drawing on c64, fixed off by 1 disc width in cx16 version 2020-12-06 00:33:32 +01:00
Irmen de Jong
6902834568 remove dummy argument for txt.scroll_XXXX() functions on cx16 2020-12-06 00:19:47 +01:00
Irmen de Jong
fa2d87f3dd optimized disc (filled circle) drawing on cx16 2020-12-06 00:01:19 +01:00
Irmen de Jong
44019d1a61 strings and arrays are no longer directly assignable to an UWORD, you need an explicit & (address-of) now 2020-12-03 18:39:32 +01:00
Irmen de Jong
6f74fb49bd added c64colors module. added vpeek/vpoke to cx16 syslib. koalaviewer example now uses better c64 color palette. 2020-12-03 18:14:49 +01:00
Irmen de Jong
3e63a29c59 diskio now properly closes files after a load or save 2020-12-03 16:01:58 +01:00
Irmen de Jong
261c0fc9b6 started adding syntax highlighting files 2020-12-02 20:48:50 +01:00
Irmen de Jong
895b30f7e5 version 5.2 2020-12-01 22:49:08 +01:00
Irmen de Jong
b985604e22 slight tweak to word bitshift for large shift values 2020-12-01 22:48:02 +01:00
Irmen de Jong
f7953e4ef3 fix float comparison error that creeped in with no longer using the stack for that 2020-12-01 22:19:03 +01:00
Irmen de Jong
63483d1f0e warnings, errors and todos 2020-12-01 03:24:06 +01:00
Irmen de Jong
8b981f03bf optimized reg_lesseq_w (word <= word) to avoid using extra zp word, by swapping operands 2020-12-01 02:09:48 +01:00
Irmen de Jong
d0d0910bf2 corrected greatereq_w (word >= word) 2020-12-01 01:57:12 +01:00
Irmen de Jong
b8bda867b6 optimized reg_lesseq_w (word <= word) 2020-11-30 02:26:00 +01:00
Irmen de Jong
05d3a2450c optimized reg_less_w (word < word) 2020-11-30 01:53:44 +01:00
Irmen de Jong
d40788adfa optimized in-place array element modification to use simpler assignment asm code 2020-11-28 00:44:38 +01:00
Irmen de Jong
83fbf86b1c no longer generate double assignment to the indexer var for in-place modifying array variable 2020-11-27 23:46:01 +01:00
Irmen de Jong
e876008427 tiny tweak of typecasting str to uword 2020-11-26 19:21:07 +01:00
Irmen de Jong
a74403c347 float typecasts optimization 2020-11-26 01:52:48 +01:00
Irmen de Jong
2f4c6c8697 float typecasts optimization 2020-11-26 01:39:27 +01:00
Irmen de Jong
238d8197f5 byte/word typecasts optimized even further to just use cpu registers (and fixed sign extending AY) 2020-11-26 01:33:45 +01:00
Irmen de Jong
53a600d87b fix typecasting of signed byte to signed word in a variable 2020-11-25 22:33:41 +01:00
Irmen de Jong
2a0ffaf45d started to optimize typecasts to use translateExpression() less 2020-11-25 00:17:42 +01:00
Irmen de Jong
936b046ed9 optimize word [operator] byte, without translateExpression() 2020-11-24 23:41:10 +01:00
Irmen de Jong
378dcfe351 fix computation error of word - byte 2020-11-24 22:23:16 +01:00
Irmen de Jong
0a330b9288 warmings 2020-11-24 22:21:54 +01:00
Irmen de Jong
a88b40d6c1 fix stack corruption with bitshifts 2020-11-24 21:58:14 +01:00
Irmen de Jong
09f25ffbd9 optimized in-place memory var modification, not using translateExpression() 2020-11-24 21:41:44 +01:00
Irmen de Jong
ab1232d742 optimized in-place float var modification, not using translateExpression() 2020-11-24 01:09:24 +01:00
Irmen de Jong
a7f56fe0fc remaining float comparisons with expression now without translateExpression() 2020-11-24 00:35:30 +01:00
Irmen de Jong
58a9452c36 fixed the YSCROLL graphics mode on the C64 (mistake in 5.1) 2020-11-23 23:05:51 +01:00
Irmen de Jong
6d8c4f403f updated Kotlin version to 1.4.20, updated targeted JDK version to 11 (LTS) 2020-11-23 22:28:24 +01:00
Irmen de Jong
88b80fed90 returning float values now via fac1 instead of stack 2020-11-23 22:14:45 +01:00
Irmen de Jong
acdbd0c391 todos for next version 2020-11-22 19:18:57 +01:00
Irmen de Jong
122796fbba version 5.1 2020-11-22 18:36:04 +01:00
Irmen de Jong
510ca042c9 stack tested for most example programs 2020-11-22 18:35:43 +01:00
Irmen de Jong
125f6205f2 optimizing assigning an array value to a var 2020-11-22 17:44:55 +01:00
Irmen de Jong
8136f3df5c float-const comparison optimizations 2020-11-22 16:54:02 +01:00
Irmen de Jong
38d06a7e94 optimized float var comparison without translateExpression() 2020-11-22 15:05:45 +01:00
Irmen de Jong
49db10539a optimized float var equality comparison without translateExpression() 2020-11-22 14:33:03 +01:00
Irmen de Jong
8efe4c6267 Fixed compiler watch to work with multiple compilation modules 2020-11-22 13:11:33 +01:00
Irmen de Jong
04d8bb8fbf Fixed compiler watch flag crashing when not used on a subdirectory. Fixes #20 2020-11-22 12:07:14 +01:00
Irmen de Jong
08aa13c90c rnd() functions marked as having (internal) side effect 2020-11-22 02:09:32 +01:00
Irmen de Jong
d1febc0208 all in-place byte assignments now without translateExpression() 2020-11-22 01:38:53 +01:00
Irmen de Jong
5980e58ac6 word comparison jumps now without translateExpression() 2020-11-22 01:15:05 +01:00
Irmen de Jong
e1dc283d4b byte comparison jumps now without translateExpression() 2020-11-21 23:31:26 +01:00
Irmen de Jong
8be234973c rollback failed optimization of memory expressions (code size got too large) 2020-11-21 19:09:02 +01:00
Irmen de Jong
7def8ff2cd beginning to optimize comparisons more 2020-11-21 18:44:17 +01:00
Irmen de Jong
7e0f7ba438 todos 2020-11-20 23:46:14 +01:00
Irmen de Jong
fefd9b52a8 fix for loop with signed byte loopvar over non-const 2020-11-20 22:54:24 +01:00
Irmen de Jong
afd155ac4f optimize for loops over non const range, without translateExpression() 2020-11-20 22:44:16 +01:00
Irmen de Jong
ee724eb4f1 float variable casts without translateExpression() 2020-11-19 22:58:38 +01:00
Irmen de Jong
2f1f20ea11 rename 2020-11-19 00:28:49 +01:00
Irmen de Jong
063bcf17d8 various inplace modification for word vars now without translateExpression() 2020-11-19 00:08:10 +01:00
Irmen de Jong
72509eef44 inplace modification for memory now without translateExpression() 2020-11-18 23:23:06 +01:00
Irmen de Jong
2da28864e9 inplace not and invert for memory now without translateExpression() 2020-11-18 23:13:07 +01:00
Irmen de Jong
4278f64682 fixed invalid value push for memreads with expression 2020-11-18 22:45:04 +01:00
Irmen de Jong
59ae3c3fcd << and >> for byte values slightly optimized, no longer use translateExpression(). preparing for more operator optimizations. 2020-11-18 01:27:02 +01:00
Irmen de Jong
7fa21fbdff @(...) in an expression is now more efficient, without translateExpression() 2020-11-18 00:58:04 +01:00
Irmen de Jong
e95af7498e comparing function call result to 0 now more efficient, without translateExpression() 2020-11-18 00:05:48 +01:00
Irmen de Jong
79c75adac1 repeat and when without translateExpression() 2020-11-17 23:52:13 +01:00
Irmen de Jong
d212f69d89 ++/-- and @Pc without translateExpression() 2020-11-17 23:40:42 +01:00
Irmen de Jong
edf5e69d39 optimized swap() 2020-11-15 18:04:54 +01:00
Irmen de Jong
574eb0d174 refactoring asmassignment code blocks into utility functions 2020-11-15 17:44:47 +01:00
Irmen de Jong
8bd4914e2f fix stack error for float casts 2020-11-15 17:34:27 +01:00
Irmen de Jong
5ebaaff64b refactoring asmassignment code blocks into utility functions 2020-11-15 15:07:55 +01:00
Irmen de Jong
5c9e0c9f51 emit extra nop for breakpoints so vice label list works again (requires 64tass 1.55.2257 or newer!) 2020-11-15 14:31:06 +01:00
Irmen de Jong
d29ce78c86 todos and version 2020-11-10 22:44:48 +01:00
Irmen de Jong
94bc9d7a69 string compare in expression no longer via stack args 2020-11-10 21:48:28 +01:00
Irmen de Jong
e8faec0932 re-introduced more aggressive binexpr splitting optimization 2020-11-10 21:17:33 +01:00
Irmen de Jong
4825b4dc68 fix passing address of pass-by-reference assignment to a UWORD 2020-11-10 00:35:24 +01:00
Irmen de Jong
8d0607ef58 fix missing float casts 2020-11-09 23:57:50 +01:00
Irmen de Jong
225295a7d8 fix float casts 2020-11-09 01:18:22 +01:00
Irmen de Jong
4cd74daf53 float eval result var added, but some examples are broken 2020-11-08 18:54:02 +01:00
Irmen de Jong
d0bd2f522c rol and ror 2020-11-07 00:56:54 +01:00
Irmen de Jong
661c757236 fix string compare in expressions 2020-11-06 22:59:56 +01:00
Irmen de Jong
aaa20093ef cleaning up and correcting cc for builtin functions 2020-11-06 00:56:26 +01:00
Irmen de Jong
1eecdd6fa3 fix error when taking address of struct var 2020-11-05 02:39:04 +01:00
Irmen de Jong
800b5b2a43 cleaning up and correcting cc for builtin functions 2020-11-05 02:29:33 +01:00
Irmen de Jong
9d17421c66 implemented the arithmetic functions with new cc. fixed sgn(). 2020-11-04 02:27:29 +01:00
Irmen de Jong
0edd50e956 implemented cc for abs() 2020-11-03 23:01:23 +01:00
Irmen de Jong
288d4f08b3 implemented cc for integer sin and cos variants 2020-11-03 22:42:59 +01:00
Irmen de Jong
526e4b8bdc fix faulty binexpr splitting 2020-11-03 21:31:08 +01:00
Irmen de Jong
e0c5ccc16b begun with converting builtin functions to new call convention 2020-11-02 23:00:20 +01:00
Irmen de Jong
ebc2c614d7 use non-stack call conv for builtin functions 2020-11-02 19:59:27 +01:00
Irmen de Jong
29f5a85158 callconv 2020-11-01 19:25:23 +01:00
Irmen de Jong
8af2380a47 pair 2020-11-01 18:00:20 +01:00
Irmen de Jong
431f2a2088 optimized memset and memcopy on CX16, memcopy can deal with any size now 2020-11-01 08:00:32 +01:00
Irmen de Jong
e05ea887f6 implement proper returning of float values via FAC1 2020-11-01 06:27:17 +01:00
Irmen de Jong
95c0425151 improved sqrt16 2020-11-01 05:45:49 +01:00
Irmen de Jong
e7b75d591c assigning float results from functions (from FAC1) 2020-10-31 01:22:19 +01:00
Irmen de Jong
99f7d469f4 assigning string result from subroutine 2020-10-30 22:22:06 +01:00
Irmen de Jong
5f337a0bd9 fix typecheck of multiple returnvalues 2020-10-30 21:45:37 +01:00
Irmen de Jong
87862f772a better handling of inferred type errors 2020-10-30 21:24:49 +01:00
Irmen de Jong
3ab641aa21 removed @stack in subroutine args and returnvalues, can only use variables or registers now 2020-10-30 15:02:42 +01:00
Irmen de Jong
3efa8da8e0 made versions of various builtin funcs returning value in registers 2020-10-30 14:35:20 +01:00
Irmen de Jong
3e28ed4fe4 mader versions of abs() and sgn() returning value in register 2020-10-28 22:56:13 +01:00
Irmen de Jong
44949460ed change for subroutine return values via registers instead of stack 2020-10-28 00:29:34 +01:00
Irmen de Jong
83cc19ad6f preparing for subroutine return values via registers instead of stack 2020-10-23 20:56:10 +02:00
Irmen de Jong
66bb98c479 fixed bugs in code assigning values from eval stack 2020-10-23 03:45:09 +02:00
Irmen de Jong
ff3f985658 refactoring 2020-10-22 23:41:16 +02:00
Irmen de Jong
3eaf111e7d added 'slowwarn' cli option 2020-10-20 21:38:37 +02:00
Irmen de Jong
30da26b9a9 tackling problem of invalid reuse of auto indexer var 2020-10-20 21:23:43 +02:00
Irmen de Jong
e35ad0cc8f code cleanups 2020-10-20 17:54:16 +02:00
Irmen de Jong
1a36302cf1 rest of optimizations following simplification of array indexer 2020-10-19 23:57:00 +02:00
Irmen de Jong
82a28bb555 extra attempt to simplify add and subtract with negative numbers 2020-10-19 23:01:32 +02:00
Irmen de Jong
c1ce0be451 slightly optimize expression code for most common cases +/- 1 , */div 2 2020-10-19 22:50:38 +02:00
Irmen de Jong
c0a5f8fef0 removed double mul code 2020-10-19 21:32:44 +02:00
Irmen de Jong
702cf304d0 implemented missing swap() operations 2020-10-19 21:26:11 +02:00
Irmen de Jong
4dee8b6048 remove superfluous value eval 2020-10-19 02:38:26 +02:00
Irmen de Jong
ec665e0cc1 fixed incorrect removal of certain assignments that are NOT double 2020-10-19 02:16:23 +02:00
Irmen de Jong
aec3b82476 fixed bitshifting by more than the number of bits in the value 2020-10-19 02:05:01 +02:00
Irmen de Jong
e83796b5b9 fixed bit shifting by 0. optimized bitshifting code. 2020-10-18 17:12:52 +02:00
Irmen de Jong
8eb69d6eda vardecl with initializer expression are now optimized again (unless floats) 2020-10-18 16:15:05 +02:00
Irmen de Jong
b9706a180b fix array indexer bug 2020-10-18 13:49:53 +02:00
Irmen de Jong
8aeb8a9bb7 reintroduce expressions for array indexing 2020-10-18 13:33:11 +02:00
Irmen de Jong
8f2e166a22 annotated some high prio todos 2020-10-17 22:57:54 +02:00
Irmen de Jong
fdd91170dc allow simple binary expressions as array indexing too, but not more 2020-10-17 22:43:35 +02:00
Irmen de Jong
157484d94b adapted p8 code to restricted array indexing 2020-10-17 19:57:55 +02:00
Irmen de Jong
7626c9fff7 only allow array indexing via a number, or a variable (eliminate complex expression calcs for array indexing, force explicit use of an index variable) 2020-10-17 19:57:55 +02:00
Irmen de Jong
1f55f9fc49 removed 2 problematic ZP locations for the C64 2020-10-17 19:57:10 +02:00
Irmen de Jong
7cb4100419 string can be compared directly (uses strcmp() automatically in asm) 2020-10-17 02:01:00 +02:00
Irmen de Jong
2d3b7eb878 started making string compares use strcmp() automatically 2020-10-17 01:11:01 +02:00
Irmen de Jong
4d01a78731 introduced strcmp() builtin function 2020-10-16 19:00:06 +02:00
Irmen de Jong
a03e36828a fixed lines in assembly source optimizer 2020-10-16 01:48:03 +02:00
Irmen de Jong
9fb8526136 added conv.bin and hex string to number 2020-10-15 23:47:10 +02:00
Irmen de Jong
26fc5ff5e2 preparing conv.bin and hex string to number 2020-10-15 23:10:28 +02:00
Irmen de Jong
5060f0bb19 fixed assigning a memory byte from an array 2020-10-15 22:15:00 +02:00
Irmen de Jong
4d68b508a2 proper error if variable name is the same as its subroutine or block (that would create naming problems in the assembly code) 2020-10-15 20:48:18 +02:00
Irmen de Jong
cd825e386d fix invalid address-of error when taking address of struct variable 2020-10-15 20:14:17 +02:00
Irmen de Jong
095c8b2309 corrected name and added cx16logo library module for fun 2020-10-15 00:58:41 +02:00
Irmen de Jong
8b6eb74c58 refactor 2020-10-14 23:43:38 +02:00
Irmen de Jong
aba437e5a2 diskio load and save use kernel routines for load and save, and don't bother with SEQ files 2020-10-14 22:33:49 +02:00
Irmen de Jong
5595564a1f todo strcmp 2020-10-14 01:22:43 +02:00
Irmen de Jong
439761cb67 fixed C64 ZP addresses to allow disk I/O, introduced diskio library module 2020-10-14 01:17:18 +02:00
Irmen de Jong
bee6c65293 fixed several bugs in the repeat assembly for loop sizes like 0 and 256 2020-10-13 21:48:15 +02:00
Irmen de Jong
10145b946b invalid repeat loop code is generated... 2020-10-13 16:27:40 +02:00
Irmen de Jong
ebf4b50059 reused existing CallGraph to check for recursion, which is now fixed. It's a warning too now. 2020-10-12 23:04:00 +02:00
Irmen de Jong
f2c19afd95 version 4.5 2020-10-11 21:47:41 +02:00
Irmen de Jong
ac693a2541 textelite buy and sell commands 2020-10-11 19:29:18 +02:00
Irmen de Jong
ec9e722927 added conv.str2byte and conv.str2ubyte 2020-10-11 18:36:20 +02:00
Irmen de Jong
b759d5e06a fixed X register corruption on Cx16 verions of float.GIVUAYFAY and GIVAYFAY 2020-10-11 17:46:19 +02:00
Irmen de Jong
c15fd75df7 asmassignment can now use arbitrary source symbols; optimized byte-word sign extesion with this to not use stack anymore 2020-10-11 15:44:08 +02:00
Irmen de Jong
73524e01a6 really fix byte-word sign extension for function args as expression 2020-10-11 03:07:45 +02:00
Irmen de Jong
9e54e11113 fixed string + string/ string * number 2020-10-11 02:34:04 +02:00
Irmen de Jong
01ac5f29db fix byte-word sign extension for function args as expression 2020-10-11 01:38:34 +02:00
Irmen de Jong
72b6dc3de7 avoid crash when optimizer has multiple replacements of the same node 2020-10-11 00:37:35 +02:00
Irmen de Jong
458ad1de57 fix strlen on uword (pointer) instead of str 2020-10-10 23:24:05 +02:00
Irmen de Jong
216f48b7c1 txtelite 2020-10-10 22:45:03 +02:00
Irmen de Jong
b2d1757e5a asmgen: byte to word sign extensions 2020-10-10 15:39:48 +02:00
Irmen de Jong
6e53eb9d5c asmgen: only generate storage byte for register saves in subroutine when it's actually needed 2020-10-10 15:02:56 +02:00
Irmen de Jong
bd237b2b95 it's now possible in more places to assign arrays and put array literals without the need to define explicit variable. 2020-10-10 04:30:28 +02:00
Irmen de Jong
1c8e4dba73 added \' escape character 2020-10-10 01:28:57 +02:00
Irmen de Jong
59c0e6ae32 added some more missing assignment codegens (word * byte etc) 2020-10-09 23:48:33 +02:00
Irmen de Jong
8bb3b3be20 fix repeat loop for variables when var == 0 2020-10-09 22:30:21 +02:00
Irmen de Jong
4be381c597 fixed compiler optimizer crash because of conflicting expression replacements 2020-10-09 21:51:54 +02:00
Irmen de Jong
c282b4cb9f code style 2020-10-07 23:24:30 +02:00
Irmen de Jong
c426f4626c added some more missing aug assign operator code 2020-10-07 22:53:18 +02:00
Irmen de Jong
0e3c92626e fixed handling of main module when importing another. fixed diskdir closedown. 2020-10-07 21:55:00 +02:00
Irmen de Jong
5099525e24 added missing register pair assignments. fixed compiler crashes 2020-10-07 03:43:02 +02:00
Irmen de Jong
e22b4cbb67 fixed invalid errormessage about memory mapped strings 2020-10-07 01:35:39 +02:00
Irmen de Jong
2b48828179 examples issues 2020-10-07 01:21:41 +02:00
Irmen de Jong
3e181362dd optimized code for processing return values from asmsubs without intermediate estack. 2020-10-07 00:51:57 +02:00
Irmen de Jong
71fd98e39e allow asmsub routines with multiple return values to be called (special case for return values in status register) 2020-10-07 00:33:42 +02:00
Irmen de Jong
f8b04a6357 added status return flags to some kernel i/o operations 2020-10-05 19:48:21 +02:00
Irmen de Jong
8408bf3789 another compiler crash fixed when dealing with functioncall returning a str 2020-10-04 21:53:08 +02:00
Irmen de Jong
d778cdcd61 another compiler crash fixed when dealing with functioncall returning a str 2020-10-04 21:11:42 +02:00
Irmen de Jong
90b303fc03 fix error message for invalid number of arguments 2020-10-04 19:28:22 +02:00
Irmen de Jong
a1f0cc878b correct error message for faulty string variable declarations 2020-10-04 19:13:19 +02:00
Irmen de Jong
f2e2720b15 compiler crash fixed when dealing with functioncall returning a str 2020-10-04 18:47:47 +02:00
Irmen de Jong
ec8cfe1591 make string-assignment actually work (using strcpy) 2020-10-04 18:18:58 +02:00
Irmen de Jong
22eac159e5 txtelite 2020-10-04 17:47:57 +02:00
Irmen de Jong
956b0c3fa7 added \xHH escape character to strings, allow strings of length zero. 2020-10-04 13:05:43 +02:00
Irmen de Jong
a6427e0949 added \$HH escape character to strings 2020-10-03 15:11:09 +02:00
Irmen de Jong
c4673d3a67 v4.4 2020-10-02 23:32:45 +02:00
Irmen de Jong
e83e021541 doc 2020-10-02 23:31:49 +02:00
Irmen de Jong
c1f2ecd413 struct assignment from array value now checks number of elements 2020-10-02 22:48:39 +02:00
Irmen de Jong
46fbe01df9 added codengeration for assigment of array of values to a struct variable (all members at once) 2020-10-02 22:37:52 +02:00
Irmen de Jong
8647a8290e fix code generation for using struct vars in arrays and such 2020-10-02 22:21:18 +02:00
Irmen de Jong
bac51f4b31 fix subtraction error for bytes 2020-10-02 21:30:32 +02:00
Irmen de Jong
582aab180a oops 2020-10-02 02:39:19 +02:00
Irmen de Jong
5fb714fcb2 expression splitter integrated into expression simplifier 2020-10-02 01:54:37 +02:00
Irmen de Jong
3994de77d0 fix expression splitter handling related to code ballooning 2020-10-02 01:49:55 +02:00
Irmen de Jong
24c8d1f1f4 expression splitter for vardecls with binexpr init expression 2020-10-02 00:34:12 +02:00
Irmen de Jong
110f877dcc binexpr expression splitter for assignments 2020-10-02 00:04:21 +02:00
Irmen de Jong
9cd3a9f8e8 fix isSameAs for ArrayIndexed expressions, and by extension, assignment.isAugmentable() 2020-10-01 23:26:43 +02:00
Irmen de Jong
1464050bf5 expression splitter moved to separate optimizer 2020-10-01 02:58:12 +02:00
Irmen de Jong
95e9e1b550 avoid adding unneeded variable initalization assignments. Improved removal of useless double assignments. 2020-10-01 00:39:49 +02:00
Irmen de Jong
bda1c1c1eb reduce slow estack usage by splitting up simple binary expressions 2020-09-30 19:57:16 +02:00
Irmen de Jong
d020a7974a reduce slow estack usage by splitting up simple binary expressions 2020-09-30 17:51:35 +02:00
Irmen de Jong
a51fad3aab parentheses around binary exprs in source output 2020-09-30 16:38:54 +02:00
Irmen de Jong
3cd32778bb don't split expressions referencing the target variable wrongly 2020-09-30 01:11:33 +02:00
Irmen de Jong
8d67056f84 fixed estack corruption caused by c64 print_f 2020-09-29 21:12:16 +02:00
Irmen de Jong
448c934cba optimized neg(x) and abs(x) 2020-09-29 03:58:17 +02:00
Irmen de Jong
96ef7ba55d fixed ast to source for structs 2020-09-29 00:28:11 +02:00
Irmen de Jong
4372de1e7e allow creating arrays of pointers to other arrays. Usefullness is very limited though... 2020-09-29 00:03:47 +02:00
Irmen de Jong
af0fb88adf allow creating string arrays. Fixed array index scaling for word arrays. 2020-09-28 02:23:36 +02:00
Irmen de Jong
b6f85d10b0 reintroduced system reset at program exit if zeropage is clobbered 2020-09-27 22:00:36 +02:00
Irmen de Jong
6f75413c09 some more optimizations in expressions with memreads 2020-09-27 21:43:40 +02:00
Irmen de Jong
d45fe4ce74 fixed invalid eval stack ptr issue 2020-09-27 20:55:34 +02:00
Irmen de Jong
e828c013e6 fix word+/-byte errors if byte was unsigned 2020-09-27 20:23:42 +02:00
Irmen de Jong
988459f744 don't generate a byte storage for every single time a register needs saving 2020-09-27 16:26:02 +02:00
Irmen de Jong
446fc35d5c avoid excessive comparisons for certain comparison expressions against zero 2020-09-27 03:55:59 +02:00
Irmen de Jong
bec9cc7047 asm store/load same optimizer back.... 2020-09-27 02:45:59 +02:00
Irmen de Jong
961380acb6 optimized float ==0 or 1 comparisons 2020-09-27 01:56:08 +02:00
Irmen de Jong
84c0685a60 fix faulty comparison optimization 2020-09-27 01:40:12 +02:00
Irmen de Jong
8c448e5bc2 finished optimized comparison asm generation 2020-09-26 19:55:04 +02:00
Irmen de Jong
b5fa6c2d0a library modules imported from embedded resource now contain proper file path (useful for error messages) 2020-09-26 19:30:17 +02:00
Irmen de Jong
09bd47f98b > 2020-09-26 19:02:29 +02:00
Irmen de Jong
7f69f9ce4f <= 2020-09-26 18:04:43 +02:00
Irmen de Jong
4179b4e543 all unsigned comparisons 2020-09-26 17:45:35 +02:00
Irmen de Jong
66364554c4 new comparisons testprog 2020-09-26 16:11:47 +02:00
Irmen de Jong
43f2448789 added (u)byte and (u)word '>' 2020-09-26 13:15:03 +02:00
Irmen de Jong
130cee1e70 tweak '<' code 2020-09-26 12:47:40 +02:00
Irmen de Jong
b976360248 fix fallthrough problem with 'when'. Fix too greedy asm optimization that caused conditional jumps to fail sometimes because the condition value wasn't loaded. 2020-09-26 00:22:55 +02:00
Irmen de Jong
225bfc4164 fix 16+8 bit add and sub sign extensions 2020-09-25 22:51:59 +02:00
Irmen de Jong
d7ceda4d82 removed the automatic system reset at program exit, this did't work with the new init code 2020-09-25 22:12:14 +02:00
Irmen de Jong
2809668ef4 new asm code for (u)word and (u)byte < 2020-09-24 23:08:36 +02:00
Irmen de Jong
bafb86e00b new asm code for (n)equals 2020-09-24 22:28:24 +02:00
Irmen de Jong
f5db31b8ff do..until condition can now refer to variables defined in the loop's inner scope. 2020-09-24 19:26:07 +02:00
Irmen de Jong
e1d0dbed0c do..until condition can now refer to variables defined in the loop's inner scope. 2020-09-23 23:24:32 +02:00
Irmen de Jong
1d1fe364d0 added %option no_sysinit to avoid having the system re-initialization code executed at the start of the program 2020-09-23 23:01:47 +02:00
Irmen de Jong
2b9316c4ff reworked program init logic so that it is included as the first thing inside main.start itself, to allow better stand alone asm 2020-09-23 22:29:21 +02:00
Irmen de Jong
b93d9ecd7e memtop cx16 2020-09-23 02:34:49 +02:00
Irmen de Jong
4daf75a8cc better checks for invalid %output and %launcher values. Added diskdir examples. 2020-09-23 00:22:36 +02:00
Irmen de Jong
af6731c9c8 preparing version 4.3 2020-09-22 21:50:56 +02:00
Irmen de Jong
25cf0d2b94 don't suggest a mult replacement routine to be used, faster ones are likely to require large tables 2020-09-22 21:19:01 +02:00
Irmen de Jong
9389791d91 created own circle and disc subroutines for cx16 because its rom routine is not yet implemented and just does a BRK 2020-09-22 02:52:09 +02:00
Irmen de Jong
aa8191d0a1 introduced graphics module wrapper for cx16 to make even more programs compatible 2020-09-22 02:21:16 +02:00
Irmen de Jong
0d5c78e875 introduced graphics module wrapper for cx16 to make even more programs compatible 2020-09-22 02:12:01 +02:00
Irmen de Jong
e8679ae03b fixed print_f on cx16. Some more examples are now multi-platform. 2020-09-22 01:45:51 +02:00
Irmen de Jong
d1d224b7fc fixed print_f on cx16. Some more examples are now multi-platform. 2020-09-22 01:34:05 +02:00
Irmen de Jong
df995f7bc9 fixed float zp problem on C64, added more zp locations to block list 2020-09-22 01:05:07 +02:00
Irmen de Jong
ffa38955d6 improved scroll_down and scroll_up to use VERA dual data ports instead of a copybuffer 2020-09-22 00:34:43 +02:00
Irmen de Jong
8d82fb6d8f added cx16 txt.scroll_right 2020-09-22 00:00:22 +02:00
Irmen de Jong
306770331a added cx16 txt.scroll_left 2020-09-21 23:39:25 +02:00
Irmen de Jong
d3f433c8cf specify VERA data port to use 2020-09-21 23:04:01 +02:00
Irmen de Jong
cf49cbd1f8 more consistent about the system reset routine 2020-09-21 22:35:07 +02:00
Irmen de Jong
8a99e75299 added cx16 txt.scroll_down 2020-09-21 22:06:48 +02:00
Irmen de Jong
2dbf849c82 added cx16 txt.scroll_up 2020-09-21 21:39:36 +02:00
Irmen de Jong
ba3dce0b4c optimized cx16 txt screen functions to use VERA autoincrement 2020-09-21 19:30:21 +02:00
Irmen de Jong
ca9588380a added cx16 txt.clear_screencolors 2020-09-21 18:42:28 +02:00
Irmen de Jong
de06353194 auto select correct library to import based on target, instead of having c64- and cx16- prefix variants
some programs are now 100% source compatible between C64 and Cx16 targets!
import libraries have been rena;med
2020-09-21 00:50:09 +02:00
Irmen de Jong
3ff3f5e1cc compiler errors in standard format so that you can click on them in IDE to jump to the line 2020-09-20 22:24:35 +02:00
Irmen de Jong
4b747859b3 types of constant values now actually follow their declared const var type 2020-09-20 01:14:53 +02:00
Irmen de Jong
2201765366 mult fixes 2020-09-20 00:17:33 +02:00
Irmen de Jong
dfa1d5e398 removed the ".w" word suffix (it confused the parser). 2020-09-19 23:27:40 +02:00
Irmen de Jong
ce9a90f626 updates to make c16txtio more complete 2020-09-19 23:00:47 +02:00
Irmen de Jong
2deb18beb2 tweaks to c64 txtio. Fixed expression evaluation of bitwise invert. 2020-09-19 22:37:24 +02:00
Irmen de Jong
0f7454059c tweaks to c64 txtio 2020-09-19 22:10:33 +02:00
Irmen de Jong
f9ba09ac4d todo 2020-09-19 17:39:46 +02:00
Irmen de Jong
4e74873eae better swap() code 2020-09-19 17:32:29 +02:00
Irmen de Jong
f0cd03d14f removed invalid duplicate name check about subroutine parameters 2020-09-19 16:04:04 +02:00
Irmen de Jong
f2b069c562 correction, we don't allow address-of as a value for memory mapped vars, improved the error message instead 2020-09-19 15:54:42 +02:00
Irmen de Jong
bc89306dc1 better detection of duplicate variable definitions 2020-09-19 15:46:51 +02:00
Irmen de Jong
5d900800f2 vardecl value inits must not be shuffled around but stay at their original line at all times 2020-09-18 22:24:26 +02:00
Irmen de Jong
def06dbc0b allow address-of to be used as a value for a memory pointer variable 2020-09-18 22:10:20 +02:00
Irmen de Jong
9b66a597bb array literal const check added 2020-09-18 21:30:59 +02:00
Irmen de Jong
f1ee3b4e60 version 4.2 2020-09-16 23:04:18 +02:00
Irmen de Jong
6395e39d63 avoid generating superfluous '0' variable initializations, and fix erroneous vardecl order shifting 2020-09-16 22:15:06 +02:00
Irmen de Jong
2a6d9d7e31 more optimal codegen for some typecasts 2020-09-15 03:26:57 +02:00
Irmen de Jong
32a7cd31da more optimal codegen for if statements 2020-09-15 00:31:44 +02:00
Irmen de Jong
dd4a56cb5f cx16 safe clobbers for now 2020-09-15 00:14:36 +02:00
Irmen de Jong
d110d1cb5f c64 system reset now banks kernel rom back in 2020-09-15 00:10:20 +02:00
Irmen de Jong
48858019b7 added the last of the optimized mul_word asm routines 2020-09-14 23:54:01 +02:00
Irmen de Jong
aff6b1fca5 added some more optimized mul_word asm routines 2020-09-14 23:03:18 +02:00
Irmen de Jong
d260182ef3 added some more optimized mul_byte asm routines 2020-09-14 22:06:40 +02:00
Irmen de Jong
e39a38b0d9 things 2020-09-13 21:04:51 +02:00
Irmen de Jong
82d7179c92 printf now uses proper zp addressing 2020-09-13 21:01:19 +02:00
Irmen de Jong
f42746ba06 reg_x removal: c64textio and c64lib. last one. 2020-09-13 20:52:29 +02:00
Irmen de Jong
1f69deaccd reg_x removal: c64floats 2020-09-13 20:44:55 +02:00
Irmen de Jong
ea8b7ab193 reg_x removal: math.asm and some others 2020-09-13 20:38:50 +02:00
Irmen de Jong
9938959026 reg_x removal: prog8lib 2020-09-13 20:25:30 +02:00
Irmen de Jong
d5e5485d2e fixed estack X corruption in float augmented assignments 2020-09-13 19:44:03 +02:00
Irmen de Jong
97b9c8f320 don't clobber A when trying to save X at functioncall 2020-09-12 19:04:44 +02:00
Irmen de Jong
35aebbc209 optimize unneeded type casts for register args 2020-09-12 02:48:16 +02:00
Irmen de Jong
81f7419f70 fix X register clobbering in asmfunc call, fixed graphics.plot() 2020-09-12 01:23:56 +02:00
Irmen de Jong
2f951bd54d tweaking cobra mk3 2020-09-11 19:46:11 +02:00
Irmen de Jong
836509c1d1 mult todos. 2020-09-10 00:53:35 +02:00
Irmen de Jong
949d536e42 mult todo's. Fixed wrong compilation target when compiling multiple files at once. 2020-09-10 00:26:35 +02:00
Irmen de Jong
f69b17e165 mult todo's 2020-09-10 00:07:06 +02:00
Irmen de Jong
49a0584c54 added a %target directive 2020-09-09 22:53:34 +02:00
Irmen de Jong
e21aa2c8f0 better naming of the optimized math mult routines 2020-09-09 22:16:37 +02:00
Irmen de Jong
40071b1431 fix compiler crash with adding too many typecasts to args. useless lsb() and msb() are optimized away. 2020-09-09 21:37:56 +02:00
Irmen de Jong
02e29e6990 added some preliminary clobber specs to some cx16 graphics calls, This fixes the 3d cube gfx 2020-09-07 04:06:46 +02:00
Irmen de Jong
e19de0901e Fix cx16 system reset. Added cx16 VIA registers. Fix cx16 VERA register widths. 2020-09-07 03:09:09 +02:00
Irmen de Jong
137d506e42 improve register arg passing again 2020-09-07 02:29:03 +02:00
Irmen de Jong
90c4a26d52 we don't implement asmsub params via @stack yet 2020-09-07 01:24:10 +02:00
Irmen de Jong
f378a8997b improved ability to use register X in asm subroutine fuction arguments 2020-09-07 00:25:51 +02:00
Irmen de Jong
1377bed988 fix assembly for cx16 when zp is not basicsafe 2020-09-06 17:58:05 +02:00
Irmen de Jong
8f9f947c42 fix some issues with float const 0.0 and 1.0 2020-09-05 02:07:41 +02:00
Irmen de Jong
37f6c2858f warning about attempt to put floats in zp 2020-09-05 01:45:58 +02:00
Irmen de Jong
13d7f239ab floating point 1.0 no longer referenced from ROM because cx16 doesn't have it. Added some more cx16 examples. 2020-09-05 00:17:58 +02:00
Irmen de Jong
a6f3c84e28 fix cx16 word sign extend in bitshift 2020-09-04 22:38:03 +02:00
Irmen de Jong
809917f13b version 4.1 2020-08-31 21:44:38 +02:00
Irmen de Jong
2b35498370 added CX16 txt.setcc and swirl examples that use it 2020-08-31 21:01:18 +02:00
Irmen de Jong
f45eabdd9e added CX16 VERA registers, made txt.fill_screen work on CX16 2020-08-31 18:23:52 +02:00
Irmen de Jong
438f3ee8d2 make GIVUAYFAY work (unsigned word to float) 2020-08-31 17:16:51 +02:00
Irmen de Jong
4bea31f051 fl_zero fix 2020-08-31 01:04:04 +02:00
Irmen de Jong
5eae7a2b93 tweak mandelbrots and c64 graphics plot() doesnt work with XY parameter 2020-08-31 00:36:40 +02:00
Irmen de Jong
364ef3e55c tweak cx16 mandelbrots 2020-08-31 00:03:05 +02:00
Irmen de Jong
e61818f194 tweak cx16 mandelbrots 2020-08-30 19:31:20 +02:00
Irmen de Jong
5d90871789 got floating points working in commanderx16, added txt.color() to set text color 2020-08-30 00:15:18 +02:00
Irmen de Jong
88a9e09918 got floating points working in commanderx16 2020-08-29 23:55:26 +02:00
Irmen de Jong
c50ecf6055 fix for loop asm creation with word loopvar 2020-08-29 02:05:24 +02:00
Irmen de Jong
a18de75da9 fix compiler loop and missing type checks on for loop range values 2020-08-29 01:48:41 +02:00
Irmen de Jong
e112dfd910 implemented signed byte and word division 2020-08-29 00:00:53 +02:00
Irmen de Jong
9154d8bd37 optimizing X register saving for 65c02 using phx/plx instead of zp location 2020-08-28 22:11:33 +02:00
Irmen de Jong
0b55372b3b cleanup cx16 things and added call signatures. c64graphics moved into built-in libraries. 2020-08-28 21:42:53 +02:00
Irmen de Jong
3ad7fb010f clearer about emulator 2020-08-27 21:09:59 +02:00
Irmen de Jong
a6f564ad88 version 4.0 2020-08-27 20:54:08 +02:00
Irmen de Jong
d97da3bb7b implemented almost all math operations 2020-08-27 20:47:22 +02:00
Irmen de Jong
a77d3c92ad implemented remaining float operations 2020-08-27 19:47:50 +02:00
Irmen de Jong
6d17e5307c fixed typecasting of const arguments once again 2020-08-27 19:06:27 +02:00
Irmen de Jong
4ffb194847 readme and version 2020-08-27 18:18:29 +02:00
Irmen de Jong
f08fc18ab5 renamed c64scr. to txt. 2020-08-27 18:10:22 +02:00
Irmen de Jong
9cec554f7c moved the type conversion routines to their own library file to avoid duplication 2020-08-26 20:52:38 +02:00
Irmen de Jong
08b25e610d commander x16 improvements 2020-08-26 19:34:12 +02:00
Irmen de Jong
e896d5a1a6 ver 2020-08-26 02:03:18 +02:00
Irmen de Jong
b939562062 added preliminary CommanderX16 machine target support. Fixed nullpointer when importing a missing file. 2020-08-26 01:56:26 +02:00
Irmen de Jong
256781bba5 added missing in-place bitwise operator code 2020-08-25 22:26:05 +02:00
Irmen de Jong
19705196d6 separate varnames and other symbol names 2020-08-25 22:08:52 +02:00
Irmen de Jong
3ce692bb10 even better machinetarget independence 2020-08-25 19:56:53 +02:00
Irmen de Jong
78bdbde3ae refer to ZP scratch constants from asm code via the global P8ZP constants as well 2020-08-25 19:44:08 +02:00
Irmen de Jong
8d8c066447 made the ZP and compilation target more generic 2020-08-25 19:32:31 +02:00
Irmen de Jong
5da9379c37 making zeropage more configurable for future different machine targets 2020-08-25 18:10:06 +02:00
Irmen de Jong
032d20ff37 added the missing stack assignments 2020-08-25 17:43:35 +02:00
Irmen de Jong
d19b17cbfe optimize strlen() 2020-08-25 17:31:47 +02:00
Irmen de Jong
4a4f8ff5db subroutine parameters can be allocated on the zp now as well 2020-08-25 16:47:21 +02:00
Irmen de Jong
0f9e167df3 proper name 2020-08-25 00:59:02 +02:00
Irmen de Jong
144199730f refactored and optimized load/store byte from pointervar 2020-08-25 00:18:33 +02:00
Irmen de Jong
4bb4eab3b2 cleanup 2020-08-24 23:18:46 +02:00
Irmen de Jong
cf9151f669 use AsmAssignment preferrably over creating new ast node for codegen 2020-08-24 22:45:43 +02:00
Irmen de Jong
aef4598cec comments 2020-08-24 02:56:22 +02:00
Irmen de Jong
3ada0fdf84 function call register args code consolidation, fix asm for loading word value from variable into register 2020-08-24 01:42:44 +02:00
Irmen de Jong
a5d97b326e bugfix byte array assignment 2020-08-24 00:48:19 +02:00
Irmen de Jong
2640015fb1 move 2020-08-24 00:26:26 +02:00
Irmen de Jong
6cd42ddafe cleanup 2020-08-23 23:28:25 +02:00
Irmen de Jong
1f17c22132 more array access optimizations 2020-08-23 22:36:49 +02:00
Irmen de Jong
5c62f612cc cleanup 2020-08-23 20:34:27 +02:00
Irmen de Jong
b9ca1c2e2c more uniform code for array indexing (all using scaled offset now) 2020-08-23 20:25:00 +02:00
Irmen de Jong
93b2ff2e52 fix postincrdecr on array value 2020-08-23 18:52:19 +02:00
Irmen de Jong
3991d23a69 refactoring 2020-08-23 18:20:57 +02:00
Irmen de Jong
1be139759c better names 2020-08-23 16:08:31 +02:00
Irmen de Jong
d0674ad688 better names, reorder 2020-08-23 14:36:24 +02:00
Irmen de Jong
ffb47458ff better names 2020-08-23 13:56:21 +02:00
Irmen de Jong
84ec1be8a4 assign type relax 2020-08-23 13:31:14 +02:00
Irmen de Jong
f4dafec645 assign type assert 2020-08-23 12:52:27 +02:00
Irmen de Jong
97ce72521d for arrays, use the element's datatype more instead of the array decl type 2020-08-23 12:03:52 +02:00
Irmen de Jong
d2f0e74879 use sourcetype 2020-08-23 11:31:33 +02:00
Irmen de Jong
d9e3895c45 start with yet another codegen restructure, this time to make the assignment of values even more explicit for the codegen 2020-08-23 02:05:01 +02:00
Irmen de Jong
5075901830 work 2020-08-22 23:39:27 +02:00
Irmen de Jong
f1193bb5a0 Better error message 2020-08-22 23:13:53 +02:00
Irmen de Jong
acc942f690 added some more asm code optimizations by splitting certain assignments 2020-08-22 22:53:21 +02:00
Irmen de Jong
e947067dcf fixed source code output issue 2020-08-22 22:23:00 +02:00
Irmen de Jong
bd9ebf4603 flipped the order of the parameters of mkword() so it's now mkword(msb, lsb) for easier readability 2020-08-22 21:13:38 +02:00
Irmen de Jong
ff54d6abd7 reorder const for all associative operators 2020-08-22 17:44:32 +02:00
Irmen de Jong
f40bcc219f better errormsg 2020-08-22 17:29:35 +02:00
Irmen de Jong
c6e13ae2a3 better error message 2020-08-22 17:12:09 +02:00
Irmen de Jong
89f46222d9 fix compiler crash when calling a non-subroutine 2020-08-22 17:01:47 +02:00
Irmen de Jong
b27cbfac5e removed lsl() and lsr() functions just use <<=1 and >>=1 2020-08-22 16:44:48 +02:00
Irmen de Jong
31c946aeeb bugfix 2020-08-22 16:39:17 +02:00
Irmen de Jong
bfc8a26381 implemented bit shifting for non-const amounts 2020-08-22 16:13:52 +02:00
Irmen de Jong
9d98746501 version 3.2 2020-08-21 18:02:49 +02:00
Irmen de Jong
70bab76b36 added plasma example 2020-08-21 17:58:43 +02:00
Irmen de Jong
9ec62eb045 fixed lsb(), fixed const value type mismatch, fixed and() const evaluation. 2020-08-21 16:26:40 +02:00
Irmen de Jong
12f841e30d just prints 2020-08-21 09:25:32 +02:00
Irmen de Jong
335599ed22 restored certain memoryread asm gen 2020-08-21 07:44:50 +02:00
Irmen de Jong
0b717f9e76 clear messages about slow expression code generation points 2020-08-21 05:45:39 +02:00
Irmen de Jong
e941f6ecca fix asm bug 2020-08-21 04:23:08 +02:00
Irmen de Jong
ef7744dbda asm fix 2020-08-21 04:02:10 +02:00
Irmen de Jong
c83a61c460 some float asm code added for in-place 2020-08-21 03:06:37 +02:00
Irmen de Jong
335684caf7 don't remove asmsub definitions... 2020-08-21 03:01:07 +02:00
Irmen de Jong
8d6220ce51 added most essential of the new in-place assignment code 2020-08-21 02:17:40 +02:00
Irmen de Jong
39ea5c5f99 fix parse error for <<= and >>= 2020-08-20 23:24:01 +02:00
Irmen de Jong
b03597ac13 fixed bug in operand equality comparison, could lead to compiler endless loop 2020-08-20 22:21:26 +02:00
Irmen de Jong
58f323c087 implemented missing memory postincrdecr codegen 2020-08-20 21:48:15 +02:00
Irmen de Jong
513a68584c implemented more optimized prefix expression codegen 2020-08-20 21:42:38 +02:00
Irmen de Jong
88d5c68b32 don't inc/dec a memory mapped register 2020-08-20 21:16:48 +02:00
Irmen de Jong
14f9382cf9 typecheck prefix expressions better 2020-08-20 20:46:28 +02:00
Irmen de Jong
cffb582568 added start of optimized in-place assignment code (for prefix expressions) 2020-08-20 18:43:10 +02:00
Irmen de Jong
e1812ce16c fix typecast removal error. 2020-08-20 18:07:48 +02:00
Irmen de Jong
7a3163f59a bugfix in direct memory assignment 2020-08-20 17:02:22 +02:00
Irmen de Jong
6f3b2749b0 refactoring assignments codegen 2020-08-20 16:47:43 +02:00
Irmen de Jong
c144d4e501 improved warnings about unreachable code 2020-08-20 14:28:17 +02:00
Irmen de Jong
edfd9d55ba added sizeof() function 2020-08-20 13:50:28 +02:00
Irmen de Jong
774897260e avoid silent type casts that remove precision (such as float -> word) 2020-08-20 12:49:48 +02:00
Irmen de Jong
65ba91411d improved function arg type checking and error message 2020-08-20 12:38:22 +02:00
Irmen de Jong
9cbb8e1a64 version 3.1 2020-08-18 16:26:23 +02:00
Irmen de Jong
53e9ad5088 better asm code for repeat loops 2020-08-18 16:02:40 +02:00
Irmen de Jong
cf6ea63fa6 forloop asm done 2020-08-18 15:29:39 +02:00
Irmen de Jong
1de0ebb7bc more forloop asm 2020-08-18 15:16:56 +02:00
Irmen de Jong
77c1376d6d proper error message for arrays that are declared too big 2020-08-18 14:47:52 +02:00
Irmen de Jong
353f1954a5 for loop codegen 2020-08-18 14:03:31 +02:00
Irmen de Jong
936bf9a05c gradle version 2020-08-18 00:47:23 +02:00
Irmen de Jong
4487499663 more forloop codegen 2020-08-17 23:42:43 +02:00
Irmen de Jong
3976cc26a2 more forloop codegen 2020-08-17 23:19:23 +02:00
Irmen de Jong
e6ff87ecd0 upgraded to Kotlin 1.4, fixed several compilation warnings 2020-08-17 19:36:07 +02:00
Irmen de Jong
c0887b5f08 removed 'continue' statement to be able to generate more optimized loop assembly code. started with for loop optimizations 2020-08-17 19:22:29 +02:00
Irmen de Jong
f14dda4eca fix certain corruption of A register argument on asm sub call 2020-08-16 19:15:44 +02:00
Irmen de Jong
bd7f75c130 loop todos 2020-07-30 02:54:37 +02:00
Irmen de Jong
fbe3ce008b slight expression rewrite in case of certain in-place assignments, to try to get the in-place variable operand to the leftmost position 2020-07-30 01:30:21 +02:00
Irmen de Jong
7ac6c8f2d1 todo related to in-place assignment 2020-07-27 00:32:59 +02:00
Irmen de Jong
fdfbb7bdf0 improved call arguments type check 2020-07-27 00:28:48 +02:00
Irmen de Jong
1c16bbb742 tweaks for string handling as arguments 2020-07-27 00:12:27 +02:00
Irmen de Jong
9735527062 cleanup double code 2020-07-26 23:46:06 +02:00
Irmen de Jong
402827497e fix float array assignment 2020-07-26 23:32:20 +02:00
Irmen de Jong
d32a970101 partly optimize assignments so that simple increments and decrements can be done via separate statements (postincrdecr) 2020-07-26 19:22:12 +02:00
Irmen de Jong
8a3189123a to reduce complexity, augmented assignment has been removed again from internal Ast and codegen for now. 2020-07-26 13:48:31 +02:00
Irmen de Jong
b37231d0f5 version 3.0 2020-07-26 01:33:02 +02:00
Irmen de Jong
3c55719bf1 finalize repeat asmgen 2020-07-26 01:32:27 +02:00
Irmen de Jong
af8279a9b9 empty for loops are removed 2020-07-25 22:54:50 +02:00
Irmen de Jong
c38508c262 introduced repeat loop. repeat-until changed to do-util.
forever loop is gone (use repeat without iteration count).
struct literal is now same as array literal [...] to avoid parsing ambiguity with scope blocks.
2020-07-25 16:56:34 +02:00
Irmen de Jong
b0e8738ab8 remove unused c64 resources 2020-07-25 14:47:31 +02:00
Irmen de Jong
cae480768e version is work in progress 2020-07-25 14:45:06 +02:00