Irmen de Jong
56fec674c5
actually not simplifying if-code generation, leads to larger code at the moment
2021-04-13 00:03:22 +02:00
Irmen de Jong
54d92a027a
fix problems with moving vardecls from inner scope to subroutine scope
2021-04-12 22:53:25 +02:00
Irmen de Jong
319ac3a641
preparing optimizations for if statements
2021-04-12 03:34:58 +02:00
Irmen de Jong
0a03c46351
preparing optimization plan for if statements
2021-04-12 02:37:15 +02:00
Irmen de Jong
e0454e95db
warn about for-loop wrapped iteration if loop range is inverted from normal
2021-04-08 22:54:47 +02:00
Irmen de Jong
91e421d961
optimize x % p where p=power-of-2, into just x & (p-1)
2021-04-08 22:21:16 +02:00
Irmen de Jong
1a64cb38d5
fix compiler crash with assigning certain array values as vardecl initializer
2021-04-08 19:21:17 +02:00
Irmen de Jong
e5ff61f201
allow inlining of subroutines with parameters, and fix inlining of subroutines with variables
2021-04-07 23:38:25 +02:00
Irmen de Jong
123473dfc8
cleanup
2021-04-06 00:16:29 +02:00
Irmen de Jong
d9eccd4fba
set correct rom banks when using floats
2021-04-05 23:21:07 +02:00
Irmen de Jong
64c85b9617
fix cx16 rom v39 float changes
2021-04-05 22:54:40 +02:00
Irmen de Jong
3e3b0bcd8b
callgraph improved unused node checking
2021-04-05 20:45:18 +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
49036abbaf
docs
2021-04-04 12:55:29 +02:00
Irmen de Jong
6b4896b8f5
doc
2021-04-02 21:28:23 +02:00
Irmen de Jong
d582d1cc42
fix inlining subroutines multiple times
2021-04-02 21:23:40 +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
67a9d1285c
some words about how the X register can't or can be used
2021-04-02 00:19:46 +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
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
0991131fa8
don't stript unused asmsub definitions
2021-03-21 19:55:21 +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
b30b8b7368
fix bug in float < and > comparisons
2021-03-18 01:41:54 +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
6381d2b6ac
improve word '<', word (u)word '<=' , uword '>=' codegen
2021-03-16 18:15:47 +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
1c1da8e38e
additional optimization to the bresenham line routines
2021-03-10 18:49:40 +01:00
Irmen de Jong
50a306f492
line drawing fixes
2021-03-09 22:11:30 +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
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
2770254fd9
removed inline assembly from bobs demo
2021-03-06 14:31:26 +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
6c66f86103
todo
2021-03-05 21:07:35 +01:00
Irmen de Jong
26502c949a
add unlimited bobs example
2021-03-05 19:05:13 +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
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
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
cd500fee8c
wording
2021-02-25 00:52:27 +01:00
Irmen de Jong
1bd32c0f19
added animal guessing game example
2021-02-24 22:58:16 +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
6e65cb2c0a
added sounds to cx16 tehtriz
2021-02-23 01:29:45 +01:00
Irmen de Jong
334f86480a
added irq routines for cx16
2021-02-22 00:48:41 +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
5540482888
compiler error for duplicate when choice labels
2021-02-21 21:26:15 +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
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
0ed3d951a7
don't require carry parameter Pc to asmsubs to be last
2021-02-20 02:27:57 +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
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
92ee0aefee
docs: replaced old invalid c64scr names with txt
2021-02-16 23:28:35 +01:00
Irmen de Jong
194fbcdd91
todos
2021-02-15 04:41:33 +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
53f0318187
version 6.1
2021-02-14 00:07:45 +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
f6136891cc
optimized for loop over const bytes, fixed downto 1
2021-02-13 13:46:02 +01:00
Irmen de Jong
1e22170302
added graphical starmaps to textelite
2021-02-11 00:23:36 +01:00
Irmen de Jong
321fdd10d1
ported tehtriz to Cx16
2021-02-10 21:55:14 +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
bcd0db984d
reducing ast dependencies - moved ErrorReporter back to compiler module
2021-02-09 01:15:31 +01:00
Irmen de Jong
1070dedd7c
todo
2021-02-07 19:08:47 +01:00
Irmen de Jong
d7a6b20028
todo
2021-02-07 01:14:10 +01:00
Irmen de Jong
cefef3d1be
todo
2021-02-06 15:22:31 +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
2395863e7e
asmsubs: fix clobbering and optimize register usage for loading the arguments
2021-01-29 01:52:49 +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
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
90271d0dcd
textelite was okay
2021-01-23 19:01:02 +01:00
Irmen de Jong
f9fd426843
Merge branch 'pointer-index-optimize'
...
# Conflicts:
# docs/source/todo.rst
2021-01-23 15:57:23 +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
afb60db382
todo
2021-01-20 18:43:08 +01:00
Irmen de Jong
5731b876ff
textelite save bug found
2021-01-20 01:36:46 +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
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
3dcef89a74
optimize (zp),y instructions for 65c02 to use (zp)
2021-01-15 19:14:35 +01:00
Irmen de Jong
b128b79132
clearer description of memory()
2021-01-13 22:32:17 +01:00
Irmen de Jong
b9ddde0f12
assem
2021-01-12 03:45:18 +01:00
Irmen de Jong
72b4198301
added string.lower() / string.upper()
2021-01-10 15:29:43 +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
d61420f1c6
oops
2021-01-08 01:31:28 +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
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
bec2224c3d
clearer naming
2021-01-07 01:25:50 +01:00
Irmen de Jong
76101d7f8d
assem
2021-01-05 22:56:52 +01:00
Irmen de Jong
6fa7debee5
todo
2021-01-05 02:17: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
baf9dfb46c
assem
2021-01-02 20:33:07 +01:00
Irmen de Jong
edd3a22848
added strfind()
2021-01-02 17:49:58 +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
6777d952c1
fixed crash when loopvar in for loop wasn't defined
2020-12-28 00:30:08 +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
dd82e550d5
adding rect and fillrect to gfx2
2020-12-27 17:34:25 +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
8f224afed9
added color cycling support to iff viewer
2020-12-23 23:23:16 +01:00
Irmen de Jong
b3b3cf3807
todo
2020-12-23 02:53:30 +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
d65cfbf093
fixed math.mul_word_40 that was actually doing *80...
2020-12-23 00:54:11 +01:00
Irmen de Jong
85abf4d123
update docs
2020-12-22 16:44:05 +01:00
Irmen de Jong
44b8291540
update docs
2020-12-22 13:29:16 +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
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
d22df22f7d
fix examples for cx16 register syntax
2020-12-21 23:45:26 +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
7f2aea60c9
addition
2020-12-19 03:36:52 +01:00
Irmen de Jong
168621f7c2
addition
2020-12-19 03:27:08 +01:00
Irmen de Jong
8b630798d8
documented the subroutine calling convention
2020-12-19 03:18:40 +01:00
Irmen de Jong
e0315bffdc
decided not to change mkword() again, added note to docs about argument order
2020-12-15 22:25:06 +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
41e1e1cbb0
adding pcxviewer
2020-12-12 02:40:54 +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