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
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
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
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
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
6a0a6b4751
todo
2023-11-24 01:20:10 +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
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
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
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
f70fa42eac
more accurate palette conversion
2023-11-08 01:33:55 +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
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
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
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
a37769aafe
cx16 adpcm example is now able to decode and play stereo music as well as mono.
2023-10-10 02:41:20 +02:00
Irmen de Jong
68e62e4bd2
added cx16.MCIOUT() kernal call
...
correct case of several other cx16 kernal calls.
corrected to upper case: cx16 kernal calls CLOSE_ALL, LKUPLA, LKUPSA, JSRFAR, PRIMM, MACPTR.
2023-10-09 22:44:36 +02:00
Irmen de Jong
a48ce35f0b
added %option verafxmuls
2023-10-05 22:06:33 +02:00
Irmen de Jong
e1835b5775
removed dysfunctional c128.graphics library module
2023-10-05 21:03:47 +02:00
Irmen de Jong
ee81da14d6
cx16: removed monochrome modes from gfx2 (use monogfx instead). New screen mode numbering!
...
programs will now be a lot smaller than before if they use gfx2 (or monogfx if they were only using monochrome drawing)
monogfx also fixes some drawing errors with small horizontal lines, and stippled vertical lines.
2023-10-05 02:12:46 +02:00
Irmen de Jong
6395d1908e
cx16: added monogfx library module, replaces gfx2 for monochrome screenmodes.
2023-10-04 22:32:13 +02:00
Irmen de Jong
989a5a2f8a
some notes about array alignment
2023-10-04 01:10:36 +02:00
Irmen de Jong
b7a622c68e
fix alignment of uninitialized arrays in aligned blocks (make them initialized with zeros so they don't end up in the BSS section)
...
fix alignment of uninitialized arrays in aligned blocks (make them initialized with zeros so they don't end up in the BSS section)
2023-10-04 00:12:36 +02:00
Irmen de Jong
a8507b437d
add verafx.transparency()
2023-10-03 01:47:52 +02:00
Irmen de Jong
e505bf9ccf
added "emudbg" library (cx16 only) to interface with the emulator
2023-10-02 22:23:09 +02:00
Irmen de Jong
a289b32053
Revert "added -verafxmul compiler option to use vera fx multiplication routine on cx16"
...
This reverts commit 690782bf
.
It was too risky, using vera (especially fx) transparently in multiple places especially perhaps in IRQ handlers will create havoc unless much intricate care is taken to save/restore the vera state. Better to do vera fx explicitly where the programmer has full control.
2023-10-02 21:08:52 +02:00
Irmen de Jong
c3f1f09ad1
added verafx.clear()
2023-10-02 01:34:56 +02:00
Irmen de Jong
70ee2026ff
fix gfx2 screen fill broken when using verafx
2023-10-02 00:12:48 +02:00
Irmen de Jong
690782bf60
added -verafxmul compiler option to use vera fx multiplication routine on cx16
2023-10-01 22:44:45 +02:00
Irmen de Jong
8fbe13f99d
c64: $a5 removed from free ZP (it's actually used by kernal disk routines)
2023-09-29 00:28:04 +02:00
Irmen de Jong
452e9e275f
diskio module: set correct read or write i/o channel every time f_read or f_write is called
2023-09-28 23:39:37 +02:00
Irmen de Jong
cd40088636
vm: added math.mul16_last_upper()
2023-09-28 03:18:49 +02:00
Irmen de Jong
9b9e6f4af5
added math.mul16_last_upper() to fetch the upper 16 bits of the last word multiplication
2023-09-25 23:59:57 +02:00
Irmen de Jong
ae6eeadf54
doc about range step value has to be a constant
2023-09-25 23:19:32 +02:00
Irmen de Jong
5268b05060
added bonkram chunk to chunkfile example
2023-09-25 22:24:40 +02:00
Irmen de Jong
eb55da63ef
weird
2023-09-23 11:21:17 +02:00
Irmen de Jong
229c1114dd
vm: fixed array initialization values with address-ofs
2023-09-19 23:54:18 +02:00
Irmen de Jong
885df9156f
todo
2023-09-19 00:08:17 +02:00
Irmen de Jong
880c0a5da8
allow taking address of array element
2023-09-18 04:37:41 +02:00
Irmen de Jong
ccf6e32bf9
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 15:16:47 +02:00
Irmen de Jong
95e4490a8a
adding setlsb() and setmsb() builtin functions
2023-09-15 02:39:16 +02:00
Irmen de Jong
a1d0e5bb65
added list of software to docs
2023-09-13 21:51:48 +02:00
Irmen de Jong
03e0d4b2e8
reducing expression codegen complexity (no longer splitting conditional expressions, and using r9 as temp var)
2023-09-13 01:08:42 +02:00
Irmen de Jong
6afdd4e6fd
preparing next version
2023-09-12 21:53:49 +02:00
Irmen de Jong
bde4be8231
fix VM indexed instructions to only use lsb part of the index
2023-09-06 02:44:04 +02:00
Irmen de Jong
0bbbb12ed2
fix bench8 examples
2023-09-05 23:40:54 +02:00
Irmen de Jong
b570bdaed7
fix codegen for array[i] += float expression
2023-09-05 22:38:52 +02:00
Irmen de Jong
8c0843cc87
fix an invalid 6502 instruction on c64 in certain float assignment
2023-09-05 21:54:52 +02:00
Irmen de Jong
c15c10a94e
fixed 'unroll CONSTANTEXPR' compiler errors
2023-09-05 01:03:35 +02:00
Irmen de Jong
9fca978725
optimized plasma examples even more
2023-09-05 00:23:50 +02:00
Irmen de Jong
eb018ae660
code optimization for bytearray[x] +/- bytearray[y]
...
use adc array,y or sbc array,y instead of tempvar
2023-09-04 23:01:53 +02:00
Irmen de Jong
7e5a9474fe
improve plasma example
2023-09-04 20:35:43 +02:00
Irmen de Jong
525a9b5036
prepare parser to allow chained array indexing later
2023-09-03 19:06:47 +02:00
Irmen de Jong
c3fbdf34ca
fixed c64 float problem
2023-09-03 16:40:10 +02:00
Irmen de Jong
48bd51e1a5
c64 float problem
2023-09-03 16:29:01 +02:00
Irmen de Jong
10d0b03a90
use less tempvars
2023-09-03 01:32:47 +02:00
Irmen de Jong
95be1c9e22
fix optimized swapped in-place byte comparisons
2023-09-03 00:47:55 +02:00
Irmen de Jong
15c649024e
float problems on c64
2023-09-02 23:09:55 +02:00
Irmen de Jong
e97303c226
fix word multiplication to not clobber r0 and r1 anymore
...
This was causing corruption in certain programs such as the cx16/amiga example.
The problem was introduced in 9.4 with the new multiply_words routine
2023-09-02 20:52:16 +02:00
Irmen de Jong
3b786c819d
avoid using temp var even more
2023-09-01 23:47:01 +02:00
Irmen de Jong
04959dbd8b
optimize asm: don't use temp var for some additions
2023-09-01 22:24:17 +02:00
Irmen de Jong
f14ea1b3de
micro optimization to save 2 cycles: change some pha+pla into tax+txa
2023-09-01 20:37:24 +02:00
Irmen de Jong
9cc0cda0fb
added sprites library module (cx16 only)
2023-09-01 17:35:07 +02:00
Irmen de Jong
09a7a4bbe5
optimize comparison against zero
2023-09-01 02:28:11 +02:00
Irmen de Jong
28bf0b61ce
added math.log2() and math.log2w()
2023-09-01 00:42:15 +02:00
Irmen de Jong
aa4d23a3d5
fix register stack saving on certain expression code that was broken on 6502 but not on 65c02
2023-08-29 11:50:35 +02:00
Irmen de Jong
2d7ebff8e9
fix shadowing warnings in asm and library code
2023-08-29 11:00:53 +02:00
Irmen de Jong
ff35ba3696
added warnshadow cli option to enable assembler warnings about symbol shadowing
2023-08-28 16:41:46 +02:00
Irmen de Jong
72768e7fad
todo
2023-08-28 16:10:02 +02:00
Irmen de Jong
66857ca477
prepare parser to be more flexible with array indexed expressions
2023-08-15 13:07:01 +02:00
Irmen de Jong
f98ee326b4
error when doing txt.print('@') where "@" was intended (byte for string parameter)
2023-08-14 19:25:31 +02:00
Irmen de Jong
bc8126eb16
2x faster word multiplication routine
2023-08-14 18:11:30 +02:00
Irmen de Jong
bbb6c53457
slightly faster sqrt() routine for integers
2023-08-14 17:00:02 +02:00
Irmen de Jong
2c9e50873c
use math.square for optimized X*X calculation (words only).
...
Added IR SQUARE instruction.
2023-08-14 01:05:17 +02:00
Irmen de Jong
151a206617
experimental Commodore PET target
2023-08-12 23:25:07 +02:00
Irmen de Jong
e403c4cf99
version 9.3
2023-08-12 17:58:10 +02:00
Irmen de Jong
dc870cd5ea
fixed optimized code for > and <
2023-08-12 13:15:32 +02:00
Irmen de Jong
584be44743
fix compiler error on float comparison expressions
2023-08-12 00:09:38 +02:00
Irmen de Jong
b92e22e4a6
IR: fix for loop over range with step
2023-08-11 03:05:47 +02:00
Irmen de Jong
dff1d9e4dd
cleanup range expression doc
2023-08-09 22:58:04 +02:00
Irmen de Jong
0bf8378fcb
fixed gfx2.horizontal_line problem with monochrome stippling mode (regression since version 9.0)
...
todo
2023-08-07 22:56:07 +02:00
Irmen de Jong
017ef8a837
optimization of > and <= in expressions
2023-08-07 21:23:31 +02:00
Irmen de Jong
0d63cdcb96
optimization of < and >= in expressions
2023-08-07 04:54:35 +02:00
Irmen de Jong
77fa2e2722
optimization in + or - assignment to word array
2023-08-05 23:28:40 +02:00
Irmen de Jong
19a4bf1088
clean up AugmentableAssignmentAsmGen a bit
2023-08-04 21:48:02 +02:00
Irmen de Jong
a4d093afa1
added -sourcelines cli option to include src lines in generated assembly (which is now off by default)
2023-08-02 23:05:24 +02:00
Irmen de Jong
ba788bcf0f
put the original p8 source lines into the generated assembly as comments (not only the line numbers).
2023-08-02 02:18:13 +02:00
Irmen de Jong
f2c62bee7e
docs
2023-08-01 22:49:55 +02:00
Irmen de Jong
548721e306
docs
2023-07-31 22:17:43 +02:00
Irmen de Jong
0cba736446
Merge branch 'master' into remove_evalstack
2023-07-30 14:53:40 +02:00
Irmen de Jong
0816a57032
never add rts to inline asmsubs and always inline them regardless of optimization setting
...
otherwise they can't specify a sequence of assembly instructions that should be inserted in-place, such as those that manipulate the cpu stack.
for instance cx16.irqsafe_set_irqd() / cx16.irqsafe_clear_irqd()
2023-07-30 14:52:37 +02:00
Irmen de Jong
a0ab0bd3e2
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-29 18:57:06 +02:00
Irmen de Jong
b89ad4b328
don't optimize empty where choice away! It would call the else clause incorrectly.
2023-07-29 18:25:52 +02:00
Irmen de Jong
6cda76a116
comments
2023-07-29 17:32:27 +02:00
Irmen de Jong
46c12a8899
fix byte in array assignment,
...
remove no longer needed array assignment ast transformation
2023-07-28 22:40:06 +02:00
Irmen de Jong
4a8ee6815a
merge
2023-07-28 03:34:58 +02:00
Irmen de Jong
e1b6bb154a
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# compiler/res/prog8lib/cx16/gfx2.p8
# docs/source/todo.rst
# examples/test.p8
2023-07-28 02:09:45 +02:00
Irmen de Jong
e520921746
todo
2023-07-26 23:16:43 +02:00
Irmen de Jong
970642244b
optimized gfx2.text() for hires 4c mode
2023-07-26 04:17:44 +02:00
Irmen de Jong
78e84182f0
todo
2023-07-24 22:36:17 +02:00
Irmen de Jong
7cf6aba625
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-22 23:37:20 +02:00
Irmen de Jong
c7d54570cc
IR: sXX, CONCAT instructions now use 3 register format
2023-07-21 00:07:56 +02:00
Irmen de Jong
70a78e74f6
get rid of binexpr splitter
2023-07-20 01:36:43 +02:00
Irmen de Jong
d5707b7bf3
rebuilding floating point stack evaluation (using cpu stack)
2023-07-20 00:45:04 +02:00
Irmen de Jong
47485e4b49
added more missing codegen for bit shifts
2023-07-16 17:42:10 +02:00
Irmen de Jong
64254e758d
cleaned up cx16 keyboardhandler example and some compiler warnings for redundant else
2023-07-16 13:23:53 +02:00
Irmen de Jong
ab8173637a
remove redundant asm optimizer
2023-07-16 11:15:28 +02:00
Irmen de Jong
da57f76de3
fix augassign
2023-07-15 22:26:56 +02:00
Irmen de Jong
4784f1c65a
remove eval stack from documentation
2023-07-15 22:26:56 +02:00
Irmen de Jong
41af63b333
remove even more X register save/restore code
2023-07-15 22:26:54 +02:00
Irmen de Jong
e2bb0de24d
clean up X register save/store in compiler code, remove temp vars for register saving
2023-07-15 22:25:58 +02:00
Irmen de Jong
b791fae9ce
remove stack based ExpressionAsmGen
2023-07-15 22:24:22 +02:00
Irmen de Jong
9e8c8973d8
remove eval stack references from asm code
2023-07-15 22:24:22 +02:00
Irmen de Jong
3933bf5c1a
remove eval stack references from p8 code
2023-07-15 22:24:22 +02:00
Irmen de Jong
708e296774
remove eval stack assignment source and targets
2023-07-15 22:24:22 +02:00
Irmen de Jong
7c219d235c
fixed possible type mismatch error in when statements
2023-07-14 23:35:58 +02:00
Irmen de Jong
6938c79f88
IR: added CMPI instruction
2023-07-14 23:17:29 +02:00
Irmen de Jong
795f80b4ec
fix forloop 6502 codegen in case of descending word values
2023-07-11 00:33:12 +02:00
Irmen de Jong
6b6427492d
fix forloop 6502 codegen in case of descending word values
2023-07-10 23:10:16 +02:00
Irmen de Jong
6055b8c3dc
IR: fix forloop codegen for steps != 1
2023-07-10 21:36:44 +02:00
Irmen de Jong
a98cb50d55
Revert "ir: SCC now sets all bits to 1 (or 0)"
...
This reverts commit 7245aece4f
.
2023-07-09 23:16:13 +02:00
Irmen de Jong
e98bbc1c52
todo
2023-07-09 22:29:54 +02:00
Irmen de Jong
4e863ecdac
vm: fixed abs() and word-to-string conversion
2023-07-08 22:57:16 +02:00
Irmen de Jong
5037033fcf
ir: EXT and EXTS opcodes now have 2 registers to avoid type clash
2023-07-08 22:42:11 +02:00
Irmen de Jong
4ced8889d3
cx16: fix signature return values of cx16.screen_mode(), add get_screen_mode() and set_screen_mode() convenience routines
2023-07-08 11:37:29 +02:00
Irmen de Jong
d26967a87d
ir doc
2023-07-07 22:35:05 +02:00
Irmen de Jong
d2154f5f2e
remove empty when choices, fixes ir compilation error on those
2023-07-07 20:34:24 +02:00
Irmen de Jong
90c4b00f74
ir: fix any() all() reverse() sort() on memory mapped arrays and on byte arrays
2023-07-07 17:25:32 +02:00
Irmen de Jong
3126959576
ir: several fixes
2023-07-07 16:53:32 +02:00
Irmen de Jong
02e51d8282
ir: fix initial chunk linking
2023-07-07 00:30:56 +02:00
Irmen de Jong
ffb2027a19
repeat loop count now always rounded to integer
2023-07-06 23:58:02 +02:00
Irmen de Jong
70c9ab9074
upgrade libraries
2023-07-06 23:33:58 +02:00
Irmen de Jong
6d1fdf1ba6
upgrade to Kotlin 1.9.0
2023-07-06 23:03:47 +02:00
Irmen de Jong
1f7180d9a8
math.multiply_words returns lower 16 bits of the result also in AY (to avoid repeating some load instructions)
2023-07-06 22:54:13 +02:00
Irmen de Jong
b4e94ae4dd
optimizer: avoid symbol name clash when inlining subroutine
2023-07-05 23:15:04 +02:00
Irmen de Jong
07c606bfc9
optimizer: don't replace for loop with repeat loop (the loop variable might be used elsewhere!)
2023-07-05 21:16:17 +02:00
Irmen de Jong
f9200a2b75
fix IR loader for romsub calls (calls to an address)
2023-07-02 23:41:15 +02:00
Irmen de Jong
f570b70827
fix type error with returning an array from a subroutine returning uword
2023-07-02 22:09:19 +02:00
Irmen de Jong
0db141eeac
todo
2023-07-02 21:19:33 +02:00
Irmen de Jong
c544b7f5ba
fixing up p8_ prefixing
2023-07-02 21:15:05 +02:00
Irmen de Jong
bb95484c8a
uniform symbol prefixing with p8_
2023-07-02 06:15:09 +02:00
Irmen de Jong
cad18b8a3a
uniform symbol prefixing with p8_
2023-07-02 06:15:02 +02:00
Irmen de Jong
04da44eb98
fix certain inefficient codegen when assigning a type casted value
2023-06-29 22:56:26 +02:00
Irmen de Jong
7649be97b1
add git hash to compiler header output
2023-06-29 21:01:02 +02:00
Irmen de Jong
c0cb2438d5
1-letter symbols now also prefixed with 'p8p_'
...
to avoid assembly errors caused by confusing variable 'a' with register 'a' etc.
2023-06-28 23:17:59 +02:00
Irmen de Jong
30c531b39e
attempting to fix array expression inplace assign
2023-06-28 00:38:08 +02:00
Irmen de Jong
e7b631b087
allow comment lines inside array initializer value
2023-06-27 23:30:37 +02:00
Irmen de Jong
a9f5dc036c
fix cpu stack corruption in array assignment codegen
2023-06-27 18:49:49 +02:00
Irmen de Jong
0a83b51e00
allow more curly brace styles
2023-06-27 01:59:22 +02:00
Irmen de Jong
eab63ecc6c
allow curly brace on next line also after subroutine and when
2023-06-27 01:29:25 +02:00
Irmen de Jong
b0794cf35e
added hiram bank number to -varshigh
2023-06-27 00:27:34 +02:00
Irmen de Jong
eae41de27d
improve errors generated for undefined symbols
2023-06-25 15:19:51 +02:00
Irmen de Jong
8c617515ba
don't prefix 3-letter symbols too aggressively (could cause some compilation errors)
2023-06-23 23:36:59 +02:00
Irmen de Jong
04e4e71f2e
uword == str is now possible (sugar for string.compare)
2023-06-22 00:20:30 +02:00
Irmen de Jong
a587482edf
optimize dangling else
2023-06-18 13:46:02 +02:00
Irmen de Jong
f56c12ee4e
cx16 spotlight example
2023-06-18 12:49:22 +02:00
Irmen de Jong
4bb9ae61f2
library source links
2023-06-18 02:31:45 +02:00
Irmen de Jong
ff7f3484e4
atan
2023-06-17 23:01:47 +02:00
Irmen de Jong
5da3abe6b4
fix silent typecast on return statements that could lose data (word->byte)
2023-06-17 14:44:36 +02:00
Irmen de Jong
c0b398e0ce
add various math.atan() routines
2023-06-17 00:43:33 +02:00
Irmen de Jong
a521982576
fix subroutine inline problem with strings
2023-06-09 21:45:05 +02:00
Irmen de Jong
ea6926e57d
fix float expression crash: fl = abs/sqrt (fl)+0.5
2023-06-09 19:28:34 +02:00
Irmen de Jong
ba25b7fee6
fix diskio.diskname(). cx16: add diskio.curdir()
2023-06-07 22:38:51 +02:00
Irmen de Jong
7ee162d98b
preparing version 9.0
2023-06-05 19:47:00 +02:00
Irmen de Jong
380f557c45
vm: implement split incr/decr
2023-06-03 22:22:13 +02:00
Irmen de Jong
bfaad1388c
IR: handle split arrays without new custom opcodes
2023-06-03 01:51:02 +02:00
Irmen de Jong
0b580ad05d
v9 upgrading doc
2023-06-01 20:23:04 +02:00
Irmen de Jong
bb35a80177
%option splitarrays now also at module level
2023-05-31 21:50:41 +02:00
Irmen de Jong
24fc95ac81
fix atari target syslib
2023-05-31 20:58:00 +02:00
Irmen de Jong
8f864417c4
added %option splitarrays (block level)
2023-05-31 18:49:21 +02:00
Irmen de Jong
bbc02752c9
use split word arrays in various examples, fix codegen issue, docs
2023-05-29 15:34:33 +02:00
Irmen de Jong
82898f7bba
fix some split array issues in 6502 codegen
2023-05-28 22:24:56 +02:00
Irmen de Jong
c94e292176
more split array stuff
2023-05-27 12:47:11 +02:00
Irmen de Jong
e15bc68c9b
added gfx2.fill() flood fill routine
2023-05-23 00:50:10 +02:00
Irmen de Jong
0c94e377fc
Merge branch 'v8_maintenance'
2023-05-21 16:09:31 +02:00
Irmen de Jong
061617122a
Merge branch 'v8_maintenance'
...
# Conflicts:
# examples/test.p8
2023-05-20 18:07:57 +02:00
Irmen de Jong
06d1570142
cx16: added diskio.save_raw() headerless save routine
2023-05-20 00:00:50 +02:00
Irmen de Jong
093c370faa
todo
2023-05-19 01:26:15 +02:00
Irmen de Jong
300e2fe9f8
IR: wrong attempt at optimizing register usage by reusing registers inside different code chunks
2023-05-18 21:57:21 +02:00
Irmen de Jong
91421b0c62
IR handy sequence shortcut functions
2023-05-18 11:32:20 +02:00
Irmen de Jong
c098ad2b3b
fix vm minf/maxf
2023-05-17 23:18:14 +02:00
Irmen de Jong
b43223cb7a
added clamp() builtin function and floats.clampf()
2023-05-17 23:12:58 +02:00
Irmen de Jong
1af38e62bc
removed floats.fabs() and floats.sqrt()/fsqrt()
2023-05-17 00:46:15 +02:00
Irmen de Jong
7e734214dc
v8_maintenance branch made
2023-05-15 23:01:43 +02:00
Irmen de Jong
0e3d75cfeb
move irType() to intermediate module
2023-05-14 20:44:32 +02:00
Irmen de Jong
630c8a5faa
IR: fix romsub encoding
2023-05-14 18:08:06 +02:00
Irmen de Jong
905921a684
IR: new (sys)call instructions that encapsulate the full subroutine call
...
to fix the bugs resulting from nesting subroutine calls (as param to another call etc)
2023-05-14 15:20:25 +02:00
Irmen de Jong
bff3c4f95c
IR now converts IRInlineAsmChunk (of type IR) into regular code chunks directly.
...
.p8ir files usually won't contain <INLINEASM> nodes any longer
2023-05-09 21:04:31 +02:00
Irmen de Jong
4c8898a639
fix typecheck crash on certain byte to word assignments
2023-05-08 23:02:48 +02:00
Irmen de Jong
97df33ab1a
IR: fix byte to word assignment not doing value extension
2023-05-08 22:47:00 +02:00
Irmen de Jong
ef46fb2685
refactor
2023-05-08 21:51:55 +02:00
Irmen de Jong
d5d6dd3614
optimize typecast expr
2023-05-08 03:30:14 +02:00
Irmen de Jong
6db715d879
optimize multiplication expr
2023-05-08 02:10:54 +02:00
Irmen de Jong
8cbfe64f19
optimize some carry flag assembly
2023-05-07 23:27:49 +02:00
Irmen de Jong
fd1e9971e4
asmsub Pc params and returnvalue must be boolean
2023-05-07 22:59:30 +02:00
Irmen de Jong
68336a76c5
optimized word comparison expressions
2023-05-07 20:40:48 +02:00
Irmen de Jong
393e914a86
optimized word equality comparison expressions
2023-05-07 18:55:17 +02:00
Irmen de Jong
533d825f1a
optimized ubyte comparison expressions
2023-05-07 14:47:31 +02:00
Irmen de Jong
21bc505d85
for loops no longer execute when from var already reached beyond the end
2023-05-03 00:43:03 +02:00
Irmen de Jong
d81fdf6d6b
for loops...
2023-05-02 22:55:58 +02:00
Irmen de Jong
87d3109ffb
diskio f_seek_w() abandoned due to unreliability
2023-05-02 19:33:49 +02:00
Irmen de Jong
180dbbb521
cleaning up the diskio modules
...
for cx16: removed cx16diskio (merged everything into its regular diskio module)
for cx16: the load() and load_raw() routines that took an extra ram bank parameter are gone. You have to cx16.rambank() yourself before calling load().
2023-05-02 03:31:11 +02:00
Irmen de Jong
53e18a5387
Api change: drivenumber parameter removed from all routines in diskio and cx16diskio modules
2023-05-02 01:48:56 +02:00
Irmen de Jong
92062d056d
divmod() now works on multiple data types including float.
...
divmodw() has been removed
2023-05-02 01:19:53 +02:00
Irmen de Jong
06368ab0a1
sqrt() now works on multiple data types including float.
...
no need to use floats.sqrtf() anymore
2023-05-02 01:19:53 +02:00
Irmen de Jong
38efe25c68
abs() now works on multiple data types including float.
...
no need to use floats.fabs() anymore
2023-05-02 01:19:53 +02:00
Irmen de Jong
319079de7a
sqrt
2023-05-02 01:19:53 +02:00
Irmen de Jong
025bf900a5
min max docs, added floats.minf() and maxf()
2023-05-02 01:19:53 +02:00
Irmen de Jong
c07eda15b1
adding min() and max()
2023-05-02 01:19:53 +02:00
Irmen de Jong
4274296cf3
api change: new 'cbm' module that now contains the common CBM kernal variables and routines.
2023-05-02 01:19:53 +02:00
Irmen de Jong
76a203d4df
api change: rename builtin func sqrt16 to sqrtw
2023-05-02 01:19:53 +02:00
Irmen de Jong
f465b2e2a0
some improvements to IR peephole optimizer
2023-05-02 00:29:04 +02:00
Irmen de Jong
ce00e49a89
version 8.12
2023-04-30 14:04:54 +02:00
Irmen de Jong
ee5c94f6db
c128: fix key status zp location symbols
2023-04-28 20:43:26 +02:00
Irmen de Jong
91045afbee
document limited fp support
2023-04-28 18:18:41 +02:00
Irmen de Jong
0bea721c2e
docs
2023-04-27 01:26:25 +02:00
Irmen de Jong
efd7d6f0c0
tweak IR call args setting now via special SETPARAM instruction
2023-04-14 02:10:39 +02:00
Irmen de Jong
b55be093be
tweak IR
2023-04-11 22:48:20 +02:00
Irmen de Jong
7c1d5cadd7
fix sort and reverse on strings on 6502 codegen
2023-04-10 19:33:24 +02:00
Irmen de Jong
dd1592b03b
ir syscalls args via stack instead of fixed r65500+
2023-04-10 18:02:37 +02:00
Irmen de Jong
9b37ac483f
vm fix str to word conversion
...
ir SYSCALL puts result(s) on value stack, instead of on hardcoded r0, r1
2023-04-10 16:26:42 +02:00
Irmen de Jong
090820958e
ir divmod returns its results on valuestack, to keep consistency with the rule that only 1 register can be a returnvalue
2023-04-10 15:26:30 +02:00
Irmen de Jong
c8531cbeb1
remove unused variables from IR output
2023-04-09 23:09:30 +02:00
Irmen de Jong
c560abedba
fix compiler crash on rol/ror array value
2023-04-09 22:29:11 +02:00
Irmen de Jong
9b952fbc44
tweaking IR instruction set branch instructions
2023-04-09 22:17:19 +02:00
Irmen de Jong
ccdf05e922
tweaking IR instruction formats
2023-04-09 16:12:16 +02:00
Irmen de Jong
c3d74f2ae9
fix golden ram area for x16, remove romsub restriction
...
note: romsubs still won't work in the VM but at least they compile again
2023-04-08 00:40:52 +02:00
Irmen de Jong
c4f53fe525
IR: small optimization
2023-04-05 22:55:54 +02:00
Irmen de Jong
befe0fff2a
IR: fix comparison codegen errors in newexpr path
2023-04-05 00:15:09 +02:00
Irmen de Jong
4861973899
vm: fix float arrays init values
2023-04-04 00:06:55 +02:00
Irmen de Jong
d8214d4f12
fix IR array indexing for newexpr
2023-04-03 03:13:35 +02:00
Irmen de Jong
47d0f0ea40
implement missing operators in IR code gen
2023-04-01 02:29:33 +02:00
Irmen de Jong
0c81b32cac
todo
2023-03-28 20:01:26 +02:00
Irmen de Jong
629ed74d09
got rid of rpn deadend code...
2023-03-25 18:45:17 +01:00
Irmen de Jong
ca2af2ca63
todo
2023-03-25 18:23:33 +01:00
Irmen de Jong
52ab089615
rpn: implement more comparisons
2023-03-25 18:21:10 +01:00
Irmen de Jong
01461a196d
implementing optimized comparisons
2023-03-25 00:08:21 +01:00
Irmen de Jong
c8b2c8ae50
extra asmvars now also moved into BSS section instead of taking up space inline
2023-03-25 00:00:29 +01:00
Irmen de Jong
9c71e2f1c8
rpn optimizations
2023-03-21 18:41:37 +01:00
Irmen de Jong
134fd62da8
RPN: better handling of bit shifts
2023-03-21 02:58:26 +01:00
Irmen de Jong
2afd283582
optimize RPN
2023-03-21 00:05:32 +01:00
Irmen de Jong
c66734bab0
fix cx16 ubyte to float cast (wrong rom routine)
2023-03-20 23:25:28 +01:00
Irmen de Jong
d265271148
fix rpn variable depth clobber and type error
2023-03-20 22:18:10 +01:00
Irmen de Jong
b40e397b28
fix rpn result type mismatch
2023-03-20 00:58:48 +01:00
Irmen de Jong
35ff1d996a
only reuse actual counter vars
2023-03-19 21:53:49 +01:00
Irmen de Jong
deea0b05cb
tweak cx16 system init and reset to not reset Vera any more
...
uses new audio routine to silence the audio
2023-03-19 21:16:23 +01:00
Irmen de Jong
c50c9ca545
Merge branch 'rpn-expressions'
2023-03-19 17:36:20 +01:00
Irmen de Jong
a819b4a5a5
fix RPN issues
2023-03-19 17:35:28 +01:00
Irmen de Jong
df2d7d4734
fix RPN comparison exprs
2023-03-19 16:08:48 +01:00
Irmen de Jong
79ce4098cf
todo
2023-03-19 01:34:55 +01:00
Irmen de Jong
374464a1f8
weird condition operator...
2023-03-19 01:32:20 +01:00
Irmen de Jong
6e4ae034b2
more Rpn optimizations
2023-03-19 00:48:12 +01:00
Irmen de Jong
52b560e72d
more Rpn optimizations
2023-03-18 19:13:32 +01:00
Irmen de Jong
e8bebe5a75
implementing Rpn optimizations
2023-03-18 01:13:02 +01:00
Irmen de Jong
5b0e1b4f9e
a little rpn refactor
2023-03-17 23:04:56 +01:00
Irmen de Jong
1152191f48
add optimization: replace simple for loops by repeat loop
2023-03-15 21:11:37 +01:00
Irmen de Jong
af1b07ad44
add more referencesIdentifier() on ast nodes
2023-03-15 20:44:24 +01:00
Irmen de Jong
b8113fff1e
todo
2023-03-15 01:05:48 +01:00
Irmen de Jong
e2c101206c
removed a problematic asm optimization step that could result in dysfunctional code when writing to I/O addresses
2023-03-14 22:14:48 +01:00
Irmen de Jong
92276b5769
IR fix unneeded register allocated for array indexing with variable
2023-03-14 21:24:44 +01:00
Irmen de Jong
a2133f61a8
get rid of all the require() checks that test result regs to be different
2023-03-14 01:01:46 +01:00
Irmen de Jong
199adbbcf0
IR: don't allow to have 2 same registers on instructions
2023-03-14 00:45:41 +01:00
Irmen de Jong
025183602f
refactor IR returnregs 6
2023-03-13 21:35:23 +01:00
Irmen de Jong
451e527b7c
refactor IR returnregs 4
2023-03-13 03:54:16 +01:00
Irmen de Jong
54dd3a00df
refactor IR returnregs 3
2023-03-13 03:20:06 +01:00
Irmen de Jong
03c5dab79d
refactor IR returnregs 2
2023-03-13 02:50:41 +01:00
Irmen de Jong
78a097585d
new IR call and return instructions to deal with returnregisters
2023-03-12 21:54:59 +01:00
Irmen de Jong
39132327cc
added optimizer for IR code
...
with two very simple optimizations
2023-03-12 20:30:51 +01:00
Irmen de Jong
592f74124c
fix startup subroutine linking in VM
2023-03-12 16:09:55 +01:00
Irmen de Jong
d76547ead4
don't crash on certain undefined symbols, give proper error instead
...
Also the error handlers in unit tests now de-duplicate messages just like the compiler itself does
2023-03-11 14:58:41 +01:00
Irmen de Jong
043df18daa
set X to bottom part of eval stack in irq handler. fixes #94
2023-03-10 23:29:34 +01:00
Irmen de Jong
96996bf18e
be less aggressive with translating adds/subs into auto inc/decrements, to avoid code bloat
2023-03-10 23:01:55 +01:00
Irmen de Jong
f350137a14
fix array in place assignments
...
fixes balls and snow examples amongst others
2023-03-10 04:07:50 +01:00
Irmen de Jong
6c34672549
array in-place assignment problem
2023-03-10 02:02:47 +01:00
Irmen de Jong
9a36e8ba3b
todo
2023-03-09 00:00:03 +01:00
Irmen de Jong
c968bacb01
fix pokew() crash with certain address expressions
2023-03-08 23:29:57 +01:00
Irmen de Jong
25199dfb43
change tokenizer so that A,X,Y now are parsed correctly as identifiers as well
2023-03-08 22:57:19 +01:00
Irmen de Jong
fc253237c9
fix issues with reporting inlined subroutines as unused
2023-03-07 23:47:14 +01:00
Irmen de Jong
589948c7f4
fix IR translateIfElseNonZeroComparison for ints + floats
2023-03-07 23:07:51 +01:00
Irmen de Jong
fd07ae5225
fix various IR file and symboltable issues
2023-03-07 19:40:11 +01:00
Irmen de Jong
1436480eab
added a few more comparison expression optimizations
2023-03-04 16:01:40 +01:00
Irmen de Jong
448d176c24
fix vm crash on empty string
2023-03-04 15:35:54 +01:00
Irmen de Jong
fd269453a4
todos
2023-03-04 14:14:01 +01:00
Irmen de Jong
3114ab87dc
add 8 bit sample width support
2023-03-03 17:12:44 +01:00
Irmen de Jong
00bc99cc7b
added cx16/stream-wav example, refactor pcmaudio code
2023-03-03 14:18:13 +01:00
Irmen de Jong
540b3ae2f4
tweak BinaryExpression splitting
2023-02-28 21:45:38 +01:00
Irmen de Jong
dbfe4140e1
improved import search paths
2023-02-28 20:08:11 +01:00