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
Irmen de Jong
a70276c190
use indexOfFirst. Also avoid initializing a for loop variable twice in a row.
2020-07-25 14:44:24 +02:00
Irmen de Jong
0c461ffe2e
removed Register expression (directly accessing cpu register)
2020-07-25 14:14:24 +02:00
Irmen de Jong
237511f2d6
v2.4
2020-07-04 18:56:47 +02:00
Irmen de Jong
cdcb652033
optimized arg passing if all args are registers
2020-07-04 18:56:30 +02:00
Irmen de Jong
71e678b382
fixed possible register subroutine arg clobbering
2020-07-04 17:05:36 +02:00
Irmen de Jong
3050156325
reverted subroutine inlining, it was a mistake
2020-07-04 01:02:36 +02:00
Irmen de Jong
06137ecdc4
v2.3
2020-07-03 23:51:27 +02:00
Irmen de Jong
b6e2b36692
refactor
2020-07-03 23:37:38 +02:00
Irmen de Jong
a6d789cfbc
fixed function argument type cast bug
2020-07-03 17:24:43 +02:00
Irmen de Jong
c07907e7bd
fixed missing shifts codegen
2020-07-02 21:28:48 +02:00
Irmen de Jong
7d8496c874
fixed missing shifts codegen
2020-07-02 19:18:47 +02:00
Irmen de Jong
a9d4b8b0fa
fixed ast modifications on node arrays, in particular function call parameter lists
2020-07-01 22:03:54 +02:00
Irmen de Jong
ec7b9f54c2
subroutine inlining is an optimizer step
2020-07-01 12:41:10 +02:00
Irmen de Jong
307558a7e7
removed some double code related to call tree
2020-06-30 20:42:55 +02:00
Irmen de Jong
a999c23014
simple subroutine inlining added
2020-06-27 17:03:03 +02:00
Irmen de Jong
b166576e54
comments
2020-06-17 23:27:54 +02:00
Irmen de Jong
ee2ba5f398
some more optimizations for swap() function call asm code generation
2020-06-17 22:40:57 +02:00
Irmen de Jong
cb9825484d
some more optimized in-array assignments codegeneration
2020-06-17 21:41:38 +02:00
Irmen de Jong
76cda82e23
v2.2
2020-06-16 01:43:44 +02:00
Irmen de Jong
37b61d9e6b
v2.2
2020-06-16 01:39:11 +02:00
Irmen de Jong
52f0222a6d
Got rid of old Ast transformer Api, some compiler error fixes
2020-06-16 01:25:49 +02:00