From 08aa13c90cf1cbc9a6f3828ce17f0500de6b8ebe Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sun, 22 Nov 2020 01:47:25 +0100 Subject: [PATCH] rnd() functions marked as having (internal) side effect --- compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt | 2 +- compiler/src/prog8/functions/BuiltinFunctions.kt | 6 +++--- examples/balls.p8 | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt b/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt index ab10ad137..caadf8f53 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt @@ -1181,7 +1181,7 @@ $label nop""") out(" lda #<${asmVar} | ldy #>${asmVar} | jsr floats.MOVFM") } else -> { - // todo evaluate directly into fac1 instead of via stack intermediate (add RegisterOrPair.FAC1 ??) + // todo evaluate directly into fac1 instead of via stack intermediate (add RegisterOrPair.FAC1/FAC2 ??) translateExpression(returnvalue) out(" jsr floats.pop_float_fac1") } diff --git a/compiler/src/prog8/functions/BuiltinFunctions.kt b/compiler/src/prog8/functions/BuiltinFunctions.kt index c5d85edce..58cdd63db 100644 --- a/compiler/src/prog8/functions/BuiltinFunctions.kt +++ b/compiler/src/prog8/functions/BuiltinFunctions.kt @@ -130,9 +130,9 @@ private val functionSignatures: List = listOf( FSignature("lsb" , true, listOf(FParam("value", setOf(DataType.UWORD, DataType.WORD))), DataType.UBYTE) { a, p, prg -> oneIntArgOutputInt(a, p, prg) { x: Int -> x and 255 }}, FSignature("msb" , true, listOf(FParam("value", setOf(DataType.UWORD, DataType.WORD))), DataType.UBYTE) { a, p, prg -> oneIntArgOutputInt(a, p, prg) { x: Int -> x ushr 8 and 255}}, FSignature("mkword" , true, listOf(FParam("msb", setOf(DataType.UBYTE)), FParam("lsb", setOf(DataType.UBYTE))), DataType.UWORD, ::builtinMkword), - FSignature("rnd" , true, emptyList(), DataType.UBYTE), - FSignature("rndw" , true, emptyList(), DataType.UWORD), - FSignature("rndf" , true, emptyList(), DataType.FLOAT), + FSignature("rnd" , false, emptyList(), DataType.UBYTE), + FSignature("rndw" , false, emptyList(), DataType.UWORD), + FSignature("rndf" , false, emptyList(), DataType.FLOAT), FSignature("exit" , false, listOf(FParam("returnvalue", setOf(DataType.UBYTE))), null), FSignature("rsave" , false, emptyList(), null), FSignature("rrestore" , false, emptyList(), null), diff --git a/examples/balls.p8 b/examples/balls.p8 index 6c0694f9c..a149af5c0 100644 --- a/examples/balls.p8 +++ b/examples/balls.p8 @@ -27,6 +27,7 @@ main { BC[lp] = rnd() & 15 DX[lp] = rnd() & 1 DY[lp] = rnd() & 1 + void rnd() } ; start clock