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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
d4b087ea3f
added txt.bell() to make terminal beep/bell sound on most systems
2024-02-21 17:35:37 +01:00
Irmen de Jong
96b5a30f60
slightly less strict
2024-02-20 23:01:51 +01:00
Irmen de Jong
88458f5355
faster array copy and fix for length 256
2024-02-11 23:57:38 +01:00
Irmen de Jong
8201408f16
fix element size calc when copying array
2024-02-10 22:58:44 +01:00
Irmen de Jong
8b8caa1c2e
added math.randrange() and math.randrangew()
2024-02-10 22:16:13 +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
6eacf1bddd
added a few more IR syscalls for often used copy routines
2024-02-09 23:56:44 +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
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
26ed231f61
version
2024-02-07 00:03:39 +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
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
39d2194d8f
IR: implemented inplace prefix op on split array
...
VM: NEG instructions also set N and Z flags
2024-01-28 22:33:13 +01:00
Irmen de Jong
0800033b47
fixed split-word array in-place element +/- (other operators not yet...)
2024-01-28 22:30:45 +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
a8c09d6144
removed a problematic bitshift replacement in the const evaluator
2024-01-21 23:05:51 +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
504d1440cc
fixed rol(),rol2(),ror(),ror2()
2024-01-17 21:02:17 +01:00
Irmen de Jong
e0de662f8e
fix signed word bitshift right (>8 shifts)
2024-01-16 01:08:16 +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
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
41de8caa13
added sprites.set_mousepointer_image(), sprites.set_mousepointer_hand() and sprites.get_data_ptr()
2024-01-14 00:38:56 +01:00
Irmen de Jong
968609d06d
IR: fix problems with symbol offsets and unused subroutines/chunks
2024-01-13 16:43:41 +01:00
Irmen de Jong
bc3f2db3de
Fix call graph to no longer mark subroutines unused, that still get their variables referenced somewhere.
...
Revert palette.default_colors_16[] back to palette.set_default16.colors.
2024-01-11 22:12:01 +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
f8084e7955
fix const replacement optimization error on memory mapped variable
2024-01-07 18:48:18 +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
7dd758a753
better optimize WORD & $xx00 , WORD & $00xx
2024-01-06 22:01:21 +01:00
Irmen de Jong
8e6b91cb9e
some optimizations
2024-01-06 00:44:00 +01:00
Irmen de Jong
334e6dca28
added string.contains().
...
fixed string and array containment check for length 1.
2024-01-05 20:46:26 +01:00
Irmen de Jong
37638e7ed0
added Absorption laws optimization
2024-01-05 00:36:47 +01:00
Irmen de Jong
8a0e650511
apply De Morgan's laws for logical not, results in smaller code
2024-01-04 23:45:46 +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
56ba24962c
fixed 'not not x' optimization to just 'x'
2024-01-04 15:02:21 +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
242a3eec63
fix data type difference error on range from and to values
2024-01-03 21:46:22 +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
d446b57d05
fix unittest
2024-01-01 16:11:50 +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
75fd263e85
fix expericodegen crash related to shortcircuiting
2023-12-31 01:28:17 +01:00
Irmen de Jong
1e1f444cab
cleanups.
...
also checked that value(12) < x < value(100) is indeed properly shortcircuited if x is 12 or less
2023-12-30 04:34:07 +01:00
Irmen de Jong
265e7aefbf
clean up unused codegen for logical ops on words, also fix no-shortcircuit exception
2023-12-30 04:06:02 +01:00
Irmen de Jong
1c55a6c6dc
shortcutting part one
2023-12-30 03:54:12 +01:00
Irmen de Jong
8f18b5b8a7
keep distinction between logical and bitwise boolean operators
2023-12-30 01:08:42 +01:00
Irmen de Jong
f790182f0b
adding short-circuit boolean expression evaluation (in IR codegen) also -noshortcircuit cli option
2023-12-30 01:08:41 +01:00
Irmen de Jong
813007a5d8
adjusted options of library modules
2023-12-29 22:21:44 +01:00
Irmen de Jong
932bbd0381
allow casting of byte<->ubyte and word<->uword
2023-12-29 16:23:24 +01:00
Irmen de Jong
01bd648cb2
added math.crc16() and math.crc32()
2023-12-29 08:00:02 +01:00
Irmen de Jong
a0594cbce3
const optimizer now knows about a bunch of library functions, such as math.*
2023-12-28 20:14:13 +01:00
Irmen de Jong
09c6cb4d6b
replace unwritten vars by consts. Improved const eval.
...
Fixed some slight bugs in library code
2023-12-28 05:17:15 +01:00
Irmen de Jong
dfce292294
allow chained comparisons i<x<j (desugared into: i<x and x<j)
2023-12-28 01:18:59 +01:00
Irmen de Jong
2eb137618e
refactor block options
2023-12-26 22:13:08 +01:00
Irmen de Jong
0a4de45453
get rid of vardecl.declareddatatype
2023-12-26 19:33:58 +01:00
Irmen de Jong
ffdc658dc8
type error tweaks
2023-12-26 18:49:01 +01:00
Irmen de Jong
f948917124
added floats.push() and floats.pop()
...
fixed vm pop.f
2023-12-26 15:19:49 +01:00
Irmen de Jong
0d44492086
push,pushw,pop and popw are no longer built-in functions but regular routines in sys
2023-12-26 14:47:31 +01:00
Irmen de Jong
8ae435549d
added -slabshigh N and -slabsgolden for memory() slabs
2023-12-23 20:45:30 +01:00
Irmen de Jong
4cd9bb8f99
allow Python-style negative array indexing to count from the end
2023-12-23 16:37:28 +01:00
Irmen de Jong
ad9eaeafeb
call
now returns a word value
2023-12-22 22:24:11 +01:00
Irmen de Jong
6cd392909c
added verafx.copy() routine for fast vram-to-vram copying ('blitting')
2023-12-22 17:52:43 +01:00
Irmen de Jong
299419917e
added symbol ambiguity error (variable vs block name for scoped symbols)
...
fixes #114
2023-12-20 00:28:15 +01:00
Irmen de Jong
69f6afe420
block names in asm now prefixed with p8b_ (instead of p8_)
...
as part of fixing var versus block symbol conflict handling
2023-12-19 23:00:20 +01:00
Irmen de Jong
8bd7c601c0
cx16: added all remaining audio kernal routines. added the three x16edit kernal entry points.
2023-12-18 22:16:44 +01:00