c86c0912f8
latest symboldumps
2024-12-29 20:07:45 +01:00
268b0c9365
fix memory top boundary address on c64 and c128
2024-12-29 17:01:22 +01:00
099fe280ba
improved diskio.diskname() error detection
2024-12-29 10:29:31 +01:00
f786f60e9c
cmb.PLOT: fixed order of return registers (Y then X, column then row) - same as argument order
2024-12-29 07:42:13 +01:00
f40e1eb1f2
fixed clipping sample
2024-12-29 00:56:12 +01:00
8b9da65357
Added supervisor to coroutines.run(). update symboldumps for 11.0.1.
2024-12-28 04:44:45 +01:00
2cbbe0d48a
remove syscall from docs, it doesn't exist anymore
2024-12-27 22:35:56 +01:00
b6e1fb3ba8
emphasize that str[] is also split by default
2024-12-27 17:00:39 +01:00
bdccffbb8e
stricter type checking in multivalue assigns, avoids possible invalid output due to missing type cast
2024-12-26 22:20:08 +01:00
5a85474712
pet32: fixed txt.plot() mixing up row and column
2024-12-26 19:37:39 +01:00
f50899c6fa
coroutines: make yield() return a configured uword so that a task subroutine can get reused for multiple different things
2024-12-26 18:55:32 +01:00
4daa909f32
fix path normalization problems,
...
allow ~ in srcdirs compiler flag
2024-12-26 17:42:20 +01:00
4555edf369
update zsmkit to fix zsm_clearisr routine
2024-12-26 13:06:41 +01:00
529ea5bf58
added coroutines library and multitasking example. Added sys.push_returnaddress().
2024-12-26 00:57:39 +01:00
fe011de934
fix the missing cases in certain expressions that need the address of a split word array
2024-12-25 16:55:07 +01:00
0653d430a7
fix compiler crash related to uword array parameters type checking
2024-12-25 12:12:20 +01:00
a587f6e9a0
make imported module cache case-insensitive
...
this avoids crashes when using case-insensitive filesystems and mistyping the exact path case
2024-12-25 11:51:24 +01:00
3850e1dbb5
Merge branch 'better-ir'
2024-12-24 21:23:57 +01:00
91cde072e0
added txt.t256c() on the cx16 to turn 256 color tile mode on or off
2024-12-24 12:10:02 +01:00
2ca4aed566
IR: prefix immediate values with '#' for human readability reasons (no technical reason)
2024-12-24 09:35:10 +01:00
5071da6784
retain constants in IR
...
some IR related cleanups
2024-12-24 00:30:08 +01:00
4c1e2f3110
refactor package nesting of ast exception classes
2024-12-23 18:14:46 +01:00
2727a4dcb3
tweak DataType class and memsizer related to subtypes/elementtypes
2024-12-23 17:28:25 +01:00
126d4c69e6
fix cx16images.py script for new pillow library version
2024-12-23 16:31:15 +01:00
7657edcb7d
latest symboldumps
2024-12-22 09:24:45 +01:00
580e786952
change math.crc32 to the same algorithm as pkzip/zlib uses (ISO-HDLC). Add math.crc32_end_result(). Fix a parse error in profiler.py script.
2024-12-22 09:19:54 +01:00
c0ae35b3a3
tweaks, bump version 11.0
2024-12-22 06:34:17 +01:00
c3dc74788a
added diskio.get_loadaddress()
...
added compression.decode_tscrunch_inplace()
2024-12-22 03:17:16 +01:00
379d241a0d
various library modules now also use regular asm symbol prefixing rules: buffers, compression, cx16logo, test_stack.
2024-12-21 06:34:55 +01:00
1f49e8fe75
in diskio.f_readline make sure AY result isn't clobbered
2024-12-21 06:25:56 +01:00
d70cfbb661
added sorting module and sortingbench example
2024-12-21 06:18:35 +01:00
5482ac0302
simplify grammar of @tags, also improving their error message
2024-12-21 01:44:58 +01:00
131d5ceb4f
avoid re-reading all source files when sourcelines are requested in the asm
2024-12-21 00:06:18 +01:00
512ddd1694
cleanups
2024-12-20 22:59:20 +01:00
14a213bff9
compression module: added decode_zx0 and decode_tscrunch
...
two very fast decompressors while still having pretty good compression ratio
2024-12-20 20:44:57 +01:00
d586846bc5
use simpler set_screen_mode()
2024-12-19 22:17:09 +01:00
ef4efcb112
cleanup
2024-12-19 21:06:51 +01:00
b01555d75e
cx16.set_screen_mode() no longer returns anything.
...
tweak when codegen slightly.
allow trailing comma in array literals.
set_screen_mode failure status is really uncommon and still returned by the real kernal routine screen_mode().
2024-12-19 20:56:07 +01:00
3804fba0f1
moved jdk version config back to main gradle build file, version consistency
2024-12-19 13:39:27 +01:00
f93b7e3303
changed IR JUMPI instruction to support more indirect jump cases
2024-12-19 04:29:16 +01:00
73baaeff1f
avoid compiler crash when using char literal in str initialization
...
fix compiler crash when using str var in an expression without &
2024-12-18 15:08:45 +01:00
7c79cdbd2f
fix symbol prefixing on goto with expression
...
added coroutines example
2024-12-17 16:16:38 +01:00
8ea032ed66
fix compiler crash on certain split array values
2024-12-17 12:31:47 +01:00
e7a0cb636c
add $< and $> operators to get the lsb and msb addresses of a @split array respectively.
...
document the new split array things.
2024-12-16 17:45:54 +01:00
02f3f5d0f5
@split is back to force splitting of word arrays
2024-12-16 14:51:32 +01:00
1e9bbd662b
add palette.set_rgb_nosplit() and set_rbg_be_nosplit()
...
fix stream-wav missing rts which corrupted playback
fix showbmx example palette and image centering
2024-12-16 02:00:51 +01:00
8644a4ae91
more split array fixes
2024-12-15 22:54:06 +01:00
1e85f7812f
removed anyall library module altogether. The routines weren't very optimized and didn't work on split word arrays.
2024-12-15 17:45:31 +01:00
80d88b3c61
fix many split array issues
2024-12-15 17:08:07 +01:00
d2827a7431
fix ast printer for arrays containing label addresses
2024-12-15 13:53:24 +01:00
28c721fa7d
add a split-array version for word containment check
2024-12-15 13:45:47 +01:00
8f799567cf
make word arrays split by default (w.i.p.)
2024-12-15 08:12:34 +01:00
9e8cc8b54d
goto can now accept any expression as address (instead of just a constant), and ofcourse a label name still.
2024-12-15 05:22:37 +01:00
cc59069876
allow goto to take any expression, not only an integer or an identifier (part 1)
2024-12-14 01:01:32 +01:00
697d54e10a
fix asmgen for call $3000
2024-12-13 22:33:26 +01:00
1679ca79b4
can now use boolean params mapped to Rx register
2024-12-13 20:47:23 +01:00
124ec77b58
update zsmkit to version 2.4, including the new on_deck routines
2024-12-13 20:15:36 +01:00
3675d7961b
boolean variables can now also be memory-mapped (including boolean arrays)
2024-12-11 18:25:27 +01:00
f8aaa2d13c
explicit integer type check for @R0-R15 parameters
...
avoids weird type inconsistency for boolean parameters that would get aliased as unsigned byte instead invisibly
2024-12-10 23:19:41 +01:00
b7afda781a
Optimize 6502 bitwise operations on word values where only the msb or lsb is touched
2024-12-10 21:42:42 +01:00
535ec13072
improved codegen for testing for single bits: x & mask == mask
2024-12-09 04:05:00 +01:00
26d0a174db
optimize codegen for while loops with empty body
2024-12-09 03:21:20 +01:00
b2e821755c
optimized palette module
...
removed palette.set_monochrome(), added start color index to several color set functions
removed mcf example
update gradle wrapper
2024-12-08 15:30:42 +01:00
2e303041c1
fix crash when using undefined variable in for loop
2024-12-06 21:50:22 +01:00
96bed8f57f
tweaks
2024-12-06 00:37:16 +01:00
86d4a4309f
cleanups
2024-12-05 21:56:00 +01:00
1a1ab0dac6
changed the data type system to composite types
2024-12-05 21:48:51 +01:00
ba8c3d14f7
diskio docs, remove super harmless warning message
2024-12-05 20:51:44 +01:00
617ea15c3a
fix failing optimization of 'not' in if statements
2024-12-04 19:03:24 +01:00
ef192a5778
easier notation for builtin function signatures by using varargs
2024-12-04 01:57:02 +01:00
565973c520
diskio read & write routines now always reset the io channels back to the defaults before returning
...
This means you don't have to call CLRCHN yourself anymore inbetween if you want to do screen output or keyboard input while a file is open
2024-12-03 23:46:07 +01:00
25b1043572
c64 diskio: Always call CLRCHN before CHKIN/CHKOUT calls
...
this seems to work around a Vice emulator issue when using host filesystem disk emulation.
Fixes #156
2024-12-03 19:15:44 +01:00
1ebfff7c7b
add -plaintext and -ignorefootguns options
2024-12-03 19:12:30 +01:00
8341f9c066
diskio.status(): remove unreliable device not present error detection
2024-12-02 23:33:33 +01:00
28cac291de
diskio.f_open_w() now also resets io channels back to defaults, like f_open() already did
2024-12-02 22:25:32 +01:00
8fa14a10e2
Optimize diskio.f_read for size=1, also improve ST check
2024-12-02 21:25:38 +01:00
55dbd095ed
fix IR codegen missing a CMPI after if not condition
...
fix IR codegen for containmentcheck
2024-12-02 03:06:06 +01:00
31ad8bdd8d
remove bankof(), documented msw() and lsw()
2024-12-01 21:24:26 +01:00
181f3e9eb1
remove the unary/prefix operators ^ and << again
2024-12-01 20:50:33 +01:00
50c3d809dc
fix type casting issues and unary ^ operator
...
signed numbers are no longer implicitly converted to unsigned
proper range check on bankof()
2024-12-01 17:43:53 +01:00
58f696d00a
document the @R0 - @R15 register support for normal subroutine parameters
2024-11-30 20:46:31 +01:00
f603c543d3
restructure documentation to get rid of redundant syntax chapter
2024-11-30 20:26:06 +01:00
6aaa0f928e
IR: fix invalid asm name matching that resulted in not removing subs with a name matching an IR asm instruction
2024-11-30 00:10:57 +01:00
feb8aa435e
monogfx, gfx_lores, gfx_hires now all uses 8kb stack from buffers module; no more broken flood fills. fill() has an extra byte parameter now where you need to pass in the ram bank to use for the stack. (not on virtual target)
2024-11-29 21:28:34 +01:00
310e8f15cd
update to latest zsmkit lib v2.2
2024-11-29 18:37:06 +01:00
da03941582
fix build
2024-11-29 01:01:59 +01:00
dcbb36a3bd
update gradle wrapper version
2024-11-29 00:54:21 +01:00
53558f5c1d
add zmskit example for zsmkit v2
2024-11-29 00:04:57 +01:00
189399d5f8
update to kotlin 2.1.0
2024-11-28 03:49:07 +01:00
5406a992f5
improved buffers library, added to docs
2024-11-28 03:30:32 +01:00
bc9683cc54
add compression.decode_rle_vram() to decompress RLE data directly to X16's VRAM.
...
Document the compression library.
2024-11-26 02:06:35 +01:00
2eed75f602
call convention for @Rx parameters, also use cpu registers if possible, like normal parameters
2024-11-25 22:22:24 +01:00
d58f9f56c4
tests for register args for normal subs
...
some warnings demoted into infos
2024-11-24 19:21:45 +01:00
2e35f3c3a3
code check cleanups
2024-11-24 16:14:22 +01:00
5c6bd9c091
register params support for normal subroutines
2024-11-24 15:56:54 +01:00
857d2eefca
added floats.interpolate(), math.interpolate(), and LERP example
2024-11-24 10:00:21 +01:00
90f1e7fd6a
ast printing fixes, added alias to syntax files
2024-11-24 07:28:33 +01:00
18e37accf9
improve detection of register re-use in parameters
2024-11-24 05:27:43 +01:00
cc53d698bf
added msw() and lsw() builtin functions (experimental)
2024-11-24 03:53:37 +01:00
cb86206698
added unary ^ and << operators (experimental) (gets bank and address of a long integer)
2024-11-24 03:07:18 +01:00
d77b1944fb
rename bnk()
to bankof()
2024-11-24 00:53:09 +01:00
a58cb43c4a
fixed weird error messages when attempting to create variable with type long
2024-11-23 21:35:57 +01:00
88574c87c4
convert vtui and zsmkit to new extsub address expression capability
2024-11-23 21:21:52 +01:00
3a7a7091c0
update some docs
2024-11-23 21:01:18 +01:00
906b137a7c
renamed 'string' module to 'strings' for consistency
2024-11-23 15:51:38 +01:00
42e2c5f605
fix some deprecated code in tests
...
silence redundant error about unused txt block
2024-11-23 15:48:18 +01:00
cc13a51493
fix import order problem related to %option merge
2024-11-23 12:15:15 +01:00
f569ce6141
setting a byte >=128 or word >=32768 now results in an out-of-range error, instead of an invalid casted value
2024-11-22 21:24:04 +01:00
4958463e75
moved floats.MIN/MAX to sys.MIN_FLOAT/MAX_FLOAT
...
added txt.print_f as alias to floats.print
2024-11-22 00:46:23 +01:00
2360625927
added min/max values for the various integer types as sys.MAX_XXX and sys.MIN_XXX
...
renamed sys.sizeof_xxx into sys.SIZEOF_XXX to be consistent with the uppercasing of the other constants
2024-11-21 23:25:02 +01:00
8badc40883
added several float limits contants such as floats.EPSILON, E, MIN, MAX
...
fix VM float min max limits
2024-11-21 23:25:02 +01:00
844c97930f
fix Antlr grammar build and convert final build.gradle to build.gradle.kts (kotlin DSL)
2024-11-20 23:23:26 +01:00
5c09dc10ae
convert build.gradle to build.gradle.kts (kotlin DSL)
2024-11-20 23:23:26 +01:00
9fd9e9ab5f
change block sort order so that blocks with address are now sorted last
2024-11-20 23:23:26 +01:00
35c477b5a6
Make extsub address a (constant) expression instead of a numeric literal
...
this makes it easier to define API jump tables
2024-11-20 23:23:26 +01:00
ae0cadb383
added bnk() builtin function
2024-11-20 23:23:21 +01:00
984230e8fa
removed txt.VERA_TEXTMATRIX_BANK/VERA_TEXTMATRIX_ADDR it's now just txt.VERA_TEXTMATRIX (long const)
2024-11-20 23:22:56 +01:00
a874aec6a1
implementing const long
2024-11-20 23:22:56 +01:00
ea1daa97d3
remove the 'addmissingrts' compiler option
2024-11-20 23:22:56 +01:00
fb0d9b46b0
remove 'romsub' as a recognised alternative for 'extsub'
2024-11-20 23:22:56 +01:00
9da70bdf05
simplify ReturnConvention a little
2024-11-20 23:22:56 +01:00
d640cfbe13
removed BuiltinFunctionCallStatement redundant ast node type
2024-11-20 23:22:56 +01:00
51a05ec4b7
removed BuiltinFunctionCall redundant ast node type
2024-11-20 23:22:56 +01:00
1f5706bbeb
version 10.5.1
2024-11-20 22:54:26 +01:00
25c9b2fea4
remove an archaic machine code monitor bank setting at program exit
...
what did it even do? in any case, $2d is just a user zero page location it should no longer be associated with the monitor nowadays.
2024-11-20 19:28:31 +01:00
154f9b300f
fix crash: byte c = if a < b -1 else 1 "both values should be the same type"
2024-11-19 23:46:25 +01:00
d78ce77536
improve vm error message when referencing a block name
2024-11-19 20:57:58 +01:00
b4fb43bc80
fix the if not check in ir codegen
2024-11-18 22:33:47 +01:00
e0e01f794e
fix dt compiler crash
2024-11-17 17:39:36 +01:00
08865dbb4e
todo
2024-11-16 02:10:57 +01:00
b9ad7e0e55
forgot to mention floats
2024-11-15 23:37:08 +01:00
07158a6f1a
improve manual about subroutine call convention
2024-11-15 22:59:47 +01:00
957c42bc1d
tweak
2024-11-15 02:52:21 +01:00
f784da2da6
fix asm optimization regression caused by wrong label prefix comparison
2024-11-14 21:24:46 +01:00
c080fbe59a
target machine config tweak and fix possible compiler crash on wrong type name
2024-11-13 21:04:46 +01:00
d70b8303b1
added sprites.reset() to remove sprites from the screen
2024-11-13 20:26:04 +01:00
1d38c3582a
progstart() added to complement progend()
2024-11-13 19:29:50 +01:00
9438e996d7
Fixed math.mul16_last_upper().
...
Added math.lerpw() a LERP routine for words (to complement the existing math.lerp() for bytes)
Described the LERP routines in the library chapter in the docs.
2024-11-12 18:31:24 +01:00
3b4a5e27f7
renamed gfx_hires4 module to just gfx_hires
...
to be consistent with gfx_lores
2024-11-12 17:48:35 +01:00
648d9fc269
todo
2024-11-12 00:57:10 +01:00
54fccec7d7
now also support using defer inside if statements
2024-11-12 00:11:19 +01:00
4f9693055e
fix compiler crash when extsub has both FAC1 and FAC2 float parameters
2024-11-11 20:48:25 +01:00
555c50ee10
scripts/cx16_images : added an option to keep only the first palette entry fixed to a given color (such as, black.)
2024-11-11 19:27:06 +01:00
bf98ceca2c
make repeat support 65536 iterations
2024-11-11 01:58:27 +01:00
573cecb087
make memtop adjust automatically when you use %address larger than the default memtop setting.
2024-11-10 23:44:10 +01:00
1b528491c2
make %memtop exclusive i.e. the first address NOT to use (like kernal MEMTOP)
2024-11-10 23:35:25 +01:00
4bdabe1961
move shared cbm diskio to its own file (c64/c128) so that pet/atari/neo targets give better error message when trying to import non existing diskio module there
...
sorted the command line options alphabetically
2024-11-10 16:38:49 +01:00
a3fa527378
move shared cbm diskio to its own file (c64/c128) so that pet/atari/neo targets give better error message when trying to import non existing diskio module there
2024-11-10 15:35:36 +01:00
84f5ffa426
fix generated labels prefix and filtering in the vice symbol dump file
2024-11-10 15:34:35 +01:00
25d2b42283
textelite now with sysinit, so it runs on the c128 as well (needs banking)
2024-11-09 16:03:16 +01:00
300d1a871c
c128 banks out basic, added banks() and getbanks()
2024-11-09 15:44:08 +01:00
2fcb83a39f
version 10.5
2024-11-09 14:04:04 +01:00
3ba1d00a7c
add unit test for @dirty variables
2024-11-09 13:31:54 +01:00
64164c1c72
changed @initonce to @dirty and meaning is now: not initialized at all.
2024-11-08 22:05:31 +01:00
3ee6058524
todo
2024-11-08 19:57:38 +01:00
93a0a41e73
Merge branch 'initonce-var-tag'
...
# Conflicts:
# examples/test.p8
2024-11-08 19:32:30 +01:00
e7ab7b6d7a
neo skeletons added in docs
2024-11-08 19:19:11 +01:00
7d4dc3c063
update
2024-11-08 19:04:51 +01:00
a50400b7d1
initial neo6502 target
2024-11-08 19:04:49 +01:00
f89f1a84d0
@initonce variable tag to skip variable reinitialization
2024-11-08 19:03:48 +01:00
688dce6145
floats: added AYINT2 as a safe wrapper for AYINT. Internal float to word cast now also uses that.
2024-11-08 18:52:48 +01:00
b88f550c5b
todo
2024-11-07 00:48:13 +01:00
9864abd393
romsub keyword is now extsub
2024-11-06 22:14:53 +01:00
c702c4a6df
internal rename of romsub to extsub
2024-11-06 21:42:16 +01:00
77e376f6bf
romsub @bank now also accepts a variable so the bank can be dynamic
2024-11-06 00:02:36 +01:00
491e5dbcfb
move the program startup and cleanup machinery to the front of the program to keep it in system ram
2024-11-05 22:12:25 +01:00
a5c7393561
tweaking program startup and cleanup stuff
2024-11-05 21:12:27 +01:00
7fd3e9bb7d
also provide a X16-style JSRFAR implementation for the C64. Enable callfar() and callfar2() on the C64 and C128.
2024-11-05 19:26:58 +01:00
459e9f8f3b
jsrfar stuff
2024-11-05 01:06:06 +01:00
5b1143bcb3
C64: add support for calling romsub with bank ('jsrfar')
2024-11-04 23:26:21 +01:00
fddd390d31
on the C64, if not using floats, disable basic ROM in startup to gain another 8Kb of RAM
...
MEMTOP is adjusted to $d000. This gives us 50 Kb of contiguous program RAM space. ($0801-$CFFF)
2024-11-04 22:11:44 +01:00
e514eeba17
added c64.banks() and c64.getbanks() and c64 banking example
2024-11-04 20:14:30 +01:00
c11a52b278
added cx16 banking example
2024-11-03 21:52:04 +01:00
85e87dfe2e
consolidate @rombank and @rambank into just @bank
2024-11-03 21:15:11 +01:00
cb47e2c149
documented the romsub bank additions
2024-11-03 20:39:44 +01:00
0fc9aa6b2d
cx16: romsubs of the audio routines now have the rom bank tag.
...
cx16: removed 'audio' module again, no longer needed to have these stubs
2024-11-03 18:35:10 +01:00
155896c4c7
added @rombank and @rambank bank number tags on romsubs
...
on cx16 and c128 targets the compiler then automatically inserts a CALLFAR instead of a regular JSR to automatically do the bank switching.
2024-11-03 18:19:31 +01:00
178e60bba0
fix ast source gen for romsub
2024-11-03 15:04:53 +01:00
9f84aa5fb2
fix double %option merge problem where it deleted all of the blocks
2024-11-03 13:36:14 +01:00
66fc109ce5
correct program name in help
2024-11-02 22:16:57 +01:00
a231872821
tip for using aliases for the virtual registers r0-r15
2024-11-02 22:09:20 +01:00
7cfb33a448
tweak & fix if expression with word condition
2024-11-02 22:01:57 +01:00
3b798097b9
added memtop to machine definition and asm source code check
...
added %memtop directive
2024-11-02 00:59:07 +01:00
6fb05bdefc
replaced deprecated cx16 ZSOUND example by new ZSMKIT examples
2024-11-01 23:17:23 +01:00
64ea72ed4d
tweak plot
2024-11-01 21:56:27 +01:00
89425088ce
taking address of a split word array is no longer a fatal error but a warning and the array is turned back into a normal word array.
2024-11-01 20:18:31 +01:00
925b9d845d
fix split array possible compiler loop (due to wrong datatype replacement)
2024-11-01 19:18:03 +01:00
ad074076c2
remove last references to gfx2 module
2024-11-01 18:41:36 +01:00
a2194c43a6
fix benchmark
2024-11-01 03:50:13 +01:00
4b23b1dc86
don't always import math automatically anymore
2024-11-01 03:39:52 +01:00
9005c7994a
added Linear Interpolation (LERP) functions: math.lerp(), floats.lerp(), floats.lerp_fast()
2024-11-01 02:05:48 +01:00
4a47e15b1c
fix IR if expression sometimes lacking a cmpi after calculation of the condition value
...
VM/IR: add a returni immediate value return instruction to replace certain returnr's
2024-11-01 01:04:16 +01:00
09cbdf410a
added diskio.exists(), made f_close_w() idempotent like f_close() already was
2024-10-31 21:25:22 +01:00
df6a43c7f0
gfx_lores now has drawmode_eor() (used by Paint, for example)
2024-10-31 01:28:29 +01:00
4ce130dc8b
split up cx16.gfx2 module into gfx_lores and gfx_hires4 modules
2024-10-30 22:21:07 +01:00
94d76aa82c
cx16.vaddr(), vaddr_clone(), vaddr_autoincr(), vaddr_autodecr() now all reset vera's ADDRSEL back to 0 even if the configured port was 1
2024-10-30 21:40:58 +01:00
73609636c5
gfx_lores.set_screen_mode() is now gfx_lores.graphics_mode()
...
adding all missing routines from gfx2 to gfx_lores
2024-10-30 21:39:37 +01:00
66b06d6c40
added gfx2.safe_vertical_line, gfx2.safe_rect, gfx2.safe_fillrect for completeness
2024-10-30 19:03:40 +01:00
eeeb8d81f4
merge now also allows monkeypatching if signature is 100% identical
2024-10-30 01:15:56 +01:00
6f727aff88
fix beanshell compile with jdk11
2024-10-29 23:42:37 +01:00
518e5a30c2
slight parser rule tweak
2024-10-29 23:18:17 +01:00
bbba4b3d60
new block merge semantics and implementation
2024-10-29 22:57:54 +01:00
967adb9a87
Merge branch 'beanshell'
2024-10-29 20:55:09 +01:00
040a6c62de
added a beanshell interpreter experiment
2024-10-29 20:52:41 +01:00
483d193ced
vm: implemented reading/writing files in diskio
2024-10-29 02:34:53 +01:00
62458216c9
first skeleton of LSP language server
2024-10-28 21:42:20 +01:00
76b05cb5fd
fix chained aliasing
2024-10-28 18:35:23 +01:00
570b574b93
added sys.memcmp
2024-10-28 00:41:26 +01:00
a82f211f9a
added alias statement
2024-10-28 00:36:10 +01:00
504c80cddf
fix parser rule for identifiers (void is a keyword, not an identifier)
2024-10-27 15:57:27 +01:00
4b4af9b527
no longer silently add RTS to asmsubs that don't have one
2024-10-27 13:49:00 +01:00
28b383f888
docs and syntax for @alignxxx and %align
2024-10-27 00:47:52 +02:00
40ce7725a1
cleanup c64 sprite examples
2024-10-26 21:36:11 +02:00
1f2d46628e
remove %option align_xxx (block level alignment, as we now have better alternatives)
2024-10-26 21:18:34 +02:00
c9535049c8
%align directive and @align64
2024-10-26 20:58:35 +02:00
9317cf8a35
sorting aligned vars to shrink prg size
2024-10-26 18:33:51 +02:00
1cd754f05d
adding @alignword/page on individual variables
2024-10-26 17:00:38 +02:00
97b8cb748d
more ifexpression codegen tweaks
2024-10-25 22:52:26 +02:00
84d9040b57
make BIT test also work on signed byte variables. Fixed an address-of optimization error.
2024-10-23 22:34:18 +02:00
fdd18c615c
more ifexpresssion codegen tweaks
2024-10-23 21:04:55 +02:00
c14f6cfc2b
more optimal if expression code
2024-10-22 23:49:24 +02:00
326eab3dd1
unit test for defer, describe defer and if expression in docs
2024-10-22 22:19:49 +02:00
6da1f7eb4c
don't remove essential subroutines even though they seem unused
2024-10-22 21:17:02 +02:00
1e82483152
ast printer correctly prints ifexpression
2024-10-22 21:14:55 +02:00
6e2fd41a8b
ast printer correctly prints unroll and continue
2024-10-22 21:14:26 +02:00
9927af1095
about var inits
2024-10-22 01:08:42 +02:00
7585b6ef6f
fix issues with calling the defer handler
2024-10-21 19:49:38 +02:00
a6159702da
defers are now only registered/called when flow of control actually reached the defer statement
...
a defer statement sets its corresponding bit in a bitmask that is shifted in the defer handler routine to see what defer blocks to call.
2024-10-21 00:55:51 +02:00
0247fb0d84
some ast2 var tweaks
2024-10-21 00:20:54 +02:00
6de760885f
fix defer push/pop typecasting issues
2024-10-19 21:45:49 +02:00
9851d14fb9
added if expression: ubyte a = if b>0 44 else 55
...
it doesn't generate the best code yet, like regular ifs do.
2024-10-19 15:34:04 +02:00
d5fc69d3e4
fix instruction index error in optimizer
2024-10-19 14:45:53 +02:00
a40d120f2a
more defer sanity checks
2024-10-18 22:32:49 +02:00
fcdd9414d9
fix defer interfering with return value, fix prefix expression error when operand is functioncall that doesn't return a value.
2024-10-18 21:43:09 +02:00
272a1001a8
fix bad optimization of floats.pop/push call
2024-10-18 21:04:18 +02:00
2a52241f1c
defer is now done *after* calculating a return value
2024-10-18 20:56:27 +02:00
d8f1822c12
fixes
2024-10-18 20:32:46 +02:00
ce7d094adb
Zig-like "defer" to clean up stuff when leaving the scope of the current routine.
2024-10-18 01:30:20 +02:00
a0cf1889a3
omit more redundant 0-initializations ("stz's")
2024-10-17 22:51:39 +02:00
38ef394e15
IR codegen: global vars with numeric initialization value are now also put into the VARIABLESWITHINIT section rather than requiring explicit code instructions to initialize them in INITGLOBALS.
...
Note that something similar, such as putting those variables inline in the program initialized with their value and all, cannot be done for the 6502 codegen: the program needs a mechanism to reset ALL variables when it runs a second time.
2024-10-16 22:15:51 +02:00
abbf7c7cb0
compiler name change: prog8c (was p8compile)
...
fat jar file also changed: prog8c-X.Y-all.jar (was: prog8compiler-X.Y-all.jar)
2024-10-16 18:36:19 +02:00
ca5f7ae32f
global (block-level) variables that get initialized with an array index expression now get a constant value as well if possible. This reduces the number of instructions in the init globals code block
2024-10-16 02:14:19 +02:00
cbc4b75e50
IR now contains "bool" as a type instead of already erasing it into "ubyte". (boolean literals still are simply just 1 and 0 values)
2024-10-16 01:03:35 +02:00
65ddcf91d0
remove unused syscalls
2024-10-15 18:24:55 +02:00
5280e1b449
err msgs
2024-10-13 21:33:13 +02:00
b6ffb81909
Merge branch 'next-version'
2024-10-13 21:20:10 +02:00
e9edffa9f0
remove support for array-to-array assignments (other than initialization of variable declaration)
...
Just use an explicit sys.memcopy(src, dest, sizeof(dest)) or assign array members individually.
2024-10-13 20:02:43 +02:00
0dd1c17ff4
avoid possible crash
2024-10-13 17:51:14 +02:00
aef211e5f3
stricter array literal element type handling (number,bool,address-of).
...
More consistent implicit address-of handling if array literals contain by-ref identifiers (such as subroutine names)
2024-10-13 17:46:41 +02:00
66829203d8
New [x]*42 syntax to create array literals with repeated values (like "abc"*10 already exists for strings)
...
Should be used in place of array initializer expressions that contain only a single numeric value to initialize the whole array with. That isn't supported anymore.
2024-10-13 05:16:08 +02:00
7a0eaf3148
Remove array initialization by single value.
...
New compiler and kotlin version.
2024-10-13 04:31:56 +02:00
fa5479ee5f
fix ast printing of arrays with duplicate elements
2024-10-13 04:30:46 +02:00
03412cacba
added examples/cx16/balloonflight.p8
2024-10-13 00:51:07 +02:00
01a38a0b11
Merge branch 'monogfx_fill_optimization'
2024-10-12 17:29:38 +02:00
f43c14bd78
doc
2024-10-12 17:29:28 +02:00
fb23452383
optimize monogfx.fill()
2024-10-12 17:18:00 +02:00
ab7dde1450
todo
2024-10-12 13:04:19 +02:00
8d9bc2f5ff
fixing all sorts of things about assigning arrays to arrays
2024-10-12 12:33:46 +02:00
7651ccc84e
fix a type error
2024-10-11 00:50:05 +02:00
1a6b95b388
house cleaning
2024-10-10 20:46:18 +02:00
78ec1e7512
version
2024-10-09 22:21:04 +02:00
7e38d26c33
added several color fade functions to the palette module (cx16)
2024-10-09 21:48:04 +02:00
ed09dd4e9e
improve automatic type conversions for return values, fixes #155
2024-10-09 20:04:05 +02:00
5731b79554
don't allow problematic string and array assignments anymore, improve error messages.
...
In certain cases you will need to use string.copy() explicitly to overwrite strings with new strings.
2024-10-09 00:51:05 +02:00
eaa22a9d13
added callfar2() builtin function that allows to set A,X,Y and Carry arguments.
2024-10-08 21:36:04 +02:00
b2bdfe8482
fix ir rndseed()
2024-10-08 20:40:00 +02:00
fea531be9a
add sys.sizeof_bool, _ubyte, _uword constants
2024-10-07 20:45:13 +02:00
7c69d38588
scan all asmsubs to see if another subroutine is referenced. Fixes #153
2024-10-07 20:39:49 +02:00
a088ee56b0
function inlining can no longer get into an infinite loop. Fixes #154
2024-10-07 19:58:04 +02:00
ae669af904
add sys.sizeof_byte, _word, _float constants
...
because Antlr doesn't allow the grammar to contain a sizeof(typename) rule to override the sizeof(identifier) rule
2024-10-07 19:17:37 +02:00
d1ddf05e38
check that block address leaves room for program startup logic
2024-10-03 22:30:06 +02:00
51279a98b3
attempt to fix forloop range datatype issues
2024-10-03 21:12:31 +02:00
bf33a4f82d
small refactor to prepare for better range dt adjustment
2024-10-02 23:28:33 +02:00
fff0d741c3
improved parsing of "not in" operator, and [] array signature (allow space)
2024-10-02 19:06:20 +02:00
e83d0ee820
fix crash in msb() when assigning to word again. Fix wrong register in lsb() and msb() in certain situations.
2024-10-02 02:40:16 +02:00
09f3eecf56
changed cx16/rotating-stars example to starszoom instead.
2024-10-02 01:36:54 +02:00
2bd4326ff6
added cx16/rotating-stars example
2024-10-01 23:43:50 +02:00
c13168b60c
various improvements:
...
fix verafx.available().
added gfx_lores.plot().
faster gfx_lores.clear_screen().
added a new Sublime Text 4 syntax highlighting file.
2024-10-01 22:18:03 +02:00
ea3871d0c4
comment about builtin function call ast node type
2024-10-01 02:14:31 +02:00
70a2b11271
New example program: draw a fractal tree ( #152 )
...
* demo of prog8 recursion to draw a fractal tree
* feat: comments
* fix: comment formatting
* feat: make minimum branch size a tunable parameter
2024-10-01 02:00:04 +02:00
3cf39e072e
fix C64 floating point sign issue
2024-09-30 21:56:34 +02:00
413b86cc4a
more helpful error messages
2024-09-30 00:27:29 +02:00
a6107fcfdf
taking the address of a romsub is now the constant value of said romsub's declared address
2024-09-29 23:53:39 +02:00
a064ade1e0
better codegen for call() function
2024-09-29 23:18:51 +02:00
df35aa7942
added (experimental) compression library
2024-09-29 18:59:53 +02:00
cd49c5f88d
cx16: set rom bank to 0 at startup (for faster kernal API calls)
...
cx16: callfar() with constant address generates shorter asm
2024-09-28 20:58:29 +02:00
1541ad2160
fix variable init order mistake in program startup
...
reset multiply bit at end of verafx.muls
2024-09-28 19:17:45 +02:00
c78b7b1a24
added verafx.mult16()
2024-09-28 01:00:28 +02:00
9c7a645e18
remove non-functional verafx.mult(). note: muls() is still there and just fine!
...
added documentation/source code comments to the cpu word*word multiplication routine not producing the correct upper 16 bits.
2024-09-28 00:43:05 +02:00
4acf38031a
feedback
2024-09-27 20:59:31 +02:00
4cd7271e30
added prog8 vs other languages chapter to the manual
2024-09-27 20:19:28 +02:00
3f630ab1b0
RAW output now also properly initializes variables
2024-09-27 18:46:03 +02:00
04cb684fd4
tweak program start initialization and fix cleanup at exit for atari and pet compiler targets
2024-09-27 02:14:54 +02:00
4c843571ea
fix syntax error check for missing return statement
2024-09-26 01:52:33 +02:00
1326498802
update skeleton scripts
2024-09-26 00:12:29 +02:00
b7ebd8c4a6
update cx16/audioroutines example to use the new audio module
2024-09-26 00:08:25 +02:00
24e0a69480
feat: module with front-ends that jsrfar into audio ROM routines ( #151 )
2024-09-26 00:00:42 +02:00
4bcb2bdede
added benchmark program
2024-09-25 23:32:45 +02:00
d27f3eb8a4
remove wrong print_f mention
2024-09-24 23:58:39 +02:00
d3e4481112
fix asm optimizer bug where it erroneously discarded rts
with a label
2024-09-22 21:41:41 +02:00
1d1d6b3d98
tweak c64 balloonflight example etc.
2024-09-22 13:20:12 +02:00
90b8a22a71
correct amount
2024-09-20 22:35:17 +02:00
8dbfb8ab76
move community note to start page
2024-09-20 20:12:33 +02:00
e29ff1c848
fix name redefinition check for multi-declarations
2024-09-20 19:55:32 +02:00
585f6ffc9b
version 10.4.1
2024-09-20 18:43:08 +02:00
46b94c17d6
comment
2024-09-20 17:33:00 +02:00
7af8007447
Merge remote-tracking branch 'origin/master'
2024-09-20 17:28:55 +02:00
16a2b2f566
Add 24-bit integer-to-float routine and floating-point jiffy clock reader ( #150 )
...
* feat: add routine to convert 24-bit integer from A/X/Y to float in FAC1
* fix: remove duplicate definition
* fix: shift to appropriate exponent
2024-09-20 17:28:37 +02:00
ea2a90c3c5
nah
2024-09-19 23:09:59 +02:00
5cda750e5e
improve error message for undefined symbol in when choices
2024-09-18 23:00:03 +02:00
4e143d45c8
fix warning
2024-09-18 22:04:25 +02:00
4c50980d81
new skeletons dump
2024-09-18 18:45:43 +02:00
2954f5f04d
Add clear_screen and set_screen_mode to gfx_lores. Fix boolean draw vs color param in some monogfx routines. Elaborate some docs.
2024-09-17 22:19:47 +02:00
cac4c1eb1e
improve callgraph unused subroutine check for routines called from inline asm
2024-09-16 21:49:30 +02:00
0b1f30d98c
no more span overdraws in graphics disc routines
2024-09-15 15:38:33 +02:00
c7b1e8d772
fixed a variable scopedname issue where it took the fully scoped name instead of just the local name
...
this made 64tass not strip out that code if it was unused
2024-09-14 23:17:26 +02:00
a4f7512d44
oops, was fixed
2024-09-14 22:33:20 +02:00
0d3ad80659
retain type of consts better to avoid precision loss
...
this also fixed a difference in const calculation where the result could differ if you were using optimzations or not.
2024-09-14 21:06:21 +02:00
aba1a73e28
actually use any @zp etc tags on subroutine parameters
2024-09-14 17:42:13 +02:00
dca31b2ca3
added gfx_lores module for cx16 for optimized graphics routines for lores 256c screen mode
...
currently contains a new line() routine
2024-09-14 15:30:39 +02:00
0cb378ca31
added emudbg.cpu_cycles() and emudbg.reset_cpu_cycles()
2024-09-13 23:03:14 +02:00
cf551d2cc7
tweak containment check even more
2024-09-13 00:02:26 +02:00
ac0c8a68f6
IR: Improve codegen for for loops downto 0/1
2024-09-12 23:00:32 +02:00
5986dcdd2f
add new containment check codegen for IR
2024-09-12 22:04:20 +02:00
6be6eb2227
tweak diskio to not always include unused subroutine internal_f_tell() in resulting program
2024-09-11 19:51:53 +02:00
d34015eec5
fix gfx2.fill() vera CTRL corruption
2024-09-11 19:10:45 +02:00
255c5bfaca
improve containment check for few values
2024-09-11 03:24:30 +02:00
01c6754928
get rid of problematic common-subexpression optimization
2024-09-11 01:10:42 +02:00
8eaf884f69
improve codegen for for loops downto 0,1 when start value is not const
2024-09-10 23:54:44 +02:00
699a2bb7ab
improved codegen for for loops downto 0
2024-09-10 21:33:57 +02:00
4a2dcd20d1
fix the "x<2" optimization made a few commits ago to only work on unsigned
2024-09-09 23:06:36 +02:00
4e98fb75d6
support assigning multiple return flags from asmsub in 6502 codegen
2024-09-09 22:56:40 +02:00
64e66e732f
cx16/circles example now uses gfx2
2024-09-08 22:52:46 +02:00
7aec627f6b
add optimization if x==0 or x==1 -> if x<2
2024-09-08 22:39:48 +02:00
59a2fec176
fix IR containment check
2024-09-08 21:49:13 +02:00
edc5a5a94f
improve data driven unit tests to use kotest withData()
2024-09-08 16:55:08 +02:00
c5b7edad82
added memsizer unit tests
2024-09-08 15:24:47 +02:00
124ffac4e4
readme
2024-09-08 11:50:18 +02:00
6d2a36fb2b
testcase improvement
2024-09-06 22:51:26 +02:00
28b43b3e1d
added cx16.EXTAPI_kbd_leds definition (new in kernal R48)
2024-09-06 20:47:49 +02:00
f7feaf158d
added cx16.mouse_present() routine to check for presence of mouse
2024-09-06 18:21:13 +02:00
2396f707c6
fix bug in codegen for certain array lookups using word typed index value (i.e. via a pointer variable)
2024-09-06 18:11:41 +02:00
d4d8e1b1ba
comment about implementation in life example
2024-09-06 16:39:44 +02:00
44fec2c729
some additional last minute optimization to life example
2024-09-06 15:56:41 +02:00
a80a6913e3
some additional last minute tweaks to life example
2024-09-06 15:42:49 +02:00
0eac04c220
added cx16/life.p8 example (Conway's game of life)
2024-09-06 15:21:29 +02:00
29dd758302
Fix compiler crash in for loops with just 1 iteration
2024-09-05 21:26:46 +02:00
5c45adc7f0
graphics module on x16 now uses kernal (R48 or newer) support for drawing circles and ovals
2024-09-05 20:27:12 +02:00
ad22cf08cd
todo
2024-09-03 17:46:32 +02:00
2c2ae64194
replace java Stack by kotlin ArrayDeque
2024-09-02 00:15:28 +02:00
97c2dadd16
doc update
2024-09-01 20:55:43 +02:00
b36e1e3baf
change sprite.hide() : now disables sprite instead of moving it offscreen.
...
added sprite.show() to re-enable it (with z-order 3, as all sprites have by default in this module)
added sprite.zdepth() to set a custom z-depth.
2024-09-01 20:55:43 +02:00
2da35fec17
remove requirement to end subroutine with an EOL, so oneliners are now possible
...
main { sub start() { cx16.r0++ cx16.r1++ } }
2024-09-01 20:55:43 +02:00
bdeac74cfc
removed the -nostrictbool compiler option
...
boolean types and bytes are no longer implicitly interchangeable using this option
2024-09-01 20:53:39 +02:00
6516d7cb15
regenerate skeletons and set version 10.4
2024-08-25 16:56:33 +02:00
31cf76042d
scope
2024-08-25 15:28:45 +02:00
c4c4dcf2b3
optimizing gfx2.fill() 4 color mode
2024-08-25 15:05:24 +02:00
03145630f8
optimizing gfx2.fill()
2024-08-25 14:26:49 +02:00
e2fcac322f
optimizing gfx2.fill()
2024-08-25 13:51:01 +02:00
beaff4d650
moved non X16 specific variables and vector definitions from cx16 to cbm namespace.
...
This makes the naming consistent with the other cbm-like targets (c64, pet, c128). Only the x16 specific ones remain in the cx16 namespace, such as cx16.KEYHDL
Probably the most impactful is the move of cx16.CINV to cbm.CINV
2024-08-24 20:06:50 +02:00
79af96ddde
new kotlin version
2024-08-24 16:34:26 +02:00
e439720c9d
optimized string compares
2024-08-24 14:53:18 +02:00
48d0185ea4
increase flood fill stack size a bit
2024-08-23 20:55:30 +02:00
e2592b4e0b
fix possible gfx2 color problem in 2bpp mode
2024-08-23 19:48:23 +02:00
2967866e3d
avoid self-modifying code to be compatible with IRQ handlers
2024-08-23 17:46:23 +02:00
b566ea5c3f
added string.rfind()
2024-08-22 23:22:31 +02:00
8f6eaeac2c
half width katakana conversion
2024-08-21 18:51:34 +02:00
b4facaeb3c
add "kata" string encoding (Katakana)
2024-08-20 21:40:43 +02:00
d12b7ccc6b
fix syslib importing for raw outputs. fixes #144
2024-08-19 13:33:02 +02:00
453e8bd0a0
update kotlin and antlr libs
2024-08-19 12:47:18 +02:00
9204d390ae
correct fetch() signature. fixes #148
2024-08-18 20:04:23 +02:00
b70ce0015c
fix missing opportunities to use TSB instruction
2024-07-24 22:51:49 +02:00
d113827753
todo
2024-07-24 19:50:30 +02:00
c67f877857
Codegen: use BIT instruction for memory location bit 7 and 6 tests (use N and V flags)
2024-07-24 19:26:54 +02:00
0ec719e429
cx16: added a polling pcm streaming example
2024-07-23 21:37:11 +02:00
17f7b11148
tweaks cx16 sample streaming example, also added a new one
2024-07-23 02:10:05 +02:00
966b017670
tweaks
2024-07-22 18:20:01 +02:00
4c98070b3c
optimize shifts by 1 by inlining it better
2024-07-21 22:08:41 +02:00
3681d6ee1c
optimize division by powers of 2 better (into bit shifts)
2024-07-21 21:34:38 +02:00
0af17cdc33
todo's for division optimizations
2024-07-21 20:32:03 +02:00
2aae1f5e30
stricter checks for negative array indexing
2024-07-20 22:37:03 +02:00
d18f2a7bfd
improved codegen for some pointer+index expressions
2024-07-18 23:41:34 +02:00
9046fe8d3a
ringbuffer and pointer optimization todo
2024-07-16 22:59:31 +02:00
78c7ee247a
generate 65c02 TSB/TRB instructions in certain cases
2024-07-16 00:36:00 +02:00
d5adb85e5b
IR: add SEC,CLC,SEI,CLI instructions for the sys function calls.
2024-07-14 21:01:19 +02:00
69f953fd9b
diskio.f_readline() now also returns I/O status as secondary return value in A
2024-07-06 22:25:01 +02:00
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
b10a8e728f
update vim syntax too
2024-07-06 17:13:42 +02:00
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
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
3f6521cc9b
todo
2024-07-03 20:33:59 +02:00
a074491d5b
fix doc build
2024-07-03 00:08:49 +02:00
a291164953
fix leaving Vera CTRL at 1 instead of 0, could lead to kernal text output errors etc
...
Fixes #143
2024-07-02 23:36:36 +02:00
43c55b58d2
fix register overwriting for certain subroutine call parameter combinations. Fixes #136
2024-07-02 23:26:34 +02:00
e7298f8162
fix invalid code gen for if v1==0 or v2==0
2024-07-01 23:38:25 +02:00
ddf990296b
fix subroutine inlining symbol scope error
2024-06-29 18:53:54 +02:00
ead8aa7800
asm optimization: bxx+jmp -> opposite bxx
2024-06-29 17:22:57 +02:00
7a9dd1ac9b
optimize trivial 65c02 stack instructions
2024-06-29 15:42:40 +02:00
1c97c22eff
optimize simple word and byte addition/subtraction better
2024-06-29 14:33:42 +02:00
bbf621a8c4
doc
2024-06-29 13:39:08 +02:00
8efa89165c
sprites.get_data_ptr() signature changed: now properly returns the 2 values
2024-06-27 22:22:26 +02:00
4f8aaf9244
some tweaks and todos
2024-06-26 21:22:40 +02:00
a97edef380
update gradle wrapper to gradle 8.8
2024-06-25 22:43:04 +02:00
eefae24aa3
update gradle wrapper to gradle 8.8
2024-06-25 22:42:16 +02:00
54bffc91ae
properly generate PUSH and POP instructions for push() and pop() calls in IR.
...
Also switch to a fork of shadowJar to avoid Gradle deprecation errors.
2024-06-25 22:39:20 +02:00
63f5ef9e14
fix typo for bool array storage size
2024-06-20 22:55:47 +02:00
034f27a8dd
added queens example, update kotest lib
2024-06-19 23:57:43 +02:00
c2f6311367
todo
2024-06-17 22:41:52 +02:00
6f00a48772
fix: atan2(anything, 0) should return ±π/2 ( #141 )
...
* fix: atan2(anything, 0) should return pi/2
* fix: if y<0, x=0 maps to 3π/2, not π/2
* fix: standard seems to be atan2(0,0) == 0
2024-06-07 23:19:45 +02:00
b3dba67405
added cx16.rom_version() routine
2024-06-07 23:15:26 +02:00
c9a4235669
update to kotlin 2.0, fix several code style issues
2024-06-04 01:00:46 +02:00
ae0d52274c
Merge branch 'refs/heads/fixwindowseolstests'
2024-06-04 00:13:55 +02:00
8973763866
Fix line endings conversion errors on windows builds
2024-06-04 00:12:12 +02:00
3d799ae7fe
todo
2024-06-01 15:03:01 +02:00
8b10115390
release 10.3.1
2024-05-31 23:51:35 +02:00
d2e010c439
added cx16.scnsiz (extapi call), describe profiler.py script
2024-05-31 21:48:29 +02:00
15867ab423
update cx16.mouse_get() and mouse_pos() to also return scroll wheel in X
2024-05-29 23:19:53 +02:00
22c9e99fa3
explain integer math sin/cos routines even better
2024-05-29 23:12:00 +02:00
ee262f6aad
explain integer math sin/cos routines even better
2024-05-29 20:26:42 +02:00
af64af2397
explain integer math sin/cos routines better
2024-05-29 19:48:27 +02:00
1feead2260
tweaks
2024-05-29 02:30:06 +02:00
d3dcd24b4d
add profiler script
2024-05-29 00:56:31 +02:00
fd1e6796ef
correct branch instruction, fixes #137
2024-05-24 20:54:40 +02:00
3ea0f0cbaa
remove 16 bit f_tell variant.
2024-05-22 21:47:02 +02:00
f3e3311598
added diskio.f_tell() and f_tell32() on the cx16 target
2024-05-21 23:14:25 +02:00
0dc50a93a4
added @nozp variable flag
2024-05-21 21:53:58 +02:00
fda8e61be4
give better error when using @split wrong
2024-05-20 21:51:07 +02:00
ac1d4b4a7a
mouse_pos() now returns the coordinates as unsigned words
2024-05-20 21:38:02 +02:00
c719e274d5
java version tweaks
2024-05-18 20:25:44 +02:00
e4990f8ec5
Revert "update to Java 17 LTS"
...
This reverts commit 3ef5bdfeda
.
2024-05-18 18:59:32 +02:00
62afd3342e
void syntax check, fixes #135
2024-05-18 17:15:31 +02:00
6e8a89e6f1
optimize const word repeat setup
2024-05-18 16:30:27 +02:00
aa2437cfb8
fix invalid repeat loop when iterations is already in register Y
2024-05-18 15:09:56 +02:00
4a710ecdfc
cleanups
2024-05-17 18:48:04 +02:00
3ef5bdfeda
update to Java 17 LTS
2024-05-17 18:27:21 +02:00
7915dda35f
update libraries
2024-05-12 03:02:54 +02:00
9120e16683
todo
2024-05-02 21:02:50 +02:00
a1ebc7090d
fix sieve example
2024-04-18 22:22:29 +02:00
054b4636e0
version 10.3
2024-04-18 21:50:48 +02:00
e3e7b060b7
vumeter tweaks
2024-04-18 01:31:59 +02:00
5ac9c75521
docs of new floats routines and added them to VM target too
2024-04-17 20:03:36 +02:00
07710e0995
Feature/reciprocal tangent functions ( #133 )
...
* feat: additional trig functions
* fix: 64tass won't assemble a proc named 'sec'
* fix: indentation
2024-04-17 19:54:47 +02:00
d6a67f5f2b
vumeter colors
2024-04-17 00:22:19 +02:00
2675623aea
fix optimization ast parent linkage problem
2024-04-16 23:27:22 +02:00
94263c43d0
added cx16/vumeter example
2024-04-16 22:48:36 +02:00
d8ec03874f
move the pi-related constants from system specific floats module into the shared one. Clarify some stuff.
2024-04-15 19:15:44 +02:00
a7247f5b8b
fix boolean expression optimization bug
2024-04-12 21:56:25 +02:00
4d37581694
fix the symbol lookup error lsb(a) when a is in a multi vardecl.
2024-04-11 00:51:08 +02:00
5d7ddebcad
fix bool to uword cast in 6502 codegen
2024-04-11 00:34:53 +02:00
53df0eb707
cleanups
2024-04-10 22:04:03 +02:00
8babad9c7c
sphinx config
2024-04-10 20:04:09 +02:00
8db7aa07bd
added (autogenerated) symbol skeleton files to the docs
2024-04-10 19:58:15 +02:00
42f4b06ac8
added options -bytes2float and -float2bytes to be able to do float conversions from the command line
2024-04-09 23:59:54 +02:00
f4b50368ba
fix grammar: if_xx with else part
2024-04-09 22:35:30 +02:00
db80417bd7
fix a problem with const fold optimization in if expressions, and IR compilation of that
2024-04-09 22:09:29 +02:00
7a6f2ecc8c
add symboldumps to doc makefile
2024-04-09 19:53:36 +02:00
f5d556a7f9
added missing options to doc
2024-04-09 19:30:04 +02:00
2aae46d632
added -dumpsymbols option to print a dump of all the variables and subroutine signatures
2024-04-09 19:19:13 +02:00
19ebc6d6b3
better error message for ambiguous multi-var initialization in vardecl
2024-04-08 22:36:00 +02:00
f88c29e083
convert github doc links into permalinks
2024-04-08 22:12:28 +02:00
6ed9899dc7
smarter desugaring of ubyte x,y
2024-04-07 23:36:46 +02:00
9de7698a5c
verafx.mult() and muls() now return both words of the 32 bits result.
2024-04-07 22:41:21 +02:00
112d2d6058
cx16 sprites module: the palette_offset parameter now takes values 0-15 (instead of 0-255) to be more consistent with docs and vera behavior
2024-04-07 21:49:03 +02:00
ddb8346711
added txt.cls() as a shorter alternative to clear_screen().
...
cx16: added new character encodings, and routines in textio to enable the character sets for them.
cx16: added txt.chrout_lit() and txt.print_lit() to always print the literal characters and never as control codes
2024-04-07 19:32:44 +02:00
8dd3faf395
clarification
2024-04-06 14:31:39 +02:00
35f3e8708b
doc and tweak subexpression extraction a tiny bit
2024-04-06 14:01:06 +02:00
cfe3fcc9e7
fix symbol table issue
2024-04-06 12:53:33 +02:00
66a6659a6e
cbm.STOP2() and cbm.GETIN2() convenience routines
2024-04-06 02:16:21 +02:00
88ae3daa42
Merge branch 'refs/heads/master' into multi-assign
...
# Conflicts:
# examples/test.p8
2024-04-06 00:14:41 +02:00
08b8fe01ab
added missing cmp #0 after func()==0
...
cx16: diskio.fastmode() now returns success boolean
2024-04-06 00:04:54 +02:00
731132d4b3
check number of result values in return statements
2024-04-05 02:13:31 +02:00
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
5f11f485a2
fix compiler error
2024-04-04 02:00:55 +02:00
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
a3ef8f814b
Merge branch 'master' into multi-assign
...
# Conflicts:
# examples/test.p8
2024-04-03 01:13:27 +02:00
385dd6fc23
todos
2024-04-03 01:12:45 +02:00
9af4168ae2
cx16: added diskio.fastmode() to select the fast serial disk mode for the SD card
2024-04-02 22:17:51 +02:00
a5e0e31b74
clarify order of multi-assign
2024-04-02 01:47:46 +02:00
b385dc8c26
add cx16 extapi ROM call, call numbers and shims. (new in Rom R47)
2024-04-02 01:45:10 +02:00
92c012b55a
fix IR peephole optimization
2024-04-02 00:28:28 +02:00
641f6c05d8
allow 'void' as dummy assign target in multi-assignment statements
2024-03-31 23:43:26 +02:00
788f6b44a6
antlr grammar now understands underscores in identifier names
2024-03-31 00:31:10 +01:00
63a4525f06
remove hacks from floats.parse now that kernal R47 is out
2024-03-30 22:29:13 +01:00
3e34a3ef72
allow multi-assign to skip any status register result
2024-03-29 23:10:08 +01:00
0c5e8ca199
Merge branch 'master' into multi-assign
2024-03-29 11:51:42 +01:00
ff23fb0086
take ignore_unused option into account for warnings about removing unused blocks themselves as well
2024-03-29 00:16:18 +01:00
56f41d5e34
docs about multi-assign
2024-03-28 23:24:14 +01:00
4700a239b9
Merge branch 'master' into multi-assign
...
# Conflicts:
# docs/source/todo.rst
# examples/test.p8
2024-03-28 01:06:43 +01:00
bd5abfb969
add IR peephole optimization to remove redundant store
2024-03-28 01:06:05 +01:00
b93fa75377
consolidate cbm textio routines
2024-03-28 00:39:58 +01:00
681ce9c60c
fix void warning
2024-03-27 23:05:41 +01:00
dd0f0fe415
conv.str_ub and partners are now much shorter routines than before
2024-03-27 22:34:44 +01:00
119040fc50
also add diskio.status_code() in other comp targets
2024-03-27 20:05:39 +01:00
551e5688da
Add diskio.status_code() function ( #130 )
2024-03-27 19:42:47 +01:00
56c1035581
Merge branch 'master' into multi-assign
...
# Conflicts:
# docs/source/todo.rst
# examples/test.p8
2024-03-26 22:09:16 +01:00
ba1e907c79
fix divmod; out args are written to and should be potential constants
2024-03-26 22:04:44 +01:00
2a3a27c56d
bmx library: set bpp header field correctly on save
2024-03-26 22:01:10 +01:00
647af34f5b
fix: tweak divmod() doc ( #131 )
...
* fix: adjust naming on divmod parameters to match standard mathematical terminology; clarify description
* fix: wording
* fix: wording
2024-03-26 22:00:55 +01:00
993be6394e
unit tests multi-assigns
2024-03-25 23:20:03 +01:00
9a27505315
6502 codegen for multi-assigns
2024-03-25 22:17:31 +01:00
2e37f5dee3
IR: support for multi-returnvalue function calls (asmsubs)
...
note: the VM can't execute these though as it has no CPU hardware registers
2024-03-23 00:30:17 +01:00
03e486c082
multi assign
2024-03-22 21:51:25 +01:00
edc83305a4
allow multiple targets in AssignTarget
2024-03-22 21:51:08 +01:00
66e7c51064
IR: fix some things related to asmsubs
2024-03-22 21:49:01 +01:00
60244aaf16
64tass version...
2024-03-21 21:40:18 +01:00
443391c700
another way to hash?
2024-03-21 21:30:34 +01:00
47dbafacd4
correct version
2024-03-21 20:15:54 +01:00
5b6811d073
not separate
2024-03-21 20:07:44 +01:00
7516116bb7
last attempt for hash build step
2024-03-21 20:04:07 +01:00
e6014ea4dd
version 10.3.1
2024-03-21 19:32:16 +01:00
362abfe284
ci
2024-03-20 22:46:18 +01:00
ad4880997a
no operand swap on logical expressions with shortcircuit evaluation (and,or are no longer associative!)
2024-03-20 22:34:48 +01:00
592becc126
allow %breakpoint also in if/else blocks and other anonymous scopes
2024-03-19 23:31:21 +01:00
c38765301e
gfx2 screenmode tweak
2024-03-19 01:21:56 +01:00
5f27426f59
only on release event
2024-03-17 23:35:53 +01:00
d924f8bff8
another attempt to get the hashes working
2024-03-17 23:31:04 +01:00
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
fe2b67998c
vm: fix load_raw, fix rng bug in textelite (carry flag shifting...)
2024-03-17 16:46:26 +01:00
04df3c9f7f
vm: implemented in-place array multiplication better
2024-03-17 13:39:05 +01:00
de3d0b40dc
fixed vm problem with branching instructions in global init chunk
2024-03-17 13:22:17 +01:00
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
5a0524ff4d
various fixes
2024-03-16 18:48:06 +01:00
5b7801eea1
added crc verifications to diskspeed
2024-03-16 16:26:39 +01:00
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
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
a94cfd34f5
don't apply absorption law on functioncall operands
2024-03-15 01:04:27 +01:00
28eae5a0fd
updated diskspeed example to deal with increased I/O speeds
2024-03-15 00:37:13 +01:00
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
7e1e7a0780
fix conv.str_ub and conv.str_b for missing tens digits
2024-03-13 23:03:25 +01:00
1fc79ff6dd
implement the missing in-place array operators for split word arrays and numeric operand
2024-03-13 21:16:49 +01:00
3535c1acda
fix broken boolean != comparison optimization
2024-03-13 20:23:42 +01:00
33c8caac8f
get rid of containment expression restriction
2024-03-12 23:39:54 +01:00
51d708bbdd
fix monogfx issue
2024-03-12 23:27:15 +01:00
a5a918df84
update docs about boolean type
2024-03-12 18:54:56 +01:00
820541e427
fixed and optimized pointervar indexed in-place operations
2024-03-11 23:27:48 +01:00
e63a8f0c01
fix vm textio prefix type
2024-03-11 22:22:30 +01:00
c11a9b8709
fix callgraph issue when module gets removed by optimizations
2024-03-11 20:34:22 +01:00
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
2a8b65e29c
test str to uword change in function params
2024-03-10 23:48:58 +01:00
4bdf50145e
recognise \t character (TAB) in string literals (note: only valid in iso encoding)
2024-03-10 13:20:09 +01:00
3a9919a377
implemented a couple more diskio routines for the VM target
2024-03-09 17:36:39 +01:00
eef8ae00b8
replace str return type by uword
2024-03-09 15:38:46 +01:00
ed15fac691
improve IR error message
2024-03-09 13:38:25 +01:00
f739e679e4
added sys.exit2 and sys.exit3 to set more result registers at program exit
...
todo
2024-03-09 03:30:05 +01:00
fc0fae8caf
tweak the redundant beq asm optimizer a bit more
2024-03-09 00:05:06 +01:00
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
52649a8e4f
conv routines now return the string buffer address.
2024-03-08 02:12:46 +01:00
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
1137e57393
update VTUI lib
2024-03-06 21:39:30 +01:00
267ea13e8c
clearer error msg
2024-03-06 20:10:10 +01:00
04f7b772a3
lib updates, removed unused and obsolete http and dbus modules
2024-03-05 23:42:35 +01:00
42c7569791
doc
2024-03-05 22:58:27 +01:00
6d29b00a80
fix monogfx horizontal line and text draw in invert mode
2024-03-05 22:38:34 +01:00
9f1bd2d7d6
asmoptimizer that removes redundant branches on boolean in A
2024-03-05 20:37:15 +01:00
9826d7c494
optimize certain boolean comparisons more
2024-03-05 03:09:53 +01:00
c6bf57b390
non strict bools should also replace not byte with byte==0
2024-03-04 23:25:34 +01:00
bfcf07c1a2
attempt to no longer have BuildVersion.kt in git, blocking easy pulls
2024-03-04 20:45:59 +01:00
4d7e96d423
add monogfx inverted (eor) draw mode
2024-03-03 23:28:37 +01:00
449461e412
tweak monogfx stipple plot
2024-03-03 21:47:42 +01:00
607275ec66
tweak
2024-03-03 19:52:46 +01:00
e55cde2a81
more nonstrictbool conversions
2024-03-03 19:43:48 +01:00
84afb374e6
nostrictbool array conversions
2024-03-03 17:48:52 +01:00
da1620807f
fixed all todos in ifelse gen
2024-03-03 12:10:42 +01:00
f39ef8f565
optimize byte comparison assignment to use rol trick instead of branching
2024-03-03 00:01:14 +01:00
fe8b6e820c
getting rid of problematic fallback (infinite recursion)
2024-03-02 23:19:55 +01:00
f29d24e96a
fixup split words array comparisons
2024-03-02 23:19:55 +01:00
620ffe54ec
asm optimizer: don't remove labels. remove redundant cmp/cpx/cpy instructions.
2024-03-02 23:19:53 +01:00
ceaa4cd07d
array issue
2024-03-02 23:19:39 +01:00
af17f903ee
fix that if not fcall() wasn't transformed to a conditional branch instruction
2024-03-02 23:19:39 +01:00
c532e28841
fix several remaining bool return values in library routines
2024-03-02 23:19:39 +01:00
dba0846866
optimize word >, word <=
2024-03-02 23:19:39 +01:00
bed629998a
fix large code for some compares
2024-03-02 23:19:39 +01:00
bc2ede76bf
tweak to byte compares
2024-03-02 23:19:39 +01:00
2a1fec2ed2
fix codegen error for comparisons
2024-03-02 23:19:39 +01:00
004048e5a7
fix IR codegen error for b=float>value
2024-03-02 23:19:39 +01:00
b941d6f1e4
new comparison tests
2024-03-02 23:19:39 +01:00
37b346740b
fix 6502 casting uword and float to bool
2024-03-02 23:19:39 +01:00
f5e332daf7
remove redundant IR instructions like SNZ
2024-03-02 23:19:39 +01:00
fe9a9fc5cb
new if tests
2024-03-02 23:19:39 +01:00
cc57477b99
IR: support for indirect jump after if
2024-03-02 23:19:39 +01:00
a1574a7187
added txt.print_bool, several fixes
2024-03-02 23:19:39 +01:00
a5110b1f96
improved De Morgan rewrite rules
2024-03-02 23:19:39 +01:00
006713fe13
optimize boolean to ubyte assignment (skip type cast)
2024-03-02 23:19:39 +01:00
7868e672e0
ifelse more
2024-03-02 23:19:39 +01:00
e1a133c2c0
ifelse more
2024-03-02 23:19:39 +01:00
c77cd0da39
ifelse more
2024-03-02 23:19:39 +01:00
577333f2c4
new ifelse codegen
2024-03-02 23:19:39 +01:00
7d8cdcbfea
more bool fixes and optimizations in codegen
2024-03-02 23:19:39 +01:00
c5c4c6f111
start of new ifelse
2024-03-02 23:19:39 +01:00
73be754680
move in place assignment functions back to AssignmentGen
2024-03-02 23:19:39 +01:00
acd841dbb6
bool changes in 6502 assignment codegen
2024-03-02 23:19:37 +01:00
6b52ba9397
6502 asmgen
2024-03-02 23:19:20 +01:00
10d12f73d6
IR/VM: testing the boolean changes, added in-place and/or.
2024-03-02 23:19:20 +01:00
cd9119655c
IR codegen
2024-03-02 23:19:20 +01:00
41afeccd51
compiler stuff
2024-03-02 23:19:20 +01:00
6b87cbb703
optimizers
2024-03-02 23:19:20 +01:00
32afcbfe42
compilerAst BOOL type changes
2024-03-02 23:19:20 +01:00
bc2b38daf4
added PtBool and other changes to intermediate Ast
2024-03-02 23:19:20 +01:00
f40b7b62bb
updated unit tests and some basic changes for them
2024-03-02 23:19:20 +01:00
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
92527b4c1d
examples: add ==0 or !=0 to expressions that depend on implicit conversion from byte to bool
2024-03-02 23:19:18 +01:00
c48012c385
tweak ifelse > and <= order
2024-03-02 17:01:31 +01:00
a282b17286
added asm optimizer for <= byte (bcc+beq->bcs)
2024-03-02 15:34:54 +01:00
58d9463f16
consolidate word comparison codegen
2024-03-02 14:00:12 +01:00
047decd552
consolidate byte comparison codegen
2024-03-01 22:21:22 +01:00
82e0877e64
readme
2024-03-01 00:41:11 +01:00
040d75dafa
VM now supports indirect jump instruction
2024-02-22 16:19:26 +01:00
4e1686f6e3
fix warnings in gradle build scripts
2024-02-22 10:34:51 +01:00
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
325f55f22d
doc refs duplicates fix
2024-02-21 21:29:17 +01:00
9724f2db7d
readthedocs
2024-02-21 21:23:18 +01:00
5f20f321f0
readthedocs tweaks
2024-02-21 21:05:38 +01:00
d4b087ea3f
added txt.bell() to make terminal beep/bell sound on most systems
2024-02-21 17:35:37 +01:00
8ff10724d1
fix some docs hyperlinks
2024-02-21 17:11:36 +01:00
1581381467
streamline
2024-02-20 23:35:04 +01:00
96b5a30f60
slightly less strict
2024-02-20 23:01:51 +01:00
0e17a0474a
added type check to catch invalid comparisons, fix maze example
2024-02-20 22:53:15 +01:00
b27368175d
get rid of problematic rewrite of certain for loops that were causing the end expression to be evaluated every loop iteration
2024-02-20 21:03:21 +01:00
aba36f7c92
update github actions
2024-02-20 01:07:39 +01:00
a3fa946300
fix typo: reaturn -> return ( #126 )
2024-02-18 22:25:26 +01:00
01bbc2234e
fix absorption law optimization, add 2 additional optimizations
2024-02-14 23:12:54 +01:00
58e1864144
Mention AUR package in documentation ( #125 )
...
Additionally, small fixes it nano highlighting
2024-02-12 20:42:00 +01:00
88458f5355
faster array copy and fix for length 256
2024-02-11 23:57:38 +01:00
a4f697bae1
faster
2024-02-10 23:56:55 +01:00
8201408f16
fix element size calc when copying array
2024-02-10 22:58:44 +01:00
8b8caa1c2e
added math.randrange() and math.randrangew()
2024-02-10 22:16:13 +01:00
4dc50cb551
fix unused subroutine removal not removing all unused subs
2024-02-10 21:26:53 +01:00
5522a305ab
add -dumpvars option to dump all allocated variables (zp, normal ram, etc)
2024-02-10 18:42:31 +01:00
d7f72056fc
rest of the array copying
2024-02-10 17:16:06 +01:00
64c9c9b7fe
hash only on release?
2024-02-10 02:11:39 +01:00
98e1c843e4
hash only on release?
2024-02-10 02:07:37 +01:00
906d9d858c
implementing the array copys
2024-02-10 01:40:36 +01:00
16c1309df1
try to add a hash to the artifact
2024-02-10 00:38:32 +01:00
6eacf1bddd
added a few more IR syscalls for often used copy routines
2024-02-09 23:56:44 +01:00
6c8c8e11cc
fix cpu register overwrites when using @(...) arguments to an asmsub
2024-02-09 19:55:35 +01:00
e941d2665a
preparing for new array copy codegen
2024-02-09 18:22:41 +01:00
68669dbef0
fix & of pointervar indexing
2024-02-08 23:03:53 +01:00
6a48de9a9f
IR: fix & of array-element
2024-02-08 21:27:53 +01:00
9d6d98930b
fix ast printing of & array-element
2024-02-08 21:27:53 +01:00
3cc858db12
Adding Syntax Higlighting for nano
( #123 )
2024-02-08 21:27:07 +01:00
386a391fd9
added string.lstripped() and string.ltrimmed()
2024-02-07 23:07:45 +01:00
d33aed4ed5
added txt.petscii2scr() and txt.petscii2scr_str()
2024-02-07 22:36:43 +01:00
73ec8c31ad
fix 6502 code for zp pointer lookup clobbering registers.
2024-02-07 22:09:04 +01:00
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
26ed231f61
version
2024-02-07 00:03:39 +01:00
8485b8429f
optimizing +=1/-=1
2024-02-06 23:49:40 +01:00
358215e4dd
removed postIncrDecr (still allow ++/-- to be parsed into +=1/-=1)
2024-02-06 18:50:08 +01:00
f874942075
version 10.1
2024-02-04 16:22:43 +01:00
2cadb546d5
optimized in-place memory/pointervar operations some more
2024-02-04 15:17:24 +01:00
344a1b9eb8
cx16: added cx16.get_program_args() and cx16.set_program_args()
2024-02-04 11:35:13 +01:00
3c77f8a020
IR: optimize pointer access
2024-02-04 07:51:50 +01:00
8e00408e3e
optimize pointer indexing a bit
2024-02-03 23:24:33 +01:00
abcdfd8e28
optimize postincrdecr on memory a bit
2024-02-03 22:33:27 +01:00
b0f5b6925d
getting rid of pointer[idx] in ast, instead always use @(ptr+idx)
2024-02-03 19:22:04 +01:00
ef79d0c43e
fix temp variable name clash resulting in faulty code in certain common subexpression optimization
2024-02-03 19:20:28 +01:00
78b4288005
avoid git's line ending translation for this test...
2024-02-03 14:57:25 +01:00
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
c71aa0895f
get rid of certain redundant !=0 comparisons in logical expressions
2024-02-01 21:50:01 +01:00
9f8e61789a
fix 65c02 codegen for certain in-place byte bitwise invert
2024-01-31 23:55:43 +01:00
932035cdc5
flag "returning a statement" as a syntax error
2024-01-31 21:36:39 +01:00
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
48ef856c0b
identified wrong expr eval code - still need solution. Crash for now.
2024-01-30 23:00:50 +01:00
9aea2b22c4
doc improvement, fixes #120
2024-01-30 19:07:18 +01:00
e0055bc431
IR: working on inplace +/-
2024-01-29 22:08:47 +01:00
9553248ed6
IR: integrate inplace assignment ops
2024-01-28 22:33:16 +01:00
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
0800033b47
fixed split-word array in-place element +/- (other operators not yet...)
2024-01-28 22:30:45 +01:00
64d8943b7d
fix error when trying to post-inc/decrement a character in a string
2024-01-28 16:47:55 +01:00
444e97b00b
todo
2024-01-27 12:31:36 +01:00
1816bda7ea
extra check
2024-01-26 00:12:31 +01:00
d4a2031c07
fix certain assignment data type mismatch crash
2024-01-25 21:14:20 +01:00
8cf0b6cf51
IR: optimize code for ==0 and !=0 augmented assigns
2024-01-25 00:30:47 +01:00
f2010bf7a5
IR: better code for array element assignments (w.i.p.)
2024-01-23 00:56:06 +01:00
8f56a7fe69
IR: use INV instead of XOR for bitwise invert
2024-01-22 22:47:54 +01:00
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
84a7e86fe3
clarify progend()
2024-01-22 18:57:25 +01:00
a8c09d6144
removed a problematic bitshift replacement in the const evaluator
2024-01-21 23:05:51 +01:00
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
0f83dc6491
sponsorship link.
...
error sorting.
version.
2024-01-19 20:04:29 +01:00
cc22861719
Create FUNDING.yml
2024-01-19 19:26:41 +01:00
a14c192ea3
also other targets
2024-01-18 22:31:34 +01:00
b3d98be862
oops, removed a bit too much when getting rid of the noshortcircuit code
2024-01-18 22:00:57 +01:00
43027a4728
IR: optimize rol ror
2024-01-18 21:51:44 +01:00
03831a7394
added cx16.cpu_is_65816()
2024-01-18 19:30:18 +01:00
fdbbd181ea
fixes for address-of uword pointer array expressions
2024-01-17 22:51:15 +01:00
69075376dc
get rid of the noshortcircuit fallback
2024-01-17 21:24:41 +01:00
504d1440cc
fixed rol(),rol2(),ror(),ror2()
2024-01-17 21:02:17 +01:00
9e33b8b8da
Added a couple of for
examples using descending ranges. ( #119 )
2024-01-16 20:19:05 +01:00
0cfcc5cd29
fix VM sgn() function for floats
2024-01-16 01:34:55 +01:00
e0de662f8e
fix signed word bitshift right (>8 shifts)
2024-01-16 01:08:16 +01:00
66a836d094
added support for reverse() on split word arrays
2024-01-16 00:52:09 +01:00
80095f4962
added support for any() on split word arrays
2024-01-15 23:51:19 +01:00
828d83dbef
loadScaledArrayIndexIntoRegister(): useless type arg removed
2024-01-15 22:19:52 +01:00
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
0a356ba73a
added containment check of float arrays
2024-01-14 14:14:09 +01:00
41de8caa13
added sprites.set_mousepointer_image(), sprites.set_mousepointer_hand() and sprites.get_data_ptr()
2024-01-14 00:38:56 +01:00
968609d06d
IR: fix problems with symbol offsets and unused subroutines/chunks
2024-01-13 16:43:41 +01:00
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
0c1018ec61
dt error details
2024-01-12 17:34:19 +01:00
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
06bedb7adb
added palette.get_color() and palette.default_colors[]
2024-01-11 21:27:18 +01:00
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
e8da62aa29
update Kotlin version and libs
2024-01-10 20:31:30 +01:00
ddb2ff4216
IR: use SCS opcode to set carry status flag into register
2024-01-09 23:46:27 +01:00
f27e3478b9
fix const value of AddressOf for certain types
2024-01-09 22:10:25 +01:00
38dc7fb7bd
IR: added SCC and SCS instructions
2024-01-09 01:41:37 +01:00
aa4cd13c31
where to place vscode syntax files.
2024-01-08 00:09:21 +01:00
4a4b6c04a1
tweak common subexpression optimization for array lookups
2024-01-07 22:37:15 +01:00
37fa3b34a2
tweak IR
2024-01-07 22:12:09 +01:00
f8084e7955
fix const replacement optimization error on memory mapped variable
2024-01-07 18:48:18 +01:00
4d5119ce3e
VM: also set N+Z flags on AND/OR/XOR instructions
2024-01-07 15:26:36 +01:00
d85c347a6c
optimize /256 more, and fixed a unsigned byte word cast error
2024-01-07 02:34:05 +01:00
7dd758a753
better optimize WORD & $xx00 , WORD & $00xx
2024-01-06 22:01:21 +01:00
806654fc44
fix invalid const optimization with multiplication
2024-01-06 13:59:13 +01:00
8e6b91cb9e
some optimizations
2024-01-06 00:44:00 +01:00
334e6dca28
added string.contains().
...
fixed string and array containment check for length 1.
2024-01-05 20:46:26 +01:00
f2daa17b92
tweak some not optimizations
...
cleanup IR typestring
2024-01-05 17:49:56 +01:00
6d9fccacb1
boolean not expression tweaks and optimizations
2024-01-05 13:32:16 +01:00
37638e7ed0
added Absorption laws optimization
2024-01-05 00:36:47 +01:00
8a0e650511
apply De Morgan's laws for logical not, results in smaller code
2024-01-04 23:45:46 +01:00
8ba5a0d90c
tweak planet name display in starmap
2024-01-04 21:52:52 +01:00
bfd3edb617
fix expression evaluation bug where intermediate values were overwritten, yielding the wrong result
2024-01-04 21:04:11 +01:00
56ba24962c
fixed 'not not x' optimization to just 'x'
2024-01-04 15:02:21 +01:00
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
242a3eec63
fix data type difference error on range from and to values
2024-01-03 21:46:22 +01:00
fee46f2e54
todo
2024-01-03 15:06:27 +01:00
6aed7e429a
allow containment check in a range expression ("run time" range expression)
2024-01-03 01:17:13 +01:00
517ea82b99
fixed todos in Ast printer
2024-01-01 23:52:03 +01:00
99c29343de
added -printast1 and -printast2 command line options
2024-01-01 22:48:19 +01:00
892fa76883
remove debug output
2024-01-01 20:48:41 +01:00
d446b57d05
fix unittest
2024-01-01 16:11:50 +01:00
0e086d788b
removed chained comparisons again, because they caused invalid expression evaluations due to changed semantics.
2024-01-01 16:00:11 +01:00
498841d45d
remove binexpr operand rotation that didn't help much at all
2024-01-01 15:12:15 +01:00
d1f8ee1e56
replace most common subexpressions by a single temp variable
2024-01-01 14:57:24 +01:00
07feb5c925
extra check
2023-12-31 17:04:28 +01:00
75fd263e85
fix expericodegen crash related to shortcircuiting
2023-12-31 01:28:17 +01:00
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
89cc7e5fa9
finalize short-circuit eval in IR codegen
2023-12-30 04:26:29 +01:00
265e7aefbf
clean up unused codegen for logical ops on words, also fix no-shortcircuit exception
2023-12-30 04:06:02 +01:00
1c55a6c6dc
shortcutting part one
2023-12-30 03:54:12 +01:00
8f18b5b8a7
keep distinction between logical and bitwise boolean operators
2023-12-30 01:08:42 +01:00
f790182f0b
adding short-circuit boolean expression evaluation (in IR codegen) also -noshortcircuit cli option
2023-12-30 01:08:41 +01:00
813007a5d8
adjusted options of library modules
2023-12-29 22:21:44 +01:00
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
932bbd0381
allow casting of byte<->ubyte and word<->uword
2023-12-29 16:23:24 +01:00
01bd648cb2
added math.crc16() and math.crc32()
2023-12-29 08:00:02 +01:00
779a5606a7
add unittest for aa%bb (without space) to be parsed correctly as modulo, not directive
2023-12-29 05:11:50 +01:00
ccc11e49d2
fix asmgen for uword shift right 8 or more bits
2023-12-29 05:06:09 +01:00
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
5d88717f32
fix non-existing instructions txy/tyx, oops
2023-12-29 03:27:35 +01:00
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
bcc4bf5c2b
almost forgot
2023-12-28 20:39:27 +01:00
a0594cbce3
const optimizer now knows about a bunch of library functions, such as math.*
2023-12-28 20:14:13 +01:00
078bfefe41
clarify scoped names a bit more
2023-12-28 16:36:29 +01:00
9c1b11d605
some WARN messages are now INFO
2023-12-28 14:20:47 +01:00
44d82f9190
add unit tests
2023-12-28 13:30:07 +01:00
37fcde30d6
constants have p8c_ prefix instead of p8v_ in the asm
2023-12-28 05:28:32 +01:00
09c6cb4d6b
replace unwritten vars by consts. Improved const eval.
...
Fixed some slight bugs in library code
2023-12-28 05:17:15 +01:00
b428343c2a
tweak chained comparisons
2023-12-28 02:31:39 +01:00
dfce292294
allow chained comparisons i<x<j (desugared into: i<x and x<j)
2023-12-28 01:18:59 +01:00
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
2eb137618e
refactor block options
2023-12-26 22:13:08 +01:00
4bb2b8ca9b
make isArray a computed property by simply checking the datatype
2023-12-26 19:58:08 +01:00
5179562fb2
can be val
2023-12-26 19:39:02 +01:00
0a4de45453
get rid of vardecl.declareddatatype
2023-12-26 19:33:58 +01:00
ffdc658dc8
type error tweaks
2023-12-26 18:49:01 +01:00
7530f4407b
ir tag change INLINEASM->ASM
2023-12-26 16:15:19 +01:00
73864c8101
added -check command line option
2023-12-26 15:45:55 +01:00
f948917124
added floats.push() and floats.pop()
...
fixed vm pop.f
2023-12-26 15:19:49 +01:00
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
38a22fbc99
allow %option no_symbol_prefixing also on module scope
2023-12-26 12:31:18 +01:00
8ae435549d
added -slabshigh N and -slabsgolden for memory() slabs
2023-12-23 20:45:30 +01:00
9b113c0cbb
added -varsgolden to put BSS into Golden Ram at $0400
2023-12-23 20:11:50 +01:00
0e0fac8c4b
BSSHIGHRAM_END more clearly defined (to be inclusive)
2023-12-23 19:05:06 +01:00
4cd9bb8f99
allow Python-style negative array indexing to count from the end
2023-12-23 16:37:28 +01:00
ad9eaeafeb
call
now returns a word value
2023-12-22 22:24:11 +01:00
6cd392909c
added verafx.copy() routine for fast vram-to-vram copying ('blitting')
2023-12-22 17:52:43 +01:00
49ec430592
cx16: added several word Vera-registers as memory-mapped vars as well
2023-12-21 00:28:09 +01:00
09f3fbeb38
doc tweak, adding qualified name example for goto ( #116 )
2023-12-20 23:51:46 +01:00
e7698686fa
fixed a glitch in the prog8/vtui example ( #117 )
...
When the program starts, before the screen is modified, save_rec
is called to capture the cx16 logo.
The fix was to not do the second call to save_rec until after
vtui is used to draw the boxes on the screen.
Before the this fix, the initial replacement issue was of the
logo and not the portion of the screen originally modified by
vtui.
2023-12-20 23:49:47 +01:00
66d939df0d
docs about new asm symbol prefixes
2023-12-20 22:37:46 +01:00
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
299419917e
added symbol ambiguity error (variable vs block name for scoped symbols)
...
fixes #114
2023-12-20 00:28:15 +01:00
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
b7279a3d9e
fix 'not in' parsing error
...
fixes #115
2023-12-19 19:49:25 +01:00
e14b854d7b
cx16: added audio kernal routines example
2023-12-19 01:47:05 +01:00
8bd7c601c0
cx16: added all remaining audio kernal routines. added the three x16edit kernal entry points.
2023-12-18 22:16:44 +01:00
997288fa03
added cbm.CLEARST() to reset ST to 0
2023-12-18 01:20:24 +01:00
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
ae66fcac1e
added call
builtin function for indirect JSR
2023-12-17 15:45:28 +01:00
43944a94eb
doc tweaks
2023-12-17 14:47:20 +01:00
eba0bde6f3
Merge branch 'optimize-st'
...
# Conflicts:
# examples/test.p8
2023-12-17 02:11:01 +01:00
4544af441b
doc tweaks, explain str a bit more
2023-12-17 02:02:59 +01:00
a8be94de6b
better error message when attempting to cast a float to integer
2023-12-15 22:28:06 +01:00
b24df31c2b
IR: fix codegen for routines returning in CPU Status register flag
2023-12-14 21:16:14 +01:00
332ba8ed7e
don't give error when returning uword value in subroutine that returns STR
2023-12-14 02:48:21 +01:00
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
01c2112881
remove PtJump label, just use identifier with dummy
2023-12-13 04:16:49 +01:00
a546c2247d
optimize if-else handling of asmsub boolean result in status flags
2023-12-13 04:03:21 +01:00
0da9142009
asm: also work for asmsub that return N or Z flag (Carry already worked)
2023-12-13 02:11:15 +01:00
796add0ee2
add string.isspace and string.isprint
2023-12-13 00:28:34 +01:00
00b32f64e6
tweak for,sort,reverse st use
2023-12-12 20:26:45 +01:00
f97b3f23e2
optimize symbol table for IR
2023-12-12 19:26:27 +01:00
08a079a96e
concerns with in
for strings
2023-12-11 21:15:48 +01:00
e98e951834
fix chained assignment and multi-vardecl RHS evaluation
2023-12-10 16:44:51 +01:00
2668bf8519
fix void optimization issue
2023-12-09 21:48:22 +01:00
dd4c073e18
version 9.7
2023-12-09 18:54:54 +01:00
c7c72f00c7
document underscores in numeric literals for grouping
2023-12-09 14:07:42 +01:00
ef1c665b9a
allow underscores for numerical grouping
2023-12-09 13:13:34 +01:00
d56565be25
fix multi-var decl
2023-12-09 12:32:41 +01:00
e076b3aedc
fix multi-var decl in nested scopes
2023-12-09 12:07:09 +01:00
ae3b2ddf5f
allow multi var declarations for floats too
2023-12-08 23:29:13 +01:00
1bdc427d73
multi var declarations ubyte x,y,z
2023-12-08 22:18:21 +01:00
6a639ce533
chained assignments x=y=z=42
2023-12-08 01:07:16 +01:00
d91ca8b197
vm: added floats.str_f()
2023-12-07 23:10:27 +01:00
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
5c393091a0
unit test for %encoding
2023-12-07 21:54:01 +01:00
01b680504b
Add %encoding
to syntax files ( #113 )
...
* IDEA `%encoding` syntax
* N++ `%encoding` syntax
* Vim `%encoding` syntax
2023-12-07 21:53:33 +01:00
8e4319cd5a
module directive %encoding to set the text encoding for that whole file (iso, petscii, etc.)
2023-12-06 23:54:08 +01:00
5a776dd690
improve KotlinJavaRuntime library ref
2023-12-06 22:52:39 +01:00
cce08d95db
unused subroutine warning only for main compilation module
2023-12-06 21:48:56 +01:00
28c1b208c1
optimized calls for float *10 and +0.5
2023-12-06 01:18:07 +01:00
3844bf1f72
fix string.isupper()
2023-12-05 23:52:43 +01:00
745d192563
added floats.normalize()
2023-12-05 22:54:35 +01:00
ee782e92ac
fix cast error and vm float parsing
2023-12-05 22:51:15 +01:00
afbc91d1fc
added string.isdigit, islower, isupper, isletter
2023-12-05 22:50:20 +01:00
f998888d6d
fix some unicode identifier issues
2023-12-05 17:38:23 +01:00
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
6ebd4e821f
improved docs about subroutine scoping, fix possible optimizer crash for inlined sub
2023-12-04 23:23:52 +01:00
d1806bfdc3
added remaining verafx registers
2023-12-03 22:15:29 +01:00
1d2d7155da
palette: changed some of the available presets. Also fix sizeof(array) crash.
2023-12-03 17:14:40 +01:00
b09e0a05bf
some tweaks to errors about long integer literals
2023-12-03 02:45:26 +01:00
c609e982fe
allow const expression intermediate values to be 32 bits integers to avoid needless overflow errors.
2023-12-03 01:48:12 +01:00
2b227b43fe
bmx: error for unsupported file version
2023-12-02 23:56:59 +01:00
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
ead8c59bda
allow all character encodings on all compilation targets.
2023-12-02 20:59:50 +01:00
db52a9466c
fix weird compiler warning for while 1 {..}
2023-12-02 20:24:45 +01:00
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
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
172e78e8f2
ir: ignore empty chunks instead of crashing
2023-12-01 22:49:20 +01:00
36bfef567d
comments
2023-12-01 20:20:18 +01:00
e40ebd75a2
floats.parse_f uses kernal VAL if it's present
2023-11-30 23:50:50 +01:00
992732f2cb
bmx support to save partial screens ('stamps')
2023-11-30 22:17:57 +01:00
b58a3ba1bb
added cx16 sprites.move , movex and movey routines to move sprite by deltas
2023-11-30 20:49:47 +01:00
afe521b0c9
simplify bmx loading
2023-11-29 21:57:17 +01:00
5d9caef45f
bmx can load "stamps"
2023-11-29 21:07:22 +01:00
278e2f5605
preparing for working kernal FP VAL_1() call
2023-11-29 00:27:02 +01:00
1e299bf360
better pokef() code
2023-11-28 23:04:27 +01:00
8dfa0bc38c
fix a compiler crash in certain vardecl initialization expressions
2023-11-28 21:01:58 +01:00
fde136fb7b
bmx module only supports 320 or 640 image widths for now
2023-11-28 20:38:52 +01:00
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
ae2d96c455
added peekf
and pokef
builtin functions. Fixed sizeof() to allow number argument as well.
2023-11-27 23:36:02 +01:00
6d8fbe0877
fixed float array indexing with an expression
2023-11-27 20:54:49 +01:00
2fa1d8f2e8
fix vm string hash
2023-11-27 01:27:50 +01:00
533090a68e
fix expression result register of square, callfar, string compare functions in certain situations
2023-11-26 23:02:10 +01:00
1dff59e1d6
added string.hash()
2023-11-26 22:14:08 +01:00
44d232f52a
optimize for x in something downto 0
2023-11-26 02:24:18 +01:00
5f6cff739a
fix bmx palette writing from buffer
2023-11-26 01:50:25 +01:00
2764d235a9
optimizing for x in 0 to something
2023-11-25 21:37:27 +01:00
45debff89f
bmx: allow palette to be loaded into memory buffer instead of vram
2023-11-25 17:58:43 +01:00
c45fbe6310
continue stmt added
2023-11-25 01:14:35 +01:00
9ef9c24388
IR: optimize redundant labels
2023-11-25 01:10:17 +01:00
6a40f23578
cx16: added bmx library module and showbmx example
2023-11-24 23:39:05 +01:00
6a0a6b4751
todo
2023-11-24 01:20:10 +01:00
0bee6f6b41
cx16: reorder processing of IRQ handlers
2023-11-24 01:12:27 +01:00
82a15b5a16
65C02 cpu: use TRB and TSB instructions for in-place AND/OR.
2023-11-24 00:50:52 +01:00
11b7c4459e
omission
2023-11-23 00:29:31 +01:00
98570ac456
cx16: optimized sys.set_rasterline()
2023-11-23 00:02:04 +01:00
1b2296ad5b
move cx16 irq examples to new API, fix some bugs in the handler
2023-11-22 23:25:39 +01:00
16851746d6
new X16 irq handler routines and examples
2023-11-22 20:03:21 +01:00
935450a45f
update kotest library
2023-11-22 18:40:07 +01:00
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
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
a83e9d9a0a
added sys.save_prog8_internals() and restore_prog8_internals()
2023-11-21 22:00:43 +01:00
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
af5ca2d0b8
vm: treat floats as 64 bits doubles. 0.0 printed as "0".
2023-11-21 00:57:56 +01:00
ab4bcdf12d
emudbg no longer clobbers r1
2023-11-20 00:20:48 +01:00
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
f81061dd42
error msg and comments
2023-11-18 01:03:34 +01:00
8e2c304b3c
txt.waitkey() now returns the key that was pressed
2023-11-17 20:31:19 +01:00
f21adaa3ef
fix compiler error caused by removal of string symbol in txt.print() optimization
2023-11-17 19:51:48 +01:00
2637939e62
cx16.vaddr_clone now leaves vera CTRL selected port intact
2023-11-17 19:22:23 +01:00
faf05582f8
improved cx16 emudbg library
2023-11-17 15:07:21 +01:00
161c02ced3
message
2023-11-17 00:37:12 +01:00
ff8de8e42d
removing redundant compares
2023-11-16 22:56:19 +01:00
09d506194f
note
2023-11-15 22:27:16 +01:00
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
ad14c88fde
give error when using %option merge in module scope
2023-11-14 21:53:50 +01:00
0c9daf6eaf
fix compiler crash on ptrvar[n+1] = ptrvar[2]
2023-11-14 21:46:11 +01:00
86c6530e46
palette: more accurate color conversion from 8 to 4 bits channels
...
set_rgb8(), color8to4(), channel8to4()
2023-11-14 20:40:48 +01:00
159f80d629
next version
2023-11-14 19:06:47 +01:00
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
d22359b6e7
removed cx16.FB_cursor_position2() because it was only for use in the graphics module
2023-11-12 16:40:13 +01:00
d73709653d
remove unused interned strings in the resulting code (for example from removed if/else blocks)
2023-11-12 05:28:24 +01:00
405926e811
oops
2023-11-11 14:31:48 +01:00
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
7ebc9c79cf
added string.append()
...
cleanup redundant diskio prefixes
2023-11-10 23:53:59 +01:00
e0668b55b9
fix gfx2 safe_disc coloring
2023-11-10 01:08:13 +01:00
76c09da961
make pokemon() be like poke, but also return the old value in the memory location.
2023-11-09 22:48:44 +01:00
7e3b8c2c59
fix compiler crash on certain subroutine inlining attempts.
2023-11-09 21:16:12 +01:00
ecca854c7c
Added cx16.edkeyvec and cx16.set_chrin_keyhandler(). mention the Github actions builds.
2023-11-09 01:03:31 +01:00
3b0d7ea960
better const-evaluation of addressOf a memory mapped variable
2023-11-08 22:04:41 +01:00
f70fa42eac
more accurate palette conversion
2023-11-08 01:33:55 +01:00
5698de6cf4
feat: requirements.txt for convertsprite.py ( #112 )
2023-11-08 01:32:41 +01:00
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
ff324955dd
Feature/read cursor position ( #111 )
...
* feat: add ability to read cursor position on CBM machines
* feat: implement plot()/column() for atari target; add get_cursor(), get_column(), row(), and get_row()
* feat: implement wait_key() for Commodore targets; add get_cursor(), get_column(), row(), get_row()
* feat: really implement waitkey() on CBM targets
* fix: make waitkey void for compatibility with atari
2023-11-07 22:19:16 +01:00
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
31177a2b1b
added sys.disable_caseswitch() and sys.enable_caseswitch()
2023-11-07 00:27:34 +01:00
4de012fc49
added notes to textio about PETSCII vs Screencode encoding.
2023-11-06 23:18:24 +01:00
ee2888e744
verafx.mult/muls now return upper 16 bits of the result in r0
2023-11-06 21:55:58 +01:00
efe4df92dc
optimize when with const value (remove other choices from code)
2023-11-06 00:08:07 +01:00
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
d9389afc66
fix compiler crash on certain constant expressions
2023-11-05 13:59:08 +01:00
e7178ee496
optimized comparison with word variables
2023-11-05 00:20:12 +01:00
d5f35bb3fb
added gfx2.init_mode()
2023-11-04 14:53:08 +01:00
72f1a779f2
optimize monogfx.fill() and gfx2.fill(), also don't read outside screen area
2023-11-04 14:30:51 +01:00
3277544295
optimize assigning word array value to byte variable
2023-11-04 00:33:50 +01:00
98d2c64d5d
fix assembly error for uword[3] @zp @split word_addrs
2023-11-03 00:39:43 +01:00
f68b46fc60
add a %zpallowed option to specify the range of zeropage register that can be used
2023-11-03 00:19:25 +01:00
d54ab856e7
fix parameter passing bug introduced recently (byte not converted to word)
2023-11-02 00:31:35 +01:00
16b24fadea
gfx2 future mode, upgrate to Kotlin 1.9.20
2023-11-01 23:18:44 +01:00
b3803cbdf1
more opportunities to use LDA(zp) instead of LDA(zp),Y on 65c02
2023-10-31 21:26:55 +01:00
2ceaa25181
optimized code for (infrequently used) logical operations on word array
2023-10-29 23:41:34 +01:00
513611c5a6
IR: using EXT more
2023-10-29 02:57:21 +01:00
7ec4ba40ad
optimize asmsub arg evaluation order and stack usage
2023-10-28 17:29:00 +02:00
92374e122b
IR: optimize concat with msb 0 into ext
2023-10-28 12:53:41 +02:00
94f12732ab
add math.diff() and math.diffw()
2023-10-27 22:36:43 +02:00
0904712a00
remove last trace of getTempVar (arry index expression)
...
tiny optimization
2023-10-27 21:41:52 +02:00
32becdbced
add monogfx lib to virtual target
2023-10-24 00:16:25 +02:00
34aa21f7d9
improve function call arg type casting
2023-10-22 22:33:35 +02:00
cc81dd7d3e
remove useless close calls from diskio load
2023-10-22 17:24:05 +02:00
335213b55f
tweaks
2023-10-21 02:16:58 +02:00
13ab4166c0
new kotest library version
2023-10-19 21:57:06 +02:00
3dc5a0e7f8
some arrays can be in BSS
2023-10-18 23:59:37 +02:00
e15c5cde53
tiny fill() optimization
2023-10-18 23:11:16 +02:00
d88c09b098
fix signed byte to word casting issue uw = 8888 + (bb as ubyte)
2023-10-17 22:54:33 +02:00
893b383bdf
fix signed byte to word sign extension in assignment
2023-10-17 03:08:37 +02:00
dd7c9d62e6
remove assigment splitter, it now caused code bloat instead of more efficient code
2023-10-16 02:07:22 +02:00
97c5c90eff
fix codegen for var1>>=var2 and var1<<=var2 when var2 is zero
2023-10-16 00:04:21 +02:00
1fb94e7a7b
monogfx and gfx2: flood fill uses optimized horizontal line drawing
2023-10-15 23:19:11 +02:00
daca87c6d0
added -breakinstr compiler option
2023-10-15 21:55:09 +02:00
203ec5fa46
implement taking address of array var with variable index
2023-10-15 20:24:48 +02:00
9ea69c07b8
optimize word array reads with indexvar
2023-10-14 07:30:54 +02:00
68539d6cc9
micro tweaks adpcm.p8
2023-10-13 00:55:56 +02:00
f75fd0811e
restructure play-adpcm example code, stream-wav can now play stereo adpcm wavs
2023-10-11 17:37:42 +02:00
836bc9d456
added verafx.available()
2023-10-10 22:12:21 +02:00
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
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
a5cd3728c9
3d rotation multiplications now using verafx acceleration
2023-10-05 22:36:30 +02:00
a48ce35f0b
added %option verafxmuls
2023-10-05 22:06:33 +02:00
e1835b5775
removed dysfunctional c128.graphics library module
2023-10-05 21:03:47 +02:00
433832b329
gfx2.clear_screen and monogfx.clear_screen() now have color parameter to clear the screen with
...
this is much faster than filling a rectangle of the full screen size with a color.
2023-10-05 21:00:39 +02:00
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
6395d1908e
cx16: added monogfx library module, replaces gfx2 for monochrome screenmodes.
2023-10-04 22:32:13 +02:00
989a5a2f8a
some notes about array alignment
2023-10-04 01:10:36 +02:00
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
a8507b437d
add verafx.transparency()
2023-10-03 01:47:52 +02:00
e505bf9ccf
added "emudbg" library (cx16 only) to interface with the emulator
2023-10-02 22:23:09 +02:00
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
c3f1f09ad1
added verafx.clear()
2023-10-02 01:34:56 +02:00
70ee2026ff
fix gfx2 screen fill broken when using verafx
2023-10-02 00:12:48 +02:00
690782bf60
added -verafxmul compiler option to use vera fx multiplication routine on cx16
2023-10-01 22:44:45 +02:00
755cc4835e
\n (newline) now also maps to Petscii $0d (return), like \r.
...
It used to map to $8d (shift-return)
2023-09-29 01:49:15 +02:00
a684ea46e4
fix c64 zp test and improve error for text encoding problem
2023-09-29 01:25:05 +02:00
8fbe13f99d
c64: $a5 removed from free ZP (it's actually used by kernal disk routines)
2023-09-29 00:28:04 +02:00
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
cd40088636
vm: added math.mul16_last_upper()
2023-09-28 03:18:49 +02:00
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
ae6eeadf54
doc about range step value has to be a constant
2023-09-25 23:19:32 +02:00
5268b05060
added bonkram chunk to chunkfile example
2023-09-25 22:24:40 +02:00
390263a34e
added cx16 verafx library module
2023-09-24 23:00:40 +02:00
55646edc3e
added cx16 chunkedfile example
2023-09-24 20:56:36 +02:00
8d177beb78
fix possible register corruption when calling asmsubs that require Carry flag as a parameter
2023-09-24 14:03:31 +02:00
1da0c59182
vm: remove BNER opcode -> CMP + BSTNE
2023-09-23 11:47:24 +02:00
36e8f10d2b
vm: remove BEQR opcode -> CMP + BSTEQ
2023-09-23 11:42:58 +02:00
cdf5a8f20f
vm: remove BNE opcode -> CMPI + BSTNE
2023-09-23 11:22:33 +02:00
eb64d92333
vm: remove BEQ opcode -> CMPI + BSTEQ
2023-09-23 11:21:43 +02:00
eb55da63ef
weird
2023-09-23 11:21:17 +02:00
918302f79b
ir: fix possible crash in validity check about PREPARECALL
2023-09-23 01:35:18 +02:00
9d7131d9f6
vm: setting status bits
2023-09-22 22:50:20 +02:00
229c1114dd
vm: fixed array initialization values with address-ofs
2023-09-19 23:54:18 +02:00
885df9156f
todo
2023-09-19 00:08:17 +02:00
c319233ddc
ir: added preparecall 'meta' instruction for functioncalls
2023-09-18 23:22:03 +02:00
958b5c0780
Merge branch 'addrof-arrayelt'
...
# Conflicts:
# docs/source/todo.rst
2023-09-18 04:48:45 +02:00
880c0a5da8
allow taking address of array element
2023-09-18 04:37:41 +02:00
237c6dc856
allow taking address of array element
2023-09-18 04:29:15 +02:00
ccf6e32bf9
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 15:16:47 +02:00
a1874f6f00
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 01:48:29 +02:00
95e4490a8a
adding setlsb() and setmsb() builtin functions
2023-09-15 02:39:16 +02:00
31c132c2eb
several optimizations and compiler error fix for @(&var) and @(&var+1)
2023-09-14 23:04:23 +02:00
00b0ec58b4
update to Antlr 4.13.1
2023-09-14 21:11:55 +02:00
a1d0e5bb65
added list of software to docs
2023-09-13 21:51:48 +02:00
03e0d4b2e8
reducing expression codegen complexity (no longer splitting conditional expressions, and using r9 as temp var)
2023-09-13 01:08:42 +02:00
6afdd4e6fd
preparing next version
2023-09-12 21:53:49 +02:00
b500a0d477
c64: added a couple of routines that calculate the correct memory locations for video ram and sprite pointers etc. based on current VIC-II memory setup.
...
the examples with sprites, now use it.
2023-09-08 21:27:38 +02:00
dd2463a440
proper fix for the previous commit. + fix for i/o channel reset in diskio.f_seek()
...
it wasn't the adressing mode, it was that it assumed the pointer variable was always in zeropage (which might not be)
2023-09-07 22:17:46 +02:00
23a8bebd9e
fix invalid addressing mode on 6502 cpu for bytevalue +/- bytearray[i]
2023-09-07 21:40:07 +02:00
3caf9108ad
finalizing 9.4.1 release
2023-09-06 21:18:01 +02:00
bde4be8231
fix VM indexed instructions to only use lsb part of the index
2023-09-06 02:44:04 +02:00
0bbbb12ed2
fix bench8 examples
2023-09-05 23:40:54 +02:00
b570bdaed7
fix codegen for array[i] += float expression
2023-09-05 22:38:52 +02:00
8c0843cc87
fix an invalid 6502 instruction on c64 in certain float assignment
2023-09-05 21:54:52 +02:00
31458ffd81
examples cleanup and improving c64 graphics module (shift bitmap to higher ram area)
2023-09-05 20:39:12 +02:00
c15c10a94e
fixed 'unroll CONSTANTEXPR' compiler errors
2023-09-05 01:03:35 +02:00
9fca978725
optimized plasma examples even more
2023-09-05 00:23:50 +02:00
b125901717
added cx16 plasma example
2023-09-04 23:54:13 +02:00
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
7e5a9474fe
improve plasma example
2023-09-04 20:35:43 +02:00
525a9b5036
prepare parser to allow chained array indexing later
2023-09-03 19:06:47 +02:00
c3fbdf34ca
fixed c64 float problem
2023-09-03 16:40:10 +02:00
48bd51e1a5
c64 float problem
2023-09-03 16:29:01 +02:00
10d0b03a90
use less tempvars
2023-09-03 01:32:47 +02:00
e1b3582f08
fix wordvar -= @(memory)
2023-09-03 01:12:26 +02:00
95be1c9e22
fix optimized swapped in-place byte comparisons
2023-09-03 00:47:55 +02:00
1ce8fe06d5
fix in-place <= for bytes
2023-09-03 00:01:11 +02:00
15c649024e
float problems on c64
2023-09-02 23:09:55 +02:00
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
3b786c819d
avoid using temp var even more
2023-09-01 23:47:01 +02:00
04959dbd8b
optimize asm: don't use temp var for some additions
2023-09-01 22:24:17 +02:00
5cd4b874ea
tweak sprites module
2023-09-01 21:25:19 +02:00
f14ea1b3de
micro optimization to save 2 cycles: change some pha+pla into tax+txa
2023-09-01 20:37:24 +02:00
9cc0cda0fb
added sprites library module (cx16 only)
2023-09-01 17:35:07 +02:00
09a7a4bbe5
optimize comparison against zero
2023-09-01 02:28:11 +02:00
cfea8b3745
save a cycle
2023-09-01 00:50:24 +02:00
28bf0b61ce
added math.log2() and math.log2w()
2023-09-01 00:42:15 +02:00
2dc2429735
tweaks to the cx16 sprite example
2023-08-31 23:24:46 +02:00
83d4592526
tweaks to the cx16 sprite example
2023-08-31 22:33:49 +02:00
2d528c26ae
added cx16 sprite demo
2023-08-31 16:56:52 +02:00
66b3dce794
doc tweak
2023-08-30 13:16:39 +02:00
93f77a1045
version 9.4
2023-08-29 12:27:09 +02:00
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
2d7ebff8e9
fix shadowing warnings in asm and library code
2023-08-29 11:00:53 +02:00
bad9dd3b3b
mention shadowing warnings from assembler
2023-08-28 16:55:28 +02:00
2f4e517857
update to Kotlin 1.9.10
2023-08-28 16:45:59 +02:00
ff35ba3696
added warnshadow cli option to enable assembler warnings about symbol shadowing
2023-08-28 16:41:46 +02:00
72768e7fad
todo
2023-08-28 16:10:02 +02:00
77f3852cdc
added floats.parse_f()
2023-08-16 14:47:20 +02:00
66857ca477
prepare parser to be more flexible with array indexed expressions
2023-08-15 13:07:01 +02:00
75514fc7af
fix some invalid instructions on 6502 (instead of 65c02) target for bit shifts
2023-08-14 21:58:26 +02:00
be06d871b6
fix code for bitwise shifts by zero
2023-08-14 21:49:13 +02:00
f98ee326b4
error when doing txt.print('@') where "@" was intended (byte for string parameter)
2023-08-14 19:25:31 +02:00
bc8126eb16
2x faster word multiplication routine
2023-08-14 18:11:30 +02:00
4c8beefdcb
slightly faster integer bytes multiplication routine
2023-08-14 17:00:16 +02:00
bbb6c53457
slightly faster sqrt() routine for integers
2023-08-14 17:00:02 +02:00
d8991894e3
added pet stubs for cbm.SETTIM,RDTIM,RDTIM16
2023-08-14 14:49:59 +02:00
c7b7dcfd03
made pet textio more compatible with the other platforms by putting the (dummy) color arguments back
2023-08-14 13:51:15 +02:00
2c9e50873c
use math.square for optimized X*X calculation (words only).
...
Added IR SQUARE instruction.
2023-08-14 01:05:17 +02:00
923367296d
fix reset_system() on PET, added some missing kernal routines
2023-08-13 01:46:25 +02:00
151a206617
experimental Commodore PET target
2023-08-12 23:25:07 +02:00
e403c4cf99
version 9.3
2023-08-12 17:58:10 +02:00
e3fbe37f9f
fixed optimized code for >= and <=
2023-08-12 13:45:08 +02:00
dc870cd5ea
fixed optimized code for > and <
2023-08-12 13:15:32 +02:00
584be44743
fix compiler error on float comparison expressions
2023-08-12 00:09:38 +02:00
5fffd35ec1
IR: fix augmented assignment operators
2023-08-11 18:24:37 +02:00
b92e22e4a6
IR: fix for loop over range with step
2023-08-11 03:05:47 +02:00
3e6d16a7a8
add error message for invalid step size in range expression
2023-08-11 02:35:52 +02:00
ecbcc277b8
improve -varshigh documentation
2023-08-10 00:17:50 +02:00
dff1d9e4dd
cleanup range expression doc
2023-08-09 22:58:04 +02:00
7c0bde7310
parser: allow curly brace on next line for asmsub too
...
downgrade antlr4 one version again to what is used in IntelliJ's antlr plugin, to avoid potential version conflicts
2023-08-09 20:01:12 +02:00
a82d21ac05
fixed gfx2.plot in mode 1+5 with certain combinations of color and stipple
2023-08-08 00:01:43 +02:00
0bf8378fcb
fixed gfx2.horizontal_line problem with monochrome stippling mode (regression since version 9.0)
...
todo
2023-08-07 22:56:07 +02:00
017ef8a837
optimization of > and <= in expressions
2023-08-07 21:23:31 +02:00
0d63cdcb96
optimization of < and >= in expressions
2023-08-07 04:54:35 +02:00
68a6f99c9f
optimization of < in expressions
2023-08-07 02:32:07 +02:00
60781bcfc4
optimization of == and != in expressions
2023-08-07 01:25:41 +02:00
77fa2e2722
optimization in + or - assignment to word array
2023-08-05 23:28:40 +02:00
c36afd872e
optimization in assignment to memory
2023-08-04 23:54:11 +02:00
7e58a4c130
optimization in assignment to array
2023-08-04 23:06:55 +02:00
19a4bf1088
clean up AugmentableAssignmentAsmGen a bit
2023-08-04 21:48:02 +02:00
9678bbae4b
dedup
2023-08-02 23:19:52 +02:00
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
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
f2c62bee7e
docs
2023-08-01 22:49:55 +02:00
548721e306
docs
2023-07-31 22:17:43 +02:00
1ae950a638
Merge branch 'remove_evalstack'
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
2023-07-31 21:57:43 +02:00
c9385e93fe
fix postincr/decr on indexed pointervariables
2023-07-31 20:13:49 +02:00
9bb16e293c
vm: fix postincr/decr on indexed pointervariables
2023-07-31 19:37:30 +02:00
c223702ea0
code cleanups
2023-07-30 18:42:45 +02:00
9167ba499d
Merge branch 'remove_evalstack'
2023-07-30 17:49:35 +02:00
2d7e95e1b6
release 9.2.1
2023-07-30 17:39:18 +02:00
0cba736446
Merge branch 'master' into remove_evalstack
2023-07-30 14:53:40 +02:00
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
a0ab0bd3e2
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-29 18:57:06 +02:00
b89ad4b328
don't optimize empty where choice away! It would call the else clause incorrectly.
2023-07-29 18:25:52 +02:00
6cda76a116
comments
2023-07-29 17:32:27 +02:00
c112b327ab
tiny optimization
2023-07-29 17:04:41 +02:00
46c12a8899
fix byte in array assignment,
...
remove no longer needed array assignment ast transformation
2023-07-28 22:40:06 +02:00
c5219dfb3f
fix assignment of register into byte array
2023-07-28 22:16:01 +02:00
4a8ee6815a
merge
2023-07-28 03:34:58 +02:00
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
b19c282269
release 9.2
2023-07-28 01:40:14 +02:00
e520921746
todo
2023-07-26 23:16:43 +02:00
970642244b
optimized gfx2.text() for hires 4c mode
2023-07-26 04:17:44 +02:00
3b90be2d9e
gfx2.text() per-pixel positioning implemented for screen modes 1 and 5
2023-07-25 00:43:45 +02:00
2f756f1e3a
fix and optimize inplace invert and negate
2023-07-24 23:28:32 +02:00
78e84182f0
todo
2023-07-24 22:36:17 +02:00
65a7a8caf8
fix and optimize gfx2.position2(), added cx16.vaddr_clone()
2023-07-24 00:04:47 +02:00
4c6a2f5df9
emphasize index value size on pointer var indexing
2023-07-23 00:11:18 +02:00
fea297e409
cleanup some compilation warnings
2023-07-22 23:44:26 +02:00
7cf6aba625
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-22 23:37:20 +02:00
3bbc00cc8c
more caution notices about symbols in inlined asm
2023-07-22 23:22:06 +02:00
70ed2b4203
fix compilation of large bitshifts
2023-07-22 23:08:22 +02:00
0adce9b9c6
removed complexity restriction on array indexing expressions
2023-07-22 22:11:30 +02:00
0e781d18fa
cx16: added cx16.vaddr_autoincr() and cx16.vaddr_autodecr()
2023-07-21 23:04:21 +02:00
4575a8fffe
cx16: added cx16.vaddr_autoincr() and cx16.vaddr_autodecr()
2023-07-21 22:40:07 +02:00
10d0ff252b
ignore buildversion changes
2023-07-21 00:14:06 +02:00
c7d54570cc
IR: sXX, CONCAT instructions now use 3 register format
2023-07-21 00:07:56 +02:00
7136b33f2e
cx16: change reset_system() to use Reset SMC sequence instead of hard reboot
2023-07-20 01:59:20 +02:00
70a78e74f6
get rid of binexpr splitter
2023-07-20 01:36:43 +02:00
d5707b7bf3
rebuilding floating point stack evaluation (using cpu stack)
2023-07-20 00:45:04 +02:00
9f247901d4
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
# codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
# compiler/src/prog8/buildversion/BuildVersion.kt
# examples/test.p8
2023-07-16 23:45:04 +02:00
5659742d97
fixed assigning byte to word not clearing msb sometimes
2023-07-16 23:16:32 +02:00
450eaf7c4a
fixed lsb() to uword problem
2023-07-16 20:05:59 +02:00
47485e4b49
added more missing codegen for bit shifts
2023-07-16 17:42:10 +02:00
64254e758d
cleaned up cx16 keyboardhandler example and some compiler warnings for redundant else
2023-07-16 13:23:53 +02:00
c1aa5d4e47
IR: optimized when statement translation
2023-07-16 12:10:46 +02:00
ab8173637a
remove redundant asm optimizer
2023-07-16 11:15:28 +02:00
3841cef497
implemented missing bitshift codegen (non-stack)
2023-07-15 22:26:56 +02:00
b717f1c7eb
little refactor of huge if statement
2023-07-15 22:26:56 +02:00
da57f76de3
fix augassign
2023-07-15 22:26:56 +02:00
4784f1c65a
remove eval stack from documentation
2023-07-15 22:26:56 +02:00
41af63b333
remove even more X register save/restore code
2023-07-15 22:26:54 +02:00
e2bb0de24d
clean up X register save/store in compiler code, remove temp vars for register saving
2023-07-15 22:25:58 +02:00
b791fae9ce
remove stack based ExpressionAsmGen
2023-07-15 22:24:22 +02:00
6033a9e20c
remove optfloatx option
2023-07-15 22:24:22 +02:00
9e8c8973d8
remove eval stack references from asm code
2023-07-15 22:24:22 +02:00
3933bf5c1a
remove eval stack references from p8 code
2023-07-15 22:24:22 +02:00
708e296774
remove eval stack assignment source and targets
2023-07-15 22:24:22 +02:00
84925ab69c
remove eval stack options
2023-07-15 22:24:19 +02:00
b3cb9b7fe2
added optimizer to remove needless pha/pla pairs
2023-07-15 22:19:48 +02:00
9cb61fa34d
tweaks
2023-07-15 20:46:14 +02:00
7c219d235c
fixed possible type mismatch error in when statements
2023-07-14 23:35:58 +02:00
6938c79f88
IR: added CMPI instruction
2023-07-14 23:17:29 +02:00
b8284a147d
allow boolean when conditions, optimize into a regular if
2023-07-11 21:33:29 +02:00
15ee90e99c
no error about missing target when -vm is used.
...
also version 9.1
2023-07-11 18:13:49 +02:00
795f80b4ec
fix forloop 6502 codegen in case of descending word values
2023-07-11 00:33:12 +02:00
6b6427492d
fix forloop 6502 codegen in case of descending word values
2023-07-10 23:10:16 +02:00
6055b8c3dc
IR: fix forloop codegen for steps != 1
2023-07-10 21:36:44 +02:00
a98cb50d55
Revert "ir: SCC now sets all bits to 1 (or 0)"
...
This reverts commit 7245aece4f
.
2023-07-09 23:16:13 +02:00
e98bbc1c52
todo
2023-07-09 22:29:54 +02:00
7245aece4f
ir: SCC now sets all bits to 1 (or 0)
2023-07-08 23:16:01 +02:00
60cbb02822
vm: actually fix EXT(S) in vm too
2023-07-08 23:05:03 +02:00
4e863ecdac
vm: fixed abs() and word-to-string conversion
2023-07-08 22:57:16 +02:00
5037033fcf
ir: EXT and EXTS opcodes now have 2 registers to avoid type clash
2023-07-08 22:42:11 +02:00
e6b158bc97
@(..) argument must be of type UWORD
2023-07-08 22:34:47 +02:00
4cc0dfa10b
comment
2023-07-08 11:42:29 +02:00
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
d26967a87d
ir doc
2023-07-07 22:35:05 +02:00
fc8955941b
slight optimization for certain word multiplications
2023-07-07 21:30:37 +02:00
071a80360f
ir: fix some problem with comparison against zero
2023-07-07 21:17:28 +02:00
d2154f5f2e
remove empty when choices, fixes ir compilation error on those
2023-07-07 20:34:24 +02:00
334d382bfa
ir: JUMPI instruction added to support indirect jumps
2023-07-07 19:10:39 +02:00
90c4b00f74
ir: fix any() all() reverse() sort() on memory mapped arrays and on byte arrays
2023-07-07 17:25:32 +02:00
71261525e8
fix containment check on memory mapped arrays
2023-07-07 17:07:34 +02:00
3126959576
ir: several fixes
2023-07-07 16:53:32 +02:00
02e51d8282
ir: fix initial chunk linking
2023-07-07 00:30:56 +02:00
ffb2027a19
repeat loop count now always rounded to integer
2023-07-06 23:58:02 +02:00
70c9ab9074
upgrade libraries
2023-07-06 23:33:58 +02:00
6d1fdf1ba6
upgrade to Kotlin 1.9.0
2023-07-06 23:03:47 +02:00
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
b4e94ae4dd
optimizer: avoid symbol name clash when inlining subroutine
2023-07-05 23:15:04 +02:00
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
e705a8bd89
discord info
2023-07-04 23:50:16 +02:00
b3bdfb7f1f
more info about building the compiler
2023-07-04 22:41:38 +02:00
5af1aeb092
added block comment /* ...... */
2023-07-04 00:46:29 +02:00
be64fa674a
doc
2023-07-03 22:44:50 +02:00
204f5591a9
todos
2023-07-03 21:57:32 +02:00
ee3e3a3a40
optimize text rendering in gfx2
2023-07-03 21:45:09 +02:00
f9200a2b75
fix IR loader for romsub calls (calls to an address)
2023-07-02 23:41:15 +02:00
f570b70827
fix type error with returning an array from a subroutine returning uword
2023-07-02 22:09:19 +02:00
0db141eeac
todo
2023-07-02 21:19:33 +02:00
acb2ee53bb
Merge branch 'prefixing'
2023-07-02 21:15:30 +02:00
c544b7f5ba
fixing up p8_ prefixing
2023-07-02 21:15:05 +02:00
c0024e97e5
fix doc version
2023-07-02 21:01:11 +02:00
bdf8aa9168
get rid of newexpr compiler option
2023-07-02 15:26:04 +02:00
de5ce0f515
tiny optimization and doc
2023-07-02 11:17:18 +02:00
bb95484c8a
uniform symbol prefixing with p8_
2023-07-02 06:15:09 +02:00
cad18b8a3a
uniform symbol prefixing with p8_
2023-07-02 06:15:02 +02:00
0f6a98751a
tiny optimization
2023-07-02 06:13:22 +02:00
aac5a4c27f
optimize word repeat loop codegen
2023-07-02 04:51:22 +02:00
d3f6415387
vm: fix repeat 256
2023-07-02 02:38:35 +02:00
04da44eb98
fix certain inefficient codegen when assigning a type casted value
2023-06-29 22:56:26 +02:00
7649be97b1
add git hash to compiler header output
2023-06-29 21:01:02 +02:00
c9ef777e0f
fix rest of possible temp variable conflicts
2023-06-28 23:24:48 +02:00
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
30c531b39e
attempting to fix array expression inplace assign
2023-06-28 00:38:08 +02:00
bf703a8a66
unittest
2023-06-27 23:43:35 +02:00
e7b631b087
allow comment lines inside array initializer value
2023-06-27 23:30:37 +02:00
a9f5dc036c
fix cpu stack corruption in array assignment codegen
2023-06-27 18:49:49 +02:00
0a83b51e00
allow more curly brace styles
2023-06-27 01:59:22 +02:00
eab63ecc6c
allow curly brace on next line also after subroutine and when
2023-06-27 01:29:25 +02:00
b0794cf35e
added hiram bank number to -varshigh
2023-06-27 00:27:34 +02:00
5b9e71a27d
docs
2023-06-25 21:35:30 +02:00
eae41de27d
improve errors generated for undefined symbols
2023-06-25 15:19:51 +02:00
e9163aa3a7
added cx16.save_virtual_registers() and cx16.restore_virtual_registers()
2023-06-24 21:04:47 +02:00
8c617515ba
don't prefix 3-letter symbols too aggressively (could cause some compilation errors)
2023-06-23 23:36:59 +02:00
04e4e71f2e
uword == str is now possible (sugar for string.compare)
2023-06-22 00:20:30 +02:00
a587482edf
optimize dangling else
2023-06-18 13:46:02 +02:00
0aac9350d5
rename math.atan() to math.atan2()
2023-06-18 13:05:36 +02:00
f56c12ee4e
cx16 spotlight example
2023-06-18 12:49:22 +02:00
4bb9ae61f2
library source links
2023-06-18 02:31:45 +02:00
ff7f3484e4
atan
2023-06-17 23:01:47 +02:00
5da3abe6b4
fix silent typecast on return statements that could lose data (word->byte)
2023-06-17 14:44:36 +02:00
c0b398e0ce
add various math.atan() routines
2023-06-17 00:43:33 +02:00
3de10adac2
bump required 64tass version
2023-06-16 23:24:31 +02:00
1b573d6552
add note about lacking fp parse routine
2023-06-16 00:12:52 +02:00
2a96f93919
vm: fix compiler error when dealing with label
2023-06-14 22:14:47 +02:00
c6b2639ca4
fix compiler crash due to missing 6502 codegen
...
(assigning a direct memory read byte to a cx16 virtual register)
2023-06-14 21:10:01 +02:00
b9abf37a7e
fix invalid code when subroutines are defined in a repeat loop
2023-06-13 00:46:32 +02:00
373cbb4144
gradle build error explained
2023-06-11 17:51:18 +02:00
a521982576
fix subroutine inline problem with strings
2023-06-09 21:45:05 +02:00
a77fde577c
update GitHub action steps
2023-06-09 19:51:04 +02:00
ea6926e57d
fix float expression crash: fl = abs/sqrt (fl)+0.5
2023-06-09 19:28:34 +02:00
ba25b7fee6
fix diskio.diskname(). cx16: add diskio.curdir()
2023-06-07 22:38:51 +02:00
7ee162d98b
preparing version 9.0
2023-06-05 19:47:00 +02:00
380f557c45
vm: implement split incr/decr
2023-06-03 22:22:13 +02:00
1bdae53f4e
fix unit tests
2023-06-03 21:39:34 +02:00
9314c346da
-target option is now required; c64 no longer the default
2023-06-03 19:14:45 +02:00
bfaad1388c
IR: handle split arrays without new custom opcodes
2023-06-03 01:51:02 +02:00
0b580ad05d
v9 upgrading doc
2023-06-01 20:23:04 +02:00
bb35a80177
%option splitarrays now also at module level
2023-05-31 21:50:41 +02:00
24fc95ac81
fix atari target syslib
2023-05-31 20:58:00 +02:00
8f864417c4
added %option splitarrays (block level)
2023-05-31 18:49:21 +02:00
bb9d29b061
fix an array literal assignment type error for word arrays
2023-05-30 22:46:37 +02:00
b9d8ec1463
add -splitarrays command line option
2023-05-30 19:08:34 +02:00
1842a7660d
fix compiler crash on missing arguments for clamp,min,max
2023-05-30 18:13:58 +02:00
5caa2f5536
attempt to get newer 64tass from debian testing repo
2023-05-29 23:46:47 +02:00
d6078be8b7
attempt to get newer 64tass from debian testing repo
2023-05-29 23:44:10 +02:00
cf60723f14
attempt to get newer 64tass from debian testing repo
2023-05-29 23:43:08 +02:00
f7ff0a2b1d
attempt to get newer 64tass from debian testing repo
2023-05-29 23:39:00 +02:00
cc49664b2f
attempt to get newer 64tass from debian testing repo
2023-05-29 23:34:34 +02:00
99fe74f026
attempt to get newer 64tass from debian testing repo
2023-05-29 23:31:23 +02:00
b021869eeb
attempt to get newer 64tass from debian testing repo
2023-05-29 23:24:48 +02:00
b8806d163b
attempt to get newer 64tass from debian testing repo
2023-05-29 23:22:05 +02:00
1116aae1de
attempt to get newer 64tass from debian testing repo
2023-05-29 23:18:15 +02:00
5e5f60253b
attempt to get newer 64tass from debian testing repo
2023-05-29 23:14:22 +02:00
bbc02752c9
use split word arrays in various examples, fix codegen issue, docs
2023-05-29 15:34:33 +02:00
9896bc110e
fix some split array issues in 6502 codegen
2023-05-28 22:49:33 +02:00
ca60f8ecdd
Merge branch 'master' into split-arrays
2023-05-28 22:35:16 +02:00
544acd1e35
Merge branch 'v8_maintenance'
2023-05-28 22:30:52 +02:00
6e07602d77
fix psg initial envelope maxvol setting
2023-05-28 22:30:34 +02:00
82898f7bba
fix some split array issues in 6502 codegen
2023-05-28 22:24:56 +02:00
d61283a8bc
Merge branch 'master' into split-arrays
2023-05-28 14:25:37 +02:00
1ee3f826cc
fix sqrt() regression
2023-05-28 14:23:47 +02:00
4a00a5ba9e
use split word arrays in various examples
2023-05-28 13:51:58 +02:00
39eda67867
Merge branch 'master' into split-arrays
...
# Conflicts:
# examples/test.p8
2023-05-28 13:28:43 +02:00
a99d38fdaa
Merge branch 'v8_maintenance'
...
# Conflicts:
# examples/test.p8
2023-05-28 13:26:05 +02:00
0eb2d437e2
fix compiler error and codegen fault on signed value bitwise operation
2023-05-28 13:13:11 +02:00
3ac9036c79
more split array stuff for 6502
2023-05-27 22:44:45 +02:00
c94e292176
more split array stuff
2023-05-27 12:47:11 +02:00
91d87c2d9b
Merge branch 'master' into split-arrays
2023-05-26 20:22:30 +02:00
ff472f69c0
update gradle wrapper to 8.1.1
2023-05-26 20:21:34 +02:00
e18119e24c
Merge branch 'master' into split-arrays
2023-05-26 19:25:57 +02:00
4a592dc64c
kotlin 1.8.21
2023-05-26 19:20:56 +02:00
d9e13201dd
fix kotlin version IDE warning
2023-05-26 19:14:19 +02:00
5c75b19c5d
fix kotlin version IDE warning
2023-05-26 19:13:21 +02:00
52a77db60f
adding split array type
2023-05-26 19:11:07 +02:00
0513c250fb
Merge branch 'v8_maintenance'
2023-05-23 20:42:51 +02:00
48864ad6cf
add a unit test that checks for 64tass availability
2023-05-23 20:42:36 +02:00
cdbccad21e
optimized gfx2 plot and horizontal_line a bit more
2023-05-23 20:29:17 +02:00
e15bc68c9b
added gfx2.fill() flood fill routine
2023-05-23 00:50:10 +02:00
8bffd7672d
added sys.irqsafe_set_irqd()/irqsafe_clear_irqd()
2023-05-22 21:13:20 +02:00
61df5b3060
Merge branch 'v8_maintenance'
...
# Conflicts:
# compiler/res/prog8lib/cx16/syslib.p8
2023-05-22 20:43:05 +02:00
b5255444cd
irq-safe irqd handling for RDTIM16
2023-05-22 20:36:33 +02:00
0c94e377fc
Merge branch 'v8_maintenance'
2023-05-21 16:09:31 +02:00
8e5c67b4b2
ir: don't refuse complicated array lookup expressions
2023-05-21 16:07:19 +02:00
b24f2f1756
Merge branch 'v8_maintenance'
...
# Conflicts:
# compiler/res/prog8lib/cx16/syslib.p8
# examples/test.p8
2023-05-21 15:05:17 +02:00
c69c17de42
cx16 avoid ram bank issue with RDTIM in sys.wait() and c64.RDTIM16()
2023-05-21 15:03:33 +02:00
061617122a
Merge branch 'v8_maintenance'
...
# Conflicts:
# examples/test.p8
2023-05-20 18:07:57 +02:00
125ce3240f
expr operands assignment refactor
2023-05-20 18:04:46 +02:00
7215efe167
fix expr eval error in certain situations
...
such as pokew() with 2 complex operands
2023-05-20 17:42:35 +02:00
06d1570142
cx16: added diskio.save_raw() headerless save routine
2023-05-20 00:00:50 +02:00
093c370faa
todo
2023-05-19 01:26:15 +02:00
aec9574737
Merge branch 'v8_maintenance'
...
# Conflicts:
# compiler/res/version.txt
# docs/source/todo.rst
# examples/test.p8
2023-05-18 22:47:06 +02:00
7ceb76cff5
fix compiler crash on certain operands type mismatch
2023-05-18 22:46:00 +02:00
300e2fe9f8
IR: wrong attempt at optimizing register usage by reusing registers inside different code chunks
2023-05-18 21:57:21 +02:00
91e1643627
update 3rd party libraries
2023-05-18 11:47:30 +02:00
91421b0c62
IR handy sequence shortcut functions
2023-05-18 11:32:20 +02:00
40f611664f
upgr
2023-05-18 00:04:31 +02:00
dcba4f4098
fix resultregister crash
2023-05-18 00:00:37 +02:00
c098ad2b3b
fix vm minf/maxf
2023-05-17 23:18:14 +02:00
b43223cb7a
added clamp() builtin function and floats.clampf()
2023-05-17 23:12:58 +02:00
e243531dab
upgrading
2023-05-17 00:49:47 +02:00
1af38e62bc
removed floats.fabs() and floats.sqrt()/fsqrt()
2023-05-17 00:46:15 +02:00
f37f062cdc
fix for loop pre-check
2023-05-17 00:33:55 +02:00
7e734214dc
v8_maintenance branch made
2023-05-15 23:01:43 +02:00
05d152746f
Merge branch 'master' into version_9
2023-05-15 22:43:03 +02:00
dea7f37553
vm: fix % result when dividing by 0
2023-05-15 20:33:20 +02:00
415c599310
update cx16 keyhandler example to r43 keyboard changes
2023-05-14 23:38:16 +02:00
70cd4fedbe
Revert "update cx16 keyhandler example to r43 keyboard changes"
...
This reverts commit 1e6d7673bc
.
2023-05-14 23:29:04 +02:00
1e6d7673bc
update cx16 keyhandler example to r43 keyboard changes
2023-05-14 23:11:24 +02:00
b4963b725b
Merge branch 'master' into version_9
...
# Conflicts:
# compiler/res/version.txt
2023-05-14 22:19:23 +02:00
0371ffa4ce
'amiga' example using iso font
2023-05-14 21:55:35 +02:00
6a664a7e15
Merge branch 'master' into version_9
2023-05-14 21:03:08 +02:00
88ce9300bc
fix parse cpureg in IR regspec
2023-05-14 21:02:40 +02:00
85cf0e311c
Merge branch 'master' into version_9
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# docs/source/todo.rst
# intermediate/src/prog8/intermediate/IRInstructions.kt
2023-05-14 20:47:09 +02:00
0e3d75cfeb
move irType() to intermediate module
2023-05-14 20:44:32 +02:00
630c8a5faa
IR: fix romsub encoding
2023-05-14 18:08:06 +02:00
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
1e469b3b0f
Merge branch 'master' into version_9
...
# Conflicts:
# docs/source/todo.rst
# examples/test.p8
2023-05-09 22:45:21 +02:00
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
bd2bcb6994
Merge branch 'master' into version_9
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# compiler/res/prog8lib/c128/syslib.p8
# compiler/res/prog8lib/c64/syslib.p8
# compiler/res/prog8lib/cx16/syslib.p8
# docs/source/todo.rst
# examples/test.p8
# intermediate/src/prog8/intermediate/IRInstructions.kt
2023-05-08 23:17:52 +02:00
4c8898a639
fix typecheck crash on certain byte to word assignments
2023-05-08 23:02:48 +02:00
97df33ab1a
IR: fix byte to word assignment not doing value extension
2023-05-08 22:47:00 +02:00
ef46fb2685
refactor
2023-05-08 21:51:55 +02:00
d5d6dd3614
optimize typecast expr
2023-05-08 03:30:14 +02:00
6c233c6a0a
optimize add/sub expr
2023-05-08 02:41:34 +02:00
6db715d879
optimize multiplication expr
2023-05-08 02:10:54 +02:00
ab02e8a546
optimize more carry flag assembly
2023-05-07 23:55:34 +02:00
8cbfe64f19
optimize some carry flag assembly
2023-05-07 23:27:49 +02:00
fd1e9971e4
asmsub Pc params and returnvalue must be boolean
2023-05-07 22:59:30 +02:00
68336a76c5
optimized word comparison expressions
2023-05-07 20:40:48 +02:00
393e914a86
optimized word equality comparison expressions
2023-05-07 18:55:17 +02:00
ffb54110e9
optimized byte comparison expressions
2023-05-07 15:15:58 +02:00
533d825f1a
optimized ubyte comparison expressions
2023-05-07 14:47:31 +02:00
c65279b672
optimized logical expressions more
2023-05-07 13:29:45 +02:00
f9926beeef
fix cx16.psg irq issue
2023-05-04 00:16:24 +02:00
add8a777d8
IR: binarydata fixes
2023-05-03 22:31:04 +02:00
21bc505d85
for loops no longer execute when from var already reached beyond the end
2023-05-03 00:43:03 +02:00
3fc49c001e
IR: fix for-loop codegen when step<0
2023-05-02 23:12:11 +02:00
3d69a95c49
IR: fix for-loop codegen when step<0
2023-05-02 23:09:42 +02:00
d81fdf6d6b
for loops...
2023-05-02 22:55:58 +02:00
87d3109ffb
diskio f_seek_w() abandoned due to unreliability
2023-05-02 19:33:49 +02:00
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
24aac7cee5
cleaning up the diskio modules
2023-05-02 02:15:22 +02:00
53e18a5387
Api change: drivenumber parameter removed from all routines in diskio and cx16diskio modules
2023-05-02 01:48:56 +02:00
92062d056d
divmod() now works on multiple data types including float.
...
divmodw() has been removed
2023-05-02 01:19:53 +02:00
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
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
319079de7a
sqrt
2023-05-02 01:19:53 +02:00
025bf900a5
min max docs, added floats.minf() and maxf()
2023-05-02 01:19:53 +02:00
2885f4f7b1
fix
2023-05-02 01:19:53 +02:00
c07eda15b1
adding min() and max()
2023-05-02 01:19:53 +02:00
4274296cf3
api change: new 'cbm' module that now contains the common CBM kernal variables and routines.
2023-05-02 01:19:53 +02:00
76a203d4df
api change: rename builtin func sqrt16 to sqrtw
2023-05-02 01:19:53 +02:00
24f37e2062
fix
2023-05-02 01:19:36 +02:00
f465b2e2a0
some improvements to IR peephole optimizer
2023-05-02 00:29:04 +02:00
ce00e49a89
version 8.12
2023-04-30 14:04:54 +02:00
d494f9d66b
fix
2023-04-29 18:04:08 +02:00
c35a183a64
extra fix
2023-04-29 17:24:01 +02:00
9cdd5fe7f2
fix byte to word sign extension error in certain cases
2023-04-29 17:14:50 +02:00
c21428215e
fix possible mkword() error
2023-04-29 14:39:14 +02:00
64d5af46f5
fix IDEA kotlin version
2023-04-29 14:23:40 +02:00
25846ea18a
fix zsound stream example (missing sound file)
2023-04-29 13:02:24 +02:00
798383596d
fix %option merge possible error
2023-04-29 00:01:59 +02:00
9ca71bc937
fix %option merge not choosing correct block to merge into
2023-04-28 23:52:02 +02:00
5407429ec0
improve error message
2023-04-28 23:32:19 +02:00
ee5c94f6db
c128: fix key status zp location symbols
2023-04-28 20:43:26 +02:00
91045afbee
document limited fp support
2023-04-28 18:18:41 +02:00
3f64782023
c128: remove floats module
2023-04-28 17:48:54 +02:00
f8d35f9502
c128: no FP support
2023-04-28 17:43:42 +02:00
ea78d3ec9a
c128: better ZP definition
2023-04-28 17:08:56 +02:00
e056a28316
c128: fix memory bank resetting
2023-04-28 04:02:07 +02:00
0bea721c2e
docs
2023-04-27 01:26:25 +02:00
e1b89494d0
tiny psg improvement to avoid clicks more on changing freq or envelope, added cx16.vpoke_mask()
2023-04-26 22:45:32 +02:00
cd8e7f3912
psg comment
2023-04-24 01:23:03 +02:00
50604c25c2
remove obsolete comments, updated links and docs.
2023-04-23 15:13:53 +02:00
aa6b2357d8
fix void warnings
2023-04-18 23:47:31 +02:00
5b2d29bef6
improved and added a few system routines for the cx16
2023-04-18 23:20:28 +02:00
a296d26328
api change: renamed cx16.push/pop_vera_context() to save/restore_vera_context()
...
this better reflects its capability because it doesn't use a stack, only a single buffer
2023-04-17 23:37:15 +02:00
d01a26ec61
fix occasional crash when indexing an undefined array variable
2023-04-16 05:23:06 +02:00
efd7d6f0c0
tweak IR call args setting now via special SETPARAM instruction
2023-04-14 02:10:39 +02:00
b55be093be
tweak IR
2023-04-11 22:48:20 +02:00
7c1d5cadd7
fix sort and reverse on strings on 6502 codegen
2023-04-10 19:33:24 +02:00
dd1592b03b
ir syscalls args via stack instead of fixed r65500+
2023-04-10 18:02:37 +02:00
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
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
ac21e1be5c
vm syscall instruction no longer fixed to r0
2023-04-10 13:44:05 +02:00
5196443b26
fix
2023-04-10 12:16:52 +02:00
c8531cbeb1
remove unused variables from IR output
2023-04-09 23:09:30 +02:00
c560abedba
fix compiler crash on rol/ror array value
2023-04-09 22:29:11 +02:00
9b952fbc44
tweaking IR instruction set branch instructions
2023-04-09 22:17:19 +02:00
ccdf05e922
tweaking IR instruction formats
2023-04-09 16:12:16 +02:00
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
f47498888c
optimize imports
2023-04-07 22:34:23 +02:00
5665a7f0cb
also track ir reg types
2023-04-07 22:24:17 +02:00
b8178c6c8d
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# docs/source/todo.rst
2023-04-06 21:25:06 +02:00
4a0f15eb88
some loose ends
2023-04-06 21:19:21 +02:00
c4f53fe525
IR: small optimization
2023-04-05 22:55:54 +02:00
8c93ec52de
IR: fix augmented assignments
2023-04-05 22:13:18 +02:00
befe0fff2a
IR: fix comparison codegen errors in newexpr path
2023-04-05 00:15:09 +02:00
b6a837cbea
fix boolean array with initialization value
2023-04-04 22:11:51 +02:00
4861973899
vm: fix float arrays init values
2023-04-04 00:06:55 +02:00
c593e4b500
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# docs/source/memorymap.odg
# docs/source/memorymap.svg
2023-04-03 23:04:29 +02:00
5bf78c20d4
update to Kotlin 1.8.20, docs update
2023-04-03 23:04:00 +02:00
5c672130e6
update to Kotlin 1.8.20
2023-04-03 22:42:27 +02:00
d8214d4f12
fix IR array indexing for newexpr
2023-04-03 03:13:35 +02:00
64d1f09ce0
new diagrams
2023-04-03 00:32:12 +02:00
47d0f0ea40
implement missing operators in IR code gen
2023-04-01 02:29:33 +02:00
2d85fd093e
Merge branch 'new-expr-codegen'
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
# codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt
# examples/test.p8
2023-03-29 23:56:16 +02:00
d936568b76
added divmod()
and divmodw()
builtin functions to efficiently compute division and remainder in a single call
2023-03-29 23:46:44 +02:00
4598a83e8e
fixing new comparisons
2023-03-29 22:06:32 +02:00
f4bf00ad31
fix string compare and ifelse
2023-03-28 22:46:01 +02:00
07fde7f6cc
fix IR same register error
2023-03-28 20:01:26 +02:00
729209574e
fixing str compares codegen
2023-03-28 20:01:26 +02:00
f28206d989
new attempt
2023-03-28 20:01:26 +02:00
0c81b32cac
todo
2023-03-28 20:01:26 +02:00
11216017cb
fix IR same register error
2023-03-28 20:00:21 +02:00
a7b9f53967
fix word comparison bug in asmgen
2023-03-26 23:44:06 +02:00
1fa2e2e37d
3rd party library versions upgrades
2023-03-26 21:36:21 +02:00
f67d5faeb7
allow .123 as float literal syntax. Fixes #103
2023-03-26 21:09:15 +02:00
5cbf859458
cleanup
2023-03-26 15:08:57 +02:00
629ed74d09
got rid of rpn deadend code...
2023-03-25 18:45:17 +01:00
ca2af2ca63
todo
2023-03-25 18:23:33 +01:00
52ab089615
rpn: implement more comparisons
2023-03-25 18:21:10 +01:00
01461a196d
implementing optimized comparisons
2023-03-25 00:08:21 +01:00
04832f052a
working on doing comparison codegen differently
2023-03-25 00:08:21 +01:00
c8b2c8ae50
extra asmvars now also moved into BSS section instead of taking up space inline
2023-03-25 00:00:29 +01:00
1b81c7fb22
fix warnings
2023-03-24 22:50:01 +01:00
9ccda0247e
Merge pull request #102 from Frosty-J/vera
...
DC_VER0 through 3
2023-03-24 02:10:23 +01:00
a7df4dcf25
added cx16 bubbleuniverse example
2023-03-24 01:59:00 +01:00
d91f47c791
fix cx16 graphics.plot() colors, and FB_set_palette definition
2023-03-24 01:56:29 +01:00
a9ac4e7f44
Even more VERA_DC constants!
2023-03-23 17:29:28 +00:00
fc3ec57437
fix wrong branch in in-place byte equality expression
2023-03-23 00:45:47 +01:00
266f6ab919
check
2023-03-22 20:15:24 +01:00
6218c1c00b
fix too greedy expression simplification
...
could cause problems when variables occur multiple times in the same expression.
Fixes #101
2023-03-22 18:25:28 +01:00
cc81d6fe82
remove traces of ** operator
2023-03-22 00:51:58 +01:00
69f9102f2d
rtd fix attempt
2023-03-22 00:31:23 +01:00
beb9275982
rtd fix attempt
2023-03-22 00:16:33 +01:00
abe48713f2
rtd fix attempt
2023-03-22 00:12:47 +01:00
82cfaf2fbb
rtd fix attempt
2023-03-22 00:10:18 +01:00
3d3bc4738f
rtd fix attempt
2023-03-22 00:07:01 +01:00
2d0746f5a4
rtd fix attempt
2023-03-21 23:52:49 +01:00
9c71e2f1c8
rpn optimizations
2023-03-21 18:41:37 +01:00
134fd62da8
RPN: better handling of bit shifts
2023-03-21 02:58:26 +01:00
2afd283582
optimize RPN
2023-03-21 00:05:32 +01:00
c66734bab0
fix cx16 ubyte to float cast (wrong rom routine)
2023-03-20 23:25:28 +01:00
8e56a61f95
tweak
2023-03-20 22:41:58 +01:00
d265271148
fix rpn variable depth clobber and type error
2023-03-20 22:18:10 +01:00
b40e397b28
fix rpn result type mismatch
2023-03-20 00:58:48 +01:00
35ff1d996a
only reuse actual counter vars
2023-03-19 21:53:49 +01:00
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
c50c9ca545
Merge branch 'rpn-expressions'
2023-03-19 17:36:20 +01:00
a819b4a5a5
fix RPN issues
2023-03-19 17:35:28 +01:00
df2d7d4734
fix RPN comparison exprs
2023-03-19 16:08:48 +01:00
79ce4098cf
todo
2023-03-19 01:34:55 +01:00
374464a1f8
weird condition operator...
2023-03-19 01:32:20 +01:00
c8d0bf27af
get rid of useless scope param
2023-03-19 00:58:45 +01:00
6e4ae034b2
more Rpn optimizations
2023-03-19 00:48:12 +01:00
52b560e72d
more Rpn optimizations
2023-03-18 19:13:32 +01:00
9b971ad222
fix PeekW and PokeW optimizations
2023-03-18 17:36:32 +01:00
3613162d09
fix RPN string comparisons
2023-03-18 16:55:03 +01:00
3a272e998d
Merge branch 'master' into rpn-expressions
2023-03-18 14:42:38 +01:00
d4c750beb4
fix cx16/bdmusic and sincos examples
2023-03-18 14:42:15 +01:00
84b31e65e1
more rpn optimization
2023-03-18 14:23:17 +01:00
7b802bfd3d
Merge branch 'master' into rpn-expressions
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt
2023-03-18 13:39:14 +01:00
f9c4632b8d
c64: remove 2 problematic ZP locations from the free list when using floating point
2023-03-18 13:36:19 +01:00
e4764cd8a6
fix typo in comparison function and in pointer optimization
2023-03-18 12:55:35 +01:00
dd78a3a686
fix typo in comparison function
2023-03-18 12:52:50 +01:00
94c06e13f4
implementing Rpn optimizations 2
2023-03-18 12:43:45 +01:00
e8bebe5a75
implementing Rpn optimizations
2023-03-18 01:13:02 +01:00
5b0e1b4f9e
a little rpn refactor
2023-03-17 23:04:56 +01:00
8c0a93779b
added first implementation of RPN 6502 codegen - all via stackeval still
2023-03-17 22:28:22 +01:00
9241479da4
add "-rpn" command line switch to transform exprs to RPN in codegen
2023-03-17 22:28:22 +01:00
8ffca93cd5
added transform routine for expr -> RPN
2023-03-17 22:28:22 +01:00
7fea0c124a
introduce PtRpn node to replace PtBinaryExpression later
2023-03-17 22:28:22 +01:00
20dbdb20d2
renamed the cx16 VIA register variables to more meaningful names
2023-03-17 22:28:09 +01:00
e6b8e2e8be
attempt at doc fix
2023-03-17 22:15:21 +01:00
7c5b7f77cc
attempt at doc fix
2023-03-17 22:12:47 +01:00
de84547a21
attempt at doc fix
2023-03-17 22:06:06 +01:00
44676756ae
don't print weird position link for library files
2023-03-17 00:50:17 +01:00
b399b0f182
don't print weird position link for dummy positions
2023-03-16 23:37:33 +01:00
1152191f48
add optimization: replace simple for loops by repeat loop
2023-03-15 21:11:37 +01:00
af1b07ad44
add more referencesIdentifier() on ast nodes
2023-03-15 20:44:24 +01:00
b8113fff1e
todo
2023-03-15 01:05:48 +01:00
ff6948cf2d
syntax defs for unroll
2023-03-14 23:52:07 +01:00
fd25e85d59
added unroll
loop construct
2023-03-14 23:37:49 +01:00
c07cd72e85
restored the non=problematic asm optimization steps...
2023-03-14 22:30:50 +01:00
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
92276b5769
IR fix unneeded register allocated for array indexing with variable
2023-03-14 21:24:44 +01:00
a2133f61a8
get rid of all the require() checks that test result regs to be different
2023-03-14 01:01:46 +01:00
199adbbcf0
IR: don't allow to have 2 same registers on instructions
2023-03-14 00:45:41 +01:00
dc316fd7b4
IR: more optimal branch instructions for comparisons against zero
2023-03-13 23:17:53 +01:00
025183602f
refactor IR returnregs 6
2023-03-13 21:35:23 +01:00
db4619a9d9
refactor IR returnregs 5
2023-03-13 04:16:50 +01:00
451e527b7c
refactor IR returnregs 4
2023-03-13 03:54:16 +01:00
54dd3a00df
refactor IR returnregs 3
2023-03-13 03:20:06 +01:00
03c5dab79d
refactor IR returnregs 2
2023-03-13 02:50:41 +01:00
1fdee861e8
refactor IR returnregs
2023-03-13 00:32:48 +01:00
c12bf991b3
reintegrate into existing IR optimizer
2023-03-12 22:16:20 +01:00
78a097585d
new IR call and return instructions to deal with returnregisters
2023-03-12 21:54:59 +01:00
39132327cc
added optimizer for IR code
...
with two very simple optimizations
2023-03-12 20:30:51 +01:00
dc32318cec
fix possible string error on inlined subroutines
2023-03-12 18:16:48 +01:00
592f74124c
fix startup subroutine linking in VM
2023-03-12 16:09:55 +01:00
e5e63cc5ac
catch wrong repeat value
2023-03-11 16:13:02 +01:00
f40e0f786d
txt.width() and txt.height() added for vm target
2023-03-11 16:05:45 +01:00
ebd9f1471b
fix crash when using const word as pointer and implement 2 missing assign codegen paths
2023-03-11 15:39:03 +01:00
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
4600772e05
fix pokew mistake
2023-03-11 01:03:34 +01:00
ed597423cd
fix problem with initializing certain array decls with single value
2023-03-11 00:43:30 +01:00
f20ca06f85
give correct error when using memory mapped var as array pointer
2023-03-11 00:26:19 +01:00
a636d3f394
give correct error on attempt to const array
2023-03-10 23:46:13 +01:00
043df18daa
set X to bottom part of eval stack in irq handler. fixes #94
2023-03-10 23:29:34 +01:00
96996bf18e
be less aggressive with translating adds/subs into auto inc/decrements, to avoid code bloat
2023-03-10 23:01:55 +01:00
f350137a14
fix array in place assignments
...
fixes balls and snow examples amongst others
2023-03-10 04:07:50 +01:00
b7a6f3ec75
fix compiler not optimizing x+=1 into x++ anymore
2023-03-10 02:45:25 +01:00
6c34672549
array in-place assignment problem
2023-03-10 02:02:47 +01:00
e779a07bce
allow when with byte 1,2,3 for word variables without having to cast the values to word explicitly
2023-03-09 22:15:56 +01:00
9a36e8ba3b
todo
2023-03-09 00:00:03 +01:00
c968bacb01
fix pokew() crash with certain address expressions
2023-03-08 23:29:57 +01:00
25199dfb43
change tokenizer so that A,X,Y now are parsed correctly as identifiers as well
2023-03-08 22:57:19 +01:00
48fed4e6fb
slight tweak to codegenerator backend interface
2023-03-08 00:14:38 +01:00
fc253237c9
fix issues with reporting inlined subroutines as unused
2023-03-07 23:47:14 +01:00
589948c7f4
fix IR translateIfElseNonZeroComparison for ints + floats
2023-03-07 23:07:51 +01:00
7e69690605
fix IR translateIfFollowedByJustGoto for ints + floats
2023-03-07 22:04:02 +01:00
95f498ba9b
fix IR translateIfElseZeroComparison for ints + floats
2023-03-07 21:26:34 +01:00
fd07ae5225
fix various IR file and symboltable issues
2023-03-07 19:40:11 +01:00
8acd94fc89
avoid work
2023-03-05 12:32:58 +01:00
1436480eab
added a few more comparison expression optimizations
2023-03-04 16:01:40 +01:00
448d176c24
fix vm crash on empty string
2023-03-04 15:35:54 +01:00
fd269453a4
todos
2023-03-04 14:14:01 +01:00
b3b380964c
remove searchParameter() from lookups
...
it shouldn't be needed to look up subroutine parameters by scoped name
2023-03-04 13:24:33 +01:00
6e9025ebf2
cx16 fix irq statusbit handling and kefrenbars example
2023-03-03 21:58:08 +01:00
3922691b3c
limit to 48828 hz sample rate (vera max)
2023-03-03 18:04:21 +01:00
0545b77cf4
ask for filename
2023-03-03 17:24:16 +01:00
6b3f39fa1a
oops
2023-03-03 17:17:19 +01:00
3114ab87dc
add 8 bit sample width support
2023-03-03 17:12:44 +01:00
00bc99cc7b
added cx16/stream-wav example, refactor pcmaudio code
2023-03-03 14:18:13 +01:00
540b3ae2f4
tweak BinaryExpression splitting
2023-02-28 21:45:38 +01:00
dbfe4140e1
improved import search paths
2023-02-28 20:08:11 +01:00
d3675ec254
gone, deprecated
2023-02-27 23:41:22 +01:00
ded2483fc0
cx16 startup code now properly turns off mouse cursor
2023-02-27 23:35:42 +01:00
e62ea388e0
tweak cx16 adpcm example
2023-02-24 01:38:03 +01:00
f20356e9be
cx16.callfar
signature has been changed to be easier to use
2023-02-23 23:06:20 +01:00
d282a2d846
remove cx16.callrom()
just use callfar
2023-02-23 23:02:56 +01:00
4641ac46e7
extra question in porting guide for high ram
2023-02-22 22:56:43 +01:00
ba9268a09e
added -varshigh
compiler option to move BSS section.
...
Documented BSS a bit in the manual.
2023-02-22 22:44:29 +01:00
fb9902c536
avoid const fold loop on const bool thing=true
...
fixes #97
2023-02-22 21:27:08 +01:00
5318ba6c6e
shrink evalstack from 2 to 1 page
...
c64=$cf00-$cfff, x16: $0700-$07ff
2023-02-21 22:52:04 +01:00
fd5ebef488
cx16 startup code now also selects ram bank 1
2023-02-21 21:53:32 +01:00
d9e4f39ddc
memset BSS section to zero all at once, less individual var=0 assigns
2023-02-21 00:26:21 +01:00
435b9d8973
get rid of 'noreinit' option for now, because it resulted in unreliable code
2023-02-20 23:29:16 +01:00
0ea70ba656
fix proper initialization of zeropagevars with 'noreinit'
2023-02-20 23:05:27 +01:00
92a07b87d2
clearer
2023-02-20 02:32:36 +01:00
c3c82282ba
reinitGlobals option is clearer than the inverse
2023-02-19 19:09:29 +01:00
adc15c24ef
introduce bss segments
2023-02-19 18:12:37 +01:00
dddf9a9396
remove explicit 'bss' from St var, changed to 'uninitialized'
2023-02-19 16:50:06 +01:00
9ca6860ffa
tweak
2023-02-19 15:08:16 +01:00
f7dd388954
remove unsupported floats.FTOSWRDAY routine. Fixes #96
2023-02-17 18:05:46 +01:00
6012839f0e
todo
2023-02-16 23:06:09 +01:00
8e9cbab053
todo
2023-02-16 22:53:16 +01:00
aaf375a57b
move some utility methods into Pt Ast nodes itself
2023-02-16 22:45:35 +01:00
3cce985f03
check float bits
2023-02-16 22:22:12 +01:00
c59df6ec20
optimize isZpVar
2023-02-16 00:41:20 +01:00
5c3f41f64d
reintroduce explicit PtAugmentedAssign ast node
2023-02-15 22:54:32 +01:00
cf3523f49f
Merge branch 'codegen-on-new-ast'
2023-02-14 22:48:11 +01:00
db794752cb
fix ast error on inline sub
2023-02-14 22:37:33 +01:00
bceaebe856
fix crash on sort/reverse unused arrays
...
fixes #95
2023-02-14 00:26:29 +01:00
3916de2921
attempt to clarify docs of cx16.numbanks()
2023-02-13 23:45:53 +01:00
9e0f8c1a97
remove avg() from syntax defs, it doesn't exist anymore
2023-02-13 22:31:06 +01:00
0cbc56b82e
remove unused ast print func
2023-02-13 00:19:48 +01:00
b95608f68a
new common ICodeGeneratorBackend interface for all code generator classes
2023-02-12 23:52:54 +01:00
b6e5dbd06c
optimized away VarDecl.subroutineParameter
2023-02-12 23:19:35 +01:00
914f19be86
version 8.9
2023-02-12 17:38:13 +01:00
f09bcf3fcf
Merge branch 'master' into codegen-on-new-ast
2023-02-12 17:36:18 +01:00
d0b18dec8e
shuffle variable sorting around to attempt smaller compiled programs
2023-02-12 17:34:33 +01:00
75d486b124
fix variable node casting
2023-02-12 17:04:58 +01:00
4914609485
local varnames and fix uninitialized parents
2023-02-12 16:00:58 +01:00
75bd66326a
fix variable zpwish
2023-02-11 15:18:57 +01:00
8f904f75bb
Merge branch 'master' into codegen-on-new-ast
2023-02-11 14:40:23 +01:00
549c598f51
variables sorted in asm
2023-02-11 14:35:56 +01:00
ed68d604d6
fix break as indirect jump
...
fix subroutine param scoped name
2023-02-11 01:21:27 +01:00
f83752f43b
update compiler internals diagram
2023-02-09 23:15:19 +01:00
86c22636eb
Merge branch 'master' into codegen-on-new-ast
2023-02-09 23:05:54 +01:00
30d20a453b
tweak SymbolTable and fix its unittest
2023-02-09 22:58:21 +01:00
fe29d8a23f
tweak codegen of inline sub
2023-02-09 21:59:09 +01:00
694d088160
some cleanups about asmsub return registers and types
2023-02-09 03:19:57 +01:00
6aabbffc62
some cleanups
2023-02-09 02:34:18 +01:00
7b59bc8d12
avoid division by zero if host fs hyperload is used which loads instantly
2023-02-08 01:37:49 +01:00
79d0fb0b52
cx16.numbanks() now returns a word because the result can be >255
2023-02-08 00:51:34 +01:00
edf56d34f8
doc about no conditional compilation, fixes #93
...
also added a note to MEMTOP about 0 result
2023-02-06 23:36:19 +01:00
623329fb33
fix
2023-02-05 17:08:24 +01:00
9f0074eef9
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# codeCore/src/prog8/code/ast/AstStatements.kt
2023-02-05 16:44:30 +01:00
6733253826
added printer for Pt Ast tree
2023-02-05 16:42:06 +01:00
f117805129
order
2023-02-05 12:36:32 +01:00
c75b1581d2
lookup via new ST
2023-02-05 01:15:23 +01:00
109e118aba
fix sub return register
2023-02-03 21:16:44 +01:00
201b77d5b6
boolean vs byte cast fixing, and pointervar error
2023-02-02 00:57:20 +01:00
a5ca08f33d
fix popCpuStack to load values into asmsub register params
2023-02-01 22:00:37 +01:00
86210c4513
clarification
2023-02-01 20:58:40 +01:00
988a3e4446
group the three Pt nodes that represent a variable in the p8 source under single interface IPtVariable
2023-01-31 23:29:15 +01:00
0f5cd22bb7
more codegen fixes
2023-01-31 22:57:26 +01:00
2f5bed36b3
remove bool to ubyte typecasts
2023-01-31 01:25:44 +01:00
5b6534bb28
fix symbol lookup in new ast and minor codegen errors
2023-01-31 00:18:21 +01:00
e31e5b2477
got rid of PtScopeVarsDecls
2023-01-29 13:49:27 +01:00
07d5fafe2e
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# compiler/src/prog8/compiler/astprocessing/IntermediateAstMaker.kt
2023-01-29 13:34:00 +01:00
e08da659e5
got rid of PtScopeVarsDecls node, just insert variable nodes directly
2023-01-29 13:25:15 +01:00
8a4979f44c
vm target 'zeropage' more robust
2023-01-29 12:47:12 +01:00
e67464325f
fix missing symboltable entries for asmgen
2023-01-28 00:00:23 +01:00
94c9b0d23b
Merge branch 'master' into codegen-on-new-ast
2023-01-27 22:14:57 +01:00
e9ec310d8a
upgrade to kotlin 1.8.0
2023-01-27 22:14:10 +01:00
c78d1e3c39
implemented Pt findTarget and siblings
2023-01-27 01:51:21 +01:00
e94319145f
test
2023-01-26 01:41:44 +01:00
3f3b01b5f6
Merge branch 'master' into codegen-on-new-ast
2023-01-26 01:40:30 +01:00
19a2791c65
vm target can't use asmsub at all, give better error for that
2023-01-26 01:38:13 +01:00
4e8ccf0ef3
Merge branch 'master' into codegen-on-new-ast
2023-01-26 00:38:54 +01:00
f1a7d5ecf7
docs
2023-01-26 00:37:30 +01:00
8b05abb80d
proper error when attempting to refer to parameters of asmsub by name
2023-01-25 23:41:08 +01:00
48c9349ce9
working on codegen fixes
2023-01-25 01:57:25 +01:00
117d848466
consolidate builtin function definitions into codeCore
2023-01-25 00:23:00 +01:00
9a2df072cc
tiny correction
2023-01-24 22:48:44 +01:00
99c62aab36
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# examples/test.p8
2023-01-24 01:51:20 +01:00
224278e07a
correct openjdk-11 sdk setting in project files instead of just 11
2023-01-24 01:49:38 +01:00
74b69e191e
restructure keyboardhandler example due to X register bug, discussed in #94
2023-01-24 01:30:57 +01:00
8cda8a727c
update vtui example to vtui 1.0
2023-01-24 01:00:21 +01:00
a3c0c7c96f
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/IRCodeGen.kt
# examples/test.p8
2023-01-22 18:30:37 +01:00
4403e4ed62
optimize node renames
2023-01-22 18:26:37 +01:00
9b209823f6
simple test
2023-01-22 17:10:52 +01:00
b2cb125bd4
more 6502 codegen on new Pt-AST.
2023-01-22 17:10:52 +01:00
5e8f767642
6502 codegen on new Pt-AST.
2023-01-22 17:10:52 +01:00
6ee270d9d8
make name a var in new ast to allow cheap renames
2023-01-22 17:10:04 +01:00
44fa309d20
tweak action
2023-01-21 15:29:11 +01:00
58d88f3dd4
github action and update tool docs
2023-01-21 14:47:32 +01:00
e980c23177
github action
2023-01-21 14:25:17 +01:00
75224321bb
github action
2023-01-21 14:19:01 +01:00
801af05b20
github action
2023-01-21 14:02:08 +01:00
7611dbbddc
fix action
2023-01-21 13:47:09 +01:00
6d40ca15bc
github action
2023-01-21 13:39:30 +01:00
32c1c19224
tweak sys.wait() routines on various targets
...
add warning to docs about FP usage in IRQ
2023-01-20 03:29:10 +01:00
bbf6357222
remove workaround for black cursor at boot as this was recently fixed in the kernal rom.
2023-01-17 23:27:27 +01:00
dc16629c24
todo
2023-01-04 23:57:59 +01:00
3718b9d768
less joins
2023-01-02 02:10:38 +01:00
c25eb088ec
redo 8e730ef93d
to avoid larger code generated
2023-01-01 23:43:33 +01:00
3feb3e52f8
optimizing scoped names in zeropage
2022-12-31 03:57:51 +01:00
8e730ef93d
optimizing scoped names more and fix scoping of identifier names in arrays (pointers) in SymbolTable
2022-12-31 03:20:20 +01:00
e0913a39ab
optimizing
2022-12-30 18:50:45 +01:00
7a27fbc001
add params for future changes
2022-12-30 17:43:55 +01:00
ee0dbdad35
don't reshuffle 'start' routine to the top. Fixes zsound examples.
2022-12-30 17:12:01 +01:00
9225f88f89
diskio comments
2022-12-30 15:49:53 +01:00
a04839dd6b
vm: add property for custom breakpoint handler
2022-12-30 15:10:13 +01:00
002006517a
rewrite bool=bool^1 into bool=not bool
2022-12-29 19:42:38 +01:00
f5b202d438
fix ast type error in float cast to bool
2022-12-28 22:18:21 +01:00
a7df094ff4
don't allow ~ on booleans, also introduce SZ and SNZ instructions in IR to complete the conditional-set instruction list.
2022-12-28 21:19:38 +01:00
1e6fa77633
ir: 4 new instructions to branch on signed <0, >0, <=0, >=0
2022-12-28 13:14:20 +01:00
eb4cff202c
removed redundant branch opcodes in IR: BLT(S), BLE(S). Just use swapped BGT(S), BGE(S).
2022-12-28 12:41:05 +01:00
7ee777f405
vm/ir: for loop is now correctly skipped if loopvar>endvar
...
this is different still in the 6502 codegen, where it wraps around $00!
2022-12-27 18:12:41 +01:00
81bd5c784e
don't remove consecutive assigns to IO space location
2022-12-24 18:01:54 +01:00
b526e132a7
better warning + don't remove non-trivial initializer expression for unused variables
2022-12-24 17:22:30 +01:00
1860f66de5
allow "x not in array" as equivalent to "not x in array"
...
update antlr parsing lib
2022-12-23 17:59:56 +01:00
ded9ada9bc
allow "not xx in array" expression in 6502 codegen
...
fix compiler crash on certain bool to byte casts
2022-12-23 17:07:34 +01:00
d0e6a2eb8b
fix compiler crash on hoisting certain vardecls from inner scopes
2022-12-22 18:49:53 +01:00
4e103a1963
making snow example more interesting
2022-12-22 13:04:26 +01:00
475e927178
version 8.8
2022-12-17 23:00:49 +01:00
ca7932c4f0
no longer do return value optimization with tempvar, this caused invalid code sometimes.
2022-12-14 22:33:16 +01:00
8ab47d3321
fix_autostart_square() now preserves X register correctly
2022-12-14 01:07:44 +01:00
def7e87151
fixed silly if-goto expression code in IR codegen where it used too many branching instructions
2022-12-12 22:47:15 +01:00
27568c2bef
fixed silly code generated by some NOT-expressions (unused temporary)
2022-12-12 21:57:22 +01:00
0694a187d7
unsigned>0 now optimized into unsigned!=0
2022-12-12 20:37:57 +01:00
832601b36b
workaround for black square issue at start
2022-12-11 11:48:41 +01:00
578969c34c
optimize redundant rts/bra or rts/jmp generation in when statement
2022-12-10 17:21:15 +01:00
d1d0115aed
removed unused option 'keepIR'
2022-12-09 18:44:44 +01:00
c89e6ebfab
clarify
2022-12-08 22:21:45 +01:00
ca1089b881
optimized codegen for logical expressions with simple right operand (such as c64.READST() & $40 )
2022-12-06 20:23:56 +01:00
a1d04f2aad
added more $03xx vector definitions to C64/C128/CX16 syslib
2022-12-06 20:23:56 +01:00
bf0604133c
fix error in IR for inline asm and BSS vars.
2022-12-04 16:48:44 +01:00
a82b2da16e
Fix some FP related assignment issues in 6502 codegen.
2022-12-04 13:03:38 +01:00
f2273c0acc
fix several FP rom routine addresses on cx16.
2022-12-03 19:56:54 +01:00
17bedac96c
vm: memory is randomized on start instead of 0. P8ir file now has BSS segment. Vm clears BSS vars to 0.
2022-12-03 17:46:06 +01:00
4831fad27a
x16 emulators are now launched with PULSE_LATENCY_MSEC=10 env setting to mitigate static noise
2022-12-03 16:19:26 +01:00
5e896cf582
preparing to add Golden RAM
2022-12-03 00:21:31 +01:00
add3491c57
fix possible vardecl issue for prefixed params
2022-11-30 22:56:54 +01:00
f470576822
it's now possible to use symbols that are the same name as 6502 instructions
...
because these are now prefixed internally before generating assembly.
2022-11-30 18:39:56 +01:00
10760a53a8
optimize cmp word equal/notequal
2022-11-29 20:14:35 +01:00
eee805183c
don't overwrite temp vars in complex comparison expressions. Fixes #89
2022-11-29 04:13:25 +01:00
b8fb391022
- ir codegen now allows subroutine having the same name as its block
...
this is not possible for the 6502 codegen due to 64tass scoping limitation
2022-11-28 21:54:33 +01:00
3c698f1584
fileseek for writing not right now
2022-11-27 21:52:18 +01:00
2fad52d684
the adpcm example can now read wav files directly (so no need anymore to extract the binary frame data from them)
2022-11-27 21:37:40 +01:00
ec64a68a71
fixed compiler crash: unsigned = (-(unsigned as word) as uword)
2022-11-27 17:25:47 +01:00
db55562f6a
fixed adpcm playback
2022-11-27 16:36:30 +01:00
d8409a9d2b
fix compiler crash: if uwordvar > label
2022-11-26 14:39:03 +01:00
0d0ce6eec1
adpcm plays pcm
2022-11-24 21:03:50 +01:00
483f313eda
ir: keep correct child node order in blocks
2022-11-24 01:19:48 +01:00
7b6c742178
fixed diskio.f_read() for small read sizes
2022-11-24 00:23:37 +01:00
d4a35ba6ff
got rid of diskio.have_first_byte overhead
2022-11-23 21:53:36 +01:00
68b112837a
fix cx16logo.logo() printing correct newlines
2022-11-23 02:25:20 +01:00
e2f20ebf94
fix crash on empty conditional branch statement (if_cc { } )
2022-11-23 02:14:48 +01:00
f870e4965a
added cx16diskio.f_seek() function to seek to a position in an opened file
...
f_open uses channel 12 now, f_open_w uses 13
2022-11-23 01:48:04 +01:00
7ebcb219d6
void func() now gives warning if func doesn't return a value
2022-11-22 22:54:40 +01:00
c21913a66b
ir: keep order of children in block
2022-11-22 02:04:24 +01:00
77e956a29f
API change: diskio.list_files doesn't have an internal buffer anymore, you now have to supply a buffer + size yourself. Renamed to list_filenames
2022-11-20 23:27:22 +01:00
08275c406a
added chdir/mkdir/rmdir/relabel to cx16diskio
2022-11-20 22:59:44 +01:00
2931e1b87b
diskio file lister routines now also put file type (prg, seq, dir) in new diskio.list_filetype variable
2022-11-20 20:22:09 +01:00
153b422496
cx16: retain display mode (composite etc)
2022-11-20 19:19:01 +01:00
0f6a6d6fea
attempt to make gfx2 screen mode 0 cleanup more robust on real hardware
2022-11-18 22:53:28 +01:00
91fdb3e2d4
ir: store labels in blocks, but still useless
2022-11-17 00:37:45 +01:00
d8e87bd881
make uword xx = 1<<shift into a word shifting
2022-11-16 01:39:34 +01:00
922033c1b2
main block element order now remains the same as in source
2022-11-16 00:32:00 +01:00
df1793efbf
fixed: word << 12 is suddenly an uword (with optimizer on)
2022-11-15 03:00:41 +01:00
836a2700f2
func(x>>1) no longer uses slow stack eval
2022-11-15 02:49:40 +01:00
8f3aaf77a1
fix optimizer hanging on uword xx :: xx >>= 8 / xx=msb(xx)
2022-11-15 01:40:13 +01:00
00c059e5b1
adding cx16/adpcm example
2022-11-15 01:17:28 +01:00
f4f355c74a
added cx16/diskspeed example
2022-11-14 17:55:55 +01:00
b465fc5aaf
fix bug in word array containment check (prog8_lib.containment_wordarray) that could hang the loop
2022-11-12 23:19:01 +01:00
2d78eaa48d
fix gfx2 text color, added cx16 snow example
2022-11-12 22:08:07 +01:00
d08451bccc
ir: Block can now contain inline binary
2022-11-12 20:17:23 +01:00
d8e785aed0
ir: fix too greedy chunk removal
2022-11-12 19:56:54 +01:00
267b6f49b5
IRFileReader parses the p8ir file with xml parser
2022-11-12 16:51:20 +01:00
e6688f4b9d
clearer error for VM limitation cannot load label address as value
2022-11-12 13:45:02 +01:00
9d7b9771c2
p8ir file format is now valid XML
2022-11-11 23:35:52 +01:00
136a9a39de
kotlin 1.7.21
2022-11-10 22:52:07 +01:00
3dcf628fdb
fixed subroutine name shadow check
2022-11-10 22:51:37 +01:00
e614e9787a
ir: write values as hex into p8ir file
2022-11-08 21:59:05 +01:00
e426fc0922
version 8.7
2022-11-06 22:58:39 +01:00
5d4bfffc7e
float.rndseedf() now takes float seed value and is consistent for all CBM compilation targets
2022-11-06 22:53:57 +01:00
207cdaf7a4
fix kefrenbars example (use gfx2 instead of kernal routines)
2022-11-06 17:33:30 +01:00
7315b581ce
added gfx2.pget(x,y) to get the pixel color value
2022-11-06 13:40:55 +01:00
38efaae7b2
ir/vm: syscall params in high base register to avoid push/pop
2022-11-06 12:52:09 +01:00
469e042216
vm: replaced prog8_lib.string_compare and others with syscalls
2022-11-04 23:12:13 +01:00
0f1a4b9d8f
fixed certain type check error when passing boolean value to ubyte function parameter
...
fixed virtual machine string comparison syscall
2022-11-03 23:06:03 +01:00
7303c00296
vm: prog8lib.wordarray_contains() fixed
2022-11-03 22:48:47 +01:00
fc55b34d84
ir: fix asmsub multi-value return codegen
2022-11-03 22:29:41 +01:00
6f67fc0e02
ir: get rid of '_' symbol prefix
2022-11-03 21:54:53 +01:00
562d722ad5
codegen: added missing codegen for float array inplace modification
2022-11-03 20:08:46 +01:00
144c1ba3a6
ir: fix float instruction value in formatspec
2022-11-03 19:08:38 +01:00
06b032af91
refactor
2022-11-03 00:20:31 +01:00
3603140114
ir: fix unused code remover
2022-11-02 23:54:52 +01:00
e094785cbd
ir: fix unused code remover
2022-11-02 23:16:51 +01:00
e7408224ac
ir: remove position tracking from codechunk for now
2022-11-02 22:12:42 +01:00
e67c05c274
ir: fix asmsub contents not appearing in IR file
2022-11-02 20:50:51 +01:00
b22804efaf
ir: fix inlineasm linking
2022-10-31 23:59:33 +01:00
890f55f91a
fixup compiler internals diagram
2022-10-31 00:39:43 +01:00
cc5fc0b892
Merge branch 'master' into labeledchunks
...
# Conflicts:
# examples/test.p8
2022-10-30 23:46:44 +01:00
5efe2b027a
ir: fix chunk linkage in optimizer
2022-10-30 23:42:41 +01:00
5b6569d0f9
ir: fix overwriting chunk label
2022-10-30 19:03:02 +01:00
0eda7ac498
vm: don't crash on empty code chunks
2022-10-30 17:05:08 +01:00
a5ef353484
ir: fix memory mapped var as for loop counter
2022-10-30 14:54:47 +01:00
67a36d8d31
more robust 'return' statement checks in subroutines
2022-10-30 14:41:28 +01:00
7cc3cc3990
ir: fix non-code chunk linkage
2022-10-30 12:55:06 +01:00
dc0edc4c2b
break also in for
2022-10-29 23:34:59 +02:00
71d2f091e5
Merge pull request #88 from markjreed/fix-mouse_config2
...
fix: don't ignore shape argument to cx16.mouse_config2
2022-10-29 23:22:14 +02:00
c2f062a391
fix: don't ignore shape argument to cx16.mouse_config2
2022-10-29 17:10:06 -04:00
224f490455
Merge branch 'master' into labeledchunks
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# examples/test.p8
2022-10-29 18:26:09 +02:00
5b35232ab4
fix "fpReg1 out of bounds" crash for vm target for in-place float array assignment. #85
2022-10-29 17:04:39 +02:00
6d6db70e42
remove type widening for bit shifts, to be consistent with other arithmetic operations. Fixes #83
2022-10-29 16:29:41 +02:00
6830e15b4e
print warning when bit shifts are too large and result in 0. #83
2022-10-29 15:23:39 +02:00
3f07cad35d
remove missing feature from docs
2022-10-29 14:31:40 +02:00
e951340033
BASIC, VICE, C64, zeropage spelling
2022-10-29 14:17:40 +02:00
db8912a735
Kernal spelling
2022-10-29 14:10:11 +02:00
0e297731a3
PETSCII spelling
2022-10-29 14:07:04 +02:00
f20c4f98ac
Merge pull request #86 from Frosty-J/docs
...
Fix typos in documentation
2022-10-29 12:57:55 +02:00
05e60cc7c0
fix array type typo
2022-10-29 12:57:33 +02:00
55b4469767
Merge pull request #87 from Frosty-J/basicsafe
...
`%zeropage basicsafe` in Hello World
2022-10-29 12:31:28 +02:00
f15516e478
Bracket space
2022-10-29 00:25:54 +01:00
17ceadbadf
%zeropage basicsafe in Hello World
2022-10-28 22:49:23 +01:00
8c25b2b316
CommanderX16 -> Commander X16
2022-10-28 22:47:14 +01:00
8b1ae404a3
Commodore-64 -> Commodore 64
2022-10-28 22:45:09 +01:00
13534cd4a9
lowlevel -> low-level
2022-10-28 22:40:36 +01:00
abfb345503
ofcourse -> of course
2022-10-28 22:39:54 +01:00
42ae935496
Various typo fixes
2022-10-28 22:39:15 +01:00
434515d957
fix: array[x] = ~array[x] no longer crashes the codegen
2022-10-27 23:56:38 +02:00
094f7803b7
fix: array[x] = -array[x] no longer crashes the codegen
2022-10-27 23:20:40 +02:00
b0c7bad391
fix: array[x] = -value no longer crashes the codegen
2022-10-27 21:58:37 +02:00
e9a4a905ef
preparing to fix the array indexing compiler issue
2022-10-26 23:53:17 +02:00
7b6cd0cfbe
cx16.macptr() now has additional argument in the carry flag, to reflect recent X16 kernal api change.
...
Also now allow bool type for status flag args and returnvalues.
2022-10-26 20:41:10 +02:00
b718b12083
ir/vm fix chunk linkage
2022-10-26 00:12:56 +02:00
cfa7258ff4
various
2022-10-25 23:18:42 +02:00
b70e0a0870
mention syntax highlighting files in the docs
2022-10-25 21:24:38 +02:00
da8eb464b8
add cx16diskio.vload_raw() to load headerless files into vram
2022-10-25 21:12:11 +02:00
8f9d1cfa30
fix regression: indexing pointer variable with word (>255) didn't work anymore since release 8.2 or so
2022-10-24 23:43:47 +02:00
585009ac5c
ir: fix syscall numbers and more
2022-10-24 01:57:37 +02:00
30ee65fd14
ir: ensure that block and sub labels are also on the first chunk in said block/sub
2022-10-23 18:54:08 +02:00
76428b16f0
Merge branch 'master' into labeledchunks
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt
# docs/source/todo.rst
# examples/test.p8
# virtualmachine/src/prog8/vm/VirtualMachine.kt
2022-10-23 12:19:02 +02:00
0d7b14e2d8
fix crash when assigning certain memory read to word variable. Fixes #82
2022-10-23 11:57:23 +02:00
a9d19d02b3
helpful error for programs still using the old builtin rnd() and rndw()
2022-10-22 22:36:44 +02:00
adcbe55307
replaced integer RNG with smaller and faster routine.
2022-10-22 22:01:57 +02:00
aa99a7df64
seed info
2022-10-22 17:54:24 +02:00
00afa1ce52
ir: replace RND opcode by syscalls
2022-10-22 17:20:46 +02:00
e94bf4c63c
replace rnd()/rndw() builtin functions by regular routines in math module
2022-10-22 17:02:43 +02:00
ec5adffdc2
rnd()/rndf() routines can now be seeded with new rndseed()/rndseedf() routines. fixes #80
2022-10-22 13:34:22 +02:00
733c17ad3a
improve docs on if syntax. fixes #81
2022-10-19 23:53:15 +02:00
53b0b562e6
fix check for routine that returns multiple values but in status bit. Fixes #79
2022-10-19 23:23:49 +02:00
fabae6e970
ir: fix handling of labeled chunks
2022-10-16 23:53:17 +02:00
a9f9c40d8a
ir: fix handling of labeled chunks
2022-10-13 00:56:44 +02:00
6fc89607d3
ir: moving to labeled chunks, no more IRLabel nodes
2022-10-07 00:34:56 +02:00
2340760f53
rename
2022-10-04 22:54:14 +02:00
39d6d2857e
ir: change inline binary a bit
2022-10-04 00:57:08 +02:00
7b722a0001
ir: fix count register uses
2022-10-04 00:25:55 +02:00
e7682119e0
ir: count register uses
2022-10-02 15:56:06 +02:00
af6be44676
ir: adding register usage inspections
...
fix compiler problems with untrimmed inlined asm, and when only a single return statement is present in a subroutine
2022-09-30 20:25:00 +02:00
5a8f97a0b6
ir: adding last missing features to be able to encode all of Prog8
2022-09-30 16:01:00 +02:00
0d4dd385b8
added '%ir' to write inline IR code, '%asm' is now only for real 6502 assembly.
...
(%ir is probably only used in the library modules for the virtual machine target)
2022-09-30 15:12:26 +02:00
94f0f3e966
ir: join code chunks
2022-09-30 02:47:33 +02:00
43e31765e5
kotlin 1.7.20
2022-09-29 18:41:20 +02:00
7c1bdfe713
ir: uninitialized vars remain empty, bss section classifier (unused for now as there are no segements yet)
2022-09-28 16:56:50 +02:00
9f09784b55
version 8.6.2
2022-09-27 22:45:48 +02:00
e7a3a89bfb
fix windows issue
2022-09-27 22:41:48 +02:00
7ea7e63f44
use require() more often
2022-09-27 18:27:55 +02:00
1d2ce2cbeb
consolidate IR line parse function
2022-09-27 18:02:57 +02:00
06cf2e0bd7
vm: fix memory slabs (bsieve example)
2022-09-27 16:32:44 +02:00
9d219ae4b9
refactor
2022-09-27 03:32:39 +02:00
71f5a6c50e
remove p8virt from compiler diagram
2022-09-27 02:52:29 +02:00
90b2be2bf4
vm: new memory initialization of array vars
2022-09-27 02:43:50 +02:00
db1aa8fcbd
vm: new translation of IRProgram into vm program list
2022-09-27 01:50:00 +02:00
11c000f764
moved codeGenVirtual module into virtualmachine module
2022-09-26 20:00:40 +02:00
4d6dcbd173
ir: consolidate IRCodeInstruction and Instruction
2022-09-26 19:46:44 +02:00
0da117efd2
vm: get rid of .p8virt file and cruft
2022-09-26 19:28:40 +02:00
533c368e32
make IRFileReader's file source more general
2022-09-26 14:47:28 +02:00
8883513b0e
attempt to fix readthedocs.io build
2022-09-25 22:19:32 +02:00
dcc9a71455
version 8.6.1
2022-09-25 21:54:35 +02:00
1a56743bb1
fix IR repeat loop codegen when amount is 0
2022-09-25 20:48:17 +02:00
387a4b7c35
added string.lowerchar() and string.upperchar()
2022-09-25 20:20:38 +02:00
1d65d63bd9
ir: making sure all names are scoped properly. textelite now runs in vm
2022-09-25 18:02:35 +02:00
dda19c29fe
vm: fix symbols to be case sensitive properly in p8virt assembler
2022-09-25 15:51:50 +02:00
ca41669f4f
vm: fix scoped name in address-of inside array
2022-09-24 18:26:35 +02:00
0e1886e6bd
vm: fix nested label prefixing
2022-09-24 16:00:25 +02:00
c26e116f0e
vm: fix crashes when array contains pointers/strings
2022-09-24 14:42:07 +02:00
5c9c7f2c5e
adding more complex vm examples
2022-09-23 14:56:06 +02:00
ca2fb6cef3
IR no longer depends on VM syscalls but has its own syscall list for the few builtin functions that still require it
2022-09-23 14:27:51 +02:00
46dac909ef
vm/math.p8: complete the sin and cos routines
2022-09-22 15:49:19 +02:00
b1e4347e10
fix compiler crash sometimes when casting byte to word
2022-09-22 13:00:47 +02:00
97aa91c75e
removed 16 bits sin/cos routines from math library (sin16, sin16r etc)
2022-09-22 12:55:00 +02:00
4f8fb32136
some docs about compiler internal architecture
2022-09-21 17:34:52 +02:00
e0fbce0087
few more unittests for IR
2022-09-21 02:59:36 +02:00
fb22f78fb3
added '-keepIR' option to save the IR file if it's generated.
2022-09-20 12:30:22 +02:00
d6393cdbe5
'-vm' option now also reads .p8ir files
2022-09-20 12:14:33 +02:00
5167fdb3f0
docs
2022-09-20 04:10:49 +02:00
ab00822764
move IR optimizer to IR Codegen module
2022-09-19 19:41:43 +02:00
b4352ad38b
refactor IR codegen into separate module
2022-09-19 19:24:24 +02:00
d07d00fa41
Join codeAst and codeCore modules
2022-09-19 17:28:18 +02:00
11d87e4725
VM: support cpu registers
2022-09-19 17:13:46 +02:00
627ed51a1b
IR: mem mapped vars and memory slabs
2022-09-19 15:20:40 +02:00
c8f3bfa726
vm assembler now understands simple indexed addresses (symbol+number)
2022-09-18 02:17:42 +02:00
3091e3a1c8
IR support for instructions operating on cpu regs
2022-09-18 01:51:04 +02:00
2f3e7d1c27
IR support for storing incbins and romsubs
2022-09-17 16:07:41 +02:00
0e831d4b92
fix superfluous usage of addressOf()
2022-09-16 00:31:04 +02:00
7294ec9a3c
working on address-of
2022-09-15 22:44:33 +02:00
e34bab9585
change syntax of address-of in p8virt code to &X, instead of {X}
2022-09-13 23:28:52 +02:00
7dd14955c1
added remaining signature stuff to IRAsmSubroutine
2022-09-13 23:06:05 +02:00
6428ced157
added subroutine params to IRSubroutine
2022-09-13 23:06:05 +02:00
30a42ec1bd
IR tweak
2022-09-13 23:06:05 +02:00
aacea3e9db
incbin in IR
2022-09-13 23:06:05 +02:00
6886b61186
also output inline asm chunks
2022-09-13 23:06:05 +02:00
0744c9fa29
properly flatten label names for the IR code
2022-09-13 23:06:05 +02:00
502a665ffc
getting address-of into IR without allocations
2022-09-13 23:06:05 +02:00
3c315703c0
making IR file reader
2022-09-13 23:06:05 +02:00
12ed07a607
comments
2022-09-13 23:06:05 +02:00
101b33c381
split intermediate representation into separate module
2022-09-13 23:06:05 +02:00
97f4316653
rename IR classes
2022-09-13 23:06:05 +02:00
b0704e86f0
block structure
2022-09-13 23:06:05 +02:00
a182b13e5a
fixup for memoryslabs
2022-09-13 23:06:05 +02:00
80b630a1e4
added memoryslabs to symboltable
2022-09-13 23:06:05 +02:00
475efbe007
steps to make actual IR based on VM code. For now, as experimental codegen.
2022-09-13 23:06:05 +02:00
3ab5e5ac48
added cx16.kbdbuf_clear()
2022-09-01 18:40:17 +02:00
c6c5ff2089
added joystick controls to cx16 tehtriz
2022-08-23 18:11:35 +02:00
176ec8ac7d
fix 6502 codegen bug: complex comparison expression is evaluated wrong.
...
Fixed by reintroducing splitting of comparison expression in if statements by using a temporary variable and/or register to precompute left/right values.
2022-08-23 00:05:57 +02:00
dcdd4b3255
found bug in comparison expr codegen
2022-08-22 23:16:56 +02:00
fc0a0105b3
move memoryslab administration from allocator to symboltable
2022-08-21 19:48:56 +02:00
f3960d21a8
fix xmlwriter
2022-08-21 19:12:01 +02:00
a44d853c1b
added memoryslabs to symboltable
2022-08-21 19:05:01 +02:00
6b41734d6a
check memory() calls before entering codegen
2022-08-21 19:02:34 +02:00
c33dc0f3be
version
2022-08-21 14:37:10 +02:00
bb5ffb24a8
add IDEA antlr parser build info to documentation
2022-08-21 13:32:31 +02:00
a878c9a61d
add some documentation to the psg module
2022-08-19 22:17:23 +02:00
6454bf8ec4
added mouse cursor to amiga example
...
slightly sped up text rendering in gfx2 highres mode
2022-08-16 04:25:59 +02:00
40aa733ea7
clearer name
2022-08-15 20:55:35 +02:00
f37a822725
move
2022-08-14 13:17:03 +02:00
f249ccd414
added asm optimization for same pointer index
2022-08-14 12:50:46 +02:00
7ef4ddf0f3
fixed operator precedence: bitwise must come before comparisons
2022-08-14 12:34:00 +02:00
d8e18df3a1
added c64 starfield example
2022-08-14 12:02:23 +02:00
78d3d9d27d
vm: get rid of jumpi traces, fix IR value issue with STOREIX
2022-08-13 20:00:13 +02:00
0aa0ec5abd
fix c64 zeropage locations of cx16 virtual registers
2022-08-13 00:14:19 +02:00
b6eef3612f
added some ported bench8 test programs
2022-08-12 22:08:27 +02:00
666d62dd7a
fix cx16.r0 base address to be $04 on the C-64, and fix zeropage duplicate free addresses
2022-08-12 17:49:31 +02:00
44ee4b989f
optimize code for logical expressions more if right operand is simple
2022-08-12 00:49:40 +02:00
18790d867c
optimize conditional expression WORD & $ff00 to just msb(WORD)&$ff
2022-08-12 00:21:44 +02:00
d6b8936376
fix mkword(@(ptr), 0) wrong asm
2022-08-11 23:01:19 +02:00
4d840c7db8
optimized mkword(0, X)
2022-08-11 22:51:09 +02:00
4d2b21816d
optimized uword <<8 and >>8
2022-08-11 22:25:15 +02:00
2d34fdd28f
in a block marked option force_output, make all subroutines in asm use .block rather than .proc
...
this fixes some obscure assembly issues where subroutines were omitted from the output program by 64tass
2022-08-10 21:28:40 +02:00
68abda1219
fix a few small compiler errors (removing functioncall, removing block, assigning virtual register return value)
2022-08-09 23:38:29 +02:00
f778f08f76
tweak
2022-08-08 21:09:49 +02:00
ac1bd2fb7b
virtual: properly output "memmapped" variables too
...
still as regular variables though
2022-08-08 20:42:17 +02:00
4b7b1379d9
also binexpr split on and,or,xor if appropriate
2022-08-08 00:09:18 +02:00
e560e2ab3f
vm instructions now contain info on input/output registers
2022-08-07 18:49:16 +02:00
1e441c2ddf
tweak vm codegen
2022-08-07 13:45:03 +02:00
93ce74eeb1
removed problematic expression "simplifications" (that introduced arbitrary r9 temp register usage)
2022-08-07 12:26:11 +02:00
f718f4251b
working on better encoding of romsub in new ast/vmtarget
2022-08-07 12:21:10 +02:00
4644c9b621
got rid of GoSub ast node and codegen complexity related to that.
...
sometimes programs get smaller, sometimes bigger.
2022-08-07 03:24:20 +02:00
197081f10d
keyboardhandler
2022-08-04 23:04:16 +02:00
00b717cde8
tweak
2022-08-04 18:35:10 +02:00
34aa917ca4
allow bool return type (and arguments) for asmsub / romsub
2022-08-02 23:07:42 +02:00
a38ddcb364
diskio use other filename buffer to avoid always having large buffer
2022-08-02 00:58:32 +02:00
5b9576df4e
added diskio.send_command()
...
diskio now reuses some buffer internally for file names to save some memory
2022-08-01 22:59:27 +02:00
310219e5d7
make sure memory slabs block is at the bottom of the asm file to not allocate needless space in the resulting prg
2022-07-31 15:37:36 +02:00
a0deb463c9
optimized codegen for some equality comparison expressions and some logical expressions
2022-07-31 15:25:54 +02:00
90ddec2ad8
avoid multiple change events in watch mode
...
added bsieve example
2022-07-31 11:58:27 +02:00
f6b03d5a78
added diskio.diskname(), improved error checking in diskio.directory()
2022-07-30 13:35:42 +02:00
f531daa872
on C64, the cx16.r0...cx16.r15 virtual regs are now in zeropage as well when using kernalsafe or full
2022-07-28 19:13:33 +02:00
046dceb5c2
added optimized case for signed division by 2
2022-07-24 13:59:35 +02:00
dcc1f00048
fix rounding errors in signed divide by power-of-two
...
The optimized bit-shifting division is removed (for now)
2022-07-24 12:34:55 +02:00
05f935b598
simplify & fix recursion detector
2022-07-22 22:22:43 +02:00
f2d27403c5
add string.endswith() to efficiently test for a suffix without copying
...
add string.startswith() to efficiently test for string prefix without copying
2022-07-21 00:38:30 +02:00
473efbe67a
tweaks
2022-07-17 22:09:56 +02:00
aeabf0f324
nicer colors
2022-07-17 21:37:15 +02:00
80ab552ad8
fix wrong code for signed word >= 0
2022-07-17 19:02:56 +02:00
7d4695c5b2
cx16: graphics module y resolution corrected from 200 to 240. added 'cx16/circles' example.
2022-07-17 18:59:52 +02:00
5189eaca36
move the vm unit tests to codeGenVirtual module and remove virtualmachine dependency in the compiler module
2022-07-17 12:56:22 +02:00
cfb31377fc
c64 zeropage: added a few more locations to Kernalsafe free list that should be safe
...
this makes $02-$21 inclusive, available for use later (x16 virtual registers are placed here on x16...)
2022-07-17 12:12:47 +02:00
a07c52e112
conv.any2uword / conf.hex2uword can now deal with iso lower and upper case letters as well.
2022-07-17 02:39:40 +02:00
8e1071aa89
fix compiler crashes: txt.chrout("a"), uword[] a = ["ls", subroutine] without & before subroutine.
2022-07-15 23:17:03 +02:00
7cb9a6ba60
diskio.status() more robust (stops at newline char instead of overwriting buffer), diskio.f_open better detects error status
2022-07-15 22:21:34 +02:00
350dc731f1
cx16: sys.reset_system() now resets vera fully as well (such as PSG sound), kernal didn't seem to do that
2022-07-14 23:44:53 +02:00
f690f58bd4
callfar() now accepts a variable as address, so it can be used to indirect JSR to a subroutine whose address is not fixed. ('goto' already could indirect JMP to a variable address.)
2022-07-14 19:29:59 +02:00
4bc65e9ef7
fix stack crash in cx16.push_vera_context()
2022-07-14 16:33:09 +02:00
2d600da8b6
fix codegen crash on certain nested typecast
2022-07-13 22:24:31 +02:00
35af53828a
fix endless loop in optimizer, fix cx16 register clobbering in psg interrupt handler, fix crash on certain arrays, fix undefined symbol when it's in another imported module
2022-07-13 18:42:06 +02:00
10ddd5b127
fixed missing non-boolean operand cast in logical expressions
2022-07-12 22:28:06 +02:00
f46e131f18
todo
2022-07-12 19:41:51 +02:00
feb5c8be95
vm: some more peephole optimizations
2022-07-12 19:04:19 +02:00
edf12bec71
improve bool params typecasting, fix compiler crash on abs(floatvar)
2022-07-12 17:52:37 +02:00
ff1fc28287
added immediate value vm logical instructions because these are so common
2022-07-12 16:12:32 +02:00
314398ba4c
added immediate value vm arithmetic instructions because these are so common
2022-07-12 15:21:26 +02:00
840331347b
added a few more vm optimizations and unit tests
2022-07-12 12:42:37 +02:00
6181b12ab8
added -esa option to override the evalstack location, and shift cx16.r0-r15 accordingly
2022-07-11 19:29:04 +02:00
68da661edc
optimize comparison to true/1 into comparison to zero, optimize while/until conditions
2022-07-11 16:42:52 +02:00
88cbb6913d
tweak bool type handling
2022-07-11 14:55:50 +02:00
7a26646e1b
tweak bool type handling
2022-07-11 02:08:12 +02:00
92eb3b0bf6
bool logical testcase
2022-07-09 22:29:38 +02:00
fb63434eee
tweak maze example
2022-07-09 22:13:30 +02:00
97f90d9684
Merge branch 'master' into bool_type
2022-07-09 22:09:49 +02:00
f91786367f
added maze example
2022-07-09 22:00:46 +02:00
6a57337a68
improved bool type checking
2022-07-08 22:59:35 +02:00
211e2bb37a
improved bool type checking
2022-07-08 22:29:13 +02:00
d2d08bf143
fix compiler error about bool vs ubyte
2022-07-08 22:03:05 +02:00
8acb37b6c2
use bool type in examples and libraries
2022-07-08 21:50:32 +02:00
81b3d2db4f
fix compiler crash
2022-07-08 21:50:06 +02:00
9633c0b07a
added bool to syntax files
2022-07-07 23:30:41 +02:00
1dfa8ee7d8
add ARRAY_BOOL array type
2022-07-07 23:07:30 +02:00
1163543a98
fix bool param lookup problem
2022-07-07 22:23:56 +02:00
bdb7de34be
added several compiler checks against weird boolean type use in expressions
2022-07-07 22:23:56 +02:00
9500fc11ac
document new bool datatype and removal of boolean() conversion function
2022-07-07 22:23:56 +02:00
65daf29acd
fix compiler crash related to word types in certain comparison expressions
2022-07-07 22:23:56 +02:00
298b25cf7d
fix compiler crash on certain typecasting assignment
2022-07-07 22:23:56 +02:00
41f4e22a17
introduce BOOL type
2022-07-07 22:23:56 +02:00
288c57c144
ack to allow user to override the following two with command line redefinition:
2022-07-07 22:16:08 +02:00
7ff8923569
document -D command
2022-07-06 23:45:41 +02:00
b41779bd02
added -D command line option to define symbols in the assembly file
2022-07-06 23:40:36 +02:00
beea6bc794
about bool
2022-07-04 20:26:03 +02:00
fee58e98c5
tiny optimization
2022-07-03 13:05:30 +02:00
c51c1da618
psg micro optimizations
2022-07-03 11:55:13 +02:00
ea2812f50f
add max volume to psg envelope
2022-07-03 11:26:56 +02:00
3ec05709d5
convert the sounds in cx16 tehtriz to use the psg module instead
2022-07-03 01:40:29 +02:00
4bdac7404a
added sustain to psg envelope
2022-07-03 00:55:25 +02:00
cc41218d37
added nicer vm example
2022-07-03 00:41:04 +02:00
4b336b1853
if passing a subroutine or label name as an uword argument, without &, add the addressof automatically
2022-07-02 23:55:32 +02:00
e1c77ce236
fix pop() name scoping
2022-07-02 23:27:08 +02:00
064d412ec8
added cx16.push_vera_context() and cx16.pop_vera_context() for use in irq handlers
2022-07-02 23:13:00 +02:00
7fff4f249d
optimize msb(cx16.r0) -> cx16.r0H, lsb(cx16.r0) -> cx16.r0L
2022-07-02 21:38:22 +02:00
7a3745f642
psg tweaks
2022-07-02 20:33:40 +02:00
f8658f6afa
precalc vera freq to not use floating point math anymore
2022-07-02 19:40:18 +02:00
223b725a10
psg abstraction and attack/release envelope
2022-07-02 18:47:12 +02:00
25aad8d7be
improve const-evaluation of builtin expressions
2022-07-02 16:29:01 +02:00
b2c9b7635d
revert restriction on certain associative operator reshuffling
...
it caused larger generated code
2022-07-02 13:59:24 +02:00
24d13dd120
fix problematic optimizations to logical expressions
2022-07-02 00:56:24 +02:00
965340ff90
logical and/or/xor/not all replaced by bitwise &,|,^,~ (ast, codegens)
...
this also fixed some invalid outcomes of logical expressions!
2022-07-02 00:38:17 +02:00
8e36fe6bef
temporary workaround for code problem around 'not'
2022-07-01 01:01:15 +02:00
2eb41a8caf
temporary workaround for code problem around 'not'
2022-07-01 00:38:19 +02:00
fb989ae62f
cx16: reset rom/ram/monitor banks at program exit to sane values.
2022-07-01 00:14:38 +02:00
7901ec2a64
"not" no longer in LogicalOperators because it makes assembler generate invalid code somehow
2022-06-30 22:49:27 +02:00
f675dbc726
vm var allocator now also recognises the memory-mapped variables. no longer crashes
2022-06-30 22:09:49 +02:00
2ad4fdbbb9
added cx16 version of bdmusic, needs ADSR though
2022-06-30 21:33:48 +02:00
97cb0cbd08
tweak "not" removal/rewriting
2022-06-30 02:16:30 +02:00
4ca0805de1
bump version
2022-06-29 01:35:14 +02:00
4b358abbb7
"not" operator removed from ast and codegen (it's been replaced with x==0 as equivalent)
2022-06-29 01:13:08 +02:00
dc82a0fc16
better not(x) replacement by x==0
2022-06-28 23:50:23 +02:00
435d6f6f3f
vm: and/or/xor/not are all bitwise operations again
2022-06-28 03:17:51 +02:00
ef92451d1a
fix logical expressions on arbitrary values, for now with boolean() around the operands
2022-06-28 01:18:36 +02:00
06184bdcb1
get rid of failed mccarthy shortcut evaluation
2022-06-27 21:44:52 +02:00
af98d01053
failed attempt at McCarthy shortcut evaluation
2022-06-27 21:40:48 +02:00
bb1cda0916
fix: boolean values of terms in logical expressions are now properly evaluated
2022-06-26 23:55:34 +02:00
a6d0ea347c
bank caching not required for pcm_play()
2022-06-26 22:08:10 +02:00
0fcd57192b
cx16diskio.f_read() now correctly deals with banked ram boundary
2022-06-26 21:42:56 +02:00
a6ffa5738b
update to kotlin 1.7.0
2022-06-26 18:54:29 +02:00
c75bd97537
update kotest
2022-06-26 18:51:03 +02:00
eea09f4de5
fix invalid asm label sometimes generated for multiple loops in same subroutine
2022-06-24 02:26:45 +02:00
5656ec11d3
fix missing abs(byte) routine
2022-06-24 01:51:54 +02:00
eb53e44cb0
zsound stream test
2022-06-24 01:51:33 +02:00
69f3106062
first vm peephole optimizer
2022-06-22 00:21:06 +02:00
8ab99f6129
zsound combo example
2022-06-21 00:38:59 +02:00
53a3c59a91
language for sphinx
2022-06-15 22:38:00 +02:00
df36983049
version 8.2
2022-06-15 22:31:29 +02:00
bda016bb3b
optimized 6502 codegen for logical expressions
2022-06-15 22:17:15 +02:00
cc174b7b85
added boolean() builtin function and use it to get rid of !=0 comparisons
2022-06-14 23:34:45 +02:00
bf9d120081
logical operators now always return a boolean byte result, instead of sometimes word type as well
...
(preparing for codegen simplifications for these)
2022-06-13 01:37:16 +02:00
775c85fc18
don't swap operands that would change function evaluation order + vm: fix label casing error
2022-06-13 00:25:45 +02:00
5a756aaed9
Pipe expression "|>" removed from the language
2022-06-12 18:41:42 +02:00
dca092fd7c
fix pipe expression when start term is constant number
2022-06-12 16:59:28 +02:00
c6e92ecac4
some code cleanup
2022-06-12 16:15:08 +02:00
93008ff605
tweak zsound examples
2022-06-12 14:51:24 +02:00
43c7b935df
fixed zsound pcm player example
2022-06-11 03:31:42 +02:00
8f9a0a244a
trying to add zsound pcm player example as well
2022-06-10 23:35:37 +02:00
fd13bd864e
some notes added to zsound demo player
2022-06-09 23:36:07 +02:00
710f27afa9
bump library versions
2022-06-09 22:44:17 +02:00
f537793b0b
added zsound demo player example (cx16)
2022-06-08 23:57:01 +02:00
f7183e38ee
tweak trivial subroutine inlining
2022-06-08 21:05:03 +02:00
0a65dfdd10
optimized codegen for some more simple expressions with +/-
2022-06-07 22:30:08 +02:00
3075578245
optimized codegen for assigning value or variable to indexed pointer. (6502)
2022-06-06 18:30:19 +02:00
b042b7705e
fix invalid removal of repeated assignments.
2022-06-06 17:27:06 +02:00
d56eb397f9
fix codegen for rol/ror on pointer indexed
2022-06-06 16:07:45 +02:00
3054a1d32d
api change: removed swap() builtin function (too complex in codegen for little used function)
2022-06-06 16:01:11 +02:00
0a3cd652b0
vm: fix codegen for storing to pointer indexed
2022-06-06 14:18:12 +02:00
f70b914779
fix optimized codegen for 2 arg functions, sometimes was passing wrong arg value due to register overwriting
2022-06-06 13:21:45 +02:00
46ca0ac10d
properly optimize X - -1 and X + -1, this also fixes type change of ubyte - 2 + 10
2022-06-05 15:35:29 +02:00
031f647952
allow casting negative numbers to unsigned, result = 2's complement
2022-06-05 14:21:10 +02:00
8f1c86f550
fixed several old test files
2022-06-05 14:20:08 +02:00
926fdecd13
fix problematic path handling on windows in error messages
2022-06-05 11:54:19 +02:00
af2ca7a67e
fix problematic characters that cause path errors on Windows
2022-06-05 11:46:37 +02:00
9e3e2ff81a
fix assembly generation error when pipe character is part of string literal
2022-06-04 22:25:51 +02:00
a9fe6472d9
remove old screencode syntax from docs
2022-06-04 22:07:31 +02:00
a862a81480
added unit test for name shadowing warning
2022-06-04 21:35:48 +02:00
dbb92881a1
fixed X register corruption in some cases of rol() and ror()
2022-06-04 21:10:48 +02:00
10bf7f5d07
fix: again gives proper name redefinition errors in same scope
2022-06-04 20:15:46 +02:00
1e61d84fd1
vm: fix expression codegen for pointer indexing
2022-06-04 19:32:35 +02:00
8618ba1b60
fix 6502 expression codegen for pointer indexing
2022-06-04 18:46:16 +02:00
3c8c44155d
vm: loadix instruction added for indirect addressing via pointer
2022-06-04 18:07:57 +02:00
2002412026
optimized codegen for pointer indexing (read expressions)
2022-06-04 17:20:17 +02:00
7f69517fd4
preparing optimizing pointer indexing
2022-06-04 16:18:27 +02:00
851f8645b5
Merge remote-tracking branch 'origin/master'
2022-06-04 14:23:41 +02:00
c40cfaa388
preparing optimizing pointer indexing
2022-06-04 14:23:02 +02:00
0349d1d57c
diskio: moved cx16 optimized f_read() to cx16diskio instead
...
so unfortunately you have to select the faster version yourself when on cx16
2022-06-04 00:33:27 +02:00
53049c02ee
diskio: moved cx16 optimized f_read() to cx16diskio instead
...
so unfortunately you have to select the faster version yourself when on cx16
2022-06-04 00:25:17 +02:00
73a3a61729
swap() checks for unsupported code gen
2022-06-03 23:41:24 +02:00
5fe6aa2800
fix swap() code for pointervars
2022-06-03 23:13:35 +02:00
c7eafd7c79
cx16: fix macptr() signature and use it in diskio.f_read() for big increase in load speed
2022-06-02 00:37:18 +02:00
10b5fb5d72
fix for total size returnvalue of diskio.f_read_all()
2022-06-01 01:13:19 +02:00
c4eaa944e2
thoughts
2022-05-30 23:37:41 +02:00
a735939d1e
removed confusing GPL software license reference and copyright header from library files. (because of exclusion in output files)
...
Reworded software license and exclusion clause somewhat again in attempt to make it even clearer.
2022-05-30 20:12:20 +02:00
6ed5f04970
version 8.1
2022-05-25 20:00:26 +02:00
b459b09b2f
vm: fix comparison datatype error; primes.p8 works again
2022-05-24 18:26:07 +02:00
3f5877dbcc
vm: fix array iteration
2022-05-23 21:24:36 +02:00
e659b91c4d
vm: fix storezm/storezx instructions
2022-05-23 21:01:02 +02:00
e09f054058
vm: implemented in-place bit rotate instructions
2022-05-23 20:30:25 +02:00
b646f50265
vm: implemented in-memory bit shift instructions
2022-05-23 20:15:20 +02:00
0a48ef3030
vm: just use new register instead of trying to (ab)use reg 0
2022-05-22 23:38:46 +02:00
ba614801ee
cleanup
2022-05-22 23:11:22 +02:00
fd6eb47e68
added inlining certain trivial non-asm subroutine calls
2022-05-22 20:22:09 +02:00
e69aeb8b98
added warning about shadowing variables
2022-05-22 17:34:08 +02:00
26ea1da146
vm: add in-place bitwise or,and,xor
2022-05-20 20:50:27 +02:00
c9e8c7a290
vm: add in-place division
2022-05-19 23:38:16 +02:00
5e4eb92443
vm: add in-place multiply
2022-05-19 23:18:54 +02:00
461b6499ef
vm: add in-place add/sub
2022-05-19 22:54:50 +02:00
c769920b6e
vm: fix signed divide
2022-05-19 22:24:57 +02:00
181b98ef9e
vm: implemented some self-assign instructions
2022-05-18 22:15:42 +02:00
4e1184a400
vm: added some of the sin cos tables in math.p8
2022-05-17 22:56:00 +02:00
e52d9e3210
vm: split off assignment codegen to its own file
2022-05-17 22:38:31 +02:00
dc6475c91b
vm: fixed non-byte array indexing
2022-05-17 18:53:33 +02:00
52f9956e92
clarify use of direct-memory in functions that modify in place such as rol/swap
2022-05-16 22:41:31 +02:00
0bf00d1ca4
c64/c128 targets: perform cleanup at program exit such as re-enabling run-stop key and character set switching.
2022-05-15 16:44:26 +02:00
d1a707df57
fix assigning a pointer (uword) to string not copying the correct memory
2022-05-15 16:10:58 +02:00
4dc9b45297
vm: fixed string comparisons, added missing vm string module
2022-05-13 23:10:13 +02:00
6e31eebfb5
vm: ifElse codegen uses proper branching instructions now
2022-05-12 21:26:17 +02:00
a7df828932
vm: codegen uses INCM/DECM if possible
2022-05-12 19:40:31 +02:00
517cf61d11
vm: limit int instructions to just 2 register args
2022-05-11 22:36:47 +02:00
4be7bc8323
vm: limit float instructions to just 2 register args
2022-05-11 22:09:46 +02:00
74c05d00a9
vm: fix comparison operator codegen for floats
2022-05-11 17:07:21 +02:00
677613d30a
vm: expressiongen: use resultRegister arg instead of allocating new leftResultReg
2022-05-11 15:58:55 +02:00
bacba629a5
vm: use shift-one instructions in codegen
2022-05-11 15:50:51 +02:00
14e36f1362
vm: fix assignment to array
2022-05-11 15:26:54 +02:00
d43ad849d1
vm: actually use the store-zero instructions in codegen
2022-05-11 15:18:36 +02:00
627aa61184
clean up subroutine inlining, basis for new try
2022-05-09 15:42:58 +02:00
dad5b17ac8
fix regression compiler crash in string comparison
2022-05-08 13:47:24 +02:00
fef52c0112
automatically convert multi-compare expression (if X==1 or X==2..) to contaiment check if X in [1,2,..]
2022-05-08 13:21:34 +02:00
8c4765b386
vm: support non-unary functions in pipe expressions
2022-05-07 20:42:05 +02:00
7c121bfc01
first steps to support multiple args in pipe expressions
2022-05-07 19:00:47 +02:00
942c5cc04b
fix crash when optimizing pipe expression too aggressively
2022-05-07 17:29:36 +02:00
348b3036ff
now correctly accepts "xxx" * constexpr (where constexpr is not just a single const number)
2022-05-05 23:21:20 +02:00
09d3451d9d
vm: accept %asmbinary (but it is eventually ignored in code execution)
2022-05-05 21:43:31 +02:00
b1a49e5f29
vm: implement rest of float instructions
2022-05-04 22:31:45 +02:00
da01a5b4dc
vm: implement float to integer cast, any, all, reverse
2022-05-04 22:08:21 +02:00
3f9cdd9b56
vm: fix mul and div instructions
2022-05-04 01:10:59 +02:00
0f9e87d7bb
fixed compiler crash when casting float to integer, fixed float to int cast value error on cx16
2022-05-03 23:43:38 +02:00
0869789214
vm: implement float type casts to integer types
2022-05-02 23:38:32 +02:00
10c8cc35c5
vm: implement float divide multiply sub add
2022-05-02 21:53:43 +02:00
30c2e3e8ff
vm: fix comparisons codegen
2022-05-02 21:32:45 +02:00
86cc2f1075
vm: implementing more fp instructions
2022-05-02 21:06:14 +02:00
fa357a450b
clarify license
2022-05-02 19:46:08 +02:00
b32641db87
remove syscall() builtin functions
...
vm code can do this via inline assembly
2022-05-01 00:41:30 +02:00
0ee790969d
vm: allow inline "assembly"
2022-04-30 23:24:25 +02:00
7844ace934
vm: implementing floating-point
2022-04-29 22:27:02 +02:00
f4993d6e5d
vm: fix instruction type checks
2022-04-28 22:19:46 +02:00
0fab806f36
vm: some preparations for floating point
2022-04-27 17:45:58 +02:00
be2113d291
vm: starting to implement floating point instructions
2022-04-26 21:25:59 +02:00
625d5b2313
vm: some preparations for floating point
2022-04-26 21:08:32 +02:00
6471c0c536
upgrade antlr to 4.10.1
2022-04-24 23:29:15 +02:00
47c53fa60a
todo
2022-04-23 20:44:59 +02:00
cf50e4f6ec
vm: printing of numbers now via conv module.
...
assigning strings now converted to strcopy function call in the compiler ast.
2022-04-23 02:15:51 +02:00
7eea97d741
- floats: remove all floating point builtin functions and move them to the floats module instead
2022-04-22 00:45:54 +02:00
88b55ab93e
vm: add abs() and fix 6502 abs() code.
2022-04-18 21:20:17 +02:00
ee36d47c27
vm: added cmp() and most of the status-branch instructions
2022-04-18 19:59:48 +02:00
6f2fdbe447
added %option merge, also fixed problem with unit test building in newer IntelliJ version
2022-04-15 22:38:32 +02:00
0f36be0001
vm: simple optimizations for +/-/*/div with constants
2022-04-14 22:42:25 +02:00
0f4a197e34
improve ast check on pipe expressions
2022-04-14 00:49:06 +02:00
7dbff5b9e6
abs: remove support for floats. Use floats.fabs() instead.
...
this solves: can't use abs() etc in pipe expression because return type depends on argument type
2022-04-14 00:38:31 +02:00
220246278a
removed sum(), max(), min(). abs() now always returns uword type.
...
This greatly simplifies internal handling of builtin functions by always having one fixed return type.
2022-04-14 00:21:16 +02:00
349e5a15e9
min/max give proper error for string args
...
als implmented more vm builtin functions/syscalls
2022-04-13 23:09:25 +02:00
bf7f4bba7b
doc
2022-04-13 20:43:07 +02:00
ab1766a559
moved all *integer* builtin trig functions (sin8u, cos8u etc) as regular asmsubs in math module
2022-04-13 00:27:35 +02:00
51bf33040a
vm: add many builtin functions
2022-04-11 22:39:33 +02:00
a2c7273801
vm: use memory load instruction better
2022-04-11 20:55:06 +02:00
ec6ac5bf24
vm: added swap()
2022-04-11 01:50:47 +02:00
ec7501782d
vm: added 1-bit variants of lsr/lsl opcodes
2022-04-11 00:25:00 +02:00
890b1c2d52
more readable
2022-04-10 22:31:37 +02:00
c25d07259a
add block directive options to PtBlock
2022-04-10 21:37:47 +02:00
c960246eee
add some utility methods to PtNode to find the defining subroutine/block
2022-04-10 21:20:01 +02:00
a01aee3111
add sideEffects boolean to PtBuiltinFunctionCall
2022-04-10 21:08:54 +02:00
e2e951efdf
constValue(expr) convenience function added for new Ast expression nodes
2022-04-10 18:45:33 +02:00
3f6393f732
PtNumber can now be compared
2022-04-10 17:48:03 +02:00
b6eb343234
moving string escaping out of antlr project
2022-04-10 17:31:30 +02:00
207a7e5160
move operator lists
2022-04-10 13:24:17 +02:00
a0face4a28
vm: implementing rol/ror
2022-04-09 11:13:49 +02:00
a8cf9f5cc4
vm: syscalls can now return value
2022-04-05 20:46:34 +02:00
461b38e653
add -vm option to load an existing p8virt file directly in the virtual machine
2022-04-05 18:42:31 +02:00
8e4c0f7c22
vm: add sorting and reverse functions, fix value arg out of range errors
2022-04-05 17:48:49 +02:00
d78bfcc35c
vm: more optimal code when array index is constant value
2022-04-05 00:19:37 +02:00
2b7c09e6ee
vm: more optimal code for loops ending on 0
2022-04-05 00:08:38 +02:00
036d9dbe59
got rid of unnecessary cast of boolean expressions by making their type dynamically adjust to byte or word
2022-04-04 23:43:55 +02:00
1d342cc6af
optimize cx16 textio.setcc()/setcc2()
2022-04-04 22:23:06 +02:00
62b32b2211
todos
2022-04-03 22:56:13 +02:00
ae45ce517e
cleanups
2022-04-03 17:33:50 +02:00
5b3ccab7dc
vm: support noreinit option
2022-04-03 17:19:50 +02:00
95f16c38a9
removed 'aug' property in PtAssignment , it wasn't used for anything
2022-04-03 15:56:14 +02:00
d616cb283b
vm: implemented Pipe expression
2022-04-03 15:25:32 +02:00
9874fe2c23
fix superfluous printing of WARN/ERROR words
2022-04-02 22:16:47 +02:00
520a142992
version 8.0
2022-04-02 19:10:18 +02:00
6ff56dc0bb
vm: implemented When
2022-04-02 19:04:12 +02:00
1e63615592
tweaks
2022-04-02 18:04:41 +02:00
3e62ffed0a
x16 r39: optimize diskio.load_raw() to use kernal's headerless load support
2022-04-02 03:26:48 +02:00
b133d51a83
make the parser report '&&' as an error instead of treating it as bitwise and followed by address-of.
2022-04-02 02:08:01 +02:00
037b89f018
x16 r39: tweak kbdbuf_peek() result value
2022-04-01 23:47:09 +02:00
20d06d9f9d
fix return type error for asmsubs with >1 result values
2022-04-01 22:30:15 +02:00
156cf7315c
x16 r39: add new keyboard apis and more vector location definitions
2022-04-01 21:41:38 +02:00
e2886e5303
x16 r39: update vtui lib and example
2022-04-01 21:09:40 +02:00
c6cf330e70
fix bug in codegen for containment check in bytearrays and strings
2022-04-01 20:46:28 +02:00
6be3b62d78
fix new Ast gosub node translation
2022-04-01 18:07:06 +02:00
c57af5e81b
todo
2022-04-01 01:10:13 +02:00
f7431f809e
fix colorbars example issue with memcopy due to overlapping buffers
2022-04-01 00:54:06 +02:00
ea43c34de8
x16 r39: fix screen colors after changing screen mode
2022-04-01 00:21:22 +02:00
fb6e9fa58f
x16 r39: fix textio routines for new vera memory layout
2022-03-31 23:47:11 +02:00
b2ce1e8029
x16 r39: fix gfx2.text() charset rendering due to new Vera mem layout
2022-03-31 18:51:54 +02:00
d90c51220f
x16 r39: additional FP routine changes
2022-03-31 18:43:32 +02:00
d1b14b68fa
x16 r39: more free ZP registers possible by enabling floatsafe option
2022-03-31 18:30:26 +02:00
d911728611
x16 r39: cx16.mouse_config() API changed, added mouse_config2() convenience wrapper
2022-03-31 18:24:23 +02:00
86a7200012
x16 r39: cx16.screen_set_mode() -> cx16.screen_mode()
2022-03-31 18:17:28 +02:00
6ddb7453e1
vm postincrdecr on array done
2022-03-31 02:13:20 +02:00
ad2355f8d3
vm forloop done
2022-03-31 01:41:59 +02:00
582c498fe3
major version bump because upcoming breaking changes in cx16 r39 release target (kernal routines)
2022-03-31 00:12:26 +02:00
0a0c58d450
added for loop over constant ranges
2022-03-30 23:42:15 +02:00
0dc592b819
working on vm
2022-03-30 22:23:25 +02:00
f46300016d
working on vm
2022-03-30 01:58:31 +02:00
3e1a7c6102
fix vm signed comparisons
2022-03-29 00:57:33 +02:00
f07065bf84
some x16 example changes to use the improved mode $80 screen resolution
2022-03-28 22:30:34 +02:00
6d79903eb3
workin on vm issues
2022-03-28 01:49:43 +02:00
e166329f34
fix error for certain typecasted expressions inside comparisons
2022-03-28 01:38:01 +02:00
bb1bf6a88c
working on vm
2022-03-28 00:40:15 +02:00
30cbb6c9a8
implementing more of the vm
2022-03-27 21:59:46 +02:00
4e33ab1e89
cx16 target: update float routine addresses to new r39 kernal FP package
2022-03-27 19:34:49 +02:00
5494f309c0
working on vm
2022-03-27 17:46:15 +02:00
3b6e7eccdd
simplified containment check, only possible on string and arrays (as per the docs)
2022-03-27 16:59:55 +02:00
e41d6787bb
working on vm
2022-03-27 14:23:01 +02:00
ed30108961
removed '**' power-operator. Use floats.pow() instead.
2022-03-27 13:16:34 +02:00
12712ef812
working on vm
2022-03-27 11:48:44 +02:00
0307f6b42c
working on vm
2022-03-25 20:22:41 +01:00
3e44620966
add unit test for the string encoders special handling of 0x0000 and 0x8000-0x80ff
2022-03-25 18:26:23 +01:00
7424f1f768
remove kernal bug workaround for joystick_get() routine. Fixes #39
2022-03-25 18:03:33 +01:00
b5331d821c
fix string encoding for escaped characters
2022-03-25 00:17:41 +01:00
27f6d47efa
working on vm codegen
2022-03-24 23:26:57 +01:00
dbc7ad2ec4
no more Gosub node in new Ast, back to Functioncalls there.
2022-03-22 22:48:19 +01:00
7b27d270a2
gosub only uses an identifier
2022-03-22 20:53:06 +01:00
97b3a0b093
don't use the temp-variables introducing optimizations for the vm target
2022-03-22 20:21:32 +01:00
06b38506d1
working on vm translator
2022-03-22 01:43:02 +01:00
fd581ffc37
moved pattern_match() from prog8_lib to string module
2022-03-21 21:32:10 +01:00
ff57c5e9d3
working on vm and new ast
2022-03-21 01:36:11 +01:00
9b16d7c786
working on vm
2022-03-20 15:06:29 +01:00
4c1bb18956
refreshrate default value
2022-03-19 01:08:10 +01:00
7d2bf892b1
added start of virtual machine compilation target
2022-03-19 00:57:35 +01:00
a99e77093f
added syscall() builtin functions (only useful for experimental code gen)
2022-03-17 01:19:58 +01:00
92737bb695
better handling of loadAddress
2022-03-13 16:21:02 +01:00
9b81955544
optimizing new Ast
2022-03-13 11:49:07 +01:00
4a0031080a
getting rid of directives in new Ast
2022-03-13 00:30:20 +01:00
40e9fba312
working on new Ast and XML export to test it
2022-03-12 22:38:16 +01:00
e227cc92ff
new ast: regular subroutine has just 0 or 1 return type
2022-03-12 14:12:06 +01:00
73dbdbcbe6
module rename
2022-03-11 21:24:16 +01:00
3961f26635
consolidating modules
2022-03-11 20:45:39 +01:00
e51c274a18
reducing dependencies
2022-03-11 20:32:35 +01:00
e75d0c58a9
reducing dependencies
2022-03-10 23:46:43 +01:00
9a798360f4
introduced codeAst and codeCore modules to reduce dependencies
2022-03-10 22:38:16 +01:00
844ad09464
reducing dependencies
2022-03-10 21:36:51 +01:00
1e1d1efd90
reducing dependencies
2022-03-10 21:23:01 +01:00
240e6835c2
decide sim is not worth it-remove it again
2022-03-10 21:23:01 +01:00
61398ee8f8
decide sim is not worth it
2022-03-10 21:23:01 +01:00
e6e84859b7
building more of the simulator
2022-03-10 21:23:01 +01:00
abcdd331db
started with a simulator
2022-03-10 21:23:00 +01:00
775d136b91
new compileText result
2022-03-10 21:22:32 +01:00
dc93691fd9
working on new ast
2022-03-10 21:22:32 +01:00
48d782c69c
added flat mapping to symboltable
2022-03-10 21:22:31 +01:00
0a04e626d7
added new intermediate (simplified) AST meant for new codegen
2022-03-10 21:21:15 +01:00
e7c4bf5ebf
reducing dependencies
2022-03-10 21:17:31 +01:00
546a416f7e
reducing dependencies
2022-03-10 20:57:36 +01:00
179a7a2792
reducing dependencies
2022-03-10 02:17:06 +01:00
251b6fcf70
reducing dependencies
2022-03-10 02:09:34 +01:00
ab1fffb721
reducing dependencies
2022-03-10 01:41:42 +01:00
da352a322c
reducing dependencies
2022-03-10 01:27:27 +01:00
7d20458e82
fixed arrayliteral regression
2022-03-10 01:02:40 +01:00
5a54066f81
unravel more dependency of SymbolTable on the ASt nodes (Expression), and fix initializing zp-allocated array
2022-03-09 01:42:05 +01:00
a58e5a3399
simplify result handling of assembly phase
2022-03-08 18:51:07 +01:00
9872f43cbf
repeat-forever loop is now replaced by label+jump
2022-03-08 03:25:34 +01:00
1078cc4642
remove debug
2022-03-07 21:45:29 +01:00
db7ae028b2
simplified CompilationResult a bit
2022-03-07 21:41:12 +01:00
2b6f5dbd59
cleanup st use at variable asm generation
2022-03-06 19:50:15 +01:00
f7aa0c45df
optimize imports
2022-03-05 15:54:42 +01:00
a72d58cdf9
updated 3rd party library versions
2022-03-05 15:28:22 +01:00
067283834a
got rid of old IVariablesAndConsts object
2022-03-05 14:40:41 +01:00
cf362c4a61
getting rid of old IVariablesAndConsts object
2022-03-05 14:11:58 +01:00
496245c801
working on symboltable
2022-03-05 12:10:20 +01:00
859ab36347
variables extraction moved to the very end, so no need anymore to change the table after the fact
2022-03-04 23:12:24 +01:00
1d740c7c36
removed need to store ast scope on each zp allocated var, now uses scoped name to find them
2022-03-04 22:58:05 +01:00
a03c4c3659
working on symbol table
2022-03-04 22:26:46 +01:00
094ecceaac
fix bug where non-inlined asmsub didn't always get a proper RTS, causing program crash
...
was caused by a change in 7.8; 8ae3bad6f7
"fix rts in empty asmsub"
2022-03-03 01:10:33 +01:00
2812736ae5
preparing version 7.9
2022-03-03 00:42:53 +01:00
6f87f8706c
can only call unary functions in pipe at this time
2022-03-02 23:16:40 +01:00
38beebe720
fix pipe check for number of args
2022-03-02 21:29:09 +01:00
fc1c3c6808
working on altered pipe syntax
2022-03-02 20:58:38 +01:00
96ba895b84
working on altered Pipe syntax
2022-02-27 02:42:28 +01:00
df35dfe3bf
added atari XEX output format with default $2000 load address
2022-02-26 15:36:22 +01:00
c5504c6657
added ATASCII encoding table for atari
2022-02-25 23:48:39 +01:00
530e109433
added altirra as atari emu2
2022-02-25 19:16:37 +01:00
6cce47b2f1
fix launching emulator for atari target
2022-02-24 23:22:02 +01:00
6185d5eca1
Merge remote-tracking branch 'origin/master'
2022-02-24 22:52:08 +01:00
685ad1746e
Merge pull request #74 from FreddyOffenga/master
...
temporary fix for chrout and newline for atari and added two examples
2022-02-24 22:30:59 +01:00
891f870ec0
todo
2022-02-23 21:58:27 +01:00
ad9933f0f6
fixed chrout for atari and added two examples
2022-02-23 16:42:22 +01:00
1b86117754
todo
2022-02-22 23:38:09 +01:00
eeb3c968d6
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
2022-02-22 22:43:14 +01:00
406658a10f
reimplemented sys.memcopy and sys.memset on cx16 to work without kernal too
2022-02-22 21:07:19 +01:00
6a0551cea1
added 'atari' compiler target beginnings (Atari 800 XL)
...
also default char and string encoding now taken from compiler target
2022-02-22 00:52:35 +01:00
553f3b45d2
compile time calculated values of sin/cos routines fixed to be identical to the results of the run-time functions
2022-02-21 21:30:42 +01:00
064a8e785c
cleanups
2022-02-21 03:26:17 +01:00
21e9723bb2
allow the last term in a pipe statement to be a variable, rewrites this as var = <rest of pipe>
2022-02-21 02:33:19 +01:00
60b2c44a44
fix returntype handling of builtinfunctions, fix errors in pipe expressions
2022-02-21 01:44:29 +01:00
c4fe3ecc0a
refactor
2022-02-20 22:04:18 +01:00
2f18a8f6d0
introduced BuiltinFunctionCall (expression) node for codegen
2022-02-20 02:48:27 +01:00
5ac784e18a
cleanup
2022-02-19 00:30:59 +01:00
7a2164b4d0
introduced BuiltinFunctionCallStatement node for codegen
2022-02-18 23:27:11 +01:00
0a43eae184
rework registerArgsViaStackEvaluation to use cpu hardware stack instead
2022-02-18 22:38:00 +01:00
3117e2b2a3
more tweaks
2022-02-18 01:25:08 +01:00
41fece4643
slight tweaks related to builtin functions in the ast
2022-02-17 01:25:13 +01:00
7aa807ec7f
proper error if attempting to do a containment check against non const range, and some cleanup in asmgen
2022-02-16 00:39:19 +01:00
4d16e1e14a
now checks for invalid text encodings for given compilation target
2022-02-15 01:39:12 +01:00
73fc18099e
properly report duplicate label names
2022-02-15 00:39:10 +01:00
e34dac8dbb
remove unit test issue
2022-02-15 00:38:51 +01:00
af0e7f7187
searching names in inlined assembly now ignores source comments
2022-02-13 13:41:12 +01:00
a3a6812608
version 7.8
2022-02-12 17:40:32 +01:00
2725c4ad4d
slight tweaks to zp and allocator
2022-02-12 00:15:52 +01:00
c8cd6e9460
removed old @"screencodes" string encoding syntax (use sc:"hello" instead)
2022-02-11 22:07:14 +01:00
0cd27d6129
fix empty lines in subroutine ast printing
2022-02-11 21:44:38 +01:00
b47fc1c020
renames of some Ast node classes
2022-02-11 00:34:36 +01:00
de6ef7ef5e
doc
2022-02-11 00:16:39 +01:00
f95fe8f1da
note about removing VarDecls
2022-02-10 23:20:19 +01:00
bd0dee5db5
cleanup
2022-02-10 22:22:50 +01:00
c13b7fd883
report free/occupied Zeropage space at end of compilation
2022-02-10 21:59:44 +01:00
f7e74b3088
naming
2022-02-10 03:18:56 +01:00
343f01d5e1
re-enabled unused variable removal from library modules (+fixed some @shared vars in libraries)
2022-02-10 03:10:47 +01:00
08bacdd090
temp vars are now dynamically added to AST as needed
2022-02-10 02:52:47 +01:00
41b1c80492
label name from memory() no longer interned as string var
2022-02-10 00:45:20 +01:00
e5d7316e5d
streamlining non-zpvars asmgen using new mechanism
2022-02-10 00:09:09 +01:00
b043c3a6da
streamlining vars asmgen using new mechanism
2022-02-09 21:58:25 +01:00
98b2855b9c
cleanups
2022-02-09 16:35:52 +01:00
f3c52c409f
variable zp allocation now only done in the allocator
2022-02-08 23:44:21 +01:00
1307bdc612
more cleanups to the allocator
2022-02-08 22:46:49 +01:00
8c2e6971fc
start using vars instead of callgraph (2)
2022-02-08 21:09:00 +01:00
1903990f30
start using vars instead of callgraph
2022-02-08 20:40:10 +01:00
7d67005709
more rewrite variable allocation
2022-02-08 20:40:10 +01:00
9acc2f92d1
start to rewrite variable allocation
2022-02-08 20:40:10 +01:00
72dfb0bda3
fix: undefined sys.memcopy when initializing array on cx16
2022-02-08 20:29:47 +01:00
1635612430
tiny tweak in asm optimizer
2022-02-08 02:19:50 +01:00
abda837d2f
split program structure codegen out of AsmGen into separate class ProgramGen
2022-02-07 00:12:25 +01:00
101fb0b8aa
some naming changes and cleanups
2022-02-06 23:14:44 +01:00
10de7dc1f9
fixed the concurrent modification issue on zeropage when running unit tests in parallel, by not having machine targets be static objects
2022-02-06 21:29:06 +01:00
d2309b8114
introducing IVariableAllocation (WIP)
2022-02-06 18:57:23 +01:00
6bdd81623f
cleaning up AsmGen interface
2022-02-06 17:07:03 +01:00
f538c9f0c3
remove bogus double var decl check
2022-02-06 14:04:54 +01:00
8ae3bad6f7
fix rts in empty asmsub
2022-02-06 05:05:58 +01:00
77de99b383
rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen
2022-02-06 04:03:03 +01:00
312949f336
added experimental codegen backend option
2022-02-05 21:42:03 +01:00
1ab635bd7e
small tweak of parse messages
2022-02-05 14:02:24 +01:00
b35abd548c
less noisy output about what module files are being imported.
2022-02-05 04:25:34 +01:00
30e1c3307c
simplify SourceCode: just read the full text immediately. Also optimized imports.
2022-02-05 03:50:54 +01:00
08e052380a
comments
2022-02-05 03:14:26 +01:00
0e824c35cc
Merge pull request #73 from akumanatt/master
...
Codegen and runtime library optimizations
2022-02-05 02:21:53 +01:00
548374ac2d
fix: do proper sign exension when multiplying signed word and byte vars
2022-02-05 01:52:13 +01:00
9ad79fefc9
Merge branch 'master' of https://github.com/irmen/prog8
2022-02-04 22:55:41 +07:00
49d37c016e
Optimize strcmp_mem
2022-02-04 22:07:03 +07:00
7c70c79a84
Optimize in-place word subtraction and negation
2022-02-04 21:21:06 +07:00
6916b8bff7
remove redundant properties
2022-02-03 23:59:24 +01:00
73dfb5f443
Optimize sign extension to AY
2022-02-04 00:59:44 +07:00
69b9dfa468
fix invalid recursion warning for code referencing subroutine but not via a call
2022-02-01 23:09:52 +01:00
ab61b8ba0a
doc ref
2022-02-01 21:47:53 +01:00
5c8c64242f
callgraph: nameInAssemblyCode searches smarter (for unused())
2022-02-01 00:33:05 +01:00
ddf96943f0
remove Nop ast node.
2022-01-31 22:36:10 +01:00
e773be2f58
remove no longer needed asmSymbol scoping prefixing, now asmSymbolName are identical to asmVarName
2022-01-31 01:47:22 +01:00
f965804e6d
fix invalid optimization of returning a parameter variable in a subroutine
2022-01-28 16:44:42 +01:00
ec078eba72
optimize w=msb(w) => w>>=8, w=lsb(w) ==> w&=$00ff
2022-01-28 16:11:52 +01:00
1815cb1bc3
fixed bug in assembly optimizer removing too many instructions
2022-01-28 15:19:08 +01:00
7b3cd71085
fixed improper optimization of word<<8 and word>>8
2022-01-28 13:54:06 +01:00
06128b5d07
optimize word&=$ff00 and word&=$00ff
2022-01-28 13:40:28 +01:00
990c8e1f18
split out 6502 codegen module from various compilertargets module.
2022-01-28 00:32:09 +01:00
a170506356
simplify IdentifierReference equality check back to default (name+pos)
2022-01-27 23:32:55 +01:00
5ecf2a3357
enable more optimizations for typecasted assignments. Fixed missing codegen for assigning bytes to words in certain cases.
2022-01-27 18:05:25 +01:00
fa48746ba9
increase internal buffer for diskio.list_files to be able to list larger directories
2022-01-26 03:17:33 +01:00
e2b8c069d7
check for missing '&' in string + value expressions (can't just add a value to a string)
2022-01-24 23:30:40 +01:00
14407bd1aa
fix memory() existing check typo
2022-01-24 23:21:31 +01:00
08db72903c
for long containment checks use a subroutine instead of huge cmp-table
2022-01-24 22:40:22 +01:00
46f9fab140
library API change: string.find now returns index of character + carry bit status (instead of substring address)
2022-01-24 21:37:04 +01:00
b7d06f2c0a
API change: added alignment parameter to memory() function
2022-01-24 18:58:57 +01:00
118196a0bf
library API change: moved cx16.vload() to cx16diskio module
2022-01-24 18:31:18 +01:00
586ce1fc80
tweak return's use of intermediate variable
2022-01-24 01:10:04 +01:00
adb979df38
tweak comment
2022-01-23 22:34:05 +01:00
3401cb5b4a
fixed compiler recursion crash when returning certain typecasted value
2022-01-23 19:13:20 +01:00
ebf1f12e97
inferred type for len() is now more precise
2022-01-23 17:24:39 +01:00
5766208207
fix compiler crash when initializing an array var with another array var
2022-01-23 14:23:34 +01:00
4bf4771f08
fix @requirezp in astToSource. Fix sometimes allocating zeropage variables in normal ram.
2022-01-23 13:42:52 +01:00
0e87db9eb7
fix invalid size copied when initializing arrays in Zeropage
2022-01-23 13:00:01 +01:00
1e053783f3
fix invalid size copied when assigning non-byte arrays
2022-01-23 02:42:36 +01:00
7afc96112b
now correctly requires using & (address-of) when assigning the address of a label or subroutine, used to generate invalid code when it was omitted
2022-01-23 02:23:30 +01:00
7bb41a30ed
fixed compiler crash when assigning number larger than 65535
2022-01-23 01:44:16 +01:00
3d1b0eb843
fixed compiler crash when using cx16.r0H as function call argument
2022-01-23 01:28:16 +01:00
5b9af0b5ae
tweaks
2022-01-21 23:38:54 +01:00
9219ec539d
allow "goto pointervar" for indirect jumps
2022-01-21 22:55:59 +01:00
c8bd57cd4d
fixed signature of mouse_get(): it returns the buttonstatus in A. Added convenience cx16.mouse_pos() routine.
2022-01-21 22:06:17 +01:00
53bf8c09fd
fix screencode encoding selection
2022-01-19 21:37:27 +01:00
651c383668
refactor encoder to be the same for all 3 machine targets now
2022-01-19 21:21:33 +01:00
9ed7587e3e
document new string encoding syntax
2022-01-19 21:21:33 +01:00
674295e800
improve error reporting from string encoders
2022-01-19 21:21:33 +01:00
6b02f2eea0
implement iso encoding and new string encoding syntax, fixes #38
2022-01-19 21:21:32 +01:00
5237e55326
added txt.iso() to enable iso-charset on cx16
2022-01-18 21:35:29 +01:00
3b59592110
generalize string encoding flag into enum
2022-01-18 21:21:49 +01:00
72640ae058
no longer add nops around breakpoint for vice
2022-01-17 22:12:58 +01:00
d916027e75
labels no longer start with '_' fixes #62
2022-01-17 22:03:53 +01:00
8966d2aa06
comments and prepare new version 7.7
2022-01-16 23:03:00 +01:00
de7ea04f54
when zp option = dontuse, print error for any variable with @requirezp
2022-01-16 18:13:24 +01:00
bf71fabe0e
fix codegen mistake for zp allocated loop vars
2022-01-16 18:09:09 +01:00
b3368acb33
todos to fix broken examples
2022-01-16 17:57:47 +01:00
87220c6697
docs for @requirezp
2022-01-16 17:20:36 +01:00
a3b5c2ad71
fix zp address output and adjust vars datastructure
2022-01-16 17:20:36 +01:00
fb4c1473c5
array and string initialization in zeropage
2022-01-16 17:20:36 +01:00
2bb2502d20
added @requirezp to syntax files
2022-01-16 17:20:36 +01:00
fe51698579
tweak how zp varnames are stored
2022-01-16 17:20:36 +01:00
0f0f40bff3
improved ForloopAsmGen loopvar zp allocation
2022-01-16 17:20:36 +01:00
a798fe72d3
cx16 reserved zp vars (virtual registers)
2022-01-16 17:20:36 +01:00
fba98d03a5
improve %zpreserved error messages
2022-01-16 17:20:36 +01:00
7dd2517f67
fix Zp allocation issues
2022-01-16 17:20:36 +01:00
641477d6f6
add @requirezp and allow str/array to be on zp (with warning)
2022-01-16 17:20:32 +01:00
8e56656c8d
fix broken code generated for certain ==/!= expressions
2022-01-16 17:10:49 +01:00
564a6a1f62
fix invalid removal of Jump
...
that would generate wrong code if occurs at the end of a subroutine
2022-01-16 14:05:42 +01:00
69f0c80cd7
added pokemon() function
2022-01-15 19:04:04 +01:00
6fcb51cea2
add warning when encoded string contains 0-byte
2022-01-15 17:11:40 +01:00
c58b8a4973
fix ast to source: @shared wasn't printed
...
fix grammar: @shared and @zp can occur in any order now in vardecl
2022-01-13 02:29:55 +01:00
c8f4ab4f06
doc
2022-01-12 22:21:01 +01:00
e425c4cca8
optimizing pipe codegen
2022-01-11 23:17:35 +01:00
056ec986c2
use var initializer assignments in a clearer way
2022-01-11 00:34:44 +01:00
de3b2fb95b
slightly optimized certain list iterations into sequences
2022-01-10 23:15:24 +01:00
789e39c719
slightly optimized assembly file handling
2022-01-10 22:48:20 +01:00
b29c3152db
Assignment: make its origin explicit
2022-01-10 02:25:02 +01:00
3831679772
VarDecl: make its origin explicit
2022-01-10 01:53:03 +01:00
596f9566d8
todo
2022-01-10 01:00:50 +01:00
124befe9d6
slightly optimized code for assigning boolean expressions such as `b = xx>99
`
2022-01-09 18:49:44 +01:00
895534f32b
don't remove dead variable assignments if they are a function call
2022-01-09 18:41:01 +01:00
50c16fe6de
code size optimization: don't copy floats with inlined copy code but use copy_float routine
2022-01-09 16:18:13 +01:00
b092d1a5d3
fixed code gen issue for uword >= comparison
2022-01-09 13:23:29 +01:00
a9b45630d7
optimized code for variable comparisons to zero
2022-01-09 13:10:01 +01:00
c1a39c269e
optimized code for stack eval comparisons with zero
2022-01-09 03:19:49 +01:00
6fa3f0b6cd
small refactor
2022-01-08 18:02:38 +01:00
9e5e3d1559
pipe expression not evaluated via stack
2022-01-08 17:51:23 +01:00
7135205299
fix codegen bug for pipe expressions to actually return correct value and not corrupt X register
2022-01-08 17:41:46 +01:00
d99d977d2b
fix more typecasting issues
2022-01-08 17:04:25 +01:00
7dd7e562bc
pipes also as expressions, cleanup codegen, fix various typecasting issues
2022-01-08 13:45:19 +01:00
75d857027e
cleanup of Pipe codegen
2022-01-08 01:33:40 +01:00
17694c1d01
better error handling of invalid number casts
2022-01-07 22:12:13 +01:00
749ad700d8
naming consistency for some expression classes
2022-01-07 21:02:55 +01:00
8f3df3039a
added pipe operator `|>
`
2022-01-06 22:54:18 +01:00
02c315c194
add missing unit tests and type checking for 'in' expression
2022-01-06 00:01:49 +01:00
b697375573
add note about unspecified order of evaluation of expressions and subroutine call arguments
2022-01-05 23:21:45 +01:00
c57ef7725e
preparing v7.6
2022-01-04 20:40:35 +01:00
3ae07503f2
doc css styling: font size slightly bigger for code as well
2022-01-03 23:28:11 +01:00
9a0341adde
doc css styling: font size slightly bigger
2022-01-03 23:16:07 +01:00
96225efd96
library doc tweaks
2022-01-03 23:15:34 +01:00
c3bd904f41
todo
2022-01-02 23:46:36 +01:00
74257163b1
fix that memory("name", ...) also allocates a STR variable for the name
2022-01-02 17:07:04 +01:00
7bc75fd220
fix that memory("a b c", ...) produces invalid symbol
2022-01-02 16:11:53 +01:00
a23281afab
added experimental -noreinit option
2022-01-01 16:35:36 +01:00
9e90dbdde6
slight optimization of repeat loop (> 256 iters) code generation on 65c02 cpu
2022-01-01 14:42:37 +01:00
1e8d8e40a2
slight optimization of repeat loop (0-256 iters) code generation on 65c02 cpu
2021-12-31 14:06:35 +01:00
583e208c1e
remark
2021-12-31 11:34:53 +01:00
9b91c427a1
add porting guide
...
sizeof(pointer) is hardcoded as 2 now
2021-12-31 00:16:23 +01:00
196c5e9c24
v39->r39
2021-12-30 19:05:56 +01:00
d8f7feb672
cleanup code style
2021-12-30 18:47:38 +01:00
7c889f17b9
c128 fixes
2021-12-30 18:33:26 +01:00
c15a75556d
Merge branch 'master' into c128target
...
# Conflicts:
# compiler/src/prog8/CompilerMain.kt
# examples/test.p8
2021-12-30 18:22:05 +01:00
5275c2e35f
todo porting guide
2021-12-30 18:20:09 +01:00
5267e06969
added -asmlist cli option to produce assembler listing output
2021-12-30 14:42:09 +01:00
b62183adcb
slightly optimized binexpr evaluation for ==/!= in some cases
2021-12-30 02:00:36 +01:00
5d2dec1803
added missing codegen for augmented ==/!=
2021-12-30 01:34:10 +01:00
4a98dab948
fix compiler warnings
2021-12-30 00:58:33 +01:00
9f8c70b326
fix warning about testing multiple values
2021-12-30 00:49:36 +01:00
a65404e63a
doc
2021-12-29 18:24:05 +01:00
05a1ddad05
Merge branch 'master' into c128target
...
# Conflicts:
# examples/test.p8
2021-12-29 18:14:24 +01:00
4be3d63c0e
slight optimization of if-in
2021-12-29 18:13:43 +01:00
de6ce4a46e
add "X in [1,2,3]" expression (efficient containment check)
2021-12-29 17:26:00 +01:00
7a9e5afb93
fix: for loop over array literal no longer crashes the compiler
2021-12-28 17:51:38 +01:00
b2876b0a03
add a suggestion to use when statement if it seems appropriate
2021-12-28 16:38:12 +01:00
b66f66fe6a
fix renames
2021-12-28 14:32:27 +01:00
30f04962d4
Merge branch 'master' into c128target
...
# Conflicts:
# codeGeneration/src/prog8/codegen/target/C128Target.kt
# codeGeneration/src/prog8/codegen/target/c128/C128MachineDefinition.kt
# codeGeneration/src/prog8/codegen/target/c128/C128Zeropage.kt
# compiler/src/prog8/CompilerMain.kt
# compiler/src/prog8/compiler/Compiler.kt
2021-12-28 14:30:11 +01:00
0feeb88024
codegen package rename 2
2021-12-28 14:23:36 +01:00
b799f2e05b
codegen package rename
2021-12-28 14:18:04 +01:00
56d21de001
Merge branch 'master' into c128target
...
# Conflicts:
# examples/test.p8
2021-12-28 13:57:27 +01:00
7b54aa0c7d
more consistent naming of the statement classes
2021-12-28 13:56:47 +01:00
6e11b8ada1
GoSub no longer inherits from Jump node, fixes subtle ast/codegen bugs related to jsrs
2021-12-28 01:55:13 +01:00
98d25fc4e9
fix some unneeded open classes
2021-12-28 01:29:08 +01:00
79405f47f6
fix if-gosub
2021-12-28 01:24:31 +01:00
1c7c4fc3b0
optimized if-goto codegeneration
2021-12-28 00:42:00 +01:00
97e84d0977
tweak if statement handling
2021-12-27 15:04:25 +01:00
9906b58818
tweak while desugaring, moved postfixexpr optimizations to VariousCleanups regardless of optimizer setting because asmgen requires these for conditional expressions
2021-12-27 12:41:26 +01:00
371f084884
comment
2021-12-27 02:17:04 +01:00
1c10839c14
moved peek/poke desugaring to other walker
2021-12-27 02:08:47 +01:00
c55fdd9834
removed special code generation for while and util expression (replaced by jumps)
...
also added exhaustive parent node checker in validation step
2021-12-27 02:04:28 +01:00
67b0890a6e
remove unneeded var inits when an assignment is already present
2021-12-25 23:31:25 +01:00
4da4f96669
lower code: break -> goto after (simplifies codegen)
2021-12-25 22:30:38 +01:00
60a64c2558
test program for floating point issues on c128
2021-12-25 14:36:10 +01:00
d4153da8b9
setup float routine addresses for c128
2021-12-25 02:34:52 +01:00
fc33ab8905
shuffled some system functions back to c64 block to remain compatible with existing code, added missing float and graphics library stubs
2021-12-24 00:08:32 +01:00
a123c64f59
Merge branch 'master' into c128target
2021-12-23 23:51:42 +01:00
a090fe3834
no compiler optimizer crash on certain missing symbol
2021-12-23 23:51:21 +01:00
8fa84de28e
fix c128 clearscreen and bdmusic sound issue
2021-12-22 22:59:36 +01:00
3e3da38de1
correctly disable charset switching
2021-12-22 21:47:41 +01:00
a3be8ccc87
Merge branch 'master' into c128target
2021-12-22 21:25:49 +01:00
cdfef30c22
fixed docs on rsave()/rrestore() builtin functions
2021-12-22 21:24:36 +01:00
cabf1e82e8
some shadow registers added to make uppercase()/lowercase() work
2021-12-22 21:20:34 +01:00
608dc5e284
readme
2021-12-22 00:36:06 +01:00
836d40072f
c128 evalstack corrections
2021-12-22 00:07:05 +01:00
431401d90e
c128 corrections
2021-12-21 23:37:15 +01:00
6da83e2bd7
first steps to add C128 compiler target
2021-12-21 19:08:33 +01:00
7bccfc0006
proper position in recursion warning
2021-12-17 21:04:41 +01:00
e051e09c1d
trim down number of warnings a bit
2021-12-17 20:21:14 +01:00
1462c57d0c
no need for intermediary returnvalue var for prefix expressions
2021-12-16 21:00:38 +01:00
77c2b2b326
fix position of @shared in array var declarations so that the order is now type[] @shared
2021-12-16 20:36:05 +01:00
3cf9b9d9a5
code size optimization: subroutine calls with 2 byte arg will pass it via A/Y registers instead of separate param assignments at every call site
2021-12-16 01:48:22 +01:00
629117e594
code size optimization: subroutine calls with 1 int arg will pass it via register instead of separate param assignment at every call site
2021-12-16 00:56:59 +01:00
08f87c321f
fixed capitalization of operator sets to be consistent with other sets names
2021-12-15 23:43:14 +01:00
1ff13723fe
implicit int to float conversion is now an error if floats are not enabled.
2021-12-15 01:52:28 +01:00
510bda1b28
fix compiler crash when using floats in a comparison expression
2021-12-15 01:24:25 +01:00
890327b381
the returnvalue of the diskio.load() function family now is just the last load address+1 (like kernal's LOAD routine).
...
This fixes the inconsistent attempt to calculate a size, just let the caller do this if required.
Added a small helper function in cx16diskio to do this for loads that span multiple banks.
2021-12-14 23:54:42 +01:00
b21f7411dd
fix compiler crash when trying to concatenate string var and string literal.
2021-12-14 23:07:46 +01:00
5df623bd2e
doc
2021-12-14 22:40:03 +01:00
1e9d249f71
fixed output of float values in cmp instructions
2021-12-13 00:17:59 +01:00
a7b5949e6a
fix compiler crash when using a gosub/subroutinecall in a branch statement
2021-12-11 15:11:16 +01:00
02010170ce
fix compiler crash when attempting to call a non-function
2021-12-11 13:20:13 +01:00
35998142fe
version 7.5
2021-12-10 20:18:17 +01:00
75ea453bf4
fix asm code optimization problem caused in previous release where asm file is not read back in separate lines anymore
2021-12-10 15:37:53 +01:00
33061aaa0d
fix: allow scoped variables such as cx16.rX as loop variable in forloops
2021-12-10 14:59:04 +01:00
e342311bef
fix wrong code for inplace modification of a pointervariable's memory value
2021-12-10 14:48:53 +01:00
3d743a1ba1
added more constfolding
2021-12-09 23:32:48 +01:00
abca618008
added more constfolding
2021-12-09 23:12:12 +01:00
0d2c3901a3
added more constfolding
2021-12-09 22:12:31 +01:00
d901a1531f
added missing vectors to syslib
2021-12-09 21:38:00 +01:00
d8d56b195f
comments
2021-12-09 21:13:13 +01:00
a52699717c
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# compiler/src/prog8/compiler/astprocessing/AstChecker.kt
# compiler/test/TestSubroutines.kt
# examples/test.p8
2021-12-07 23:29:30 +01:00
98315de723
allow using ubyte[] as subroutine parameter type (because it is equivalent to uword pointer var)
2021-12-07 23:28:45 +01:00
68d2f7d4c0
allow using ubyte[] as subroutine parameter type (because it is equivalent to uword pointer var)
2021-12-07 23:21:49 +01:00
c812b5ee09
elaborate pointervar indexing a bit more in the docs
2021-12-07 22:25:14 +01:00
dcf487bdc1
fix: correctly insert return statement if needed to prevent 'fall through' into following subroutine
...
this wasn't working correctly anymore when the last statement before the subroutine was a jump/goto
2021-12-07 21:34:50 +01:00
547b1d3720
comment corrections
2021-12-06 23:33:18 +01:00
84f75f4156
tweaked some more .getOrElse
2021-12-06 21:22:00 +01:00
ff69da3fa2
error when 'else' choice in when statemetn isn't the last one, also generate slightly better code for when statements
2021-12-05 21:54:46 +01:00
edffe92a24
astchecker is smarter in detecting rts in inline assembly
2021-12-05 21:28:31 +01:00
b6fe40ada4
fix: cx16.r0 now properly treated as zeropage var on cx16 so @(cx16.r0) won't copy it to temp var anymore
2021-12-05 21:21:41 +01:00
837804b231
test for string x and u escape sequences
2021-12-05 18:39:34 +01:00
81deed143b
fix grammar problem: \x and \u escape sequences didn't work in character literals.
2021-12-05 18:11:40 +01:00
900cdd3fa1
added cx16diskio with load() and load_raw() that are HIMEM bank-aware
2021-12-05 02:20:48 +01:00
0018dc6ce7
refactor machinedefinition
2021-12-04 19:07:19 +01:00
c92f914081
gradle build settings tweak to avoid jdk version conflict
2021-12-04 18:36:47 +01:00
0498444ef2
moved all unit tests into single project to avoid dependency issues
2021-12-04 18:20:22 +01:00
ce3c34e458
tweak in error output for file links, corrected column number off-by-one
2021-12-04 16:52:03 +01:00
20401b99d8
added cx16.getrambank() / getrombank() to retrieve the current ram and rom bank numbers.
2021-12-04 15:27:54 +01:00
397f98513b
optimize loading A from pointervar
2021-12-04 05:36:48 +01:00
e545ea9504
fix and optimize storing A into pointervar
2021-12-04 04:43:58 +01:00
b867d8f731
cleanups
2021-12-04 01:03:51 +01:00
9a68864b67
version 7.5-dev
2021-12-04 00:18:44 +01:00
72d7178762
added diskio.load_raw() to load headerless files
2021-12-04 00:07:21 +01:00
fbcd9a0c1d
reduce number of similar errors for type problem in assignment
2021-12-02 17:44:52 +01:00
c3144a20db
spacing
2021-12-02 00:10:06 +01:00
5b56e0462d
also deal with zero args
2021-12-01 22:26:36 +01:00
b7fffbb6df
release 7.4.1 - oops, funcion call arg count validation was broken
2021-12-01 21:44:03 +01:00
1f346230e3
release 7.4
2021-11-30 22:50:12 +01:00
a2860a7c8c
todo
2021-11-30 22:45:43 +01:00
df997e5d3b
don't write the asm file twice
2021-11-30 03:47:57 +01:00
a67a82c921
tweak
2021-11-30 03:05:25 +01:00
ea0fe8d3d2
PrefixExpression doesn't cause clobber risk
2021-11-30 02:32:37 +01:00
2560042ac7
fix compiler crashes on in-place operations on cx16 registers or invalid signed types
2021-11-30 02:27:37 +01:00
3d1d0696b9
refactor compiler arguments passing
2021-11-30 01:40:21 +01:00
83f893f50b
doc
2021-11-30 00:54:03 +01:00
9ecf95b075
fix syntaxerror in const processing of ranges if it contained variables
2021-11-29 23:36:41 +01:00
7748c261da
rsave/rrestore moved from sys to builtin function to solve the stack related problem when calling it as a regular subroutine
2021-11-29 23:13:04 +01:00
a2db44f80c
also consider Y register for clobber check for functioncall arguments
2021-11-29 22:09:05 +01:00
b438d8aec0
fix invalid range size check when stepval is not a positive integer
2021-11-29 02:01:19 +01:00
4ac169b210
formatting
2021-11-29 01:25:21 +01:00
56dc6d7f1e
comment
2021-11-29 01:10:11 +01:00
45b8762188
use inc/ina instead of adc
2021-11-29 00:07:15 +01:00
cafab98d10
correction
2021-11-28 18:59:36 +01:00
9256f910f0
rollback binexpr splitting, caused slowdowns
2021-11-28 18:50:05 +01:00
32068a832a
split some additional binary expressions to avoid stack-based evaluation
2021-11-28 18:27:28 +01:00
47c2c0376a
added some cpu stack related assembly-level optimizations
2021-11-28 17:27:01 +01:00
f0dadc4a43
optimize 1-arg functioncalls
2021-11-28 16:55:10 +01:00
960b60cd2d
tweak
2021-11-28 14:06:12 +01:00
d6abd72e55
fix push() of signed values
2021-11-28 13:01:46 +01:00
0a568f2530
fix the check of double-defined subroutine variables
2021-11-28 12:52:32 +01:00
c52aa648c0
use an AnonymousScope to contain GoSub changes instead of adding separate statements
2021-11-28 12:09:13 +01:00
3d23b39f4c
moved A to the end of the param list to avoid having to store its value
2021-11-28 04:03:18 +01:00
f3a4048ebf
improved setting Carry bit as asmsub parameter
2021-11-28 03:31:32 +01:00
1b07637cc4
better error checking for wrong pop()
2021-11-28 02:49:18 +01:00
68b75fd558
fix: also allow pass-by-reference arguments to builtin functions that accept UWORD (adds implicit type cast)
2021-11-28 02:34:53 +01:00
7c5ec1853d
nice error message if pop() argument is wrong
2021-11-28 02:20:35 +01:00
e8f4686430
undid failed attempt of using sys.push/sys.pop for stack args - now using new push(), pushw(), pop(), popw() builtin functions
2021-11-28 01:22:40 +01:00
02348924d0
failed attempt of using sys.push/pop for stack args
2021-11-27 23:52:47 +01:00
69dcb4dbda
fix reporting of (not) unused code after GoSub jump
2021-11-27 21:22:34 +01:00
c838821615
refactor fuction arguments codegen a bit
2021-11-27 21:14:21 +01:00
8b4ac7801f
fix sys.push() signature for c64
2021-11-27 20:18:41 +01:00
64a411628d
doc fixes
2021-11-27 19:58:08 +01:00
e8e25c6fd6
added sys.push() and sys.pop() to put values on cpu stack. Added missing builtin functions to syntax-files.
2021-11-27 18:09:15 +01:00
62485b6851
allow assigns to asmsub parameters (registers), but this is not very useful in practice.
2021-11-27 15:41:44 +01:00
54025d2bf5
small refactor and spelling fixes
2021-11-27 14:49:18 +01:00
f5ebf79e71
make sure X register is also saved if needed when GoSub is used
2021-11-26 22:11:52 +01:00
66d5490702
just added missing FAC2 assign possibility
2021-11-26 21:34:00 +01:00
42fe052f9f
got rid of old getScopedSymbolNameForTarget routine
2021-11-26 21:09:29 +01:00
58d9c46a9b
got rid of old makeScopedName routine
2021-11-26 20:56:30 +01:00
e4648e2138
proper rounding of builtin functions that return int from float
2021-11-26 20:32:12 +01:00
110e047681
replace subroutine calls (statement) by GoSub
2021-11-26 19:47:01 +01:00
17d403d812
Merge branch 'ref-subroutine-param' into v7.4-dev
...
# Conflicts:
# compilerAst/src/prog8/ast/AstToplevel.kt
2021-11-26 01:12:14 +01:00
0a53bd4956
fix parameter name conflict
2021-11-26 01:01:59 +01:00
e52d05c7db
fix some scoping related symbol lookup issues, clarified scoping rules in docs
2021-11-23 23:43:23 +01:00
b00db4f8a2
no longer report unknown type errors as well for unknown symbols,
...
added a bunch more unit tests for symbol scoping rules
2021-11-23 22:45:57 +01:00
0c2f30fd45
links to 6502 bresenham line algorithms
2021-11-23 21:51:18 +01:00
e08871c637
oops! replace phx/plx 65C02 (cx16) instructions by 6502 (c64) compatible alternative.
...
Couldn't assemble code that used some of the routines in conv on c64 before...
2021-11-22 21:02:43 +01:00
ff715881bc
allow scoped identifiers to reference a subroutine parameter directly.
...
also for asmsubroutines, but the asm generation for that is not yet done.
2021-11-21 23:21:39 +01:00
0e2e5ffa52
fix parameter name conflict
2021-11-21 22:12:35 +01:00
8095c4c155
added GoSub node (internal use only later for calling subroutines)
2021-11-21 16:23:48 +01:00
e86246a985
todo
2021-11-21 14:00:19 +01:00
625aaa02eb
documented the compiler's command line options in more detail
2021-11-21 13:53:22 +01:00
787e35c9f3
asm optimizer can now also see of a symbol reference if it is in IO space or not (to a certain extent), so that these instructions are no longer optimized away
2021-11-21 13:12:51 +01:00
8887e6af91
fix substituting 0 only if its actually the same variable that's substituted
2021-11-21 12:34:57 +01:00
dde4c751da
version 7.4-dev
2021-11-21 03:28:13 +01:00
3c39baf1d6
don't optimize seemingly redundant assembly instructions away that manipulate IO memory space
2021-11-21 03:24:03 +01:00
b292124f3c
replaced many short/int values by unsigned types if appropriate
2021-11-21 00:55:56 +01:00
c0035ba1a2
char encodings now use UByte type instead of short
2021-11-21 00:07:17 +01:00
2491509c6a
add assignment optimization X=value-X --> X=-X ; X+=value (to avoid need of stack-evaluation)
2021-11-20 23:43:10 +01:00
107935ed31
add some more const folding patterns
2021-11-20 22:47:49 +01:00
31491c62c5
add some more const folding patterns
2021-11-20 22:40:12 +01:00
eacf8b896a
fix augmentable check to align with what the asmgen understands
2021-11-20 22:06:51 +01:00
7936fc5bd8
tiny optimization of negating a register
2021-11-20 21:42:55 +01:00
adfaddbcf4
give a nicer error when given a wrong compilation target.
2021-11-20 18:30:55 +01:00
74db5c6be7
fix referencesIdentifier() and better removal of unnecessary assignments
2021-11-20 17:41:41 +01:00
f9399bcce7
r=(q+r)-c and r=q+(r-c) are now both also 'augmentable', and BinExprSplitter doesn't check for associativeOperator anymore
2021-11-20 02:03:32 +01:00
87600b23db
fix constvalue parent linkage for prefix and typecast
2021-11-20 00:20:35 +01:00
cedfb17b18
fix too aggressive removal of vars that weren't completely unused
2021-11-19 22:49:35 +01:00
fa4c83df6b
added 3 tests for discovered problems
2021-11-18 23:55:20 +01:00
42c8720e8b
fix float rounding tests
2021-11-18 22:54:49 +01:00
b334d89715
refactor and fix the way memory addresses are checked to be in IO space or regular ram
2021-11-18 22:47:58 +01:00
4f5d36a84d
optimization added: bitwise operations with a negative constant number -> replace the number by its positive 2 complement
2021-11-18 02:51:42 +01:00
8f379e2262
give an error when initializing an integer var with a float value instead of silently rounding
2021-11-18 01:56:11 +01:00
fa11a6e18b
removed faulty and too aggressive assembly optimization of double-store
2021-11-18 01:43:22 +01:00
52bedce8f4
added test for assignment.isAugmented
2021-11-18 01:05:16 +01:00
4c82af36e6
fix improperly changed behavior about =0 initializer
2021-11-18 00:17:22 +01:00
dafa0d9138
fix compiler crash bug due to reused ast expression nodes. Now all (relevant) Nodes have a copy() function to make a clone.
2021-11-17 23:05:59 +01:00
2e0450d7ed
fix bug where variable=0 initializer was forgotten if vardecl is followed by an augmented assignment
2021-11-17 22:31:43 +01:00
6af3209d4d
add more const foldings
2021-11-17 00:57:00 +01:00
5d362047e2
add some more comparison expression optimizations to compare against 0 if possible
2021-11-17 00:04:52 +01:00
f48d6ca9f8
simplified NumericLiteral to always just contain a Double instead of a Number for the value
2021-11-16 23:52:54 +01:00
964e8e0a17
update to Kotlin 1.6.0
2021-11-16 22:36:23 +01:00
1f60a2d8b9
comments
2021-11-15 01:30:12 +01:00
5fd83f2757
version 7.3
2021-11-14 22:55:13 +01:00
c80df4140b
until-loop condition now also simplified to avoid stack-eval
2021-11-14 22:51:02 +01:00
53e1729e2f
introduce option to use internal scratch variables via prog8_lib definitions (ony for compiler, not for user code!)
2021-11-14 16:01:54 +01:00
ab2d1122a9
conditional expressions are optimized more intelligently (simple ones are not split off in separate assignments)
2021-11-14 12:38:56 +01:00
5190594c8a
added several more assembly-level optimizations to remove redundant instructions
2021-11-14 12:23:46 +01:00
c858ceeb58
compiler shouldn't use cx16.r15 as temp var
2021-11-14 02:38:59 +01:00
f0f52b9166
optimize typecasted binary expression to avoid even more estack use. also fix wrong parent crash in removal of unused variable's assignments.
2021-11-13 14:22:37 +01:00
00c6f74481
tweak temp float
2021-11-13 12:56:59 +01:00
2177ba0ed2
added signed versions of the cx16 virtual registers
2021-11-13 02:42:21 +01:00
3483515346
preparing for more optimizations
2021-11-12 23:23:51 +01:00
75a06d2a40
preparing for more optimizations
2021-11-12 02:17:37 +01:00
53ac11983b
better unused variable removal
2021-11-11 03:03:21 +01:00
69f4a4d4f8
tweak expr.typecastTo() a bit
2021-11-11 00:15:09 +01:00
222bcb808f
optimize load-store-load combo in output asm
2021-11-10 23:47:35 +01:00
686483f51a
fixed division of signed byte number by 2. (!)
2021-11-10 00:17:56 +01:00
8df3da11e3
add cosr8, sinr8, cosr16 and sinr16 builtin functions that take a degree 0..179 (= 0..358 in 2 degree steps)
...
to more easily scale halves/quarters etc of a circle than possible with the ones that take 0..255 'degrees'.
2021-11-09 23:39:26 +01:00
84dafda0e4
fix error message for type mismatch on builtin-function parameter
2021-11-09 22:19:07 +01:00
b909facfe5
fix compiler stackoverflow crash on certain typecasted expressions containing floats.
2021-11-09 19:31:19 +01:00
7780d94de1
discovered crash related to float typecasting in asm assignment codegen
2021-11-09 03:45:07 +01:00
f2c440e466
new sin/cos idea
2021-11-09 02:38:43 +01:00
4937e004b5
fix compiler crash where it used wrong datatype in split assignment
...
fixes crash for "ubyte bb ;; uword ww ;; bb = not bb or not ww"
2021-11-09 01:13:23 +01:00
4cb383dccb
discovered crash about storage size mismatch
2021-11-08 21:44:06 +01:00
c8a4b6f23c
refactor expressionsAsmGen so that it now has just 1 single public function
...
this makes replacing it by a non-stack based solution easier in the future.
2021-11-08 19:21:55 +01:00
857724c7e6
attempt to make if-statement not use stack eval anymore
2021-11-08 19:07:36 +01:00
a9b0400d13
fixed 'not' operator priority: it now has higher priority as or/and/xor.
2021-11-08 18:38:04 +01:00
2d1e5bbc7e
remove unimportant empty tests
2021-11-08 17:00:10 +01:00
60627ce756
kotest migration done, fixes #70
2021-11-08 16:19:24 +01:00
7961a09d16
converting compiler module's testcases to kotest assertions
2021-11-08 16:14:22 +01:00
613efcacc7
converting compiler module's testcases to kotest (ongoing)
2021-11-08 15:08:48 +01:00
7e8db16e18
moved to kotest assertions in compilerAst module tests
2021-11-07 21:18:18 +01:00
1fbbed7e23
remove unittest machinery from modules that don't have tests
2021-11-07 17:34:14 +01:00
984272beb4
migrated compilerAst module to KoTest (but not finished with the assertions yet)
2021-11-07 17:25:53 +01:00
b9ce94bb68
migrated codeGeneration module to KoTest
2021-11-07 15:40:05 +01:00
f4c4ee78d9
re-use global returnvalue temp var instead of duplicating it in every subroutine that needs it
2021-11-07 14:19:21 +01:00
793596614e
attempt to fix ReadTheDocs build issue
2021-11-07 00:37:31 +01:00
136280100c
attempt to fix ReadTheDocs build issue
2021-11-07 00:23:44 +01:00
29f1e4d2c9
attempt to fix ReadTheDocs build issue
2021-11-07 00:18:51 +01:00