Irmen de Jong
e83d0ee820
fix crash in msb() when assigning to word again. Fix wrong register in lsb() and msb() in certain situations.
2024-10-02 02:40:16 +02:00
Irmen de Jong
09f3eecf56
changed cx16/rotating-stars example to starszoom instead.
2024-10-02 01:36:54 +02:00
Irmen de Jong
2bd4326ff6
added cx16/rotating-stars example
2024-10-01 23:43:50 +02:00
Irmen de Jong
ea3871d0c4
comment about builtin function call ast node type
2024-10-01 02:14:31 +02:00
markjreed
70a2b11271
New example program: draw a fractal tree ( #152 )
...
* demo of prog8 recursion to draw a fractal tree
* feat: comments
* fix: comment formatting
* feat: make minimum branch size a tunable parameter
2024-10-01 02:00:04 +02:00
Irmen de Jong
3cf39e072e
fix C64 floating point sign issue
2024-09-30 21:56:34 +02:00
Irmen de Jong
413b86cc4a
more helpful error messages
2024-09-30 00:27:29 +02:00
Irmen de Jong
a6107fcfdf
taking the address of a romsub is now the constant value of said romsub's declared address
2024-09-29 23:53:39 +02:00
Irmen de Jong
a064ade1e0
better codegen for call() function
2024-09-29 23:18:51 +02:00
Irmen de Jong
df35aa7942
added (experimental) compression library
2024-09-29 18:59:53 +02:00
Irmen de Jong
cd49c5f88d
cx16: set rom bank to 0 at startup (for faster kernal API calls)
...
cx16: callfar() with constant address generates shorter asm
2024-09-28 20:58:29 +02:00
Irmen de Jong
1541ad2160
fix variable init order mistake in program startup
...
reset multiply bit at end of verafx.muls
2024-09-28 19:17:45 +02:00
Irmen de Jong
c78b7b1a24
added verafx.mult16()
2024-09-28 01:00:28 +02:00
Irmen de Jong
3f630ab1b0
RAW output now also properly initializes variables
2024-09-27 18:46:03 +02:00
Irmen de Jong
04cb684fd4
tweak program start initialization and fix cleanup at exit for atari and pet compiler targets
2024-09-27 02:14:54 +02:00
Irmen de Jong
b7ebd8c4a6
update cx16/audioroutines example to use the new audio module
2024-09-26 00:08:25 +02:00
Irmen de Jong
d3e4481112
fix asm optimizer bug where it erroneously discarded rts
with a label
2024-09-22 21:41:41 +02:00
Irmen de Jong
1d1d6b3d98
tweak c64 balloonflight example etc.
2024-09-22 13:20:12 +02:00
Irmen de Jong
90b8a22a71
correct amount
2024-09-20 22:35:17 +02:00
Irmen de Jong
e29ff1c848
fix name redefinition check for multi-declarations
2024-09-20 19:55:32 +02:00
Irmen de Jong
46b94c17d6
comment
2024-09-20 17:33:00 +02:00
Irmen de Jong
2954f5f04d
Add clear_screen and set_screen_mode to gfx_lores. Fix boolean draw vs color param in some monogfx routines. Elaborate some docs.
2024-09-17 22:19:47 +02:00
Irmen de Jong
cac4c1eb1e
improve callgraph unused subroutine check for routines called from inline asm
2024-09-16 21:49:30 +02:00
Irmen de Jong
0b1f30d98c
no more span overdraws in graphics disc routines
2024-09-15 15:38:33 +02:00
Irmen de Jong
c7b1e8d772
fixed a variable scopedname issue where it took the fully scoped name instead of just the local name
...
this made 64tass not strip out that code if it was unused
2024-09-14 23:17:26 +02:00
Irmen de Jong
0d3ad80659
retain type of consts better to avoid precision loss
...
this also fixed a difference in const calculation where the result could differ if you were using optimzations or not.
2024-09-14 21:06:21 +02:00
Irmen de Jong
dca31b2ca3
added gfx_lores module for cx16 for optimized graphics routines for lores 256c screen mode
...
currently contains a new line() routine
2024-09-14 15:30:39 +02:00
Irmen de Jong
cf551d2cc7
tweak containment check even more
2024-09-13 00:02:26 +02:00
Irmen de Jong
255c5bfaca
improve containment check for few values
2024-09-11 03:24:30 +02:00
Irmen de Jong
01c6754928
get rid of problematic common-subexpression optimization
2024-09-11 01:10:42 +02:00
Irmen de Jong
8eaf884f69
improve codegen for for loops downto 0,1 when start value is not const
2024-09-10 23:54:44 +02:00
Irmen de Jong
699a2bb7ab
improved codegen for for loops downto 0
2024-09-10 21:33:57 +02:00
Irmen de Jong
4e98fb75d6
support assigning multiple return flags from asmsub in 6502 codegen
2024-09-09 22:56:40 +02:00
Irmen de Jong
64e66e732f
cx16/circles example now uses gfx2
2024-09-08 22:52:46 +02:00
Irmen de Jong
7aec627f6b
add optimization if x==0 or x==1 -> if x<2
2024-09-08 22:39:48 +02:00
Irmen de Jong
59a2fec176
fix IR containment check
2024-09-08 21:49:13 +02:00
Irmen de Jong
f7feaf158d
added cx16.mouse_present() routine to check for presence of mouse
2024-09-06 18:21:13 +02:00
Irmen de Jong
2396f707c6
fix bug in codegen for certain array lookups using word typed index value (i.e. via a pointer variable)
2024-09-06 18:11:41 +02:00
Irmen de Jong
d4d8e1b1ba
comment about implementation in life example
2024-09-06 16:39:44 +02:00
Irmen de Jong
44fec2c729
some additional last minute optimization to life example
2024-09-06 15:56:41 +02:00
Irmen de Jong
a80a6913e3
some additional last minute tweaks to life example
2024-09-06 15:42:49 +02:00
Irmen de Jong
0eac04c220
added cx16/life.p8 example (Conway's game of life)
2024-09-06 15:21:29 +02:00
Irmen de Jong
29dd758302
Fix compiler crash in for loops with just 1 iteration
2024-09-05 21:26:46 +02:00
Irmen de Jong
e2fcac322f
optimizing gfx2.fill()
2024-08-25 13:51:01 +02:00
Irmen de Jong
beaff4d650
moved non X16 specific variables and vector definitions from cx16 to cbm namespace.
...
This makes the naming consistent with the other cbm-like targets (c64, pet, c128). Only the x16 specific ones remain in the cx16 namespace, such as cx16.KEYHDL
Probably the most impactful is the move of cx16.CINV to cbm.CINV
2024-08-24 20:06:50 +02:00
Irmen de Jong
e439720c9d
optimized string compares
2024-08-24 14:53:18 +02:00
Irmen de Jong
b566ea5c3f
added string.rfind()
2024-08-22 23:22:31 +02:00
Irmen de Jong
8f6eaeac2c
half width katakana conversion
2024-08-21 18:51:34 +02:00
Irmen de Jong
b4facaeb3c
add "kata" string encoding (Katakana)
2024-08-20 21:40:43 +02:00
Irmen de Jong
b70ce0015c
fix missing opportunities to use TSB instruction
2024-07-24 22:51:49 +02:00
Irmen de Jong
c67f877857
Codegen: use BIT instruction for memory location bit 7 and 6 tests (use N and V flags)
2024-07-24 19:26:54 +02:00
Irmen de Jong
0ec719e429
cx16: added a polling pcm streaming example
2024-07-23 21:37:11 +02:00
Irmen de Jong
17f7b11148
tweaks cx16 sample streaming example, also added a new one
2024-07-23 02:10:05 +02:00
Irmen de Jong
966b017670
tweaks
2024-07-22 18:20:01 +02:00
Irmen de Jong
4c98070b3c
optimize shifts by 1 by inlining it better
2024-07-21 22:08:41 +02:00
Irmen de Jong
3681d6ee1c
optimize division by powers of 2 better (into bit shifts)
2024-07-21 21:34:38 +02:00
Irmen de Jong
0af17cdc33
todo's for division optimizations
2024-07-21 20:32:03 +02:00
Irmen de Jong
2aae1f5e30
stricter checks for negative array indexing
2024-07-20 22:37:03 +02:00
Irmen de Jong
d18f2a7bfd
improved codegen for some pointer+index expressions
2024-07-18 23:41:34 +02:00
Irmen de Jong
9046fe8d3a
ringbuffer and pointer optimization todo
2024-07-16 22:59:31 +02:00
Irmen de Jong
78c7ee247a
generate 65c02 TSB/TRB instructions in certain cases
2024-07-16 00:36:00 +02:00
Irmen de Jong
484677b4b1
Get rid of any() and all() builtin functions.
...
Replaced by regular subroutines in the anyall module.
2024-07-06 18:49:03 +02:00
Irmen de Jong
25f25a8767
Get rid of sort() and reverse() builtin functions.
...
Sort() had too many gotchas and reverse() is kinda redundant you can loop in decreasing order through an array too.
2024-07-06 17:07:58 +02:00
Irmen de Jong
0c053e4a2c
IR: don't confuse symbol names starting with 'r', with register names
...
Added start of buffer.p8 (experimental)
2024-07-04 01:39:25 +02:00
Irmen de Jong
7a9dd1ac9b
optimize trivial 65c02 stack instructions
2024-06-29 15:42:40 +02:00
Irmen de Jong
1c97c22eff
optimize simple word and byte addition/subtraction better
2024-06-29 14:33:42 +02:00
Irmen de Jong
034f27a8dd
added queens example, update kotest lib
2024-06-19 23:57:43 +02:00
Irmen de Jong
3d799ae7fe
todo
2024-06-01 15:03:01 +02:00
Irmen de Jong
d2e010c439
added cx16.scnsiz (extapi call), describe profiler.py script
2024-05-31 21:48:29 +02:00
Irmen de Jong
15867ab423
update cx16.mouse_get() and mouse_pos() to also return scroll wheel in X
2024-05-29 23:19:53 +02:00
Irmen de Jong
fd1e6796ef
correct branch instruction, fixes #137
2024-05-24 20:54:40 +02:00
Irmen de Jong
3ea0f0cbaa
remove 16 bit f_tell variant.
2024-05-22 21:47:02 +02:00
Irmen de Jong
f3e3311598
added diskio.f_tell() and f_tell32() on the cx16 target
2024-05-21 23:14:25 +02:00
Irmen de Jong
0dc50a93a4
added @nozp variable flag
2024-05-21 21:53:58 +02:00
Irmen de Jong
fda8e61be4
give better error when using @split wrong
2024-05-20 21:51:07 +02:00
Irmen de Jong
ac1d4b4a7a
mouse_pos() now returns the coordinates as unsigned words
2024-05-20 21:38:02 +02:00
Irmen de Jong
c719e274d5
java version tweaks
2024-05-18 20:25:44 +02:00
Irmen de Jong
62afd3342e
void syntax check, fixes #135
2024-05-18 17:15:31 +02:00
Irmen de Jong
7915dda35f
update libraries
2024-05-12 03:02:54 +02:00
Irmen de Jong
a1ebc7090d
fix sieve example
2024-04-18 22:22:29 +02:00
Irmen de Jong
e3e7b060b7
vumeter tweaks
2024-04-18 01:31:59 +02:00
Irmen de Jong
d6a67f5f2b
vumeter colors
2024-04-17 00:22:19 +02:00
Irmen de Jong
94263c43d0
added cx16/vumeter example
2024-04-16 22:48:36 +02:00
Irmen de Jong
a7247f5b8b
fix boolean expression optimization bug
2024-04-12 21:56:25 +02:00
Irmen de Jong
5d7ddebcad
fix bool to uword cast in 6502 codegen
2024-04-11 00:34:53 +02:00
Irmen de Jong
53df0eb707
cleanups
2024-04-10 22:04:03 +02:00
Irmen de Jong
f4b50368ba
fix grammar: if_xx with else part
2024-04-09 22:35:30 +02:00
Irmen de Jong
db80417bd7
fix a problem with const fold optimization in if expressions, and IR compilation of that
2024-04-09 22:09:29 +02:00
Irmen de Jong
2aae46d632
added -dumpsymbols option to print a dump of all the variables and subroutine signatures
2024-04-09 19:19:13 +02:00
Irmen de Jong
19ebc6d6b3
better error message for ambiguous multi-var initialization in vardecl
2024-04-08 22:36:00 +02:00
Irmen de Jong
f88c29e083
convert github doc links into permalinks
2024-04-08 22:12:28 +02:00
Irmen de Jong
6ed9899dc7
smarter desugaring of ubyte x,y
2024-04-07 23:36:46 +02:00
Irmen de Jong
9de7698a5c
verafx.mult() and muls() now return both words of the 32 bits result.
2024-04-07 22:41:21 +02:00
Irmen de Jong
112d2d6058
cx16 sprites module: the palette_offset parameter now takes values 0-15 (instead of 0-255) to be more consistent with docs and vera behavior
2024-04-07 21:49:03 +02:00
Irmen de Jong
ddb8346711
added txt.cls() as a shorter alternative to clear_screen().
...
cx16: added new character encodings, and routines in textio to enable the character sets for them.
cx16: added txt.chrout_lit() and txt.print_lit() to always print the literal characters and never as control codes
2024-04-07 19:32:44 +02:00
Irmen de Jong
731132d4b3
check number of result values in return statements
2024-04-05 02:13:31 +02:00
Irmen de Jong
98acff802f
better checking for number of return values
...
assignment optimization if return register already is the same as the assignment target
2024-04-04 23:47:33 +02:00
Irmen de Jong
5f11f485a2
fix compiler error
2024-04-04 02:00:55 +02:00
Irmen de Jong
34f3169dda
tweak library routines for multiple return values.
...
cbm:
MEMTOP changed (now also returns nr of banks in A)
STOP2 removed (just use STOP)
RDTIM_safe() added TEST IRQ ENABLE
RDTIM16 changed (internally) TEST IRQ ENABLE
cx16:
screen_mode changed (now also returns width and height in X,Y)
kbdbuf_peek2 removed (just use kbdbuf_peek)
joystick_get changed (presence now returned as bool in Y)
joystick_get2 removed (just use joystick_get)
mouse_pos changed (now properly returns x and y position in R0 and R1)
set_led_brightness changed into set_led_state, with only a boolean on/off argument. There is no variable brightness.
sys.set_leds_brightness() removed. Use cx16.set_led_brightness().
2024-04-04 01:39:19 +02:00
Irmen de Jong
a3ef8f814b
Merge branch 'master' into multi-assign
...
# Conflicts:
# examples/test.p8
2024-04-03 01:13:27 +02:00
Irmen de Jong
9af4168ae2
cx16: added diskio.fastmode() to select the fast serial disk mode for the SD card
2024-04-02 22:17:51 +02:00
Irmen de Jong
b385dc8c26
add cx16 extapi ROM call, call numbers and shims. (new in Rom R47)
2024-04-02 01:45:10 +02:00
Irmen de Jong
641f6c05d8
allow 'void' as dummy assign target in multi-assignment statements
2024-03-31 23:43:26 +02:00
Irmen de Jong
3e34a3ef72
allow multi-assign to skip any status register result
2024-03-29 23:10:08 +01:00
Irmen de Jong
56f41d5e34
docs about multi-assign
2024-03-28 23:24:14 +01:00
Irmen de Jong
b93fa75377
consolidate cbm textio routines
2024-03-28 00:39:58 +01:00
Irmen de Jong
dd0f0fe415
conv.str_ub and partners are now much shorter routines than before
2024-03-27 22:34:44 +01:00
Irmen de Jong
ba1e907c79
fix divmod; out args are written to and should be potential constants
2024-03-26 22:04:44 +01:00
Irmen de Jong
993be6394e
unit tests multi-assigns
2024-03-25 23:20:03 +01:00
Irmen de Jong
9a27505315
6502 codegen for multi-assigns
2024-03-25 22:17:31 +01:00
Irmen de Jong
03e486c082
multi assign
2024-03-22 21:51:25 +01:00
Irmen de Jong
66e7c51064
IR: fix some things related to asmsubs
2024-03-22 21:49:01 +01:00
Irmen de Jong
ad4880997a
no operand swap on logical expressions with shortcircuit evaluation (and,or are no longer associative!)
2024-03-20 22:34:48 +01:00
Irmen de Jong
d14c61b160
added string.findstr(). string.find() returns 255 if not found.
...
also fix string assignment bug for sub args.
2024-03-17 23:18:33 +01:00
Irmen de Jong
fe2b67998c
vm: fix load_raw, fix rng bug in textelite (carry flag shifting...)
2024-03-17 16:46:26 +01:00
Irmen de Jong
04df3c9f7f
vm: implemented in-place array multiplication better
2024-03-17 13:39:05 +01:00
Irmen de Jong
de3d0b40dc
fixed vm problem with branching instructions in global init chunk
2024-03-17 13:22:17 +01:00
Irmen de Jong
4db4a5f1b2
vm: txt.width() and height() now return the actual console terminal width and height if possible.
2024-03-16 22:40:08 +01:00
Irmen de Jong
5a0524ff4d
various fixes
2024-03-16 18:48:06 +01:00
Irmen de Jong
5b7801eea1
added crc verifications to diskspeed
2024-03-16 16:26:39 +01:00
Irmen de Jong
fbe231793b
optimized and added "streaming" crc32 and crc16 routines to math module. Return value is put in different register now! r14+r15 instead of r0+r1!
2024-03-16 01:07:03 +01:00
Irmen de Jong
6a9269111e
some changes in SMC routines for the cx16:
...
sys.poweroff_system() moved to cx16
sys.set_leds_brightness() moved to cx16 and changed to set_led_brightness, you can only change the activity led brightness.
2024-03-15 23:00:14 +01:00
Irmen de Jong
a94cfd34f5
don't apply absorption law on functioncall operands
2024-03-15 01:04:27 +01:00
Irmen de Jong
28eae5a0fd
updated diskspeed example to deal with increased I/O speeds
2024-03-15 00:37:13 +01:00
Irmen de Jong
7e1e7a0780
fix conv.str_ub and conv.str_b for missing tens digits
2024-03-13 23:03:25 +01:00
Irmen de Jong
1fc79ff6dd
implement the missing in-place array operators for split word arrays and numeric operand
2024-03-13 21:16:49 +01:00
Irmen de Jong
3535c1acda
fix broken boolean != comparison optimization
2024-03-13 20:23:42 +01:00
Irmen de Jong
33c8caac8f
get rid of containment expression restriction
2024-03-12 23:39:54 +01:00
Irmen de Jong
51d708bbdd
fix monogfx issue
2024-03-12 23:27:15 +01:00
Irmen de Jong
820541e427
fixed and optimized pointervar indexed in-place operations
2024-03-11 23:27:48 +01:00
Irmen de Jong
80f39e8097
Merge branch 'booleans'
...
# Conflicts:
# compiler/res/prog8lib/cx16/monogfx.p8
# compiler/res/prog8lib/virtual/monogfx.p8
# compiler/src/prog8/compiler/astprocessing/BoolRemover.kt
# compiler/test/TestTypecasts.kt
# docs/source/todo.rst
# examples/cx16/highresbitmap.p8
# examples/test.p8
# httpCompilerService/src/prog8/http/TestHttp.kt
2024-03-11 01:00:48 +01:00
Irmen de Jong
eef8ae00b8
replace str return type by uword
2024-03-09 15:38:46 +01:00
Irmen de Jong
f739e679e4
added sys.exit2 and sys.exit3 to set more result registers at program exit
...
todo
2024-03-09 03:30:05 +01:00
Irmen de Jong
52649a8e4f
conv routines now return the string buffer address.
2024-03-08 02:12:46 +01:00
Irmen de Jong
bdfb01f6a0
VM: implemented a few core routines in diskio (load/save)
...
textelite can now load and save your progress like it already could in the real version
2024-03-06 23:21:01 +01:00
Irmen de Jong
1137e57393
update VTUI lib
2024-03-06 21:39:30 +01:00
Irmen de Jong
04f7b772a3
lib updates, removed unused and obsolete http and dbus modules
2024-03-05 23:42:35 +01:00
Irmen de Jong
6d29b00a80
fix monogfx horizontal line and text draw in invert mode
2024-03-05 22:38:34 +01:00
Irmen de Jong
9826d7c494
optimize certain boolean comparisons more
2024-03-05 03:09:53 +01:00
Irmen de Jong
4d7e96d423
add monogfx inverted (eor) draw mode
2024-03-03 23:28:37 +01:00
Irmen de Jong
449461e412
tweak monogfx stipple plot
2024-03-03 21:47:42 +01:00
Irmen de Jong
607275ec66
tweak
2024-03-03 19:52:46 +01:00
Irmen de Jong
e55cde2a81
more nonstrictbool conversions
2024-03-03 19:43:48 +01:00
Irmen de Jong
84afb374e6
nostrictbool array conversions
2024-03-03 17:48:52 +01:00
Irmen de Jong
da1620807f
fixed all todos in ifelse gen
2024-03-03 12:10:42 +01:00
Irmen de Jong
f39ef8f565
optimize byte comparison assignment to use rol trick instead of branching
2024-03-03 00:01:14 +01:00
Irmen de Jong
fe8b6e820c
getting rid of problematic fallback (infinite recursion)
2024-03-02 23:19:55 +01:00
Irmen de Jong
f29d24e96a
fixup split words array comparisons
2024-03-02 23:19:55 +01:00
Irmen de Jong
620ffe54ec
asm optimizer: don't remove labels. remove redundant cmp/cpx/cpy instructions.
2024-03-02 23:19:53 +01:00
Irmen de Jong
ceaa4cd07d
array issue
2024-03-02 23:19:39 +01:00