1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-28 11:51:09 +00:00
Commit Graph

928 Commits

Author SHA1 Message Date
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