Commit Graph

3256 Commits

Author SHA1 Message Date
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
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
1818738fc8 fixed potential bug in cx16.kbdbuf_clear() is and it is now cbm.kbdbuf_clear() and is available on all cbm like targets 2024-03-14 22:12:29 +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
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
e63a8f0c01 fix vm textio prefix type 2024-03-11 22:22:30 +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
2a8b65e29c test str to uword change in function params 2024-03-10 23:48:58 +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
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
f46896fd74 attempt to no longer have BuildVersion.kt in git, blocking easy pulls
(cherry picked from commit bfcf07c1a2)
2024-03-08 23:36:35 +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
267ea13e8c clearer error msg 2024-03-06 20:10:10 +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
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
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
f29d24e96a fixup split words array comparisons 2024-03-02 23:19:55 +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
2a1fec2ed2 fix codegen error for comparisons 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
fe9a9fc5cb new if tests 2024-03-02 23:19:39 +01:00
Irmen de Jong
a1574a7187 added txt.print_bool, several fixes 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
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
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
41afeccd51 compiler stuff 2024-03-02 23:19:20 +01:00
Irmen de Jong
6b87cbb703 optimizers 2024-03-02 23:19:20 +01:00
Irmen de Jong
bc2b38daf4 added PtBool and other changes to intermediate Ast 2024-03-02 23:19:20 +01:00
Irmen de Jong
f40b7b62bb updated unit tests and some basic changes for them 2024-03-02 23:19:20 +01:00
Irmen de Jong
1ca3f64bf0 libraries: add ==0 or !=0 to expressions that depend on implicit conversion from byte to bool 2024-03-02 23:19:20 +01:00
Irmen de Jong
4e1686f6e3 fix warnings in gradle build scripts 2024-02-22 10:34:51 +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
0e17a0474a added type check to catch invalid comparisons, fix maze example 2024-02-20 22:53:15 +01:00
Irmen de Jong
01bbc2234e fix absorption law optimization, add 2 additional optimizations 2024-02-14 23:12:54 +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
8b8caa1c2e added math.randrange() and math.randrangew() 2024-02-10 22:16:13 +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
6eacf1bddd added a few more IR syscalls for often used copy routines 2024-02-09 23:56:44 +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
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
344a1b9eb8 cx16: added cx16.get_program_args() and cx16.set_program_args() 2024-02-04 11:35:13 +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
ef79d0c43e fix temp variable name clash resulting in faulty code in certain common subexpression optimization 2024-02-03 19:20:28 +01:00
Irmen de Jong
78b4288005 avoid git's line ending translation for this test... 2024-02-03 14:57:25 +01:00
Irmen de Jong
680f5d21ee normalize DOS line endings to just \n, fixes source lines in asm for \r\n source files 2024-02-03 12:53:21 +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
932035cdc5 flag "returning a statement" as a syntax error 2024-01-31 21:36:39 +01:00
Irmen de Jong
64d8943b7d fix error when trying to post-inc/decrement a character in a string 2024-01-28 16:47:55 +01:00
Irmen de Jong
1816bda7ea extra check 2024-01-26 00:12:31 +01:00
Irmen de Jong
d4a2031c07 fix certain assignment data type mismatch crash 2024-01-25 21:14:20 +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
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
0f83dc6491 sponsorship link.
error sorting.
version.
2024-01-19 20:04:29 +01:00
Irmen de Jong
a14c192ea3 also other targets 2024-01-18 22:31:34 +01:00
Irmen de Jong
03831a7394 added cx16.cpu_is_65816() 2024-01-18 19:30:18 +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
0cfcc5cd29 fix VM sgn() function for floats 2024-01-16 01:34:55 +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
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
3b199a2a87 added cx16 example: automatons.
added debug mode and RTC to cx16 emulator launchers.
dt error details.
2024-01-12 21:40:30 +01:00
Irmen de Jong
0c1018ec61 dt error details 2024-01-12 17:34:19 +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
06bedb7adb added palette.get_color() and palette.default_colors[] 2024-01-11 21:27:18 +01:00
Irmen de Jong
45a9751217 fix type of optimized lsb() / mkword() arguments when signed.
printast1 command line option now also works in case of compilation errors.
2024-01-10 23:57:44 +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
aa4cd13c31 where to place vscode syntax files. 2024-01-08 00:09:21 +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
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
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
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
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
99c29343de added -printast1 and -printast2 command line options 2024-01-01 22:48:19 +01:00
Irmen de Jong
892fa76883 remove debug output 2024-01-01 20:48:41 +01:00
Irmen de Jong
d446b57d05 fix unittest 2024-01-01 16:11:50 +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
75fd263e85 fix expericodegen crash related to shortcircuiting 2023-12-31 01:28:17 +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
d03ff1e4d0 improved var -> const replacement, now done in constfolding already (fixes some obscure problems later on)
Also fixed some directive parenting errors
2023-12-29 19:48:40 +01:00
Irmen de Jong
01bd648cb2 added math.crc16() and math.crc32() 2023-12-29 08:00:02 +01:00
Irmen de Jong
779a5606a7 add unittest for aa%bb (without space) to be parsed correctly as modulo, not directive 2023-12-29 05:11:50 +01:00
Irmen de Jong
ccc11e49d2 fix asmgen for uword shift right 8 or more bits 2023-12-29 05:06:09 +01:00
Irmen de Jong
d28c994ecd directive really needs to be listed out in the parser otherwise it confuses it with % modulo :-(
Also fix missing const fold pass in optimizer
2023-12-29 03:45:20 +01:00
Irmen de Jong
e35cfd4971 get rid of the redundant 'f' suffix of several funtions in floats module (breaking change!)
Unfortunately a few routines (minf, maxf, clampf) remain unchanged, because removing the 'f' would make them clash with a builtin function.

floats.rndf -> floats.rnd
floats.parse_f -> floats.parse
floats.rndseedf -> floats.rndseed
floats.print_f -> floats.print
floats.str_f -> floats.tostr
2023-12-29 03:12:44 +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
9c1b11d605 some WARN messages are now INFO 2023-12-28 14:20:47 +01:00
Irmen de Jong
44d82f9190 add unit tests 2023-12-28 13:30:07 +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
b428343c2a tweak chained comparisons 2023-12-28 02:31:39 +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
2b8f613a00 added %option ignore_unused to suppress warnings about unused vars and subs in that module/block.
Also improved error for invalid directive.
2023-12-26 23:37:59 +01:00
Irmen de Jong
2eb137618e refactor block options 2023-12-26 22:13:08 +01:00
Irmen de Jong
4bb2b8ca9b make isArray a computed property by simply checking the datatype 2023-12-26 19:58: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
7530f4407b ir tag change INLINEASM->ASM 2023-12-26 16:15:19 +01:00
Irmen de Jong
73864c8101 added -check command line option 2023-12-26 15:45:55 +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
38a22fbc99 allow %option no_symbol_prefixing also on module scope 2023-12-26 12:31:18 +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
9b113c0cbb added -varsgolden to put BSS into Golden Ram at $0400 2023-12-23 20:11:50 +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
49ec430592 cx16: added several word Vera-registers as memory-mapped vars as well 2023-12-21 00:28:09 +01:00
Irmen de Jong
6bc079c7b7 more asm symbol prefixing: variables with p8v_, subroutines with p8s_ etc
labels with p8l_ . All this to avoid symbol clashes in the generated assembly code.
Everything got its own distinguishing prefix so we're done with it once and for all and have only 1 breaking change moment.
2023-12-20 22:20:59 +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
b7279a3d9e fix 'not in' parsing error
fixes #115
2023-12-19 19:49:25 +01:00
Irmen de Jong
e14b854d7b cx16: added audio kernal routines example 2023-12-19 01:47:05 +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
Irmen de Jong
997288fa03 added cbm.CLEARST() to reset ST to 0 2023-12-18 01:20:24 +01:00
Irmen de Jong
0f26b39997 improve diskio error handling and device not found errors
for instance if you set drivenumber to 9 without having a second drive connected, it used to hang in various routines
2023-12-17 22:39:08 +01:00
Irmen de Jong
ae66fcac1e added call builtin function for indirect JSR 2023-12-17 15:45:28 +01:00
Irmen de Jong
eba0bde6f3 Merge branch 'optimize-st'
# Conflicts:
#	examples/test.p8
2023-12-17 02:11:01 +01:00
Irmen de Jong
a8be94de6b better error message when attempting to cast a float to integer 2023-12-15 22:28:06 +01:00
Irmen de Jong
332ba8ed7e don't give error when returning uword value in subroutine that returns STR 2023-12-14 02:48:21 +01:00
Irmen de Jong
58400f53bc optimize: flip if true/else blocks if the else block only contains a jump (inverting the condition) 2023-12-13 22:06:53 +01:00
Irmen de Jong
01c2112881 remove PtJump label, just use identifier with dummy 2023-12-13 04:16:49 +01:00
Irmen de Jong
a546c2247d optimize if-else handling of asmsub boolean result in status flags 2023-12-13 04:03:21 +01:00
Irmen de Jong
796add0ee2 add string.isspace and string.isprint 2023-12-13 00:28:34 +01:00
Irmen de Jong
f97b3f23e2 optimize symbol table for IR 2023-12-12 19:26:27 +01:00
Irmen de Jong
08a079a96e concerns with in for strings 2023-12-11 21:15:48 +01:00
Irmen de Jong
e98e951834 fix chained assignment and multi-vardecl RHS evaluation 2023-12-10 16:44:51 +01:00
Irmen de Jong
dd4c073e18 version 9.7 2023-12-09 18:54:54 +01:00
Irmen de Jong
ef1c665b9a allow underscores for numerical grouping 2023-12-09 13:13:34 +01:00
Irmen de Jong
d56565be25 fix multi-var decl 2023-12-09 12:32:41 +01:00
Irmen de Jong
e076b3aedc fix multi-var decl in nested scopes 2023-12-09 12:07:09 +01:00
Irmen de Jong
ae3b2ddf5f allow multi var declarations for floats too 2023-12-08 23:29:13 +01:00
Irmen de Jong
1bdc427d73 multi var declarations ubyte x,y,z 2023-12-08 22:18:21 +01:00
Irmen de Jong
6a639ce533 chained assignments x=y=z=42 2023-12-08 01:07:16 +01:00
Irmen de Jong
d91ca8b197 vm: added floats.str_f() 2023-12-07 23:10:27 +01:00
Irmen de Jong
a01c0a283d add check for memory() args to be const, added floats.str_f()
add check for memory() args to be const
2023-12-07 22:39:53 +01:00
Irmen de Jong
5c393091a0 unit test for %encoding 2023-12-07 21:54:01 +01:00
Irmen de Jong
8e4319cd5a module directive %encoding to set the text encoding for that whole file (iso, petscii, etc.) 2023-12-06 23:54:08 +01:00
Irmen de Jong
28c1b208c1 optimized calls for float *10 and +0.5 2023-12-06 01:18:07 +01:00
Irmen de Jong
3844bf1f72 fix string.isupper() 2023-12-05 23:52:43 +01:00
Irmen de Jong
745d192563 added floats.normalize() 2023-12-05 22:54:35 +01:00
Irmen de Jong
afbc91d1fc added string.isdigit, islower, isupper, isletter 2023-12-05 22:50:20 +01:00
Irmen de Jong
f998888d6d fix some unicode identifier issues 2023-12-05 17:38:23 +01:00
Irmen de Jong
7d8b42d63e allow Unicode letters in identifiers: things like 'knäckebröd' and 'π' are now valid identifiers. Added floats.π constant. 2023-12-05 01:36:54 +01:00
Irmen de Jong
6ebd4e821f improved docs about subroutine scoping, fix possible optimizer crash for inlined sub 2023-12-04 23:23:52 +01:00
Irmen de Jong
d1806bfdc3 added remaining verafx registers 2023-12-03 22:15:29 +01:00
Irmen de Jong
1d2d7155da palette: changed some of the available presets. Also fix sizeof(array) crash. 2023-12-03 17:14:40 +01:00
Irmen de Jong
b09e0a05bf some tweaks to errors about long integer literals 2023-12-03 02:45:26 +01:00
Irmen de Jong
c609e982fe allow const expression intermediate values to be 32 bits integers to avoid needless overflow errors. 2023-12-03 01:48:12 +01:00
Irmen de Jong
2b227b43fe bmx: error for unsupported file version 2023-12-02 23:56:59 +01:00
Irmen de Jong
48f09f71ab fix TODO crash on uword[0] = uword[0] or 128 (byte register assign to word array) 2023-12-02 21:29:14 +01:00
Irmen de Jong
ead8c59bda allow all character encodings on all compilation targets. 2023-12-02 20:59:50 +01:00
Irmen de Jong
db52a9466c fix weird compiler warning for while 1 {..} 2023-12-02 20:24:45 +01:00
Irmen de Jong
1509de390e various fixes
print_f() no longer prints a leading space.
Better error message if using float in for loop.
Fix crash when using non-const as when choice value.
VM print_f() more closely resembles the CBM version.
2023-12-02 18:23:54 +01:00
Irmen de Jong
88a1aa4f3d fix invalid optimization for integers (X/C1)*C2 , only ok for floats because of int rounding 2023-12-01 23:17:49 +01:00
Irmen de Jong
36bfef567d comments 2023-12-01 20:20:18 +01:00
Irmen de Jong
e40ebd75a2 floats.parse_f uses kernal VAL if it's present 2023-11-30 23:50:50 +01:00
Irmen de Jong
992732f2cb bmx support to save partial screens ('stamps') 2023-11-30 22:17:57 +01:00
Irmen de Jong
b58a3ba1bb added cx16 sprites.move , movex and movey routines to move sprite by deltas 2023-11-30 20:49:47 +01:00
Irmen de Jong
afe521b0c9 simplify bmx loading 2023-11-29 21:57:17 +01:00
Irmen de Jong
5d9caef45f bmx can load "stamps" 2023-11-29 21:07:22 +01:00
Irmen de Jong
278e2f5605 preparing for working kernal FP VAL_1() call 2023-11-29 00:27:02 +01:00
Irmen de Jong
1e299bf360 better pokef() code 2023-11-28 23:04:27 +01:00
Irmen de Jong
8dfa0bc38c fix a compiler crash in certain vardecl initialization expressions 2023-11-28 21:01:58 +01:00
Irmen de Jong
fde136fb7b bmx module only supports 320 or 640 image widths for now 2023-11-28 20:38:52 +01:00
Irmen de Jong
ee4da1a757 fix floats.parse_f() to use new kernal routine address for VAL
gives error message if it detects issues f.ex. with new kernal version that moves the routine
2023-11-27 23:58:28 +01:00
Irmen de Jong
ae2d96c455 added peekf and pokef builtin functions. Fixed sizeof() to allow number argument as well. 2023-11-27 23:36:02 +01:00
Irmen de Jong
2fa1d8f2e8 fix vm string hash 2023-11-27 01:27:50 +01:00
Irmen de Jong
1dff59e1d6 added string.hash() 2023-11-26 22:14:08 +01:00
Irmen de Jong
5f6cff739a fix bmx palette writing from buffer 2023-11-26 01:50:25 +01:00
Irmen de Jong
45debff89f bmx: allow palette to be loaded into memory buffer instead of vram 2023-11-25 17:58:43 +01:00
Irmen de Jong
c45fbe6310 continue stmt added 2023-11-25 01:14:35 +01:00
Irmen de Jong
9ef9c24388 IR: optimize redundant labels 2023-11-25 01:10:17 +01:00
Irmen de Jong
6a40f23578 cx16: added bmx library module and showbmx example 2023-11-24 23:39:05 +01:00
Irmen de Jong
0bee6f6b41 cx16: reorder processing of IRQ handlers 2023-11-24 01:12:27 +01:00
Irmen de Jong
98570ac456 cx16: optimized sys.set_rasterline() 2023-11-23 00:02:04 +01:00
Irmen de Jong
1b2296ad5b move cx16 irq examples to new API, fix some bugs in the handler 2023-11-22 23:25:39 +01:00
Irmen de Jong
16851746d6 new X16 irq handler routines and examples 2023-11-22 20:03:21 +01:00
Irmen de Jong
935450a45f update kotest library 2023-11-22 18:40:07 +01:00
Irmen de Jong
ba67fd318b renamed cx16.VERA_IRQ_LINE_L to VERA_IRQLINE_L and added VERA_SCANLINE_L, to align with official register naming.
Also added a multi-irq example for the X16 to show the updated irq handler semantics.
2023-11-22 18:36:24 +01:00
Irmen de Jong
08ac459a41 breaking change: sys.set_irq() and sys.set_rasterirq() no longer have useKernal parameter! The irq handler routine must return a boolean instead in the A register.
When it returns true it means run the system IRQ handler afterwards. When it returns false, the system handler is NOT ran afterwards.
2023-11-21 23:22:53 +01:00
Irmen de Jong
a83e9d9a0a added sys.save_prog8_internals() and restore_prog8_internals() 2023-11-21 22:00:43 +01:00
Irmen de Jong
62d3f01948 fix name check in inline asm
this no longer removes a subroutine that is otherwise only called from inlined asm.
2023-11-21 01:26:50 +01:00
Irmen de Jong
ab4bcdf12d emudbg no longer clobbers r1 2023-11-20 00:20:48 +01:00
Irmen de Jong
a6756d2cea removed diskio.set_drive(), just set the diskio.drivenumber variable directly
there already wasn't a getter
2023-11-19 22:15:56 +01:00
Irmen de Jong
f81061dd42 error msg and comments 2023-11-18 01:03:34 +01:00
Irmen de Jong
8e2c304b3c txt.waitkey() now returns the key that was pressed 2023-11-17 20:31:19 +01:00
Irmen de Jong
f21adaa3ef fix compiler error caused by removal of string symbol in txt.print() optimization 2023-11-17 19:51:48 +01:00
Irmen de Jong
2637939e62 cx16.vaddr_clone now leaves vera CTRL selected port intact 2023-11-17 19:22:23 +01:00
Irmen de Jong
faf05582f8 improved cx16 emudbg library 2023-11-17 15:07:21 +01:00
Irmen de Jong
161c02ced3 message 2023-11-17 00:37:12 +01:00
Irmen de Jong
42db3085df improve the way %option merge works, you can now merge your own code with library code for instance. 2023-11-14 23:04:13 +01:00
Irmen de Jong
ad14c88fde give error when using %option merge in module scope 2023-11-14 21:53:50 +01:00
Irmen de Jong
0c9daf6eaf fix compiler crash on ptrvar[n+1] = ptrvar[2] 2023-11-14 21:46:11 +01:00
Irmen de Jong
86c6530e46 palette: more accurate color conversion from 8 to 4 bits channels
set_rgb8(), color8to4(), channel8to4()
2023-11-14 20:40:48 +01:00
Irmen de Jong
aa949165c7 diskio.f_open_w() error handling back to what it was before
Otherwise it eats the status message. Added comment that you have to check this manually to be sure if the call succeeded or not!
2023-11-12 21:14:06 +01:00
Irmen de Jong
d22359b6e7 removed cx16.FB_cursor_position2() because it was only for use in the graphics module 2023-11-12 16:40:13 +01:00
Irmen de Jong
d73709653d remove unused interned strings in the resulting code (for example from removed if/else blocks) 2023-11-12 05:28:24 +01:00
Irmen de Jong
405926e811 oops 2023-11-11 14:31:48 +01:00