Irmen de Jong
8dd3faf395
clarification
2024-04-06 14:31:39 +02:00
Irmen de Jong
35f3e8708b
doc and tweak subexpression extraction a tiny bit
2024-04-06 14:01:06 +02:00
Irmen de Jong
cfe3fcc9e7
fix symbol table issue
2024-04-06 12:53:33 +02:00
Irmen de Jong
66a6659a6e
cbm.STOP2() and cbm.GETIN2() convenience routines
2024-04-06 02:16:21 +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
385dd6fc23
todos
2024-04-03 01:12:45 +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
788f6b44a6
antlr grammar now understands underscores in identifier names
2024-03-31 00:31:10 +01:00
Irmen de Jong
63a4525f06
remove hacks from floats.parse now that kernal R47 is out
2024-03-30 22:29:13 +01: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
bd5abfb969
add IR peephole optimization to remove redundant store
2024-03-28 01:06:05 +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
56c1035581
Merge branch 'master' into multi-assign
...
# Conflicts:
# docs/source/todo.rst
# examples/test.p8
2024-03-26 22:09:16 +01:00
Irmen de Jong
2a3a27c56d
bmx library: set bpp header field correctly on save
2024-03-26 22:01:10 +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
2e37f5dee3
IR: support for multi-returnvalue function calls (asmsubs)
...
note: the VM can't execute these though as it has no CPU hardware registers
2024-03-23 00:30:17 +01:00
Irmen de Jong
edc83305a4
allow multiple targets in AssignTarget
2024-03-22 21:51:08 +01:00
Irmen de Jong
e6014ea4dd
version 10.3.1
2024-03-21 19:32:16 +01:00
Irmen de Jong
c38765301e
gfx2 screenmode tweak
2024-03-19 01:21:56 +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
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
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
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
c11a9b8709
fix callgraph issue when module gets removed by optimizations
2024-03-11 20:34:22 +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
3a9919a377
implemented a couple more diskio routines for the VM target
2024-03-09 17:36:39 +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
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
9f1bd2d7d6
asmoptimizer that removes redundant branches on boolean in A
2024-03-05 20:37:15 +01:00
Irmen de Jong
9826d7c494
optimize certain boolean comparisons more
2024-03-05 03:09:53 +01:00
Irmen de Jong
c6bf57b390
non strict bools should also replace not byte with byte==0
2024-03-04 23:25:34 +01:00
Irmen de Jong
bfcf07c1a2
attempt to no longer have BuildVersion.kt in git, blocking easy pulls
2024-03-04 20:45:59 +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
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
Irmen de Jong
af17f903ee
fix that if not fcall() wasn't transformed to a conditional branch instruction
2024-03-02 23:19:39 +01:00
Irmen de Jong
c532e28841
fix several remaining bool return values in library routines
2024-03-02 23:19:39 +01:00
Irmen de Jong
dba0846866
optimize word >, word <=
2024-03-02 23:19:39 +01:00
Irmen de Jong
bed629998a
fix large code for some compares
2024-03-02 23:19:39 +01:00
Irmen de Jong
bc2ede76bf
tweak to byte compares
2024-03-02 23:19:39 +01:00
Irmen de Jong
2a1fec2ed2
fix codegen error for comparisons
2024-03-02 23:19:39 +01:00
Irmen de Jong
004048e5a7
fix IR codegen error for b=float>value
2024-03-02 23:19:39 +01:00
Irmen de Jong
b941d6f1e4
new comparison tests
2024-03-02 23:19:39 +01:00
Irmen de Jong
37b346740b
fix 6502 casting uword and float to bool
2024-03-02 23:19:39 +01:00
Irmen de Jong
f5e332daf7
remove redundant IR instructions like SNZ
2024-03-02 23:19:39 +01:00
Irmen de Jong
fe9a9fc5cb
new if tests
2024-03-02 23:19:39 +01:00
Irmen de Jong
a5110b1f96
improved De Morgan rewrite rules
2024-03-02 23:19:39 +01:00
Irmen de Jong
006713fe13
optimize boolean to ubyte assignment (skip type cast)
2024-03-02 23:19:39 +01:00
Irmen de Jong
7868e672e0
ifelse more
2024-03-02 23:19:39 +01:00
Irmen de Jong
e1a133c2c0
ifelse more
2024-03-02 23:19:39 +01:00
Irmen de Jong
c77cd0da39
ifelse more
2024-03-02 23:19:39 +01:00
Irmen de Jong
577333f2c4
new ifelse codegen
2024-03-02 23:19:39 +01:00
Irmen de Jong
7d8cdcbfea
more bool fixes and optimizations in codegen
2024-03-02 23:19:39 +01:00
Irmen de Jong
c5c4c6f111
start of new ifelse
2024-03-02 23:19:39 +01:00
Irmen de Jong
acd841dbb6
bool changes in 6502 assignment codegen
2024-03-02 23:19:37 +01:00
Irmen de Jong
6b52ba9397
6502 asmgen
2024-03-02 23:19:20 +01:00
Irmen de Jong
10d12f73d6
IR/VM: testing the boolean changes, added in-place and/or.
2024-03-02 23:19:20 +01:00
Irmen de Jong
cd9119655c
IR codegen
2024-03-02 23:19:20 +01:00
Irmen de Jong
92527b4c1d
examples: add ==0 or !=0 to expressions that depend on implicit conversion from byte to bool
2024-03-02 23:19:18 +01:00
Irmen de Jong
c48012c385
tweak ifelse > and <= order
2024-03-02 17:01:31 +01:00
Irmen de Jong
a282b17286
added asm optimizer for <= byte (bcc+beq->bcs)
2024-03-02 15:34:54 +01:00
Irmen de Jong
58d9463f16
consolidate word comparison codegen
2024-03-02 14:00:12 +01:00
Irmen de Jong
047decd552
consolidate byte comparison codegen
2024-03-01 22:21:22 +01:00
Irmen de Jong
82e0877e64
readme
2024-03-01 00:41:11 +01:00
Irmen de Jong
040d75dafa
VM now supports indirect jump instruction
2024-02-22 16:19:26 +01:00
Irmen de Jong
b5e691f367
IR: fix chunk reachability: via unchopped chunk label directly so that they don't get removed
2024-02-21 23:18:57 +01:00
Irmen de Jong
b27368175d
get rid of problematic rewrite of certain for loops that were causing the end expression to be evaluated every loop iteration
2024-02-20 21:03:21 +01:00
Irmen de Jong
a4f697bae1
faster
2024-02-10 23:56:55 +01:00
Irmen de Jong
4dc50cb551
fix unused subroutine removal not removing all unused subs
2024-02-10 21:26:53 +01:00
Irmen de Jong
5522a305ab
add -dumpvars option to dump all allocated variables (zp, normal ram, etc)
2024-02-10 18:42:31 +01:00
Irmen de Jong
d7f72056fc
rest of the array copying
2024-02-10 17:16:06 +01:00
Irmen de Jong
906d9d858c
implementing the array copys
2024-02-10 01:40:36 +01:00
Irmen de Jong
6c8c8e11cc
fix cpu register overwrites when using @(...) arguments to an asmsub
2024-02-09 19:55:35 +01:00
Irmen de Jong
e941d2665a
preparing for new array copy codegen
2024-02-09 18:22:41 +01:00
Irmen de Jong
68669dbef0
fix & of pointervar indexing
2024-02-08 23:03:53 +01:00
Irmen de Jong
6a48de9a9f
IR: fix & of array-element
2024-02-08 21:27:53 +01:00
Irmen de Jong
9d6d98930b
fix ast printing of & array-element
2024-02-08 21:27:53 +01:00
Irmen de Jong
386a391fd9
added string.lstripped() and string.ltrimmed()
2024-02-07 23:07:45 +01:00
Irmen de Jong
d33aed4ed5
added txt.petscii2scr() and txt.petscii2scr_str()
2024-02-07 22:36:43 +01:00
Irmen de Jong
24944ad49e
added string.strip() and string.trim() and l/r variants.
...
fixed memsizer for pointers-to-ubyte.
2024-02-07 02:09:08 +01:00
Irmen de Jong
8485b8429f
optimizing +=1/-=1
2024-02-06 23:49:40 +01:00
Irmen de Jong
358215e4dd
removed postIncrDecr (still allow ++/-- to be parsed into +=1/-=1)
2024-02-06 18:50:08 +01:00
Irmen de Jong
2cadb546d5
optimized in-place memory/pointervar operations some more
2024-02-04 15:17:24 +01:00
Irmen de Jong
3c77f8a020
IR: optimize pointer access
2024-02-04 07:51:50 +01:00
Irmen de Jong
8e00408e3e
optimize pointer indexing a bit
2024-02-03 23:24:33 +01:00
Irmen de Jong
abcdfd8e28
optimize postincrdecr on memory a bit
2024-02-03 22:33:27 +01:00
Irmen de Jong
b0f5b6925d
getting rid of pointer[idx] in ast, instead always use @(ptr+idx)
2024-02-03 19:22:04 +01:00
Irmen de Jong
c71aa0895f
get rid of certain redundant !=0 comparisons in logical expressions
2024-02-01 21:50:01 +01:00
Irmen de Jong
9f8e61789a
fix 65c02 codegen for certain in-place byte bitwise invert
2024-01-31 23:55:43 +01:00
Irmen de Jong
ef198f1493
fix for certain invalid expression evaluation code.
...
it no longer reuses the same temporary variable all the time.
todo
2024-01-31 21:18:21 +01:00
Irmen de Jong
48ef856c0b
identified wrong expr eval code - still need solution. Crash for now.
2024-01-30 23:00:50 +01:00
Irmen de Jong
e0055bc431
IR: working on inplace +/-
2024-01-29 22:08:47 +01:00
Irmen de Jong
9553248ed6
IR: integrate inplace assignment ops
2024-01-28 22:33:16 +01:00
Irmen de Jong
444e97b00b
todo
2024-01-27 12:31:36 +01:00
Irmen de Jong
8cf0b6cf51
IR: optimize code for ==0 and !=0 augmented assigns
2024-01-25 00:30:47 +01:00
Irmen de Jong
f2010bf7a5
IR: better code for array element assignments (w.i.p.)
2024-01-23 00:56:06 +01:00
Irmen de Jong
64c132ee0a
changed -breakinstr option so that you now specify the exact instruction to use for a %breakpoint.
...
also fixed a IR issue with x=not x.
2024-01-22 22:01:47 +01:00
Irmen de Jong
87c46ba730
check boolean array size mismatch.
...
check for weird string assignment.
check for X16 problematic cpu instructions rmb, smb, bbr, bbs.
tweak number node equality wrt bool type
2024-01-21 19:15:22 +01:00
Irmen de Jong
b3d98be862
oops, removed a bit too much when getting rid of the noshortcircuit code
2024-01-18 22:00:57 +01:00
Irmen de Jong
43027a4728
IR: optimize rol ror
2024-01-18 21:51:44 +01:00
Irmen de Jong
fdbbd181ea
fixes for address-of uword pointer array expressions
2024-01-17 22:51:15 +01:00
Irmen de Jong
69075376dc
get rid of the noshortcircuit fallback
2024-01-17 21:24:41 +01:00
Irmen de Jong
504d1440cc
fixed rol(),rol2(),ror(),ror2()
2024-01-17 21:02:17 +01:00
Irmen de Jong
66a836d094
added support for reverse() on split word arrays
2024-01-16 00:52:09 +01:00
Irmen de Jong
80095f4962
added support for any() on split word arrays
2024-01-15 23:51:19 +01:00
Irmen de Jong
828d83dbef
loadScaledArrayIndexIntoRegister(): useless type arg removed
2024-01-15 22:19:52 +01:00
Irmen de Jong
7de665d1e4
support for split wordarrays rol/ror and rol2/ror2
...
optimized rol and ror codegen
optimize/fix ror/ror2/rol/rol2 on word arrays
2024-01-15 03:22:37 +01:00
Irmen de Jong
0a356ba73a
added containment check of float arrays
2024-01-14 14:14:09 +01:00
Irmen de Jong
0c1018ec61
dt error details
2024-01-12 17:34:19 +01:00
Irmen de Jong
ddb2ff4216
IR: use SCS opcode to set carry status flag into register
2024-01-09 23:46:27 +01:00
Irmen de Jong
f27e3478b9
fix const value of AddressOf for certain types
2024-01-09 22:10:25 +01:00
Irmen de Jong
38dc7fb7bd
IR: added SCC and SCS instructions
2024-01-09 01:41:37 +01:00
Irmen de Jong
d85c347a6c
optimize /256 more, and fixed a unsigned byte word cast error
2024-01-07 02:34:05 +01:00
Irmen de Jong
8e6b91cb9e
some optimizations
2024-01-06 00:44:00 +01:00
Irmen de Jong
f2daa17b92
tweak some not optimizations
...
cleanup IR typestring
2024-01-05 17:49:56 +01:00
Irmen de Jong
6d9fccacb1
boolean not expression tweaks and optimizations
2024-01-05 13:32:16 +01:00
Irmen de Jong
bfd3edb617
fix expression evaluation bug where intermediate values were overwritten, yielding the wrong result
2024-01-04 21:04:11 +01:00
Irmen de Jong
19a2110ba2
fix exit() now actually correctly setting the return code in A
...
also, moved some cleanup stuff such as CLRCHN from exit() to the cleanup routine that is always called.
finally, also call the cleanup routine when %option no_sysinit is used
2024-01-04 00:43:35 +01:00
Irmen de Jong
fee46f2e54
todo
2024-01-03 15:06:27 +01:00
Irmen de Jong
6aed7e429a
allow containment check in a range expression ("run time" range expression)
2024-01-03 01:17:13 +01:00
Irmen de Jong
517ea82b99
fixed todos in Ast printer
2024-01-01 23:52:03 +01:00
Irmen de Jong
0e086d788b
removed chained comparisons again, because they caused invalid expression evaluations due to changed semantics.
2024-01-01 16:00:11 +01:00
Irmen de Jong
498841d45d
remove binexpr operand rotation that didn't help much at all
2024-01-01 15:12:15 +01:00
Irmen de Jong
d1f8ee1e56
replace most common subexpressions by a single temp variable
2024-01-01 14:57:24 +01:00
Irmen de Jong
07feb5c925
extra check
2023-12-31 17:04:28 +01:00
Irmen de Jong
75fd263e85
fix expericodegen crash related to shortcircuiting
2023-12-31 01:28:17 +01:00
Irmen de Jong
89cc7e5fa9
finalize short-circuit eval in IR codegen
2023-12-30 04:26:29 +01:00