Commit Graph

675 Commits

Author SHA1 Message Date
Irmen de Jong
181f3e9eb1 remove the unary/prefix operators ^ and << again 2024-12-01 20:50:33 +01:00
Irmen de Jong
189399d5f8 update to kotlin 2.1.0 2024-11-28 03:49:07 +01:00
Irmen de Jong
2eed75f602 call convention for @Rx parameters, also use cpu registers if possible, like normal parameters 2024-11-25 22:22:24 +01:00
Irmen de Jong
d58f9f56c4 tests for register args for normal subs
some warnings demoted into infos
2024-11-24 19:21:45 +01:00
Irmen de Jong
2e35f3c3a3 code check cleanups 2024-11-24 16:14:22 +01:00
Irmen de Jong
5c6bd9c091 register params support for normal subroutines 2024-11-24 15:56:54 +01:00
Irmen de Jong
cc53d698bf added msw() and lsw() builtin functions (experimental) 2024-11-24 03:53:37 +01:00
Irmen de Jong
cb86206698 added unary ^ and << operators (experimental) (gets bank and address of a long integer) 2024-11-24 03:07:18 +01:00
Irmen de Jong
d77b1944fb rename bnk() to bankof() 2024-11-24 00:53:09 +01:00
Irmen de Jong
5c09dc10ae convert build.gradle to build.gradle.kts (kotlin DSL) 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
9da70bdf05 simplify ReturnConvention a little 2024-11-20 23:22:56 +01:00
Irmen de Jong
07158a6f1a improve manual about subroutine call convention 2024-11-15 22:59:47 +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
1d38c3582a progstart() added to complement progend() 2024-11-13 19:29:50 +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
bf98ceca2c make repeat support 65536 iterations 2024-11-11 01:58:27 +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
84f5ffa426 fix generated labels prefix and filtering in the vice symbol dump file 2024-11-10 15:34:35 +01:00
Irmen de Jong
a50400b7d1 initial neo6502 target 2024-11-08 19:04:49 +01:00
Irmen de Jong
9864abd393 romsub keyword is now extsub 2024-11-06 22:14:53 +01:00
Irmen de Jong
c702c4a6df internal rename of romsub to extsub 2024-11-06 21:42:16 +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
a5c7393561 tweaking program startup and cleanup stuff 2024-11-05 21:12:27 +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
85e87dfe2e consolidate @rombank and @rambank into just @bank 2024-11-03 21:15:11 +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
7cfb33a448 tweak & fix if expression with word condition 2024-11-02 22:01:57 +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
4b23b1dc86 don't always import math automatically anymore 2024-11-01 03:39:52 +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
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
97b8cb748d more ifexpression codegen tweaks 2024-10-25 22:52:26 +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
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
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
272a1001a8 fix bad optimization of floats.pop/push call 2024-10-18 21:04:18 +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
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
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
Irmen de Jong
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