jespergravgaard
f773c96cbc
Removed all fragments using _derefidx_vbs.. - and replaced them with a synthesis rule.
2019-03-31 22:01:08 +02:00
jespergravgaard
2d7825a0b9
Implemented continue statement. Closes #91
2019-03-31 20:15:01 +02:00
Jesper Gravgaard
4424ffe92c
Implemented loop break.
2019-03-31 17:57:54 +02:00
Jesper Gravgaard
547cfb6237
Merge remote-tracking branch 'origin/master'
2019-03-31 17:49:54 +02:00
Jesper Gravgaard
03296d9173
Moved in attempt to avoid conflict.
2019-03-31 17:49:50 +02:00
Jesper Gravgaard
864c79335f
Implemented break statement breaking out of the current loop.
2019-03-31 17:38:21 +02:00
jespergravgaard
613322153e
Added synthesis rules suggested by Travis Fisher allowing synthesis of pbuc1_derefidx_vbuxx / pbuc1_derefidx_vbuyy also when C1 is used elsewhere in the fragment.
2019-03-31 17:35:16 +02:00
jespergravgaard
d13ca4e03b
Implemented block label renumbering ensuring generated ASM labels are slightly more sensible to the reader.
2019-03-31 17:10:43 +02:00
jespergravgaard
126813ff4e
Implemented local scopes for blocks - enabling reuse of variable names (for instance in for loops). Closes #64
2019-03-30 00:15:53 +01:00
jespergravgaard
825e60ed62
Shortcut the callgraph thread analysis when max 1 thread in the entire program.
2019-03-29 20:58:48 +01:00
jespergravgaard
7fcb6e525a
Fixed problem where zeropage allocations inside IRQ and outside could overlap. Closes #154
2019-03-29 08:01:02 +01:00
jespergravgaard
c81147f60f
Fixed problem with volatile booleans being allocated to registers. Closes #153
2019-03-27 22:54:01 +01:00
jespergravgaard
c696d9610e
Added parenthesis to negative immediates to AXS.
2019-03-27 07:47:31 +01:00
jespergravgaard
667cbde56f
Added a lot of optimizing fragments using illegal opcodes (Thanks Travis Fisher!)
...
Added synth rule for vubc's.Updated tests.
2019-03-26 23:49:45 +01:00
jespergravgaard
0993be3f01
Added example of music routines.
2019-03-26 21:27:36 +01:00
jespergravgaard
022d77fc56
Implemented early constant identification to avoid unnecessary variable versioning. Closes #53
2019-03-22 19:50:20 +01:00
jespergravgaard
c280a3b14a
Fixed NPE when using booleans in if()/while(). Closes #152
2019-03-22 07:25:55 +01:00
jespergravgaard
4ad601ce72
Added fragment for subtracting unsigned byte from signed word.
2019-03-21 22:24:39 +01:00
jespergravgaard
8e2de5f79b
Updated fragment tests
2019-03-20 21:45:30 +01:00
Jesper Gravgaard
2989f16593
Added synthesis for using X/Y registers as intermediates when encountering pb.c1_derefidx_vbuyy/xx.
2019-03-20 17:09:22 +01:00
jespergravgaard
e48a4538bc
Added updated reference manual.
2019-03-20 08:05:49 +01:00
jespergravgaard
9a50e54928
Fixed optimization of constant addition in double array indexing. Closes #150
2019-03-20 07:20:00 +01:00
jespergravgaard
5791875d2d
Added clobber directive to inline kickasm.
2019-03-19 07:48:16 +01:00
jespergravgaard
f67a5bc897
Added clobber handling to inline ASM. Added clobbers directive to specify what is clobbered. If inline ASM has a JSR and no clobbers directive all registers are assumed to be clobbered. Closes #5
2019-03-18 20:54:08 +01:00
jespergravgaard
5cf5d88228
Implemented handling of default successor PHI blocks in logical or if()'s. Closes #149
2019-03-18 18:25:50 +01:00
jespergravgaard
ff716c0343
Implemented handling of deafult successor PHI blocks in
2019-03-18 18:24:03 +01:00
jespergravgaard
651bd87eaa
Fixed test
2019-03-18 02:26:13 +01:00
jespergravgaard
ca697a4ffd
Improved a plus fragment to use bcc
2019-03-18 02:23:29 +01:00
jespergravgaard
9bb967b33f
Implemented ASM fragment synthesis variations searching - looking through different potential fragments when generating ASM containing a constant number that matches multiple potential types.
2019-03-18 02:08:32 +01:00
jespergravgaard
d459332be1
Updated tests with better ASM
2019-03-17 22:52:25 +01:00
jespergravgaard
93d36f25be
Updated tests with better ASM
2019-03-17 22:49:02 +01:00
Jesper Gravgaard
dc76b2bed0
Added a lot of signed word and boolean fragments from Travis Fisher.
2019-03-16 17:54:38 +01:00
Jesper Gravgaard
ba560796dd
Added uses directive to inline kickasm to allow declaring used constants to prevent that they are optimized away as unused. Closes #147
2019-03-16 00:33:16 +01:00
jespergravgaard
f6dd66f3cb
Added support for cross-scope references inside inline ASM.
2019-03-15 07:59:25 +01:00
jespergravgaard
71743540c6
Added support for non-multi labels within inline ASM.
2019-03-15 00:30:14 +01:00
jespergravgaard
b4ccdef0f0
Problem with constant if() has been fixed!
2019-03-15 00:13:24 +01:00
jespergravgaard
4eed4f7659
Implemented proper handling of referenced to constants inside inline ASM. Closes #146
2019-03-15 00:02:33 +01:00
jespergravgaard
d293c47141
Added tests for inline assembler & kickassembler.
2019-03-14 23:09:50 +01:00
jespergravgaard
fa6ed8bff6
Improved compiler errors - removing exception trace and using proper exit code.
2019-03-12 18:14:45 +01:00
jespergravgaard
6adb0c6d2d
Improved verbosity for fragment debug output.
2019-03-12 17:59:35 +01:00
jespergravgaard
ad6a1910c8
Added another 2 word fragments. Added compiler commandline option to show fragment -fragment <signature>. Closes #145
2019-03-12 17:53:33 +01:00
Jesper Gravgaard
ea98c9e2eb
Added two additional signed word fragments.
2019-03-11 11:09:12 +01:00
jespergravgaard
8a560a294b
Added two missing signed word fragments.
2019-03-11 07:49:41 +01:00
jespergravgaard
3090fe4849
Added missing line number to error when encountering symbol that has already been declared.
2019-03-10 09:29:02 +01:00
jespergravgaard
241f8bec4d
Added two missing fragments and a test.
2019-03-10 08:24:30 +01:00
jespergravgaard
c2fb30a776
Limited fragment testing to speed it up.
2019-03-10 07:57:11 +01:00
jespergravgaard
b04edfb241
Added needed synthesis rules.
2019-03-10 01:44:47 +01:00
jespergravgaard
c89b4bc6b0
Removed rules slowing down the fragment synthesizer awaiting improvements to the synthesizer.
2019-03-10 01:14:35 +01:00
jespergravgaard
6bc35f6c34
Restructured fragment tests to use less memory.
2019-03-09 23:50:50 +01:00
jespergravgaard
980fc0aeb5
Working to improve fragment synthesis.
2019-03-09 20:58:51 +01:00
jespergravgaard
5a83c1b357
Fixed clobber problem that can occur during PHI transitions. Closes #10
2019-03-09 18:37:23 +01:00
jespergravgaard
4d8e083a21
Improved fragment synthesis of p..z1_deref_vbuaa=... to use TAY when possible.
2019-03-09 16:39:24 +01:00
jespergravgaard
a65404d7b6
Fixed signed word comparisons. Added tests of word comparisons. Improved fragment synthesis of p..z1_deref_vbuaa=... / p..z1_deref_vbuxx=...
2019-03-09 16:24:44 +01:00
jespergravgaard
cb8018b92a
Added missing word fragments. Added test of unsigned word comparisons.
2019-03-09 14:24:51 +01:00
jespergravgaard
c59f18eb82
Added two missing word fragments.
2019-03-08 22:00:28 +01:00
jespergravgaard
183494e141
Fixed infinite compiler loop when complex loops contain &&. Closes #144
2019-03-08 21:43:37 +01:00
jespergravgaard
ac73bb15e3
Improved number formatting of inegers in log/messages.
2019-03-08 06:54:46 +01:00
jespergravgaard
39e727711a
Added missing error location for illegal lvalues. Closes #143
2019-03-08 06:33:59 +01:00
jespergravgaard
0aebd2a9a1
Fixed error in boolean fragments.
2019-03-07 07:29:47 +01:00
jespergravgaard
3e39383963
Fixed error in boolean fragments.
2019-03-07 07:23:26 +01:00
jespergravgaard
0ca54a97ad
Added two missing word fragments.
2019-03-07 06:48:32 +01:00
jespergravgaard
0362e12880
Implemented default zero values for variables without ant initializer. Closes #140
2019-03-06 23:52:14 +01:00
jespergravgaard
ec863e5c43
Added line number to type inference errors. Closes #142
2019-03-04 23:55:38 +01:00
jespergravgaard
5e7d908018
Better error when assigning an undeclared variable. Closes #141
2019-03-04 23:38:07 +01:00
jespergravgaard
20cce60f40
Only removing intermediates that contain lo/hi operator.
2019-03-01 08:47:12 +01:00
jespergravgaard
ed2d992333
Fixed problem, where assigning to low/high value left an unused intermediate variable. Closes #129
2019-03-01 00:27:26 +01:00
jespergravgaard
de58d9b6dd
Added missing ref files
2019-02-24 23:24:20 +01:00
jespergravgaard
0a955d6bec
Finished constant string consolidation. Closes #90
2019-02-24 23:23:57 +01:00
jespergravgaard
fe0035af82
Added initial constant string consolidation.
2019-02-24 22:18:27 +01:00
jespergravgaard
dfd9af4d84
Added ASM function signature comment. Closes #82 .
2019-02-19 20:51:48 +01:00
jespergravgaard
af54695232
Added support for block comments.
2019-02-18 00:12:30 +01:00
jespergravgaard
f0d77acb29
Added comments to variables identified as constants.
2019-02-17 18:21:16 +01:00
jespergravgaard
b8ab7c6c49
Added comments before loops
2019-02-17 17:53:19 +01:00
jespergravgaard
41a7053b25
Implemented statement comments. Assignments are working OK. Some are still thrown away during optimizations.
2019-02-17 15:50:42 +01:00
jespergravgaard
27cfaf0ecf
Implemented file-level comments. Added a few comment tests.
2019-02-17 11:03:55 +01:00
jespergravgaard
69562b7fa9
Added comments to constants in ASM.
2019-02-17 00:49:19 +01:00
jespergravgaard
67e223d629
Added procedure comments to the compiled assembler.
2019-02-16 23:23:55 +01:00
jespergravgaard
b5c61aad5d
Added level colors
2019-02-10 22:03:55 +01:00
jespergravgaard
7f78991374
Added next piece
2019-02-10 21:10:40 +01:00
jespergravgaard
bfce6bffd1
Renamed tests.
2019-02-10 19:11:50 +01:00
Jesper Gravgaard
dcd4e070ba
Implemented new recursion check that performs much better on programs with many different branches.
2019-02-03 17:36:34 +01:00
jespergravgaard
347a5d0331
Refactored call graph analysis in preparation for improved recursion detection.
2019-02-03 08:32:38 +01:00
jespergravgaard
b6038ccf0a
Added error when condition is non-boolean. Closes #134
2019-01-17 23:28:39 +01:00
jespergravgaard
bb9a4ac461
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# src/test/java/dk/camelot64/kickc/test/TestPrograms.java
2019-01-12 13:59:14 +01:00
jespergravgaard
a6fc9c157e
Added missing fragments for rolling variable amounts - and a few tests.
2019-01-12 13:58:12 +01:00
Jesper Gravgaard
4d3056bc0e
Added another scrolling screen test and a fragment
2019-01-11 20:23:30 +01:00
jespergravgaard
7b65dfedfb
Fixed new testAdded missing word-fragment.
2019-01-11 06:42:05 +01:00
jespergravgaard
35ffcbf914
Fixed new test
2019-01-10 23:00:05 +01:00
jespergravgaard
8910ba56a2
Fixed issue when removing unused procedures that is discovered during static analysis.
2019-01-10 22:58:00 +01:00
jespergravgaard
f664e8183f
Fixed issue with constant consolidation creating literals that was not calculatable.
2019-01-08 00:07:24 +01:00
jespergravgaard
e8d00067ef
Fixed version number
2019-01-07 22:38:29 +01:00
jespergravgaard
854b32d5b3
Fixed an array index optimization that was to aggressive.
2019-01-07 21:58:40 +01:00
jespergravgaard
9a3bd627f8
Added 2 missing fragments,
2019-01-06 23:48:25 +01:00
jespergravgaard
d2df1dfb68
Added missing fragment.
2019-01-06 17:45:26 +01:00
jespergravgaard
b4b4658696
Added a few missing 16-bit fragments.
2019-01-05 17:31:59 +01:00
jespergravgaard
aa109d236f
Now treats char 160 (nbsp) like whitespace. Added sin-sprites on top of sprite-tester.
2019-01-03 22:52:29 +01:00
jespergravgaard
2866aad652
Fixed small issue with missing -F in kickc.bat
2019-01-03 21:41:00 +01:00
jespergravgaard
5b62308854
Started work on version 0.7
2019-01-03 20:29:48 +01:00
jespergravgaard
4ce4667e57
Moved examples around.
2019-01-03 19:59:31 +01:00
jespergravgaard
0b881a9596
fixed tests
2019-01-03 19:21:12 +01:00
jespergravgaard
fe29de28d5
fixed problem
2019-01-03 18:55:56 +01:00
jespergravgaard
8898dfb255
Added missing fragment for Scan/Desire.
2019-01-03 18:54:59 +01:00
jespergravgaard
db733eec53
Implemented new more robust sprite routine. Added game_over game state. Added GAME OVER chars to charset.
2019-01-03 18:15:03 +01:00
jespergravgaard
e35ce855b0
Added level-based score increase, missing fragments and support for zero-filled DWORD-arrays.
2018-12-31 00:05:38 +01:00
jespergravgaard
40a2a7b1eb
Added movedown speed-up based on level.
2018-12-30 23:36:05 +01:00
jespergravgaard
621c1e19e0
Fixed position of I
2018-12-30 03:58:49 +01:00
jespergravgaard
4432812b06
fixed test
2018-12-30 03:20:58 +01:00
jespergravgaard
e91ae1b60e
Fixed level calculation when over 9.
2018-12-30 03:15:59 +01:00
jespergravgaard
6ff6d7c2cc
Added level. (not correct BCD after 9)
2018-12-30 03:05:22 +01:00
jespergravgaard
27e00e5e80
fixed tests.
2018-12-30 01:54:29 +01:00
jespergravgaard
84db15759b
Fixed piece rotations to match NES tetris.
2018-12-30 01:35:58 +01:00
jespergravgaard
25d4c89445
Added a score renderer - and some fragments.
2018-12-30 01:00:45 +01:00
jespergravgaard
638ef22c63
Added score calculation (plus some missing fragments and handling of dword array initializers).
2018-12-30 00:12:19 +01:00
jespergravgaard
30ad94dda3
Saved memory and code by combining screen chars and extended colors in kasm-script.
2018-12-29 22:53:02 +01:00
jespergravgaard
c3e559f8c9
Added needed parts of font and proper colors.
2018-12-29 22:31:55 +01:00
jespergravgaard
76b13d6b55
Fixed sprite multiplexer when double buffering.
2018-12-29 18:52:23 +01:00
jespergravgaard
b1d358403a
Implemented double buffered rendering.
2018-12-29 17:35:46 +01:00
jespergravgaard
84eb93b21e
Fixed pixel error
2018-12-29 14:46:51 +01:00
jespergravgaard
bba1f52d56
Added playfield border color.
2018-12-29 02:40:02 +01:00
jespergravgaard
bd64ba36dd
Improved inline kickasm naming
2018-12-29 00:55:34 +01:00
jespergravgaard
006aa5b428
Added piece initial positions.
2018-12-29 00:36:24 +01:00
jespergravgaard
7d70b371ba
Closer to real tetris
2018-12-28 23:55:29 +01:00
jespergravgaard
22aa93e802
Added ECM mode and background gfx.
2018-12-27 22:57:22 +01:00
jespergravgaard
d956ff9fcf
Rearranged Tetris files.
2018-12-27 00:09:10 +01:00
jespergravgaard
53a161d52f
Moved sprite IRQ's to separate file.
2018-12-26 00:39:38 +01:00
jespergravgaard
d9d28f4018
Optimized a bit.
2018-12-25 23:25:42 +01:00
jespergravgaard
627df0bda9
Fixed problem where uninitialized variables resultes in compile errors. Closes #131
2018-12-25 22:46:58 +01:00
jespergravgaard
f6a566e2f8
Fixed tests.
2018-12-25 21:47:19 +01:00
jespergravgaard
2b25aec8ee
Added missing call-path to interrupts used during uplift clobber-analysis. Closes #130
2018-12-25 21:33:07 +01:00
jespergravgaard
ceb271d021
Fixed tests.
2018-12-25 17:44:43 +01:00
jespergravgaard
f8191e8345
Default runs @begin code and then optimizes to main() if no code exists outside main.
2018-12-25 17:04:50 +01:00
jespergravgaard
2be7b2ca2b
Fixed problem with volatiles reusing zero page addresses used by other variables. Closes #128
2018-12-24 15:05:46 +01:00
jespergravgaard
85c6f09590
Improved tests showcasing problems with volatiles.
2018-12-24 14:14:29 +01:00
jespergravgaard
b92ea8415b
Added tests showcasing problems with volatiles.
2018-12-24 11:12:47 +01:00
jespergravgaard
8ef005e64d
Fixed several compiler issues with volatiles.
2018-12-24 02:27:12 +01:00
jespergravgaard
fae4eb9e6c
Added NES bg image
2018-12-22 09:26:42 +01:00
jespergravgaard
6f4f2cdd4b
Added missing image
2018-12-19 00:34:21 +01:00
jespergravgaard
44d6e5fbbb
Fixed tests (after reincluding cmp#0)
2018-12-19 00:33:27 +01:00
jespergravgaard
45b03818e4
Improved remove lines implementation
2018-12-18 23:09:20 +01:00
jespergravgaard
468def2d6a
Minor refactoring.
2018-12-06 17:24:46 +01:00
jespergravgaard
7c74fd93d0
Minor refactoring.
2018-12-04 23:58:25 +01:00
jespergravgaard
33d1b90974
Fixed test.
2018-12-03 02:24:43 +01:00
jespergravgaard
0073fedf4f
Fixed test.
2018-12-03 01:49:28 +01:00
jespergravgaard
a79e318bcd
Working on Tetris. Implemented line removal. Fixed fragment error and added 2 missing fragments.
2018-12-03 01:46:48 +01:00
jespergravgaard
4724d7707c
Working on Tetris. Added colors and random piece selection (from SID voice 3 noice). Moved some code to separate files.
2018-12-03 00:37:54 +01:00
jespergravgaard
eaa8d0c3fc
Working on Tetris.
2018-12-02 23:10:02 +01:00
jespergravgaard
44e2075896
Working on Tetris. Added 3 failing tests with discovered problems.
2018-12-02 21:31:03 +01:00
jespergravgaard
04d777ec6c
Working on tetris
2018-11-28 07:27:44 +01:00
jespergravgaard
c20389e310
Added a few missing fragments and support for arrays of pointers.
2018-11-25 02:46:22 +01:00
jespergravgaard
264f854133
Working on 16-bit rotation comparison
2018-11-17 16:49:55 +01:00
jespergravgaard
2a25f8d79d
Improved logging of live ranges.
2018-11-11 21:51:37 +01:00
jespergravgaard
fc867aea3d
Fixed tests
2018-11-08 01:11:38 +01:00
jespergravgaard
46751edd16
Fixed fragment errors. Added missing fragments. Working on 16bit 3D.
2018-11-08 01:06:33 +01:00
jespergravgaard
d482815704
Re-added tests.
2018-11-08 00:14:25 +01:00
jespergravgaard
93a0d9110a
Removed surefire section.
2018-11-08 00:05:42 +01:00
jespergravgaard
659b274a60
Disabling all test cases - replacing with trivial test.
2018-11-07 23:45:29 +01:00
jespergravgaard
516205e1a4
Trying to add CI testing again. Working on improving 3D quality.
2018-11-07 23:41:30 +01:00
Jesper Gravgaard
77c0edab1a
improved multiply tables
2018-11-04 20:46:42 +01:00
Jesper Gravgaard
67611e548b
Added print_at methods
2018-11-03 19:02:59 +01:00
jespergravgaard
808ed90f83
Added working perspective to 3D rotation.
2018-10-31 00:45:59 +01:00
jespergravgaard
9b101f29bd
Improved readability.
2018-10-21 20:20:24 +02:00
jespergravgaard
4d031a82f1
Improved readability.
2018-10-21 20:00:53 +02:00
jespergravgaard
467f5bcbb8
Added missing fragments
2018-10-21 18:15:15 +02:00
jespergravgaard
6d98f18960
Implemented working 3d rotation.
2018-10-21 17:25:33 +02:00
jespergravgaard
8421b47760
Fixed constant elimination optimization. Added (unfinished) 3D example.
2018-10-21 16:03:19 +02:00
jespergravgaard
5896f483b7
Improved readability a bit.
2018-10-20 21:05:11 +02:00
jespergravgaard
87933460f3
Implemented z-rotation for 8 sprites.
2018-10-20 20:43:26 +02:00
jespergravgaard
2f1f530128
Optimized rotation position calculation
2018-10-19 02:26:42 +02:00
jespergravgaard
908cb3ea8d
Changed fast multiply to a _prepare(a) & _prepared(b) sub-functions.
...
Added support for "." operator in ASM.
2018-10-19 00:28:57 +02:00
jespergravgaard
5d38d8c6ec
Changed rotate to use 8-bit sine and 8x8 bit multiplication.
2018-10-18 23:28:59 +02:00
jespergravgaard
a6c10c5c65
Added fragment folder option to sh.
2018-10-18 22:46:41 +02:00
jespergravgaard
0a25830de9
Added rotate example
2018-10-18 22:36:11 +02:00
jespergravgaard
ead3fe7eb8
Added some missing fragments
2018-10-18 09:42:24 +02:00
jespergravgaard
8adbdd59e4
Fixed test
2018-10-17 23:23:54 +02:00
jespergravgaard
fabc107cd1
Merge remote-tracking branch 'origin/master'
2018-10-17 23:01:24 +02:00
jespergravgaard
5050452e23
Fixed infinite loop during optimization when aliase candidates end up with one single element.
2018-10-17 23:00:54 +02:00
Jesper Gravgaard
688df931f0
Working 16bit signed fast multiplication - with test.
2018-10-17 13:42:52 +02:00
jespergravgaard
0b4cb53d07
Added signed fast 16bit multiply.
2018-10-17 12:11:42 +02:00
jespergravgaard
e9892219b6
Added fast 16bit unsigned multiplication.
2018-10-17 01:40:56 +02:00
jespergravgaard
17cb00955c
Added all current verbosity options.
2018-10-16 17:29:00 +02:00
jespergravgaard
9cf226348c
Added a few verbosity options plus a missing fragment.
2018-10-16 02:02:51 +02:00
jespergravgaard
25f5d77f34
Added a few verbosity options plus a missing fragment.
2018-10-16 02:02:30 +02:00
jespergravgaard
6bd55add24
Moved unused fragments. Changed clobber syntax in inline kickasm.
2018-10-07 16:20:04 +02:00
Jesper Gravgaard
75b923e11e
Fixinf windows newlines in fragments
2018-10-07 12:03:45 +02:00
Jesper Gravgaard
7d2c09ea68
Fixed Win/Linux difference for fragment test
2018-10-07 11:36:52 +02:00
Jesper Gravgaard
287ffb46ed
Some test work
2018-10-07 03:10:48 +02:00
Jesper Gravgaard
2b5f6b8856
Rearraning source files to bring KC/REF and fragment files out of the JARS.
2018-10-07 02:32:09 +02:00
jespergravgaard
4373150634
Reinstated tests.
2018-10-02 02:14:12 +02:00
Jesper Gravgaard
0f813d9d0f
Fixed BAT runner
2018-10-02 01:53:39 +02:00
Jesper Gravgaard
2ec3f9dd12
Fixed BAT runner
2018-10-02 01:51:35 +02:00
jespergravgaard
e4e762aa13
Added bat file to assembly
2018-10-02 01:17:00 +02:00
jespergravgaard
00e6293e20
JAR file version number should now follow git tag.
2018-10-02 01:06:36 +02:00
Jesper Gravgaard
b810023859
Implemented initial BAT file for execution on Windows.
2018-10-02 00:40:58 +02:00
jespergravgaard
ec3790a39f
Added new version of the manual.
2018-10-02 00:08:41 +02:00
jespergravgaard
32d224589a
Added kickc.sh executor and examples of kickc code to release.
2018-10-01 01:15:00 +02:00
jespergravgaard
0b86f55829
Added PDF manual
2018-09-30 20:32:50 +02:00
jespergravgaard
66b1249336
Refactored to a single CI task - with a single artifact
2018-09-30 15:51:15 +02:00
Jesper Gravgaard
84c2e54085
Hoping to create beter release ZIP
2018-09-29 12:24:57 +02:00
jespergravgaard
fcd3902090
Added test for default interrupt type (KERNEL_MIN).
2018-09-26 22:44:40 +02:00
jespergravgaard
c70801ee85
Added option for controlling uplift combinations.
2018-09-26 22:01:15 +02:00
jespergravgaard
44c32ba2e8
Added current path to includes.
2018-09-26 21:13:54 +02:00
jespergravgaard
b777a6bd98
Updated libraries. Added packaging assembly to maven POM.
2018-09-26 19:57:15 +02:00
jespergravgaard
7cecb2fb71
Added rudimentary bitwise not.
2018-09-13 12:08:11 +02:00
jespergravgaard
5f91f3c8be
Added initial package phase to maven.
2018-09-03 00:33:16 +02:00
jespergravgaard
9816e4cba1
Fixed test
2018-09-01 00:03:45 +02:00
jespergravgaard
e335a956e7
Added inline hello world 2
2018-08-31 23:43:37 +02:00
jespergravgaard
82c7a6c84d
Improved command help
2018-08-31 23:22:09 +02:00
jespergravgaard
17ad45d453
Moved some KC-files to stdlib. Added option for multiple include paths.
2018-08-31 22:52:10 +02:00
jespergravgaard
7f29a344ae
Improved commandline to include output-directory, compilation & execution.
2018-08-27 01:03:15 +02:00
jespergravgaard
7b940014a2
Version 0.5. First cmdline runnable version.
2018-08-26 09:12:31 +02:00
jespergravgaard
ffba4a87c1
Added target to create JAR
2018-08-25 10:28:22 +02:00
jespergravgaard
c05b04ff3c
Created initial simple commandline using picocli.
2018-08-23 23:54:39 +02:00
jespergravgaard
8efb7f9f2f
Added example of (non-working) calls inside unrolled loop.
...
Refactored hyperscreen to use c64.kc.
2018-08-23 22:14:39 +02:00
jespergravgaard
6dca0ada51
Added few comments and a few new constants
2018-08-23 00:35:19 +02:00
jespergravgaard
63badba136
Removed a bit more logging.
2018-08-23 00:24:33 +02:00
jespergravgaard
2c6fab8fe4
Removed a bit more logging.
2018-08-22 22:38:40 +02:00
jespergravgaard
126c8f6e0d
Added detection of non-constant loops.
2018-08-22 22:23:43 +02:00
jespergravgaard
a223abdf6e
Now also simplifying +0 and *0 in constant values.
2018-08-22 12:40:19 +02:00
jespergravgaard
105510a9ae
Now consolidating constant integer increments eliminating xx+1+1+1 expressions in the output.
2018-08-22 11:36:38 +02:00
jespergravgaard
42bc31126a
Decreased default logging.
2018-08-22 11:10:10 +02:00
jespergravgaard
2a5cdfb064
A bit more inlining
2018-08-22 10:17:58 +02:00
jespergravgaard
5fe09eefde
Fixed test ref (and added failing infinite unroll loop)
2018-08-22 02:45:38 +02:00
jespergravgaard
a78960a823
Using loop unrolling in logo scroller.
2018-08-22 02:34:03 +02:00
jespergravgaard
1d339804da
Added a double unroll loop
2018-08-22 02:19:27 +02:00
jespergravgaard
be18a84d98
Working loop unrolling! There are probably still a lot of non-working cases - and the lack of loop unroll limit will definitely cause infinite loops.
2018-08-22 01:42:00 +02:00
jespergravgaard
bbeb37ea61
Loop unroll prepare now complete.
2018-08-21 16:45:07 +02:00
jespergravgaard
4f23ed5079
Split unroll prepare into separate pass
2018-08-21 10:01:09 +02:00
jespergravgaard
b19bf2246e
Created "loop-unroll" branch.
2018-08-19 21:48:26 +02:00
jespergravgaard
a87da922f8
Centralized getting all entry point blocks in the program into ControlFlowGraph
2018-08-12 01:03:44 +02:00
Jesper Gravgaard
75a8749db4
Moved interrrupt registers into c64.kc
2018-08-11 12:04:52 +02:00
Jesper Gravgaard
39e7ce3df1
Refactored all casts to pointers to use the generic OperatorCastPtr.
2018-08-11 11:38:19 +02:00
Jesper Gravgaard
129de6c3ec
Refactored most casts to pointers to use the generic OperatorCastPtr.
2018-08-11 11:30:19 +02:00
Jesper Gravgaard
fe7950798e
Added call-graph recursion in clobber-analysis for interrupt hardware clobber.
2018-08-11 11:08:43 +02:00
jespergravgaard
9a9eeec129
Fixed tests.
2018-08-11 00:52:02 +02:00
jespergravgaard
f33d7018ba
Implemented clobber analysis to ensure that hardware clobber interrupts only save the registers clobbered.
2018-08-11 00:48:15 +02:00
jespergravgaard
9ef574f32d
Fixed tests
2018-08-10 20:33:17 +02:00
jespergravgaard
df224c70b6
Fixed tests
2018-08-10 20:32:45 +02:00
jespergravgaard
f8ec74dc14
Implemented hardware & kernel interrupt types.
2018-08-10 12:46:44 +02:00
jespergravgaard
6a20fc33c7
Improved comments
2018-08-06 00:41:29 +02:00
jespergravgaard
044282e523
Added 2 Raster IRQ tests.
2018-08-06 00:37:40 +02:00
jespergravgaard
238cd2a531
Added volatile keyword and initial implementation ensuring that volatiles are not constant-optimized or put into registers.
2018-08-05 22:40:13 +02:00
jespergravgaard
b23029760a
IRQ referencing outside const.
2018-08-05 17:50:45 +02:00
jespergravgaard
b8841a90f5
Added forward reference support yo procedure references.
2018-08-05 17:46:42 +02:00
jespergravgaard
b755cd4297
Added interrupt types (kernel, hardware).
2018-08-05 17:28:02 +02:00
Jesper Gravgaard
f463606742
Implemented interrupt procedures and pointers to procedures initial support.
2018-08-05 13:33:23 +02:00
Jesper Gravgaard
c0c7a1da44
Fixed test
2018-08-04 13:11:34 +02:00
jespergravgaard
0763a63a66
Working on interrupts
2018-08-04 13:07:21 +02:00
jespergravgaard
18473295c9
Fixed tests
2018-08-03 02:08:39 +02:00
jespergravgaard
ca55ac68cb
Improved the multiplexer - now 32 sprites.
2018-08-03 02:02:08 +02:00
jespergravgaard
962fefe582
Improved the multiplexer
2018-08-03 00:07:42 +02:00
jespergravgaard
3559ac29d5
Improved multiplexer
2018-08-02 23:05:33 +02:00
jespergravgaard
0f4490dfb0
Implemented sprite multiplexer
2018-08-02 22:57:20 +02:00
jespergravgaard
3658d9f68e
Implemented sorter inside a multiplexer.
2018-08-02 02:53:52 +02:00
Jesper Gravgaard
c272b93872
Added kickasm support for expressions specifying bytes & cycles.
2018-07-25 20:44:10 +02:00
Jesper Gravgaard
6475f70192
Added kickasm support for bytes & cycles. Changed location to pc.
2018-07-25 19:59:49 +02:00
Jesper Gravgaard
ae765bec6b
Allowing location to be any expression that ends up being constant. Changed syntax for kickasm directives.
2018-07-25 20:09:12 +09:00
Jesper Gravgaard
19855bed21
Added "location" directive to inline kickasm to allow absolute placement.
2018-07-25 17:10:46 +09:00
Jesper Gravgaard
ea80c9445a
Fixed arrays with fixed size defined by a simple named constant.
2018-07-23 23:24:44 +09:00
Jesper Gravgaard
112087b7bb
Added iteration through all parts of the symbol table to usage finding. Now array lenghts set to constant calculations also work.
2018-07-23 16:27:30 +09:00
Jesper Gravgaard
99085f1351
Refactored ReferenceInfos to use a more abstract model of references to variables/constants.
2018-07-23 01:00:25 +09:00
Jesper Gravgaard
4b4c6f5364
Using ProgramValueIterator instead of custom loop.
2018-07-22 16:41:19 +09:00
Jesper Gravgaard
81e214cee3
Now replacing in both control flow graph and symbol table per default.
2018-07-22 16:24:08 +09:00
Jesper Gravgaard
f17422a564
Renamed ValueReplacer classes to ValueIterator to better illustrate the generic nature.
2018-07-22 16:02:51 +09:00
Jesper Gravgaard
a14fa4dec3
Eliminated AliasReplacers separate implementation of the execution. Now using a clean ValueReplacer. Also fixed Pass1GenerateSSA to use a clean ValueReplacer.
2018-07-22 14:14:15 +09:00
Jesper Gravgaard
f9449997cb
Refacing ValueReplacer
2018-07-21 23:29:11 +09:00
Jesper Gravgaard
62cfda6468
Added SymbolVariableRef (preparing for refacing ValueReplacer and ReferenceInfos)
2018-07-21 22:58:42 +09:00
Jesper Gravgaard
3328a570c6
Implemented late constant resolving for array lengths allowing the use of any constant expressions in the first/last values. The length inside the SymbolType still needs to be fixed - so a few tests currently fail.
2018-07-21 18:13:36 +09:00
Jesper Gravgaard
ac9ba0065c
Implemented late constant resolving for ranged for() allowing the use of any constant expressions in the first/last values..
2018-07-12 14:42:47 +02:00
Jesper Gravgaard
dbcbe597c0
Fixed test on Windows.
2018-07-10 22:29:12 +02:00
jespergravgaard
cda0a9b498
Added a sinus plotter to test the sinus curves against macro-generated sinus.
2018-07-10 11:56:01 +02:00
jespergravgaard
ad0512cc9d
Fixed test
2018-07-09 18:57:14 +02:00
jespergravgaard
5abd555206
Implemented initial logo scroller. Fixed long branch detection when inlining kickasm. Added needed fragments.
2018-07-09 18:39:01 +02:00
Jesper Gravgaard
5e9b15477a
Implemented sinus generator for logo scroller. Added missing fragments and fixed issue when removing an unused block also made some variables unused.
2018-07-08 23:58:43 +02:00
Jesper Gravgaard
2c0299ee09
Implemented support for resources neede for inline KickAsm code.
2018-07-07 19:23:38 +02:00
Jesper Gravgaard
a82c5cf5b1
Implemented support for inline KickAssembler code
2018-07-07 13:55:15 +02:00
jespergravgaard
198c941d85
Added syntax for extern variables and inline kickasm code
2018-07-06 12:42:59 +02:00
jespergravgaard
45f30c7031
Fixed fragment test
2018-06-03 23:33:49 +02:00
Jesper Gravgaard
364ea5e9b9
Fixed fragment tests
2018-06-02 11:34:35 +02:00
Jesper Gravgaard
11b700d269
Fixed tests
2018-06-01 00:45:18 +02:00
Jesper Gravgaard
bb1048fdfa
Fixed problem with ROL/ROR/ASL/LSR A not marked as clobbering A.
...
Working on line anim.
2018-05-31 20:01:56 +02:00
jespergravgaard
68cba8f9af
A bit more line anim - work in (early) progress. Added inlined toD018() and toDd00().
2018-05-14 23:53:03 +02:00
jespergravgaard
a7b751a9fd
A bit more line anim - work in (early) progress.
2018-05-14 10:31:43 +02:00
jespergravgaard
f492173178
Added line anim - work in (early) progress.
2018-05-08 00:25:33 +02:00
jespergravgaard
808b60d06a
Added printable error context to statements
2018-05-05 21:34:24 +02:00
jespergravgaard
21478bd5b6
Removed param-assignment attribute from call
2018-05-01 22:51:00 +02:00
jespergravgaard
e589373374
Added support for multi-level function inlining containing value-lists.
2018-05-01 22:37:28 +02:00
jespergravgaard
de8654322f
Renamed method
2018-05-01 22:10:06 +02:00
jespergravgaard
4e973cebc7
Now supporting more complex functions inlining.
2018-05-01 22:08:23 +02:00
jespergravgaard
6bd3a2dedf
Implemented function inlining. Closes #63
2018-05-01 00:09:51 +02:00
jespergravgaard
b15a88f27e
Changed control flow graph block collection to a modifiable list.
2018-04-29 22:34:26 +02:00
jespergravgaard
3879ac83b0
Added ConstantCastValue for when noop casts are used on constant values.
2018-04-29 21:39:12 +02:00
jespergravgaard
a3109431bf
Renamed modulus to modulo
2018-04-28 13:07:51 +02:00
jespergravgaard
469fd63320
Renamed modulus to modulo
2018-04-28 13:00:20 +02:00
jespergravgaard
55fa7be4d1
Implemented compound assignments. Closes #104
2018-04-28 12:06:01 +02:00
jespergravgaard
6a399cf210
Renamed boolean to bool. Closes #110
2018-04-28 08:41:05 +02:00
jespergravgaard
37e300fb2b
Added test of chained assignments.
2018-04-28 08:22:53 +02:00
jespergravgaard
7ed032f039
Fixed fragment test reference data
2018-04-28 08:15:21 +02:00
jespergravgaard
35080d08d1
Added error when encountering runtime dicision/multiplication/modulus.
2018-04-27 20:12:51 +02:00
jespergravgaard
779e10aefc
Added some basic arithmetic expression tests.
2018-04-27 16:11:42 +02:00
jespergravgaard
760ea7db44
Added missing fragment
2018-04-27 15:05:19 +02:00
jespergravgaard
521385065d
Fixed logging
2018-04-27 14:55:46 +02:00
jespergravgaard
80f57ed5f1
Added boolean pointer test and a test that modifying a constant results in an error.
2018-04-27 14:49:35 +02:00
jespergravgaard
ad54c264c4
Added boolean type variables & fragments. Lots of missing fragments. Inlining any booleans possible will improve performance. Closes #86
2018-04-27 01:09:34 +02:00
jespergravgaard
e3da759057
Added test with a constant word pointer. Added missing word fragments. Fixed issue with pointer to unused word variable.
2018-04-26 23:29:43 +02:00
jespergravgaard
9265592f25
Implemented identical phi elimination
2018-04-25 01:11:28 +02:00
jespergravgaard
b2f16e2a57
Added missing fragments and a few new synth rules for derefidx
2018-04-24 23:15:18 +02:00
jespergravgaard
34d8afcaae
Added some simple test programs for the manual.
2018-04-24 10:05:48 +02:00
jespergravgaard
34909f47d8
Recusion now detected, resulting in CompileError. Closes #88
2018-04-22 23:46:26 +02:00
jespergravgaard
a34f77d319
Improved fragment synthesis by allowing X/Y registers to be used for constant byte values - great for _derefidx_vbuc1! Closes #99
2018-04-22 22:49:40 +02:00
Jesper Gravgaard
eb2ff934c7
Added pass 2 assertion that no unversioned or fwddref variable refs exist.
2018-04-22 12:40:20 +02:00
Jesper Gravgaard
4640b31043
Added another test securing that undefined variables cannot be used even if fwd-refs are allowed.
2018-04-22 12:22:48 +02:00
jespergravgaard
c8edee4291
Implemented constant pointer detection - allowing for efficient NULL-code using const byte* NULL = $00. Closes #79
2018-04-22 11:40:25 +02:00
jespergravgaard
43395567af
Implemented constant pointer detection - allowing for efficient NULL-code using const byte* NULL = $00. Closes #79
2018-04-22 11:24:02 +02:00
jespergravgaard
3a0a8f450d
Now allowing forward references to variables (expected to be constants). Closes #101
2018-04-22 11:10:47 +02:00
jespergravgaard
13249cd744
Fixed problem where inline string is used only in hi/lo operator. Closes #103
2018-04-22 09:59:08 +02:00
jespergravgaard
b2f1e1abe3
Implemented boolean && /
2018-04-21 23:00:05 +02:00
jespergravgaard
8a7f5bde39
Implemented identification & elimination of complex constant if()s
2018-04-21 21:38:30 +02:00
jespergravgaard
5e3cbe1f3a
Added a const inline case
2018-04-20 23:09:18 +02:00
Jesper Gravgaard
b1b8f361d3
Improved bool min test
2018-04-20 20:48:13 +02:00
jespergravgaard
92cba685e1
Added another const bool test
2018-04-19 22:29:01 +02:00
jespergravgaard
ee6e58f79c
Fixed problem with PHI-blocks still referencing blocks that no longer call them bacause of constant bool if()s.
2018-04-19 01:46:41 +02:00
jespergravgaard
2fb9619381
Implemented constant if elimination and unused block removal in pass 2.
2018-04-18 23:19:25 +02:00
Jesper Gravgaard
e319ec9260
Added bool min test
2018-04-18 20:03:39 +02:00
Jesper Gravgaard
1ae9dbb6cf
Added inline string test 3 & made minor fix to dtv-blitter-min
2018-04-18 12:44:52 +02:00
jespergravgaard
3ddc19c5c2
Implemented blitter minimal example. Added missing ref files.
2018-04-15 23:32:49 +02:00
Jesper Gravgaard
c29d278146
Adding more C64DTV test programs
2018-04-15 20:02:48 +02:00
Jesper Gravgaard
9cc3490f28
Added the last modes
2018-04-14 01:08:08 +02:00
Jesper Gravgaard
7fd8669cc1
Fixed constant inlining of strings. Closes #102
2018-04-13 20:06:29 +02:00
jespergravgaard
23ff5bab95
Added Sixs FRED mode
2018-04-10 00:00:01 +02:00
jespergravgaard
301ea8b645
Added more presets
2018-04-09 08:46:37 +02:00
jespergravgaard
a49e61f747
Added more gfx to the tester
2018-04-08 02:32:37 +02:00
jespergravgaard
706734360f
Fixed tests
2018-04-07 17:03:36 +02:00
jespergravgaard
72e39f7cc4
Form and GFX are now two separate modes
2018-04-07 16:01:35 +02:00
jespergravgaard
2aef56bb2c
Implemented split screen form menu
2018-04-05 00:30:26 +02:00
jespergravgaard
6bfc6de252
Added a keyboard event queue with scanner. Using it in C64DTV Gfx Explorer.
2018-04-04 12:07:14 +02:00
jespergravgaard
93fb8e1bff
Added form colors. Added all fields to form.
2018-04-03 22:52:59 +02:00
jespergravgaard
0ad7984fe2
Added form field max values
2018-04-03 19:49:06 +02:00
jespergravgaard
25f396de12
Added z4 to tests
2018-04-03 08:21:04 +02:00
jespergravgaard
17ffe83bd2
Implemented v0.1 of a screen form library
2018-04-03 00:02:25 +02:00
jespergravgaard
91589327e3
Fixed loop detection problem.
2018-04-01 12:32:45 +02:00
jespergravgaard
10fd6ff19a
Lowered uplift combinations further for higher speed
2018-04-01 12:17:13 +02:00
jespergravgaard
617b85ba8d
Added missing a ora c
2018-04-01 04:40:28 +02:00
jespergravgaard
2d2ca18553
Fixed syntax
2018-04-01 04:38:11 +02:00
jespergravgaard
ef83e4342c
Making loop error not fail.
2018-04-01 04:00:07 +02:00
jespergravgaard
302b5a62d7
Implemented partial gfx mode tester for c64dtv. found loop error.
2018-04-01 03:58:07 +02:00
jespergravgaard
6e9503a14d
Made modes 1-3 compatible with stock C64
2018-03-29 09:19:36 +02:00
jespergravgaard
626329ddaa
Added hicol MC mode
2018-03-29 09:09:07 +02:00
jespergravgaard
89e2900fdc
Added ECM modes and MC std mode.
2018-03-29 08:49:51 +02:00
jespergravgaard
88313bbb81
added std charset / hicolor std charset and ecm std charset modes
2018-03-29 00:37:04 +02:00
jespergravgaard
7a55705b3e
Added Sixs FRED 2 mode
2018-03-28 16:43:47 +02:00
jespergravgaard
b4bfaf016a
Lowered number of uplift permutations to 1000
2018-03-28 15:21:22 +02:00
jespergravgaard
e518c393e6
Added chunky 8bpp BMM
2018-03-28 13:00:32 +02:00
jespergravgaard
839c356118
Added 8bpp Pixel Cell Mode
2018-03-27 22:32:06 +02:00
Jesper Gravgaard
46e5cb3e79
Fixed high-byteoperator problem with constants.
2018-03-27 12:01:58 +02:00
Jesper Gravgaard
39a6b0493f
Fixed high-byteoperator problem with constants.
2018-03-27 11:52:51 +02:00
jespergravgaard
b122ac8af3
Added Sixs FRED mode.
2018-03-27 10:01:28 +02:00
jespergravgaard
472e6c43bd
Better test image for Two Plane Bitmap Mode. Added keyboard glitch tester and operator hi/lo problem test.
2018-03-26 23:49:07 +02:00
jespergravgaard
6cfa6633f4
Now also eliminating unused variables from phi blocks. Closes #89
2018-03-26 21:57:30 +02:00
jespergravgaard
dc25fa7d11
Improved keyboard routine slightly.
2018-03-26 21:41:09 +02:00
jespergravgaard
770f213b40
Added missing SCREEN var
2018-03-26 00:44:41 +02:00
jespergravgaard
13a3f46858
Started C64DTV GfxMode tester
2018-03-25 23:40:38 +02:00
jespergravgaard
e01be9d33b
Added a partial 3x5 font - ref data
2018-03-25 13:31:57 +02:00
jespergravgaard
f652d14fed
Added a partial 3x5 font
2018-03-24 22:37:11 +01:00
jespergravgaard
7922d0f21a
Added missing fragments
2018-03-22 22:30:16 +01:00
Jesper Gravgaard
71e4e5d22d
Added shift support to CHARGEN tester
2018-03-22 21:50:25 +01:00
Jesper Gravgaard
49d2aaaf24
Merge remote-tracking branch 'origin/master'
2018-03-22 18:34:09 +01:00
Jesper Gravgaard
981d925a4d
Coding CHARGEN tester
2018-03-22 18:34:04 +01:00
jespergravgaard
18bf726d1c
Fixed P key
2018-03-22 00:04:41 +01:00
Jesper Gravgaard
cfd0e836ce
Added keyboard space check test program.
2018-03-20 00:52:55 +01:00
Jesper Gravgaard
b796a248c0
Added a fragment
2018-03-20 00:44:57 +01:00
Jesper Gravgaard
f613cbbe36
Added keyboard library and tester
2018-03-20 00:30:27 +01:00
jespergravgaard
2015c17d25
Updated fragment reference
2018-03-19 01:22:04 +01:00
jespergravgaard
8f6db3a39b
Implemented keyboard routines for reading the keyboard matrix status.
2018-03-19 01:15:18 +01:00
jespergravgaard
171b015d5f
Implemented simple DTV raster test
2018-03-18 16:35:47 +01:00
jespergravgaard
f212c55c02
Fixed const casting problem
2018-03-11 21:45:26 +01:00
jespergravgaard
979cb91eeb
Moved operator type inference to Operator class. Improved type inference.
2018-03-11 18:44:48 +01:00
jespergravgaard
cfa3ab9047
Renamed calculate() to calculateLiteral()
2018-03-10 21:14:51 +01:00
jespergravgaard
ec791672ce
Removed ConstantValueCalculator.
2018-03-10 21:11:24 +01:00
Jesper Gravgaard
18335aa29a
Moved constant literal value calculation into Operator
2018-03-10 17:06:42 +01:00
Jesper Gravgaard
1fa3d8bbbf
Moved statements, symbols and values into packages
2018-03-06 20:54:52 +01:00
Jesper Gravgaard
fd0b667b19
Moved expression operators to separate package
2018-03-06 19:50:26 +01:00
Jesper Gravgaard
73afb3d1be
Moved expression operators to separate classes.
2018-03-05 23:49:09 +01:00
Jesper Gravgaard
7876b98573
Caching alive combinations for better performance.
2018-03-05 10:45:07 +01:00
Jesper Gravgaard
133f8603c7
Fixed precedence problems for casts and inc/dec
2018-03-05 10:10:56 +01:00
jespergravgaard
f4196b9e67
Fixed log
2018-03-05 01:14:10 +01:00
jespergravgaard
f31eb7b1f0
Added scaled sin generator - found problem with cast & precedence.
2018-03-05 01:00:33 +01:00
jespergravgaard
0663888a3f
Added initial min/max sin-generator.
2018-02-26 23:00:10 +01:00
jespergravgaard
d5fd4a41c3
Fixed loop problem.
2018-02-25 19:27:36 +01:00
jespergravgaard
53d021bae3
Added second 8-bit sinus test (against 16-bit sinus)
2018-02-25 14:35:20 +01:00
jespergravgaard
2789361724
Fixed 8-bit sinus implementation.
2018-02-25 14:07:44 +01:00
jespergravgaard
7d26c74c21
Added initial 8-bit sinus (not quite working yet.)
2018-02-25 11:10:50 +01:00
jespergravgaard
97bc9870f9
Syntax changes
2018-02-25 00:39:19 +01:00
jespergravgaard
651de919b3
Comment fixed
2018-02-25 00:10:10 +01:00
jespergravgaard
73bdd4ff8d
Optimized sin /128 part.
2018-02-25 00:08:11 +01:00
jespergravgaard
f0917c7bed
Optimized ZP coalesce vastly.
2018-02-24 21:06:25 +01:00
jespergravgaard
1ec9060962
Added clobber test to ZP coalesce
2018-02-24 14:12:37 +01:00
jespergravgaard
a87a97c669
Moved sin to separate method.
2018-02-24 13:02:15 +01:00
jespergravgaard
948db1a389
Fixed lo/hi test
2018-02-24 08:14:01 +01:00
jespergravgaard
028fd75878
Fixed > & < for pointers.
2018-02-24 00:54:12 +01:00
jespergravgaard
b3537e3b66
Implemented full -$7fff-$7fff range word sinus generator.
2018-02-24 00:46:25 +01:00
jespergravgaard
6702baa875
Fixed lo/hi of dwords in constants.
2018-02-23 22:15:10 +01:00
jespergravgaard
37bfd18716
Working a bit on the sinus table generator.
2018-02-20 23:12:39 +01:00
jespergravgaard
696d1a1f5f
Working a bit on sinus table generator. Tested resulting sinus - it is within +/-2 of a java-calculated sinus.
2018-02-20 22:41:36 +01:00
jespergravgaard
db603554ac
Using reciprocal multiplication for divisions inside loop.
2018-02-20 10:53:31 +01:00
jespergravgaard
d3070fec14
Implemented first sinus generator using sinx=x-x^/3!+x^/5!.
2018-02-19 08:29:47 +01:00
jespergravgaard
a695a94422
Extended linear table gen with two tables.
2018-02-18 20:41:36 +01:00
jespergravgaard
b5dfef7368
Optimized line table generator. Improved const identification in phi-values.
2018-02-18 19:52:51 +01:00
jespergravgaard
0478bc7404
Limited label usage for constant integers referenced outside scope. Optimized division.
2018-02-18 19:39:08 +01:00
jespergravgaard
d3898d717e
Using labels for constant integers referenced outside scope.
2018-02-18 17:49:03 +01:00
jespergravgaard
76d3e25b84
Implemented inline dword constructor dword dw = { wl, wh };
2018-02-18 15:35:17 +01:00
jespergravgaard
0c7883532e
Split multiply tests for performance
2018-02-16 08:59:54 +01:00
jespergravgaard
8f21ffc0e4
Implemented signed word multiplication & test.
2018-02-16 01:13:57 +01:00
jespergravgaard
34d3c732da
Implemented word multiplication
2018-02-15 20:36:26 +01:00
jespergravgaard
b5a79848f3
Implemented dword ASM and printing
2018-02-15 19:50:33 +01:00
jespergravgaard
8b54f38640
Implemented bitshift signed byte multiply.
2018-02-15 12:35:40 +01:00
Jesper Gravgaard
c936da289e
Implemented normal binary multiply for unsigned integers - mul8u().
2018-02-14 11:30:31 +01:00
Jesper Gravgaard
a6f32bea13
Renamed multiply.kc to fastmultiply.kc - and methods multiply()/signed_multiply() to mulf8u(), mulf8s()
2018-02-14 10:05:18 +01:00
Jesper Gravgaard
7900c846c9
Adde useful comment
2018-02-13 23:21:24 +01:00
Jesper Gravgaard
3eb08597cf
Implemented 16bit signed division.
2018-02-13 23:10:47 +01:00
Jesper Gravgaard
1fd0cd6874
Moved remainder to global var
2018-02-13 22:07:01 +01:00
Jesper Gravgaard
8705527316
Fixed conflict
2018-02-13 21:40:52 +01:00
Jesper Gravgaard
a50d685574
Fixed problem with phi lifting not updating predecessor in phi blocks when introducing new blocks. Implemented signed division for bytes.
2018-02-13 21:27:17 +01:00
jespergravgaard
1feed93b43
Renamed long branch fix label.
2018-02-13 13:05:46 +01:00
jespergravgaard
aec15a3125
Removed a bit of unused code.
2018-02-13 12:46:35 +01:00
jespergravgaard
c8a2d03550
Fixed register coalesce issues (Double.MIN_VALUE is unexpectedly positive).
2018-02-13 04:23:44 +01:00
jespergravgaard
9f80f71c64
Isolated KickAss assembly during test. Fixed long branches. Closes #62
2018-02-13 03:34:21 +01:00
jespergravgaard
2db042801b
Isolated KickAss assembly during test. Fixed long branches. Closes #62
2018-02-13 03:34:01 +01:00
jespergravgaard
0d6ce93e93
Added KickAss assembly to Test
2018-02-12 23:41:46 +01:00
jespergravgaard
52dd6035a0
Dropped JSON serialization. Added KickAss JAR.
2018-02-12 21:39:26 +01:00
jespergravgaard
6b43d797f5
Using address-of in test-division.
2018-02-11 23:55:52 +01:00
jespergravgaard
3f62d86312
Implemented working address-of operator byte* pte = &b1;
2018-02-10 22:08:36 +01:00
jespergravgaard
085aa9f825
Added missing toString/()
2018-02-03 15:46:12 +01:00
jespergravgaard
623f83a076
Added address-of operator. Working in basic programs. Transience of variables not implemented so there is a risk the variable being referenced is optimized into a constant or removed. Closes #78
2018-02-03 13:20:34 +01:00
jespergravgaard
7343a85b91
Moved division into library
2018-02-01 22:55:26 +01:00
jespergravgaard
b502c26140
Optimizing zeropage coalesce to minimize moving values around. Closes #80
2018-02-01 22:36:54 +01:00
jespergravgaard
45302103fa
Implemented 16bit division. Added support for word arrays. (idx must be multiplied by 2 manually)
2018-02-01 20:17:08 +01:00
jespergravgaard
e0124ee654
Added 8bit unsigned division. Ensured that pointers are generated into ASM labels.
2018-01-31 21:27:23 +01:00
jespergravgaard
b466f2f5cc
Added test provoking a register clobber error.
2018-01-30 22:23:07 +01:00
jespergravgaard
63f6620246
Implemented register(A/X/Y) keyword for allocating variables to specific register. Closes #70
2018-01-30 22:18:49 +01:00
jespergravgaard
7e268c5b4f
Moving declared register through the variable chain.
2018-01-30 11:50:18 +01:00
jespergravgaard
88744c8624
Consolidating variable methods - preparing to remove the 3 sub-classes.
2018-01-30 10:23:55 +01:00
jespergravgaard
6a012a3fd0
Added register keyword
2018-01-30 10:04:35 +01:00
jespergravgaard
02d7170a4c
Made ASM parenthesis hard.
2018-01-28 23:22:22 +01:00
jespergravgaard
341d8c5556
Renamed dword fragments from vl... to vd...
2018-01-28 23:09:47 +01:00
jespergravgaard
546644b7d3
Added parenthesis to ASM expressions.
2018-01-28 23:06:19 +01:00
jespergravgaard
9b09aaab14
Made dword value higher (>$80000000)
2018-01-28 22:15:09 +01:00
jespergravgaard
3d33851983
Improved dword type inference.
2018-01-28 17:21:57 +01:00
jespergravgaard
9025b7d64a
Removed verbose log.
2018-01-28 16:39:58 +01:00
jespergravgaard
fff4299fb2
Added dword and signed dword. Closes #76
2018-01-28 16:19:15 +01:00
jespergravgaard
b3a1c330a7
Removed two synthable fragments
2018-01-28 10:25:40 +01:00
jespergravgaard
4bbddfb5e2
Added comment.
2018-01-24 23:34:35 +01:00
jespergravgaard
f599eb2735
Expanded inline casting to also handle nop casts of pointer derefs.
2018-01-24 23:29:44 +01:00
jespergravgaard
15c1108d2c
Expanded inline casting to also handle word/pointer casts. Closes #2 .
2018-01-22 00:31:28 +01:00
jespergravgaard
1646f9d3ff
Implemented inline casting - allowing for improved ASM when doing no-op casting.
2018-01-21 23:24:28 +01:00
Jesper Gravgaard
eab2e64154
Dropped suite again.
2018-01-21 16:30:37 +01:00
Jesper Gravgaard
1d54fec7be
Put tests into suite to get deterministic sequencing.
2018-01-21 11:39:06 +01:00
Jesper Gravgaard
9328608fe6
Rebuilt test files with new synth ASM's.
2018-01-21 11:14:20 +01:00
Jesper Gravgaard
2d8cf433f6
Sorting synthesis by clobber when printing. Added an handling of synths with equal cycles & clobber but different ASM.
2018-01-21 09:39:37 +01:00
jespergravgaard
267d006752
Improved bigscroll by inlining screen lines in array assignments.
2018-01-19 00:59:51 +01:00
jespergravgaard
30690b6306
Removed a bunch of synth rules. Added a few fragments.
2018-01-19 00:10:09 +01:00
jespergravgaard
cdbc2e05cf
Removed one synth rule. Fixed flaw in others.
2018-01-18 23:51:42 +01:00
Jesper Gravgaard
eadf85a048
Improved fragment generation further. Rules need clean-up soon to improve efficiency.
2018-01-18 23:21:31 +01:00
jespergravgaard
c7b6989c6c
Removed verbosity
2018-01-16 16:58:11 +01:00
jespergravgaard
08f2e3a6b8
Added rasterbar test program
2018-01-15 22:16:25 +01:00
jespergravgaard
13bd9509d1
Fixed issue with loop depth - now calculated corrent when some functions have no loops.
2018-01-15 21:02:49 +01:00
jespergravgaard
4c22877f0e
Only logging synthesis issue when set to verbose
2018-01-07 12:41:13 +01:00
jespergravgaard
a6e75ffcb0
Implemented fragment tests - first for assignment to unsigned bytes.
2018-01-07 11:42:46 +01:00
jespergravgaard
a047fedebf
Moved KC test files into separate folder
2018-01-06 16:36:54 +01:00
jespergravgaard
2603740d15
Moved KC test files into separate folder
2018-01-06 16:36:39 +01:00
jespergravgaard
40153fc6d6
Working on optimal synthesis
2018-01-06 14:01:40 +01:00
jespergravgaard
30d77c1450
Working on optimizing synthesis
2018-01-05 22:29:21 +01:00
jespergravgaard
b55485db50
Implemented sub-fragment clobber avoidance. Improved best template updating. Now the graph-based fragment synthesis system works. Still need to clean-up the synthesis rules.
2018-01-03 08:15:17 +01:00
jespergravgaard
e9965580a4
Iplemented graph based synthesis. Working on the kinks - eg. issue #75
2018-01-03 01:00:55 +01:00
jespergravgaard
b29ed11a81
Renamed fragment system classes in prepararion of graph based solution.
2018-01-02 17:09:42 +01:00
jespergravgaard
3595db56db
Renamed fragment system classes in prepararion of graph based solution.
2018-01-02 14:13:08 +01:00
jespergravgaard
2084be92e0
Implemented the rest of the comparison test. Fixed a double jump problem.
2018-01-02 10:17:59 +01:00
jespergravgaard
53d8afbb1d
Fixed an error in with comparison rewriting
2018-01-01 22:59:06 +01:00
jespergravgaard
4d46820cf4
Reformatted for code style.
2018-01-01 21:25:11 +01:00
jespergravgaard
20b9ab6881
Tried adding more memory for the Junit JVM
2018-01-01 15:59:15 +01:00
jespergravgaard
939b70aa23
Started implementing new style fragment synthesis rules. Yielding quite good initial optimizations.
2018-01-01 15:09:47 +01:00
jespergravgaard
269c1343ed
Implemented usage sorting and a file details logging option.
2017-12-31 00:15:23 +01:00
jespergravgaard
be37a45e36
Closes #9
2017-12-30 23:55:14 +01:00
jespergravgaard
14616458e5
Used usage module to identify & remove all unneeded fragments. Many unused ones moved into a new "unused" folder to be removed later.
2017-12-30 23:54:27 +01:00
jespergravgaard
aeba75906b
Removed all redundant fragment ASM files.
2017-12-30 22:17:42 +01:00
jespergravgaard
4f30cef2d3
Implemented asm template usage statistics. Now prefer synthesis over loading.
2017-12-30 21:59:23 +01:00
jespergravgaard
203af62173
Refactoring fragment synthesis to allow scoring of files & synthesis.
2017-12-30 19:22:44 +01:00
jespergravgaard
58c206cef4
Added more options to CompileLog for controlling verbosity.
2017-12-30 17:31:22 +01:00
jespergravgaard
174346d0f1
Improved Fragment Synthesis - trying all possible combinations. Closes #71
2017-12-30 17:24:30 +01:00
jespergravgaard
66fdfb08a9
Improved ZP detection
2017-12-30 14:18:57 +01:00
jespergravgaard
2367aa93cd
Added final score to the log
2017-12-30 13:45:59 +01:00
jespergravgaard
c7b137d631
Added working test for signed multiplication. Refactored AsmFragment synthesis away from relying on vwuc.
2017-12-30 11:55:28 +01:00
jespergravgaard
b95c7e20f5
Moved multiply into a library
2017-12-29 22:45:19 +01:00
jespergravgaard
df227e0b49
Implemented fast multiplication - tested that all results are correct.
2017-12-29 19:35:54 +01:00
jespergravgaard
fa00ecfbbf
Test data for alignment test
2017-12-29 18:20:44 +01:00
jespergravgaard
694fb66379
Added data alignment directive for arrays/strings.
2017-12-29 18:20:11 +01:00
jespergravgaard
39925809e3
Removed AsmFragment log again
2017-12-29 16:34:55 +01:00
jespergravgaard
b2a5e5184b
Removed AsmFragment log again
2017-12-29 16:19:23 +01:00
jespergravgaard
6b79ecc537
Implemented all fast multiply tables.
2017-12-29 16:05:27 +01:00
jespergravgaard
db6c1f54db
Improved log format slightly
2017-12-29 13:53:16 +01:00
jespergravgaard
5ec1070b41
Improved tests for CI
2017-12-29 11:40:03 +01:00
jespergravgaard
31e412bb11
Slimming log output
2017-12-29 11:21:11 +01:00
jespergravgaard
32d7db5ce7
Moved tests into Maven Test area to allow maven-based testing.
2017-12-28 15:34:32 +01:00
jespergravgaard
ff51d04356
Improved KC mul table gen.
2017-12-28 15:10:56 +01:00
jespergravgaard
d1ee716008
Improved KC mul table gen.
2017-12-28 14:46:31 +01:00
jespergravgaard
5e25684cf9
Slight improvement of code
2017-12-28 04:38:19 +01:00
jespergravgaard
6dcafb83c2
Optimized KC based multiply table generator.
2017-12-28 04:32:26 +01:00
jespergravgaard
8198b8f168
Generating fast multiply table in both ASM and KC - now word-based generation.
2017-12-28 04:13:31 +01:00
jespergravgaard
389b6042ed
Generating fast multiply table in both ASM and KC.
2017-12-28 03:32:59 +01:00
jespergravgaard
bb0aeb9e3b
Implementing fast multiplication KC program.
2017-12-28 01:50:55 +01:00
jespergravgaard
6532fdd002
Added array length mismatch error in Pass1.
2017-12-28 00:17:39 +01:00
jespergravgaard
19a040345f
Added array zero initializer and ASM .fill for arrays declared with a size but without initializer.
2017-12-27 23:53:51 +01:00
jespergravgaard
62a56f23fb
Removed unused LValueLoHiByte.
2017-12-27 22:48:26 +01:00
jespergravgaard
4bcf51732b
Added aseetion stopping compilation at pass 3 if any value list has survived.
2017-12-27 22:22:53 +01:00
jespergravgaard
347fc03f47
Made all declared arrays/strings implicitly constant.
2017-12-27 22:08:15 +01:00
jespergravgaard
4a7dd31d40
Fixed word constructor detection to detect all inline word constructors.
2017-12-27 21:47:07 +01:00
jespergravgaard
212e8572de
Improved constant string detection. Type System is still a bit of a mess.
2017-12-27 20:52:38 +01:00
jespergravgaard
8a1dbc36d7
Refactored recursive value replacement into ValueReplacer. Moved VariableReplacer to a simple ValueReplacer. Added test for true inline word constructors.
2017-12-27 13:40:55 +01:00
jespergravgaard
a3a7d02cd7
Added test to confirm that pointer destinations can now be incremented corrently. Closes #29
2017-12-26 17:38:51 +01:00
jespergravgaard
b412a4aefc
Assignments are now expressions. For-loops can now contain assignments in the increment part. LValue handling reimplemented (lvalue no longer exist in parser - only expression). RValues now also contains pointer derefs. Complex array expressions (SCREEN+$100)[i] now possible as LValues. ASM fragment generation improved to handle new more complex LValues & RValues. Closes #5 . Closes #43
2017-12-26 17:24:30 +01:00
jespergravgaard
2c44783879
Added ALU potential for _word_ operator
2017-12-26 10:31:30 +01:00
jespergravgaard
91f22c44f0
Removed all ASM steps between ASM optimizations - result smaller log file.
2017-12-26 09:15:10 +01:00
jespergravgaard
42b026a757
Allowing ZP coalescing whenever registers are the same type (before variables had to be the same type).
2017-12-26 00:24:40 +01:00
jespergravgaard
e3353acbc9
Implemented syntax for composing word from two bytes word w = { b1, b2 };
...
Optimizer still needs to attempt to (and allow) placing the two byte variables directly at the lo/hi-vars of the word wo minimize moving data around.
Closes #37
2017-12-25 23:27:54 +01:00
Jesper Gravgaard
bd3c26b5ec
Fixed constant inlining inside constant value lists.
2017-12-25 20:53:52 +01:00
Jesper Gravgaard
e314794f0b
Implemented true recursive variable replacer that can replace into pointers/value lists. Also using this when building SSA. Prepared syntax ant type inference for building a word from 2 bytes using word w = { b1, b2 };
2017-12-25 20:19:53 +01:00
Jesper Gravgaard
eb6ee9bff8
Prepared parser for inline word expressions.
2017-12-23 15:35:13 +01:00
Jesper Gravgaard
10b8431833
Simplified fragment value naming further.
2017-12-23 10:49:18 +01:00
Jesper Gravgaard
8b96c1ae40
Merge remote-tracking branch 'gitlab/master'
2017-12-23 10:31:24 +01:00
Jesper Gravgaard
9d6fd3e1c9
Simplified fragment symbol naming
2017-12-23 10:31:20 +01:00
jespergravgaard
c38e9b85e4
Implemented signed words - first test works. Closes #22
2017-12-23 02:35:50 +01:00
jespergravgaard
978c1fb997
Improved readability.
2017-12-22 14:34:10 +01:00
jespergravgaard
b3649997b6
Simplified fragement synthesis.
2017-12-13 00:48:59 +01:00
jespergravgaard
177be17dd9
Last of fragment renaming completed (zpptrby1/zpptrsby1 => pbuz1/pbsz1)
2017-12-13 00:29:48 +01:00
jespergravgaard
49b8545232
Next part of fragment renaming completed (coby1/cosby1/cowo1/coswo1 => vbuc1/vbsc1/vwuc1/vwsc1)
2017-12-12 22:39:27 +01:00
jespergravgaard
07478e86b1
Next part of fragment renaming completed (zpby1/zpsby1 => vbuz1/vbsz1)
2017-12-12 20:53:22 +01:00
jespergravgaard
8b8095ff87
First part of fragment renaming completed (aby/xby/yby/asby/xsby/ysby => vbuaa/vbuxx/vbuyy/vbsaa/vbsxx/vbsyy)
2017-12-12 00:09:14 +01:00
Jesper Gravgaard
5a819659a0
Removed signed byte register usage by allowing the fragment binding to also look at the variable type.
2017-12-10 20:00:00 +01:00
Jesper Gravgaard
e2aa0cd7e0
Removed signed byte register usage by allowing the fragment binding to also look at the variable type.
2017-12-10 19:53:14 +01:00
jespergravgaard
69dba6ea27
Added casting problem test nocast.kc
2017-12-05 23:31:43 +01:00
jespergravgaard
a79853a4ec
Improved static ASM analysis to recognize & remove several LDA/LDX/LDY of the same value.
2017-12-05 22:01:32 +01:00
jespergravgaard
c1b2b8ab7d
Added sprite MSB
2017-12-05 21:49:40 +01:00
jespergravgaard
ad9873d201
Improved slightly
2017-12-05 01:15:17 +01:00
jespergravgaard
5b070b5a27
Added progress while generating sines
2017-12-05 01:11:31 +01:00
jespergravgaard
3569405dc1
Added some consts
2017-12-04 23:54:12 +01:00
jespergravgaard
56b74e7e0f
Implemented initial sinus sprites.
2017-12-04 23:48:14 +01:00
jespergravgaard
c74b86a616
Moved tables into methods.
2017-12-03 23:24:25 +01:00
jespergravgaard
9ea1d4f2c1
Minor refactoring improving sine example.
2017-12-03 23:17:13 +01:00
jespergravgaard
c769aabc0a
Minor refactoring improving float lib.
2017-12-03 23:08:47 +01:00
jespergravgaard
80d5f2bf9d
Updated print test reference data.
2017-12-03 22:59:25 +01:00
jespergravgaard
e18a8cb7d8
Added library for using BASIC functions. Improved print library. Added test creating a sine. Added asserts for methods with to few/many parameters. Added assert for requiring procedure return value. Added som missing fragments.
2017-12-03 22:57:54 +01:00