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
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
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
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
5d88717f32
fix non-existing instructions txy/tyx, oops
2023-12-29 03:27:35 +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
078bfefe41
clarify scoped names a bit more
2023-12-28 16:36:29 +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
37fcde30d6
constants have p8c_ prefix instead of p8v_ in the asm
2023-12-28 05:28:32 +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
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
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
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
0e0fac8c4b
BSSHIGHRAM_END more clearly defined (to be inclusive)
2023-12-23 19:05:06 +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
OODLER
09f3fbeb38
doc tweak, adding qualified name example for goto ( #116 )
2023-12-20 23:51:46 +01:00
Irmen de Jong
66d939df0d
docs about new asm symbol prefixes
2023-12-20 22:37:46 +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
b7279a3d9e
fix 'not in' parsing error
...
fixes #115
2023-12-19 19:49:25 +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
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
43944a94eb
doc tweaks
2023-12-17 14:47:20 +01:00
Irmen de Jong
4544af441b
doc tweaks, explain str a bit more
2023-12-17 02:02:59 +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
b24df31c2b
IR: fix codegen for routines returning in CPU Status register flag
2023-12-14 21:16:14 +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
0da9142009
asm: also work for asmsub that return N or Z flag (Carry already worked)
2023-12-13 02:11:15 +01:00
Irmen de Jong
796add0ee2
add string.isspace and string.isprint
2023-12-13 00:28:34 +01:00
Irmen de Jong
08a079a96e
concerns with in
for strings
2023-12-11 21:15:48 +01:00
Irmen de Jong
2668bf8519
fix void optimization issue
2023-12-09 21:48:22 +01:00
Irmen de Jong
dd4c073e18
version 9.7
2023-12-09 18:54:54 +01:00
Irmen de Jong
c7c72f00c7
document underscores in numeric literals for grouping
2023-12-09 14:07:42 +01:00
Irmen de Jong
ef1c665b9a
allow underscores for numerical grouping
2023-12-09 13:13:34 +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
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
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
5a776dd690
improve KotlinJavaRuntime library ref
2023-12-06 22:52:39 +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
afbc91d1fc
added string.isdigit, islower, isupper, isletter
2023-12-05 22:50:20 +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
1d2d7155da
palette: changed some of the available presets. Also fix sizeof(array) crash.
2023-12-03 17:14:40 +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
172e78e8f2
ir: ignore empty chunks instead of crashing
2023-12-01 22:49:20 +01:00
Irmen de Jong
36bfef567d
comments
2023-12-01 20:20:18 +01:00
Irmen de Jong
992732f2cb
bmx support to save partial screens ('stamps')
2023-11-30 22:17:57 +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
6d8fbe0877
fixed float array indexing with an expression
2023-11-27 20:54:49 +01:00
Irmen de Jong
2fa1d8f2e8
fix vm string hash
2023-11-27 01:27:50 +01:00
Irmen de Jong
533090a68e
fix expression result register of square, callfar, string compare functions in certain situations
2023-11-26 23:02:10 +01:00
Irmen de Jong
1dff59e1d6
added string.hash()
2023-11-26 22:14:08 +01:00
Irmen de Jong
2764d235a9
optimizing for x in 0 to something
2023-11-25 21:37:27 +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
6a40f23578
cx16: added bmx library module and showbmx example
2023-11-24 23:39:05 +01:00
Irmen de Jong
6a0a6b4751
todo
2023-11-24 01:20:10 +01:00
Irmen de Jong
0bee6f6b41
cx16: reorder processing of IRQ handlers
2023-11-24 01:12:27 +01:00
Irmen de Jong
82a15b5a16
65C02 cpu: use TRB and TSB instructions for in-place AND/OR.
2023-11-24 00:50:52 +01:00
Irmen de Jong
11b7c4459e
omission
2023-11-23 00:29:31 +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
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
af5ca2d0b8
vm: treat floats as 64 bits doubles. 0.0 printed as "0".
2023-11-21 00:57:56 +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
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
161c02ced3
message
2023-11-17 00:37:12 +01:00
Irmen de Jong
ff8de8e42d
removing redundant compares
2023-11-16 22:56:19 +01:00
Irmen de Jong
09d506194f
note
2023-11-15 22:27:16 +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
159f80d629
next version
2023-11-14 19:06:47 +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
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
36758f41a4
fixed diskio.f_open_w() error handling, finally added f_seek_w() to be able to seek in files for writing.
2023-11-11 14:26:40 +01:00
Irmen de Jong
7ebc9c79cf
added string.append()
...
cleanup redundant diskio prefixes
2023-11-10 23:53:59 +01:00
Irmen de Jong
76c09da961
make pokemon() be like poke, but also return the old value in the memory location.
2023-11-09 22:48:44 +01:00
Irmen de Jong
ecca854c7c
Added cx16.edkeyvec and cx16.set_chrin_keyhandler(). mention the Github actions builds.
2023-11-09 01:03:31 +01:00
Irmen de Jong
f70fa42eac
more accurate palette conversion
2023-11-08 01:33:55 +01:00
Irmen de Jong
c5a333a904
CX16: diskio.f_write() now uses fast MCIOUT block writes, including hiram bank boundary wrap-over
2023-11-08 01:12:49 +01:00
Irmen de Jong
70436f5dca
cx16.vpeek() use VERA_DATA0 instead of 1, to not cause ADDRSEL to be != 0 (interferes with kernal)
2023-11-07 22:09:53 +01:00
Irmen de Jong
31177a2b1b
added sys.disable_caseswitch() and sys.enable_caseswitch()
2023-11-07 00:27:34 +01:00
Irmen de Jong
4de012fc49
added notes to textio about PETSCII vs Screencode encoding.
2023-11-06 23:18:24 +01:00
Irmen de Jong
ee2888e744
verafx.mult/muls now return upper 16 bits of the result in r0
2023-11-06 21:55:58 +01:00
Irmen de Jong
723ab54f97
optimized all circle routines a little more. Added gfx2/monogfx safe_circle and safe_disc. Warning for when on const value.
2023-11-05 21:29:59 +01:00
Irmen de Jong
d9389afc66
fix compiler crash on certain constant expressions
2023-11-05 13:59:08 +01:00
Irmen de Jong
e7178ee496
optimized comparison with word variables
2023-11-05 00:20:12 +01:00
Irmen de Jong
72f1a779f2
optimize monogfx.fill() and gfx2.fill(), also don't read outside screen area
2023-11-04 14:30:51 +01:00
Irmen de Jong
98d2c64d5d
fix assembly error for uword[3] @zp @split word_addrs
2023-11-03 00:39:43 +01:00
Irmen de Jong
f68b46fc60
add a %zpallowed option to specify the range of zeropage register that can be used
2023-11-03 00:19:25 +01:00
Irmen de Jong
d54ab856e7
fix parameter passing bug introduced recently (byte not converted to word)
2023-11-02 00:31:35 +01:00
Irmen de Jong
16b24fadea
gfx2 future mode, upgrate to Kotlin 1.9.20
2023-11-01 23:18:44 +01:00
Irmen de Jong
94f12732ab
add math.diff() and math.diffw()
2023-10-27 22:36:43 +02:00
Irmen de Jong
32becdbced
add monogfx lib to virtual target
2023-10-24 00:16:25 +02:00
Irmen de Jong
34aa21f7d9
improve function call arg type casting
2023-10-22 22:33:35 +02:00
Irmen de Jong
cc81dd7d3e
remove useless close calls from diskio load
2023-10-22 17:24:05 +02:00
Irmen de Jong
3dc5a0e7f8
some arrays can be in BSS
2023-10-18 23:59:37 +02:00
Irmen de Jong
e15c5cde53
tiny fill() optimization
2023-10-18 23:11:16 +02:00
Irmen de Jong
d88c09b098
fix signed byte to word casting issue uw = 8888 + (bb as ubyte)
2023-10-17 22:54:33 +02:00
Irmen de Jong
893b383bdf
fix signed byte to word sign extension in assignment
2023-10-17 03:08:37 +02:00
Irmen de Jong
dd7c9d62e6
remove assigment splitter, it now caused code bloat instead of more efficient code
2023-10-16 02:07:22 +02:00
Irmen de Jong
97c5c90eff
fix codegen for var1>>=var2 and var1<<=var2 when var2 is zero
2023-10-16 00:04:21 +02:00
Irmen de Jong
1fb94e7a7b
monogfx and gfx2: flood fill uses optimized horizontal line drawing
2023-10-15 23:19:11 +02:00
Irmen de Jong
daca87c6d0
added -breakinstr compiler option
2023-10-15 21:55:09 +02:00
Irmen de Jong
203ec5fa46
implement taking address of array var with variable index
2023-10-15 20:24:48 +02:00
Irmen de Jong
9ea69c07b8
optimize word array reads with indexvar
2023-10-14 07:30:54 +02:00
Irmen de Jong
68539d6cc9
micro tweaks adpcm.p8
2023-10-13 00:55:56 +02:00
Irmen de Jong
f75fd0811e
restructure play-adpcm example code, stream-wav can now play stereo adpcm wavs
2023-10-11 17:37:42 +02:00
Irmen de Jong
836bc9d456
added verafx.available()
2023-10-10 22:12:21 +02:00