Commit Graph

1385 Commits

Author SHA1 Message Date
Irmen de Jong
db314ed903 added diskio.f_readline() 2021-01-10 05:04:56 +01:00
Irmen de Jong
79782ad547 conv.any2uword() changed return value 2021-01-08 22:43:01 +01:00
Irmen de Jong
b4d1d545a8 introduced txt.nl() 2021-01-08 16:56:17 +01:00
Irmen de Jong
f61682cdc7 moved various miscellaneous builtin functions such as exit() and progend() to sys.* 2021-01-08 16:44:34 +01:00
Irmen de Jong
3d09d605e1 moved memcopy, memset, memsetw builtin functions to sys.* 2021-01-08 01:09:37 +01:00
Irmen de Jong
025dde264a move target() builtin to sys.target constant 2021-01-07 23:36:28 +01:00
Irmen de Jong
87cee7a0fd check for name conflict with existing block (/module) 2021-01-07 23:28:15 +01:00
Irmen de Jong
61784a03bb removed all string related builtin functions and moved them to separate routines in new 'string' library module 2021-01-07 23:10:29 +01:00
Irmen de Jong
9d9ca0f08d fix bit shifting words by 8. fix type error for signed return types. 2021-01-07 22:50:40 +01:00
Irmen de Jong
58f37513e7 removed all string related builtin functions and moved them to separate routines in new 'string' library module 2021-01-07 20:01:11 +01:00
Irmen de Jong
ee7f9d457d text editor configs 2021-01-07 01:56:31 +01:00
Irmen de Jong
bec2224c3d clearer naming 2021-01-07 01:25:50 +01:00
Irmen de Jong
07dd64958f conv.bin2uword, conv.hex2uword, conv.str2uword, conv.str2word more robust and return parsed length in cx16.r15 2021-01-06 00:11:15 +01:00
Irmen de Jong
7d6a0ab256 added conv.any2uword() 2021-01-05 22:28:46 +01:00
Irmen de Jong
dde6919446 allow when choice values to be replaced in ast (const-folding) 2021-01-05 03:49:11 +01:00
Irmen de Jong
54fc9c91ac fix hole in scratch zp allocation of cx16 2021-01-05 03:48:36 +01:00
Irmen de Jong
45c9cc97d9 fix invalid handling of X register functioncall result value 2021-01-05 02:44:55 +01:00
Irmen de Jong
ee9f662016 added MEMTOP2 pseudo kernal routine on cx16 to get the number of RAM banks 2021-01-05 01:48:23 +01:00
Irmen de Jong
3550e1214c fix invalid handling of X register functioncall result value 2021-01-05 01:42:51 +01:00
Irmen de Jong
e6a1442296 sys.wait() no longer resets the jiffyclock to zero 2021-01-03 02:45:25 +01:00
Irmen de Jong
cb65480c6c moved wait() and reset_system() to sys block so they are now unified across c64 and cx16 2021-01-03 02:36:45 +01:00
Irmen de Jong
f0930d8a18 added c64.RDTIM16() utility routine to just get the lower 16 bits of the jiffy clock 2021-01-02 20:59:48 +01:00
Irmen de Jong
5a846bdeb5 fixed invalid integer constant expression evaluation leading to wrong results 2021-01-02 20:33:59 +01:00
Irmen de Jong
edd3a22848 added strfind() 2021-01-02 17:49:58 +01:00
Irmen de Jong
08d44ae553 fix compiler errors 2021-01-02 15:40:24 +01:00
Irmen de Jong
8e927e0b73 nontrivial return value evaluation now via intermediary variable to try to avoid slow stack based evaluation 2020-12-31 22:13:24 +01:00
Irmen de Jong
8e3e996f4a diskio.f_open() now also checks if file exists 2020-12-31 19:27:34 +01:00
Irmen de Jong
b6fa361bcc exit() now also resets the io channels. Optimized diskio data read subroutines. added diskio.f_read_all() 2020-12-31 19:09:29 +01:00
Irmen de Jong
c989abe265 optimize ubyte -> uword type casts more 2020-12-31 01:02:36 +01:00
Irmen de Jong
89230ade7a change in pattern arguments of diskio.list_files() and lf_start_list(): you can now use a simple pattern with ? and * wildcards 2020-12-30 23:34:00 +01:00
Irmen de Jong
b4931c9a1f optimize horzontal_line drawing 2020-12-30 18:58:47 +01:00
Irmen de Jong
ddfcf45d40 added some missing clobbers() specs 2020-12-30 16:59:31 +01:00
Irmen de Jong
ee12236d53 added rect functions 2020-12-30 00:53:13 +01:00
Irmen de Jong
df6698c98f fixed circle and disc geometry 2020-12-30 00:11:42 +01:00
Irmen de Jong
c3b82f2cfa optimized disc() 2020-12-29 23:58:11 +01:00
Irmen de Jong
64c89f1c8f fix circle and disc geometry, added rect and line routines 2020-12-29 23:52:48 +01:00
Irmen de Jong
e09b65ea94 fix gfx2 vertical_line 2020-12-29 23:07:26 +01:00
Irmen de Jong
c81952c356 gfx2 optimizations for vertical lines 2020-12-29 02:13:38 +01:00
Irmen de Jong
f80e462d25 gfx2 optimizations for vertical lines 2020-12-29 01:36:34 +01:00
Irmen de Jong
51f32677b7 gfx2 optimizations for horizontal lines, fix bug in disc drawing 2020-12-29 01:23:14 +01:00
Irmen de Jong
4b366358c4 fix gfx2 color of horiz/vert lines 2020-12-28 01:33:51 +01:00
Irmen de Jong
3378586098 update gradle to 6.7 2020-12-28 00:46:30 +01:00
Irmen de Jong
6777d952c1 fixed crash when loopvar in for loop wasn't defined 2020-12-28 00:30:08 +01:00
Irmen de Jong
6c8b18ddbd fixed crash on cx16 in word to float conversion 2020-12-28 00:19:58 +01:00
Irmen de Jong
69780ecde9 fixed % operator bug 2020-12-28 00:08:22 +01:00
Irmen de Jong
9e2c52e1ec added Cx16 highresbitmap example. added stippled drawing to gfx2 monochrome mode 2020-12-27 23:57:13 +01:00
Irmen de Jong
6cb0e6a936 fixed lsb(value) not working when used in a comparison expression (needed to flip loading of A and Y register with the value) 2020-12-27 18:12:12 +01:00
Irmen de Jong
dd82e550d5 adding rect and fillrect to gfx2 2020-12-27 17:34:25 +01:00
Irmen de Jong
cdcda27d07 adding circle and disc to gfx2 2020-12-27 16:17:06 +01:00
Irmen de Jong
d37d62574c project restructure 2020-12-27 07:21:39 +01:00
Irmen de Jong
f2380457d6 update to new kotlin CLI parser library 2020-12-27 05:04:50 +01:00
Irmen de Jong
efa42d5d96 compiler watch mode is a bit more robust now against crashes during compilation 2020-12-27 03:58:41 +01:00
Irmen de Jong
e17c18b653 fix issues with memory() function, rewrite examples to use it 2020-12-27 03:35:56 +01:00
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