Irmen de Jong
cc13a51493
fix import order problem related to %option merge
2024-11-23 12:15:15 +01:00
Irmen de Jong
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
Irmen de Jong
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
Irmen de Jong
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
Irmen de Jong
9fd9e9ab5f
change block sort order so that blocks with address are now sorted last
2024-11-20 23:23:26 +01:00
Irmen de Jong
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
Irmen de Jong
ae0cadb383
added bnk() builtin function
2024-11-20 23:23:21 +01:00
Irmen de Jong
ea1daa97d3
remove the 'addmissingrts' compiler option
2024-11-20 23:22:56 +01:00
Irmen de Jong
1f5706bbeb
version 10.5.1
2024-11-20 22:54:26 +01:00
Irmen de Jong
d78ce77536
improve vm error message when referencing a block name
2024-11-19 20:57:58 +01:00
Irmen de Jong
08865dbb4e
todo
2024-11-16 02:10:57 +01:00
Irmen de Jong
b9ad7e0e55
forgot to mention floats
2024-11-15 23:37:08 +01:00
Irmen de Jong
07158a6f1a
improve manual about subroutine call convention
2024-11-15 22:59:47 +01:00
Irmen de Jong
957c42bc1d
tweak
2024-11-15 02:52:21 +01:00
Irmen de Jong
f784da2da6
fix asm optimization regression caused by wrong label prefix comparison
2024-11-14 21:24:46 +01:00
Irmen de Jong
c080fbe59a
target machine config tweak and fix possible compiler crash on wrong type name
2024-11-13 21:04:46 +01:00
Irmen de Jong
d70b8303b1
added sprites.reset() to remove sprites from the screen
2024-11-13 20:26:04 +01:00
Irmen de Jong
1d38c3582a
progstart() added to complement progend()
2024-11-13 19:29:50 +01:00
Irmen de Jong
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
Irmen de Jong
3b4a5e27f7
renamed gfx_hires4 module to just gfx_hires
...
to be consistent with gfx_lores
2024-11-12 17:48:35 +01:00
Irmen de Jong
648d9fc269
todo
2024-11-12 00:57:10 +01:00
Irmen de Jong
54fccec7d7
now also support using defer inside if statements
2024-11-12 00:11:19 +01:00
Irmen de Jong
4f9693055e
fix compiler crash when extsub has both FAC1 and FAC2 float parameters
2024-11-11 20:48:25 +01:00
Irmen de Jong
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
Irmen de Jong
bf98ceca2c
make repeat support 65536 iterations
2024-11-11 01:58:27 +01:00
Irmen de Jong
573cecb087
make memtop adjust automatically when you use %address larger than the default memtop setting.
2024-11-10 23:44:10 +01:00
Irmen de Jong
1b528491c2
make %memtop exclusive i.e. the first address NOT to use (like kernal MEMTOP)
2024-11-10 23:35:25 +01:00
Irmen de Jong
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
Irmen de Jong
84f5ffa426
fix generated labels prefix and filtering in the vice symbol dump file
2024-11-10 15:34:35 +01:00
Irmen de Jong
25d2b42283
textelite now with sysinit, so it runs on the c128 as well (needs banking)
2024-11-09 16:03:16 +01:00
Irmen de Jong
300d1a871c
c128 banks out basic, added banks() and getbanks()
2024-11-09 15:44:08 +01:00
Irmen de Jong
2fcb83a39f
version 10.5
2024-11-09 14:04:04 +01:00
Irmen de Jong
3ba1d00a7c
add unit test for @dirty variables
2024-11-09 13:31:54 +01:00
Irmen de Jong
64164c1c72
changed @initonce to @dirty and meaning is now: not initialized at all.
2024-11-08 22:05:31 +01:00
Irmen de Jong
3ee6058524
todo
2024-11-08 19:57:38 +01:00
Irmen de Jong
93a0a41e73
Merge branch 'initonce-var-tag'
...
# Conflicts:
# examples/test.p8
2024-11-08 19:32:30 +01:00
Irmen de Jong
e7ab7b6d7a
neo skeletons added in docs
2024-11-08 19:19:11 +01:00
Irmen de Jong
a50400b7d1
initial neo6502 target
2024-11-08 19:04:49 +01:00
Irmen de Jong
f89f1a84d0
@initonce variable tag to skip variable reinitialization
2024-11-08 19:03:48 +01:00
Irmen de Jong
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
Irmen de Jong
b88f550c5b
todo
2024-11-07 00:48:13 +01:00
Irmen de Jong
9864abd393
romsub keyword is now extsub
2024-11-06 22:14:53 +01:00
Irmen de Jong
77e376f6bf
romsub @bank now also accepts a variable so the bank can be dynamic
2024-11-06 00:02:36 +01:00
Irmen de Jong
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
Irmen de Jong
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
Irmen de Jong
459e9f8f3b
jsrfar stuff
2024-11-05 01:06:06 +01:00
Irmen de Jong
5b1143bcb3
C64: add support for calling romsub with bank ('jsrfar')
2024-11-04 23:26:21 +01:00
Irmen de Jong
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
Irmen de Jong
e514eeba17
added c64.banks() and c64.getbanks() and c64 banking example
2024-11-04 20:14:30 +01:00
Irmen de Jong
c11a52b278
added cx16 banking example
2024-11-03 21:52:04 +01:00
Irmen de Jong
85e87dfe2e
consolidate @rombank and @rambank into just @bank
2024-11-03 21:15:11 +01:00
Irmen de Jong
cb47e2c149
documented the romsub bank additions
2024-11-03 20:39:44 +01:00
Irmen de Jong
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
Irmen de Jong
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
Irmen de Jong
9f84aa5fb2
fix double %option merge problem where it deleted all of the blocks
2024-11-03 13:36:14 +01:00
Irmen de Jong
a231872821
tip for using aliases for the virtual registers r0-r15
2024-11-02 22:09:20 +01:00
Irmen de Jong
3b798097b9
added memtop to machine definition and asm source code check
...
added %memtop directive
2024-11-02 00:59:07 +01:00
Irmen de Jong
6fb05bdefc
replaced deprecated cx16 ZSOUND example by new ZSMKIT examples
2024-11-01 23:17:23 +01:00
Irmen de Jong
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
Irmen de Jong
925b9d845d
fix split array possible compiler loop (due to wrong datatype replacement)
2024-11-01 19:18:03 +01:00
Irmen de Jong
ad074076c2
remove last references to gfx2 module
2024-11-01 18:41:36 +01:00
Irmen de Jong
a2194c43a6
fix benchmark
2024-11-01 03:50:13 +01:00
Irmen de Jong
4b23b1dc86
don't always import math automatically anymore
2024-11-01 03:39:52 +01:00
Irmen de Jong
9005c7994a
added Linear Interpolation (LERP) functions: math.lerp(), floats.lerp(), floats.lerp_fast()
2024-11-01 02:05:48 +01:00
Irmen de Jong
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
Irmen de Jong
09cbdf410a
added diskio.exists(), made f_close_w() idempotent like f_close() already was
2024-10-31 21:25:22 +01:00
Irmen de Jong
df6a43c7f0
gfx_lores now has drawmode_eor() (used by Paint, for example)
2024-10-31 01:28:29 +01:00
Irmen de Jong
4ce130dc8b
split up cx16.gfx2 module into gfx_lores and gfx_hires4 modules
2024-10-30 22:21:07 +01:00
Irmen de Jong
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
Irmen de Jong
eeeb8d81f4
merge now also allows monkeypatching if signature is 100% identical
2024-10-30 01:15:56 +01:00
Irmen de Jong
518e5a30c2
slight parser rule tweak
2024-10-29 23:18:17 +01:00
Irmen de Jong
bbba4b3d60
new block merge semantics and implementation
2024-10-29 22:57:54 +01:00
Irmen de Jong
967adb9a87
Merge branch 'beanshell'
2024-10-29 20:55:09 +01:00
Irmen de Jong
483d193ced
vm: implemented reading/writing files in diskio
2024-10-29 02:34:53 +01:00
Irmen de Jong
62458216c9
first skeleton of LSP language server
2024-10-28 21:42:20 +01:00
Irmen de Jong
570b574b93
added sys.memcmp
2024-10-28 00:41:26 +01:00
Irmen de Jong
a82f211f9a
added alias statement
2024-10-28 00:36:10 +01:00
Irmen de Jong
4b4af9b527
no longer silently add RTS to asmsubs that don't have one
2024-10-27 13:49:00 +01:00
Irmen de Jong
28b383f888
docs and syntax for @alignxxx and %align
2024-10-27 00:47:52 +02:00
Irmen de Jong
40ce7725a1
cleanup c64 sprite examples
2024-10-26 21:36:11 +02:00
Irmen de Jong
1f2d46628e
remove %option align_xxx (block level alignment, as we now have better alternatives)
2024-10-26 21:18:34 +02:00
Irmen de Jong
c9535049c8
%align directive and @align64
2024-10-26 20:58:35 +02:00
Irmen de Jong
9317cf8a35
sorting aligned vars to shrink prg size
2024-10-26 18:33:51 +02:00
Irmen de Jong
1cd754f05d
adding @alignword/page on individual variables
2024-10-26 17:00:38 +02:00
Irmen de Jong
84d9040b57
make BIT test also work on signed byte variables. Fixed an address-of optimization error.
2024-10-23 22:34:18 +02:00
Irmen de Jong
fdd18c615c
more ifexpresssion codegen tweaks
2024-10-23 21:04:55 +02:00
Irmen de Jong
c14f6cfc2b
more optimal if expression code
2024-10-22 23:49:24 +02:00
Irmen de Jong
326eab3dd1
unit test for defer, describe defer and if expression in docs
2024-10-22 22:19:49 +02:00
Irmen de Jong
9927af1095
about var inits
2024-10-22 01:08:42 +02:00
Irmen de Jong
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
Irmen de Jong
0247fb0d84
some ast2 var tweaks
2024-10-21 00:20:54 +02:00
Irmen de Jong
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
Irmen de Jong
a40d120f2a
more defer sanity checks
2024-10-18 22:32:49 +02:00
Irmen de Jong
2a52241f1c
defer is now done *after* calculating a return value
2024-10-18 20:56:27 +02:00
Irmen de Jong
ce7d094adb
Zig-like "defer" to clean up stuff when leaving the scope of the current routine.
2024-10-18 01:30:20 +02:00
Irmen de Jong
a0cf1889a3
omit more redundant 0-initializations ("stz's")
2024-10-17 22:51:39 +02:00
Irmen de Jong
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
Irmen de Jong
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
Irmen de Jong
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
Irmen de Jong
65ddcf91d0
remove unused syscalls
2024-10-15 18:24:55 +02:00