Commit Graph

1609 Commits

Author SHA1 Message Date
Elektron72
605df7c91c Move code used for all CBM systems to new package
AssemblyProgram.kt and Petscii.kt are not only used for the Commodore
64; they are also used for the Commander X16, and will likely be used
for any future Commodore systems added to Prog8. Therefore, they should
be moved to a new package containing functionality shared between these
systems.
2021-03-29 17:21:48 -04:00
Irmen de Jong
ec60cad8bb commander-x16 prototype board #2 (rom v39+) address changes 2021-03-27 22:20:46 +01:00
Irmen de Jong
6aa0f5a392 small optimization 2021-03-27 15:45:30 +01:00
Irmen de Jong
4cae2c56ec implemented last remaining codegen for word-byte division and remainders. 2021-03-25 22:03:36 +01:00
Irmen de Jong
d840975054 remove unreached error checks 2021-03-25 21:47:05 +01:00
Irmen de Jong
1b14da6c03 compiler warning instead of crash when attempting to assign invalid array value to other array 2021-03-24 22:01:22 +01:00
Irmen de Jong
292640b17a asmgen: string values cannot be typecasted 2021-03-24 21:49:33 +01:00
Irmen de Jong
112a7b09f2 added codegen for expression that needs the status-flag register result as a value on the stack 2021-03-24 21:42:27 +01:00
Irmen de Jong
e7ef2ed31b todo 2021-03-23 23:48:53 +01:00
Irmen de Jong
af4de6d2fc replacing complex array indexer expressions moved to BeforeAsmGeneration + use cx16 virtualregister instead of adding temp variables for this 2021-03-23 23:44:14 +01:00
Irmen de Jong
bd295ffc99 array indexer complexity is now dealt with in the asm-generator only 2021-03-22 19:40:57 +01:00
Irmen de Jong
cbc3e37a89 stuff 2021-03-22 02:29:59 +01:00
Irmen de Jong
0991131fa8 don't stript unused asmsub definitions 2021-03-21 19:55:21 +01:00
Irmen de Jong
2e928bd3c2 fix compiler crash for certain str argument to asm functions 2021-03-21 18:39:39 +01:00
Irmen de Jong
ca868ae19e added cx16.vload() (like the VLOAD basic instruction) 2021-03-20 02:39:53 +01:00
Irmen de Jong
3e286dd14c move test 2021-03-18 19:34:54 +01:00
Irmen de Jong
11247d52b1 fix bugs in word <= and >= comparisons 2021-03-18 19:20:48 +01:00
Irmen de Jong
1dbc902513 fix bugs in uword <= and >= comparisons 2021-03-18 18:41:41 +01:00
Irmen de Jong
330e691b78 wip 2021-03-18 02:43:08 +01:00
Irmen de Jong
6780d4f562 fix bug in uword > comparison 2021-03-18 02:21:21 +01:00
Irmen de Jong
b30b8b7368 fix bug in float < and > comparisons 2021-03-18 01:41:54 +01:00
Irmen de Jong
3df182b8c3 created extensive comparison test suite 2021-03-18 00:50:13 +01:00
Irmen de Jong
7f21d89fea moved test programs to test folder in compiler module 2021-03-17 20:15:16 +01:00
Irmen de Jong
9a6bd760bd fixed issues in uword '>' 2021-03-16 23:40:32 +01:00
Irmen de Jong
00b9766aea fixed issues in word '>' 2021-03-16 23:22:58 +01:00
Irmen de Jong
6381d2b6ac improve word '<', word (u)word '<=' , uword '>=' codegen 2021-03-16 18:15:47 +01:00
Irmen de Jong
d2ab5f230d example TODOs 2021-03-16 01:09:25 +01:00
Irmen de Jong
824b41d457 improve word '>' and '>=' codegen 2021-03-16 00:48:03 +01:00
Irmen de Jong
b5523c7077 don't optimize with inlining too aggressively (code bloat) 2021-03-16 00:33:15 +01:00
Irmen de Jong
eb3594b18c revert to just using comparison expressions in graphics code (we're optimizing these now!) 2021-03-16 00:11:55 +01:00
Irmen de Jong
852d85d010 improve uword '<' and '>' codegen 2021-03-16 00:03:51 +01:00
Irmen de Jong
5e0aef04fe improve (u)byte '>=' codegen 2021-03-15 23:20:16 +01:00
Irmen de Jong
a00c693f93 improve (u)byte '<=' codegen 2021-03-15 23:17:04 +01:00
Irmen de Jong
c943da1448 improve ubyte '<' and '>' codegen 2021-03-15 23:12:52 +01:00
Irmen de Jong
b630fae580 refactor byte '==', '!=', '<' and '>' codegen 2 2021-03-15 23:08:30 +01:00
Irmen de Jong
38e40084f1 refactor byte '==', '!=', '<' and '>' codegen 2021-03-15 22:47:18 +01:00
Irmen de Jong
bf23ad78e6 improve byte '<' and '>' codegen 2021-03-15 22:26:00 +01:00
Irmen de Jong
ded1d19737 improve '==' and '!=' codegen 2021-03-15 19:29:32 +01:00
Irmen de Jong
496a3b0d2c todo 2021-03-15 18:56:25 +01:00
Irmen de Jong
6922333755 add a cmp(x,y) function that returns no value but only sets the status bits based off the comparison (can be used with a conditional jump afterwards) 2021-03-13 15:11:22 +01:00
Irmen de Jong
a00c39e9cf compiler error instead of crash when using functioncall without returnvalue 2021-03-12 19:31:04 +01:00
Irmen de Jong
1c1da8e38e additional optimization to the bresenham line routines 2021-03-10 18:49:40 +01:00
Irmen de Jong
6995ee2d17 fix cx16 bresenham line inaccuracy 2021-03-09 22:04:19 +01:00
Irmen de Jong
6c60ea9cac allocate even more c64 zeropage locations for floats 2021-03-09 21:47:36 +01:00
Irmen de Jong
2431ed811a don't remove typecasts in asmsub argument lists 2021-03-09 21:29:48 +01:00
Irmen de Jong
6bd205c02a fix c64 bresenham line inaccuracy 2021-03-09 21:07:55 +01:00
Irmen de Jong
62ec77e148 ver 2021-03-08 23:35:52 +01:00
Irmen de Jong
9120e1de88 fix ubyte/uword to float conversion crashes on Commander X16 2021-03-08 23:21:52 +01:00
Irmen de Jong
60e169bd87 added optimized integer square (x*x) routine 2021-03-08 23:08:47 +01:00
Irmen de Jong
e4bca5fe47 version 2021-03-06 23:07:30 +01:00
Irmen de Jong
a1729b65ab fix min(), max(), sum(), abs() 2021-03-06 22:57:22 +01:00
Irmen de Jong
2950d26c8e array and struct value assignments now via memcopy instead of assignment per element 2021-03-06 22:10:03 +01:00
Irmen de Jong
4f8d4a9585 use memcopy to assign arrays 2021-03-06 19:01:16 +01:00
Irmen de Jong
de04bd8cfa added more convenient number-to-string functions to conv library 2021-03-06 13:47:27 +01:00
Irmen de Jong
076a547f91 added more convenient number-to-string functions to conv library 2021-03-06 13:34:57 +01:00
Irmen de Jong
dffd0a2706 added fastrnd8() with the old rnd() generator code in it, new code for rnd() uses the much better rndw() generator now. 2021-03-05 22:49:14 +01:00
Irmen de Jong
8dfe510883 avoid compiler crash when evaluating const expressions fails due to things like integer out of bounds 2021-03-04 01:32:02 +01:00
Irmen de Jong
96ba9f5902 spelling correction 2021-03-04 01:31:29 +01:00
Irmen de Jong
32d894d6b6 optimized repeat loop for word counts 2021-02-28 21:22:46 +01:00
Irmen de Jong
543efa4299 attempt 2 at optimizing repeats 2021-02-28 21:02:17 +01:00
Irmen de Jong
eba0708099 Revert "optimized repeat loop for word counts"
This reverts commit 51e6bf0d
2021-02-28 20:29:28 +01:00
Irmen de Jong
51e6bf0d45 optimized repeat loop for word counts 2021-02-28 17:34:18 +01:00
Irmen de Jong
07b5c44a54 preparing to optimize 16 bit repeat loop 2021-02-28 17:13:15 +01:00
Irmen de Jong
9fe32c1c34 codegen uses 'bra' on 65c02 instead of 'jmp' 2021-02-28 16:46:08 +01:00
Irmen de Jong
0e0278c84a for loops now use 'bra' if available 2021-02-28 16:35:59 +01:00
Irmen de Jong
dea775a9cd package refactor 2021-02-28 16:29:15 +01:00
Irmen de Jong
7e3e18a5c7 deal with 'bra' better on 65c02 2021-02-28 16:20:03 +01:00
Irmen de Jong
8e3ebc84f0 readme 2021-02-28 15:40:04 +01:00
Irmen de Jong
e6079dfd71 don't always use pha/pla in pointer expression code 2021-02-27 16:21:46 +01:00
Irmen de Jong
2b435fe6a5 vtui example updated to vtui 0.6 2021-02-27 03:30:21 +01:00
Irmen de Jong
8b1e1e68fa switch to Kotlin's new JVM IR compilation 2021-02-26 01:10:00 +01:00
Irmen de Jong
fd11927708 optimized highres 4c position calc a bit 2021-02-26 00:43:51 +01:00
Irmen de Jong
cd500fee8c wording 2021-02-25 00:52:27 +01:00
Irmen de Jong
f275ed96ea optimized palette.set_color() 2021-02-24 00:01:27 +01:00
Irmen de Jong
d14dac3872 got rid of final traces of heapid, fixed compiler warnings 2021-02-24 00:01:04 +01:00
Irmen de Jong
c677f0a875 fixed string interning to also consider the alt-encoding 2021-02-23 23:27:44 +01:00
Irmen de Jong
e65c5402d7 added cx16 rasterbars example 2021-02-22 02:11:44 +01:00
Irmen de Jong
334f86480a added irq routines for cx16 2021-02-22 00:48:41 +01:00
Irmen de Jong
0e62f5b759 don't remove subroutines in a block marked with "force_output" 2021-02-21 23:25:26 +01:00
Irmen de Jong
edf9a500d3 kernel -> kernal 2021-02-21 22:48:06 +01:00
Irmen de Jong
001d01fdaf slight tweak to 64tass .cpu to enable wdc65c02 variant on cx16 with its extra opcodes 2021-02-21 22:45:23 +01:00
Irmen de Jong
a95677564e changed system irq/rasterirq setting routines 2021-02-21 22:23:50 +01:00
Irmen de Jong
4aca8bb8df also track subroutines in the callgraph that only get their address taken 2021-02-21 22:09:49 +01:00
Irmen de Jong
5540482888 compiler error for duplicate when choice labels 2021-02-21 21:26:15 +01:00
Irmen de Jong
00d735249b fix pointer write outside zeropage 2021-02-21 16:22:44 +01:00
Irmen de Jong
b5289511ba don't remove empty when choice from the list of choices! 2021-02-21 15:11:19 +01:00
Irmen de Jong
b6ded8501f added 'align_word' and 'align_page' block options to control block start address alignment in the assembler 2021-02-21 01:24:44 +01:00
Irmen de Jong
781915d2cf reducing dependencies 2021-02-20 17:54:33 +01:00
Irmen de Jong
f4cef3eaf2 reducing dependencies 2021-02-20 17:19:54 +01:00
Irmen de Jong
d23c2eed86 test 2021-02-20 16:58:24 +01:00
Irmen de Jong
15695a304e start address of blocks without explicit memory address, is now word-aligned in memory 2021-02-20 03:06:00 +01:00
Irmen de Jong
6319269976 underscore '_' is now also mapped to petscii, to the graphical symbol 2021-02-20 02:55:06 +01:00
Irmen de Jong
0ed3d951a7 don't require carry parameter Pc to asmsubs to be last 2021-02-20 02:27:57 +01:00
Irmen de Jong
2aa39757b4 reduce dependencies on global compilationtarget 2021-02-19 19:02:29 +01:00
Irmen de Jong
39d32a3600 refactor cpuCheck 2021-02-19 18:48:12 +01:00
Irmen de Jong
219d17de34 reduce dependencies on global compilaiontarget 2021-02-19 18:33:54 +01:00
Irmen de Jong
9bb5b454e4 reduce dependencies on global compilaiontarget 2021-02-18 23:44:26 +01:00
Irmen de Jong
b543cc34cd no longer warn about removing unused asmsubs 2021-02-18 01:52:56 +01:00
Irmen de Jong
791dbbab9b fixed block label itself not getting the correct memory address in the assembly
fixed %asmbinary relative path issues
2021-02-18 01:28:33 +01:00
Irmen de Jong
ac0b1da3fc machinedefinition doesn't import system libs itself anymore 2021-02-18 00:43:32 +01:00
Irmen de Jong
2f97aedc3c fixed invalid removal of string tag from memory() 2021-02-16 23:58:31 +01:00
Irmen de Jong
ab544ee965 improved string constant interning; no longer output duplicate strings in the Ast 2021-02-16 23:43:38 +01:00
Irmen de Jong
fa527f8624 restored optimization of txt.print() with strings of lengths 1 or 2 2021-02-16 23:37:11 +01:00
Irmen de Jong
81930312ff added textio.setcc2() on commanderX16 to enable setting fg+bg colors. 2021-02-15 17:47:48 +01:00
Irmen de Jong
1e3930aae2 fix bug in evaluating logical expressions if one of the operands was not boolean 1 or 0 2021-02-14 18:29:05 +01:00
Irmen de Jong
62dda4d891 fix asm bug in conv.any2uword 2021-02-14 17:13:56 +01:00
Irmen de Jong
53f0318187 version 6.1 2021-02-14 00:07:45 +01:00
Irmen de Jong
5e6e711f33 optimize pokew() 2021-02-14 00:05:57 +01:00
Irmen de Jong
78af2cd4dc optimize peekw() 2021-02-13 23:52:08 +01:00
Irmen de Jong
02cb237623 added poke() and pokew() builtin functions 2021-02-13 23:16:50 +01:00
Irmen de Jong
cc0f19653e added peek() and peekw() builtin functions 2021-02-13 22:38:39 +01:00
Irmen de Jong
4fff150c7b fixed mkword() bug 2021-02-13 22:00:13 +01:00
Irmen de Jong
f6136891cc optimized for loop over const bytes, fixed downto 1 2021-02-13 13:46:02 +01:00
Irmen de Jong
1bbd77fddb added txt.column() 2021-02-10 22:47:49 +01:00
Irmen de Jong
7c09ac632c got rid of the --longOptionNames in the cli argparser 2021-02-10 21:26:46 +01:00
Irmen de Jong
3502f65332 reducing dependencies 2021-02-09 19:03:21 +01:00
Irmen de Jong
628390c3b5 reducing dependencies 2021-02-09 18:56:47 +01:00
Irmen de Jong
bc37097df2 reducing dependencies 2021-02-09 18:49:25 +01:00
Irmen de Jong
7d98275763 reducing dependencies 2021-02-09 02:06:27 +01:00
Irmen de Jong
d6ffb549f6 reducing dependencies 2021-02-09 01:47:05 +01:00
Irmen de Jong
bcd0db984d reducing ast dependencies - moved ErrorReporter back to compiler module 2021-02-09 01:15:31 +01:00
Irmen de Jong
d9244f22c2 reducing ast dependencies - separate Ast compilation module 2021-02-09 01:06:11 +01:00
Irmen de Jong
c97d76dbf2 reducing ast dependencies 2021-02-09 00:05:56 +01:00
Irmen de Jong
9e05e97d7f reducing ast dependencies 2021-02-07 19:38:20 +01:00
Irmen de Jong
ccd1516637 reducing ast dependencies 2021-02-07 18:44:38 +01:00
Irmen de Jong
f1f51a01c6 reducing ast dependencies 2021-02-07 18:34:55 +01:00
Irmen de Jong
be75b8dbe5 reducing ast dependencies 2021-02-07 07:05:00 +01:00
Irmen de Jong
02fae0e722 reducing ast dependencies 2021-02-07 06:50:59 +01:00
Irmen de Jong
e35b739579 reducing ast dependencies 2021-02-07 06:39:08 +01:00
Irmen de Jong
34aa6cc8a2 compiler checks for conflicting register usage in sub arguments vs target parameter registers 2021-02-07 05:25:50 +01:00
Irmen de Jong
eb2d5bb1f8 fix bank arg error in gfx2.position 2021-02-06 16:58:17 +01:00
Irmen de Jong
cc96ab7a9b assignment source now also treats cx16.r[0-15] as registers
no longer create useless assignment code for r0=r0
2021-02-06 13:01:45 +01:00
Irmen de Jong
49ea31c0a4 fix shift signed word right 2021-02-06 01:23:31 +01:00
Irmen de Jong
f1478d776b fix vertical line highres 4color 2021-02-05 18:09:21 +01:00
Irmen de Jong
40e4cfb686 amiga 2021-02-04 17:47:52 +01:00
Irmen de Jong
76f459ee95 amiga 2021-02-02 23:09:03 +01:00
Irmen de Jong
c478718019 fixed and optimized horiz_line for highres 4c 2021-02-01 22:03:10 +01:00
Irmen de Jong
c27248a58b amiga 2021-01-29 23:52:29 +01:00
Irmen de Jong
51bc539468 added palette.set_rgb() 2021-01-29 02:46:07 +01:00
Irmen de Jong
2395863e7e asmsubs: fix clobbering and optimize register usage for loading the arguments 2021-01-29 01:52:49 +01:00
Irmen de Jong
69c459c8ac gfx2 highres 4colors 2021-01-28 22:28:14 +01:00
Irmen de Jong
c8855b2b10 better error msg 2021-01-27 02:40:56 +01:00
Irmen de Jong
a910c0fddb gfx2 highres 4colors 2021-01-27 02:31:20 +01:00
Irmen de Jong
fd55611cac asmsubs: don't use stack for simple lsb/msb/mkword arguments 2021-01-27 01:41:55 +01:00
Irmen de Jong
52f6be2bb0 gfx2: changed screen mode numbering to a more intuitive sequence 2021-01-26 18:17:20 +01:00
Irmen de Jong
dd2c436dc6 tweaked repeat 2021-01-25 23:39:54 +01:00
Irmen de Jong
9f047ba752 palette.set_monochrome() now has 2 arguments: screen and draw color RGB values 2021-01-24 04:15:15 +01:00
Irmen de Jong
cdc6d9aa65 moved cx16 imageviewer into its own git repo. Version 6.0. 2021-01-23 23:49:17 +01:00
Irmen de Jong
997bc21feb added offsetof() to get the byte offset of struct members. 2021-01-23 23:11:57 +01:00
Irmen de Jong
975af4764d remove no longer needed strlen() calls from diskio routines 2021-01-23 22:46:46 +01:00