Irmen de Jong
2f62271453
callgraph
2021-04-05 00:55:27 +02:00
Irmen de Jong
75d5117a2d
fix struct flattening parent node mismatch
2021-04-05 00:30:42 +02:00
Irmen de Jong
374e2b311d
refactoring unused code removal and noModification
2021-04-04 16:36:33 +02:00
Irmen de Jong
d582d1cc42
fix inlining subroutines multiple times
2021-04-02 21:23:40 +02:00
Irmen de Jong
9e2b8a2aa9
fix ast node duplication/reference bug in certain optimizers
2021-04-02 19:01:46 +02:00
Irmen de Jong
6fdc733941
inlining subroutines that contain variable declarations is now possible (gives a warning though)
2021-04-02 18:30:32 +02:00
Irmen de Jong
422b390c48
fix ast node duplication/reference bug in certain optimizers
2021-04-02 16:56:52 +02:00
Irmen de Jong
8e26e38ecc
fix RTS-issue with inlined return statement
2021-04-01 23:30:19 +02:00
Irmen de Jong
02e12d8575
improvements for inlined subroutines: fix identifier scoping
2021-04-01 23:16:04 +02:00
Irmen de Jong
fe2954ce08
todo
2021-04-01 22:10:04 +02:00
Irmen de Jong
1fe4439395
fixed wrong return value when calling other subroutines in the return expression
2021-04-01 21:56:24 +02:00
Irmen de Jong
3f30d3aa89
added sys.waitrastborder() for c64
2021-04-01 18:53:16 +02:00
Irmen de Jong
129e17b33a
added sys.waitvsync() + missing documentation
2021-04-01 18:31:33 +02:00
Irmen de Jong
bf2d8c3f4b
update kotlin plugin to 1.4.32
2021-03-31 20:52:05 +02:00
Irmen de Jong
b29f04ce01
fix unittest
2021-03-31 20:49:35 +02:00
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
Irmen de Jong
bf69219f98
allow uwordpointer[index] syntax as equivalent to @(uwordpointer+index) index can be >255 here!
2021-01-23 22:39:30 +01:00
Irmen de Jong
f34f9329f1
fixed bug in memcopy
2021-01-23 19:49:53 +01:00
Irmen de Jong
195cd7597d
fix pointer-to-pointer assignment
2021-01-23 18:50:46 +01:00
Irmen de Jong
4a81406262
fix diskio rename() and delete()
2021-01-23 17:57:30 +01:00
Irmen de Jong
6f0103398b
fix Y register clobbering in pointer access code
2021-01-23 15:24:41 +01:00
Irmen de Jong
055f917a2e
fixed missing code for certain memread expressions when casted to uword
2021-01-20 01:30:11 +01:00
Irmen de Jong
4ed7fb771c
started pointer access optimization
2021-01-20 00:17:33 +01:00
Irmen de Jong
c328e9018c
cx16 assembler was moved into its own github repo
2021-01-18 01:38:33 +01:00
Irmen de Jong
b270f6f713
added cx16.rombank() and rambank(). Select kernal rom in i/o heavy programs for faster disk i/o
2021-01-17 19:16:21 +01:00
Irmen de Jong
5c13918f11
cx16 reset_system() bank selection change
2021-01-17 18:28:43 +01:00
Irmen de Jong
40cc216557
optimize pointer var access if var is already on zeropage
2021-01-16 18:31:37 +01:00
Irmen de Jong
1481f92cb0
optimize memory read expression of ptr + constant index
2021-01-16 17:41:15 +01:00
Irmen de Jong
76d54fbe5c
optimize assignment to memory pointer with fixed byte offset
2021-01-15 20:46:47 +01:00
Irmen de Jong
9f72779cdc
optimize assignment from memory pointer with fixed byte offset
2021-01-15 20:09:13 +01:00
Irmen de Jong
3dcef89a74
optimize (zp),y instructions for 65c02 to use (zp)
2021-01-15 19:14:35 +01:00
Irmen de Jong
7277c08fa6
added textio.spc(). assem tweaks.
2021-01-14 22:51:09 +01:00
Irmen de Jong
8ac17ae14e
fix assem parsing of 4 letter instructions
2021-01-14 18:41:29 +01:00
Irmen de Jong
e0794db33a
version 6.0beta
2021-01-13 22:41:11 +01:00
Irmen de Jong
b128b79132
clearer description of memory()
2021-01-13 22:32:17 +01:00
Irmen de Jong
79e6d4b8dd
better check for EOF status
2021-01-13 22:11:51 +01:00
Irmen de Jong
a0ec37b35b
compiler error for missing return value
2021-01-10 16:36:08 +01:00
Irmen de Jong
506ac8014c
fix diskio.f_readline() that skipped first char. It also doesn't leave the end of line char in the string now.
2021-01-10 16:21:25 +01:00
Irmen de Jong
72b4198301
added string.lower() / string.upper()
2021-01-10 15:29:43 +01:00
Irmen de Jong
9fc0c3f849
removed diskio.f_read_exact() - wasn't worth it over f_read()
2021-01-10 14:29:51 +01:00
Irmen de Jong
db314ed903
added diskio.f_readline()
2021-01-10 05:04:56 +01:00
Irmen de Jong
79782ad547
conv.any2uword() changed return value
2021-01-08 22:43:01 +01:00
Irmen de Jong
b4d1d545a8
introduced txt.nl()
2021-01-08 16:56:17 +01:00
Irmen de Jong
f61682cdc7
moved various miscellaneous builtin functions such as exit() and progend() to sys.*
2021-01-08 16:44:34 +01:00
Irmen de Jong
3d09d605e1
moved memcopy, memset, memsetw builtin functions to sys.*
2021-01-08 01:09:37 +01:00
Irmen de Jong
025dde264a
move target() builtin to sys.target constant
2021-01-07 23:36:28 +01:00
Irmen de Jong
87cee7a0fd
check for name conflict with existing block (/module)
2021-01-07 23:28:15 +01:00
Irmen de Jong
61784a03bb
removed all string related builtin functions and moved them to separate routines in new 'string' library module
2021-01-07 23:10:29 +01:00
Irmen de Jong
9d9ca0f08d
fix bit shifting words by 8. fix type error for signed return types.
2021-01-07 22:50:40 +01:00
Irmen de Jong
58f37513e7
removed all string related builtin functions and moved them to separate routines in new 'string' library module
2021-01-07 20:01:11 +01:00
Irmen de Jong
ee7f9d457d
text editor configs
2021-01-07 01:56:31 +01:00
Irmen de Jong
bec2224c3d
clearer naming
2021-01-07 01:25:50 +01:00
Irmen de Jong
07dd64958f
conv.bin2uword, conv.hex2uword, conv.str2uword, conv.str2word more robust and return parsed length in cx16.r15
2021-01-06 00:11:15 +01:00
Irmen de Jong
7d6a0ab256
added conv.any2uword()
2021-01-05 22:28:46 +01:00
Irmen de Jong
dde6919446
allow when choice values to be replaced in ast (const-folding)
2021-01-05 03:49:11 +01:00
Irmen de Jong
54fc9c91ac
fix hole in scratch zp allocation of cx16
2021-01-05 03:48:36 +01:00
Irmen de Jong
45c9cc97d9
fix invalid handling of X register functioncall result value
2021-01-05 02:44:55 +01:00
Irmen de Jong
ee9f662016
added MEMTOP2 pseudo kernal routine on cx16 to get the number of RAM banks
2021-01-05 01:48:23 +01:00
Irmen de Jong
3550e1214c
fix invalid handling of X register functioncall result value
2021-01-05 01:42:51 +01:00
Irmen de Jong
e6a1442296
sys.wait() no longer resets the jiffyclock to zero
2021-01-03 02:45:25 +01:00
Irmen de Jong
cb65480c6c
moved wait() and reset_system() to sys block so they are now unified across c64 and cx16
2021-01-03 02:36:45 +01:00
Irmen de Jong
f0930d8a18
added c64.RDTIM16() utility routine to just get the lower 16 bits of the jiffy clock
2021-01-02 20:59:48 +01:00
Irmen de Jong
5a846bdeb5
fixed invalid integer constant expression evaluation leading to wrong results
2021-01-02 20:33:59 +01:00
Irmen de Jong
edd3a22848
added strfind()
2021-01-02 17:49:58 +01:00
Irmen de Jong
08d44ae553
fix compiler errors
2021-01-02 15:40:24 +01:00
Irmen de Jong
8e927e0b73
nontrivial return value evaluation now via intermediary variable to try to avoid slow stack based evaluation
2020-12-31 22:13:24 +01:00
Irmen de Jong
8e3e996f4a
diskio.f_open() now also checks if file exists
2020-12-31 19:27:34 +01:00
Irmen de Jong
b6fa361bcc
exit() now also resets the io channels. Optimized diskio data read subroutines. added diskio.f_read_all()
2020-12-31 19:09:29 +01:00
Irmen de Jong
c989abe265
optimize ubyte -> uword type casts more
2020-12-31 01:02:36 +01:00
Irmen de Jong
89230ade7a
change in pattern arguments of diskio.list_files() and lf_start_list(): you can now use a simple pattern with ? and * wildcards
2020-12-30 23:34:00 +01:00
Irmen de Jong
b4931c9a1f
optimize horzontal_line drawing
2020-12-30 18:58:47 +01:00
Irmen de Jong
ddfcf45d40
added some missing clobbers() specs
2020-12-30 16:59:31 +01:00
Irmen de Jong
ee12236d53
added rect functions
2020-12-30 00:53:13 +01:00
Irmen de Jong
df6698c98f
fixed circle and disc geometry
2020-12-30 00:11:42 +01:00
Irmen de Jong
c3b82f2cfa
optimized disc()
2020-12-29 23:58:11 +01:00
Irmen de Jong
64c89f1c8f
fix circle and disc geometry, added rect and line routines
2020-12-29 23:52:48 +01:00
Irmen de Jong
e09b65ea94
fix gfx2 vertical_line
2020-12-29 23:07:26 +01:00
Irmen de Jong
c81952c356
gfx2 optimizations for vertical lines
2020-12-29 02:13:38 +01:00
Irmen de Jong
f80e462d25
gfx2 optimizations for vertical lines
2020-12-29 01:36:34 +01:00
Irmen de Jong
51f32677b7
gfx2 optimizations for horizontal lines, fix bug in disc drawing
2020-12-29 01:23:14 +01:00
Irmen de Jong
4b366358c4
fix gfx2 color of horiz/vert lines
2020-12-28 01:33:51 +01:00
Irmen de Jong
3378586098
update gradle to 6.7
2020-12-28 00:46:30 +01:00
Irmen de Jong
6777d952c1
fixed crash when loopvar in for loop wasn't defined
2020-12-28 00:30:08 +01:00
Irmen de Jong
6c8b18ddbd
fixed crash on cx16 in word to float conversion
2020-12-28 00:19:58 +01:00
Irmen de Jong
69780ecde9
fixed % operator bug
2020-12-28 00:08:22 +01:00
Irmen de Jong
9e2c52e1ec
added Cx16 highresbitmap example. added stippled drawing to gfx2 monochrome mode
2020-12-27 23:57:13 +01:00
Irmen de Jong
6cb0e6a936
fixed lsb(value) not working when used in a comparison expression (needed to flip loading of A and Y register with the value)
2020-12-27 18:12:12 +01:00
Irmen de Jong
dd82e550d5
adding rect and fillrect to gfx2
2020-12-27 17:34:25 +01:00
Irmen de Jong
cdcda27d07
adding circle and disc to gfx2
2020-12-27 16:17:06 +01:00
Irmen de Jong
d37d62574c
project restructure
2020-12-27 07:21:39 +01:00
Irmen de Jong
f2380457d6
update to new kotlin CLI parser library
2020-12-27 05:04:50 +01:00
Irmen de Jong
efa42d5d96
compiler watch mode is a bit more robust now against crashes during compilation
2020-12-27 03:58:41 +01:00
Irmen de Jong
e17c18b653
fix issues with memory() function, rewrite examples to use it
2020-12-27 03:35:56 +01:00
Irmen de Jong
7607d3d64a
check for unexecuted statements in blocks is now done for all blocks, not only main
2020-12-27 03:35:20 +01:00
Irmen de Jong
d7d7147d43
added error message when not using returnvalue of a functioncall
2020-12-27 02:28:40 +01:00
Irmen de Jong
b40e1eabb9
added memory() function for memory slab allocations
2020-12-27 02:28:30 +01:00
Irmen de Jong
3b8e18004c
fixed callgraph issue that allocated ALL variables in a (library) module even though some clearly weren't used at all. Variables declared in block level scope in a library are still all allocated / defined due to the nature of a library module with lists of definitions
2020-12-27 01:02:36 +01:00
Irmen de Jong
4c03950c28
changed 'c64colors' module to 'palette' and added more general Cx16 palette manipulation routines in there.
2020-12-27 00:35:25 +01:00
Irmen de Jong
170a0183f8
added 'inline' keyword to force inlining of trivial subroutines
2020-12-26 05:34:14 +01:00
Irmen de Jong
c62ff16f8b
added gfx2.text_charset()
2020-12-26 03:15:24 +01:00
Irmen de Jong
ab495fe6e1
added gfx2.text()
2020-12-26 02:25:53 +01:00
Irmen de Jong
c2a8dc23d0
R0-R15 register parameter optimization if loaded with byte instead of word
2020-12-25 22:30:40 +01:00
Irmen de Jong
6734ae3c88
imageviewer now uses gfx2 for full-screen graphics. gfx2 promoted to built-in library on the cx16 target.
2020-12-25 17:57:46 +01:00
Irmen de Jong
4c1c595f14
removed requirement of virtual regs R0-R15 to be at start of subroutine params
2020-12-25 15:43:48 +01:00
Irmen de Jong
9002c67639
cleanup of cx16 regs lists
2020-12-25 14:00:07 +01:00
Irmen de Jong
b91aabd3c0
max 16 subroutine params
2020-12-25 03:02:34 +01:00
Irmen de Jong
3307f673f6
optimized cx16.vpoke etc. to be asmsubroutines instead
2020-12-24 07:12:59 +01:00
Irmen de Jong
e0d2b60d8b
added diskio.f_read_exact()
2020-12-24 06:24:52 +01:00
Irmen de Jong
80e3a11268
fix faulty word[x]-- , fix invalid stz addressing modes
2020-12-24 04:08:52 +01:00
Irmen de Jong
38a6c6a866
error message for too large repeat iteration count
2020-12-24 03:25:46 +01:00
Irmen de Jong
7d08380c7f
added cx16.vaddr()
2020-12-23 05:04:19 +01:00
Irmen de Jong
f0f6150e18
fix problem with reuse of auto-indexer-variables that could result in wrong code for routines using multiple array indexings
2020-12-23 02:30:46 +01:00
Irmen de Jong
dc600cc3ed
fix crash when printing Ast for asmsubroutine with multiple return values
2020-12-23 02:03:27 +01:00
Irmen de Jong
ae648b8a0a
subroutines can now be defined even within regular code and will not disrupt the generated code anymore (they are moved to the end of their scope by the compiler)
2020-12-23 01:55:47 +01:00
Irmen de Jong
583af3bd4f
additional vpoke operations to do or,and,xor in one go without the need for a separate vpeek
2020-12-23 01:02:43 +01:00
Irmen de Jong
d65cfbf093
fixed math.mul_word_40 that was actually doing *80...
2020-12-23 00:54:11 +01:00
Irmen de Jong
118aed2e31
optimized code for 65c02 when setting constant 0 value
2020-12-22 17:59:47 +01:00
Irmen de Jong
d6444bba66
don't remove 'double' assignments that are actually doing something like calling a function
2020-12-22 12:52:55 +01:00
Irmen de Jong
5a2f8fdfe1
asm-subroutines that ONLY return a value in the Carry or Overflow status register can now be used in an assignment to store that value.
2020-12-22 12:44:03 +01:00
Irmen de Jong
bba4f84503
added target() function
2020-12-22 06:13:14 +01:00
Irmen de Jong
684e081399
optimized register save/restore on Cx16 cpu target
2020-12-22 05:59:01 +01:00
Irmen de Jong
96c700ee46
only save A's value if needed for a return value
2020-12-22 05:43:02 +01:00
Irmen de Jong
a40b3134f4
fix clobbering of A when restoring X or Y from stack
2020-12-22 04:52:46 +01:00
Irmen de Jong
c70b4daf87
cleanup obsolete routine
2020-12-22 03:40:44 +01:00
Irmen de Jong
928611eb20
Got rid of problematic attempts to save status register after function calls. If you really need it (for instance for if_XX instructions) it's probably better to use a short asmsub wrapper.
...
For function calls, register saves go via stack (to allow nested saves) for simpler cases, registers are saved in a local variable.
Fixed too agressive removal of sta-lda sequence if the lda is followed by a branching instruction.
Insert missing cmp #0 after functioncall if the value of the A register is needed in a comparison expression (could otherwise test wrong status flag)
2020-12-22 03:35:00 +01:00
Irmen de Jong
f1d55c688a
cx16 registers should come first in subroutine arg list
2020-12-22 00:59:07 +01:00
Irmen de Jong
d22df22f7d
fix examples for cx16 register syntax
2020-12-21 23:45:26 +01:00
Irmen de Jong
061e1be0a4
removed ROM-float optimizations, too troublesome. Fixed LOG2 not being defined on Cx16 as well.
2020-12-21 23:22:02 +01:00
Irmen de Jong
950bc4b937
cx16 virtual registers R0-R15 also available on C64 target (although in a different location in memory)
2020-12-21 21:04:29 +01:00
Irmen de Jong
dcb81e6bea
adding CommanderX16 virtual registers language support, rewrite cx16 examples
2020-12-21 20:38:00 +01:00
Irmen de Jong
daaa83ee7d
improved parsing of cpu registers (no more crash when invalid register) also adding CommanderX16 virtual registers language support
2020-12-21 19:19:53 +01:00
Irmen de Jong
b7c1450121
upgrade to Antlr 4.9
2020-12-21 19:19:04 +01:00
Irmen de Jong
787f52d1f8
doc
2020-12-21 18:28:10 +01:00
Irmen de Jong
50213f146a
undefined symbol errors are no longer reported one at a time but all at once
2020-12-21 13:03:56 +01:00
Irmen de Jong
8b630798d8
documented the subroutine calling convention
2020-12-19 03:18:40 +01:00
Irmen de Jong
52e8a44517
version 5.4
2020-12-15 22:59:02 +01:00
Irmen de Jong
59f33658ad
removed the rom path argument for launching the x16emu which made it fail on a non-Linux system
2020-12-15 22:51:10 +01:00
Irmen de Jong
0baa2c8b23
fix oversight in binexpr operand swap that could result in suboptimal code
2020-12-14 21:37:40 +01:00
Irmen de Jong
4977d1fbd5
bit shift expressions are "expanded" to the target value's datatype, now also for subroutine arguments.
...
implemented word bit shifts by variable number of bits.
2020-12-14 20:44:48 +01:00
Irmen de Jong
3b7a92f1b4
adding strcopy()
2020-12-14 17:26:17 +01:00
Irmen de Jong
8b75ceb412
diskio.list_files now has a bigger buffer to store more filenames (around 30-40 max)
2020-12-14 14:29:42 +01:00
Irmen de Jong
c39fc4010d
textio.clear_screen() now uses kernal routine to clear the text screen, this also resets the cursor to top left.
2020-12-14 14:28:53 +01:00
Irmen de Jong
8df778a515
fixed crash when importing modules from the same directory as the main program
2020-12-14 13:14:12 +01:00
Irmen de Jong
e221d674d9
pcxviewer done
2020-12-13 01:32:03 +01:00
Irmen de Jong
251f947293
fixed parameter signature for FB_set_8_pixels_opaque() (docs are wrong)
2020-12-12 03:32:01 +01:00
Irmen de Jong
43c0afdea0
fixed strlen() to work on arguments other than just a variable
2020-12-11 23:32:29 +01:00
Irmen de Jong
34babfb5de
added diskio.list_files(). ci-viewer now loads all *.ci files it finds.
2020-12-11 22:36:14 +01:00
Irmen de Jong
8dcd49934a
added progend() builtin function
2020-12-10 23:33:45 +01:00
Irmen de Jong
bedc3bdb56
allow bit shifting to be as large as the target variable's datatype
2020-12-10 22:49:27 +01:00
Irmen de Jong
83ceb0fde9
optimize various simple cases for '**' (pow) like 2**x => bitshift
2020-12-10 22:37:12 +01:00
Irmen de Jong
1d299c56e0
fix float '**' (pow) on cx16
2020-12-10 22:19:07 +01:00
Irmen de Jong
0d735c2ccc
workaround for FB_set_pixels bug
2020-12-10 21:51:32 +01:00
Irmen de Jong
cf1e8b194a
fix compiler crash for expressions of the form x = x and y (the logical booleans, not the bitwise)
2020-12-10 03:12:32 +01:00
Irmen de Jong
74e5644f55
working on CI viewer
2020-12-10 03:00:37 +01:00
Irmen de Jong
b5dc5fc615
added iterative file loading to diskio
2020-12-10 00:58:59 +01:00
Irmen de Jong
7549ddcd2b
added TODOs for missing assignments
2020-12-10 00:03:20 +01:00
Irmen de Jong
08f0303178
diskio status() now returns the status string instead of printing it
2020-12-10 00:02:21 +01:00
Irmen de Jong
0d7a291b81
regenerated example disk , version 5.3
2020-12-08 23:15:31 +01:00
Irmen de Jong
2265ae9600
optimized setting word values into array if index is fixed number
2020-12-08 22:54:20 +01:00
Irmen de Jong
cba502e87a
fixed crash when trying to assign a string literal to an array element in a string-array
2020-12-08 22:27:42 +01:00
Irmen de Jong
ac94236614
fixed compiler crash when declaring a str(pointer) array without initializer
2020-12-08 22:19:11 +01:00
Irmen de Jong
ddf1be2a13
status condition couldn't properly be tested because restoring the X register clobbers the status flag
2020-12-08 22:15:07 +01:00
Irmen de Jong
b7694686c2
optimized code for branches containing just a goto or break statement
2020-12-08 22:00:52 +01:00
Irmen de Jong
63332c0530
fix wrong branch instructions for some if_xxx
2020-12-08 21:29:40 +01:00
Irmen de Jong
8a504f8eee
fixed compiler crash: when passing the name of a subroutine instead of an array or string to an UWORD parameter
...
now allows taking the address of a subroutine &routine
2020-12-08 21:17:31 +01:00
Irmen de Jong
106fc5daa4
tweak
2020-12-08 03:39:45 +01:00
Irmen de Jong
7accb73993
iterative file listing instead
2020-12-08 03:34:45 +01:00
Irmen de Jong
e9aa6a0956
TODOs
2020-12-08 02:20:24 +01:00
Irmen de Jong
df20467e03
completed diskio file lister
2020-12-08 02:16:41 +01:00
Irmen de Jong
ecbd9d739e
completed diskio file lister
2020-12-08 01:34:08 +01:00
Irmen de Jong
8af17c295a
fixed diskio directory block sizes
2020-12-08 01:02:38 +01:00
Irmen de Jong
329b28cad1
making diskio.listfiles
2020-12-07 23:49:34 +01:00
Irmen de Jong
452c29574d
added optimized mul 320 routine
2020-12-07 22:55:16 +01:00
Irmen de Jong
260bcd3a55
added syntax error for non-constant array size declaration
2020-12-06 17:02:56 +01:00
Irmen de Jong
6b5211ad12
tweak word shift unroll
2020-12-06 08:36:19 +01:00
Irmen de Jong
a92ec14989
use 'stz' more often on 65c02 cpu (cx16)
2020-12-06 08:30:13 +01:00
Irmen de Jong
b3348eb22b
formatting
2020-12-06 07:52:58 +01:00
Irmen de Jong
4b53641e1d
optimized text screen clear/fill and scrolling on c64
2020-12-06 01:16:31 +01:00
Irmen de Jong
00071d53d5
optimized disc (filled circle) drawing on c64, fixed off by 1 disc width in cx16 version
2020-12-06 00:33:32 +01:00
Irmen de Jong
6902834568
remove dummy argument for txt.scroll_XXXX() functions on cx16
2020-12-06 00:19:47 +01:00
Irmen de Jong
fa2d87f3dd
optimized disc (filled circle) drawing on cx16
2020-12-06 00:01:19 +01:00
Irmen de Jong
44019d1a61
strings and arrays are no longer directly assignable to an UWORD, you need an explicit & (address-of) now
2020-12-03 18:39:32 +01:00
Irmen de Jong
6f74fb49bd
added c64colors module. added vpeek/vpoke to cx16 syslib. koalaviewer example now uses better c64 color palette.
2020-12-03 18:14:49 +01:00
Irmen de Jong
3e63a29c59
diskio now properly closes files after a load or save
2020-12-03 16:01:58 +01:00
Irmen de Jong
261c0fc9b6
started adding syntax highlighting files
2020-12-02 20:48:50 +01:00
Irmen de Jong
895b30f7e5
version 5.2
2020-12-01 22:49:08 +01:00
Irmen de Jong
b985604e22
slight tweak to word bitshift for large shift values
2020-12-01 22:48:02 +01:00
Irmen de Jong
f7953e4ef3
fix float comparison error that creeped in with no longer using the stack for that
2020-12-01 22:19:03 +01:00
Irmen de Jong
63483d1f0e
warnings, errors and todos
2020-12-01 03:24:06 +01:00
Irmen de Jong
8b981f03bf
optimized reg_lesseq_w (word <= word) to avoid using extra zp word, by swapping operands
2020-12-01 02:09:48 +01:00
Irmen de Jong
d0d0910bf2
corrected greatereq_w (word >= word)
2020-12-01 01:57:12 +01:00
Irmen de Jong
b8bda867b6
optimized reg_lesseq_w (word <= word)
2020-11-30 02:26:00 +01:00
Irmen de Jong
05d3a2450c
optimized reg_less_w (word < word)
2020-11-30 01:53:44 +01:00
Irmen de Jong
d40788adfa
optimized in-place array element modification to use simpler assignment asm code
2020-11-28 00:44:38 +01:00
Irmen de Jong
83fbf86b1c
no longer generate double assignment to the indexer var for in-place modifying array variable
2020-11-27 23:46:01 +01:00
Irmen de Jong
e876008427
tiny tweak of typecasting str to uword
2020-11-26 19:21:07 +01:00
Irmen de Jong
a74403c347
float typecasts optimization
2020-11-26 01:52:48 +01:00
Irmen de Jong
2f4c6c8697
float typecasts optimization
2020-11-26 01:39:27 +01:00
Irmen de Jong
238d8197f5
byte/word typecasts optimized even further to just use cpu registers (and fixed sign extending AY)
2020-11-26 01:33:45 +01:00
Irmen de Jong
53a600d87b
fix typecasting of signed byte to signed word in a variable
2020-11-25 22:33:41 +01:00
Irmen de Jong
2a0ffaf45d
started to optimize typecasts to use translateExpression() less
2020-11-25 00:17:42 +01:00