From 7b6cd0cfbea4862ee77f19728293946320808d16 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Wed, 26 Oct 2022 20:41:10 +0200 Subject: [PATCH] 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. --- compiler/res/prog8lib/cx16/cx16diskio.p8 | 2 +- compiler/res/prog8lib/cx16/syslib.p8 | 2 +- compiler/src/prog8/compiler/astprocessing/AstChecker.kt | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/res/prog8lib/cx16/cx16diskio.p8 b/compiler/res/prog8lib/cx16/cx16diskio.p8 index 5e6f749cb..a0bf1f890 100644 --- a/compiler/res/prog8lib/cx16/cx16diskio.p8 +++ b/compiler/res/prog8lib/cx16/cx16diskio.p8 @@ -111,7 +111,7 @@ internal_vload: size = 255 if num_bytes ubyte @A, ubyte @X, ubyte @Y romsub $fecc = monitor() clobbers(A,X,Y) -romsub $ff44 = macptr(ubyte length @A, uword buffer @XY) clobbers(A) -> ubyte @Pc, uword @XY +romsub $ff44 = macptr(ubyte length @A, uword buffer @XY, bool dontAdvance @Pc) clobbers(A) -> bool @Pc, uword @XY romsub $ff47 = enter_basic(ubyte cold_or_warm @Pc) clobbers(A,X,Y) romsub $ff4d = clock_set_date_time(uword yearmonth @R0, uword dayhours @R1, uword minsecs @R2, ubyte jiffies @R3) clobbers(A, X, Y) romsub $ff50 = clock_get_date_time() clobbers(A, X, Y) -> uword @R0, uword @R1, uword @R2, ubyte @R3 ; result registers see clock_set_date_time() diff --git a/compiler/src/prog8/compiler/astprocessing/AstChecker.kt b/compiler/src/prog8/compiler/astprocessing/AstChecker.kt index 0aeb80c5d..f9da5f62b 100644 --- a/compiler/src/prog8/compiler/astprocessing/AstChecker.kt +++ b/compiler/src/prog8/compiler/astprocessing/AstChecker.kt @@ -323,8 +323,8 @@ internal class AstChecker(private val program: Program, err("parameter '${param.first.name}' should be (u)word (an address) or str") } else if(param.second.statusflag!=null) { - if (param.first.type != DataType.UBYTE) - err("parameter '${param.first.name}' should be ubyte") + if (param.first.type != DataType.UBYTE && param.first.type != DataType.BOOL) + err("parameter '${param.first.name}' should be bool or ubyte") } } subroutine.returntypes.zip(subroutine.asmReturnvaluesRegisters).forEachIndexed { index, pair -> @@ -338,8 +338,8 @@ internal class AstChecker(private val program: Program, err("return type #${index + 1} should be (u)word/address") } else if(pair.second.statusflag!=null) { - if (pair.first != DataType.UBYTE) - err("return type #${index + 1} should be ubyte") + if (pair.first != DataType.UBYTE && pair.first != DataType.BOOL) + err("return type #${index + 1} should be bool or ubyte") } }