From 66364554c4c7bdeb5256841f660d245e7e597a80 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sat, 26 Sep 2020 15:24:12 +0200 Subject: [PATCH] new comparisons testprog --- .../target/c64/codegen/ExpressionsAsmGen.kt | 97 +- examples/cmp/comparisons.p8 | 968 ++++++++++++++++++ examples/test.p8 | 248 ----- 3 files changed, 1007 insertions(+), 306 deletions(-) create mode 100644 examples/cmp/comparisons.p8 diff --git a/compiler/src/prog8/compiler/target/c64/codegen/ExpressionsAsmGen.kt b/compiler/src/prog8/compiler/target/c64/codegen/ExpressionsAsmGen.kt index 93e9b20cc..7343f5a86 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/ExpressionsAsmGen.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/ExpressionsAsmGen.kt @@ -275,7 +275,43 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge } private fun translateUbyteLessOrEqual(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) { - // TODO compare with optimized asm + if(rightConstVal!=null) { + if(leftConstVal!=null) { + if(rightConstVal>leftConstVal) + asmgen.out(" jmp $jumpIfFalseLabel") + return + } else { + if (left is IdentifierReference) { + val name = asmgen.asmVariableName(left) + if(rightConstVal.number.toInt()!=0) + asmgen.out(""" + lda $name + cmp #${rightConstVal.number} + beq + + bcs $jumpIfFalseLabel ++""") + else + asmgen.out(""" + lda $name + bne $jumpIfFalseLabel""") + return + } + else if (left is DirectMemoryRead) { + translateDirectMemReadExpression(left, false) + if(rightConstVal.number.toInt()!=0) { + asmgen.out(""" + cmp #${rightConstVal.number} + beq + + bcs $jumpIfFalseLabel ++""") + } + else + asmgen.out(" bne $jumpIfFalseLabel") + return + } + } + } + asmgen.translateExpression(left) asmgen.translateExpression(right) asmgen.out(" jsr prog8_lib.lesseq_ub | inx | lda P8ESTACK_LO,x | beq $jumpIfFalseLabel") @@ -338,38 +374,7 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge } private fun translateByteGreater(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) { - if(rightConstVal!=null) { - if(leftConstVal!=null) { - if(rightConstVal<=leftConstVal) - asmgen.out(" jmp $jumpIfFalseLabel") - return - } else { - if (left is IdentifierReference) { - val name = asmgen.asmVariableName(left) - if(rightConstVal.number.toInt()!=0) - asmgen.out(""" - lda $name - cmp #${rightConstVal.number} - bmi $jumpIfFalseLabel - beq $jumpIfFalseLabel""") - else - asmgen.out(""" - lda $name - bmi $jumpIfFalseLabel - beq $jumpIfFalseLabel""") - return - } - else if (left is DirectMemoryRead) { - translateDirectMemReadExpression(left, false) - if(rightConstVal.number.toInt()!=0) - asmgen.out(" cmp #${rightConstVal.number} | bmi $jumpIfFalseLabel | beq $jumpIfFalseLabel") - else - asmgen.out(" bmi $jumpIfFalseLabel | beq $jumpIfFalseLabel") - return - } - } - } - + // TODO compare with optimized asm asmgen.translateExpression(left) asmgen.translateExpression(right) asmgen.out(" jsr prog8_lib.greater_b | inx | lda P8ESTACK_LO,x | beq $jumpIfFalseLabel") @@ -413,31 +418,7 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge } private fun translateWordGreater(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) { - if(rightConstVal!=null) { - if(leftConstVal!=null) { - if(rightConstVal<=leftConstVal) - asmgen.out(" jmp $jumpIfFalseLabel") - return - } else { - if (left is IdentifierReference) { - val name = asmgen.asmVariableName(left) - if(rightConstVal.number.toInt()!=0) - asmgen.out(""" - lda $name - cmp #<${rightConstVal.number} - lda $name+1 - sbc #>${rightConstVal.number} - bvc + - eor #$80 -+ bmi $jumpIfFalseLabel - beq $jumpIfFalseLabel""") - else - asmgen.out(" lda $name+1 | bmi $jumpIfFalseLabel | beq $jumpIfFalseLabel") - return - } - } - } - + // TODO compare with optimized asm asmgen.translateExpression(left) asmgen.translateExpression(right) asmgen.out(" jsr prog8_lib.greater_w | inx | lda P8ESTACK_LO,x | beq $jumpIfFalseLabel") diff --git a/examples/cmp/comparisons.p8 b/examples/cmp/comparisons.p8 new file mode 100644 index 000000000..d149bbd47 --- /dev/null +++ b/examples/cmp/comparisons.p8 @@ -0,0 +1,968 @@ +%import textio +%import floats +%zeropage basicsafe + +main { + + byte bb= -22 + ubyte ubb = 22 + word ww= -2222 + uword uww = 2222 + float ff = -2.2 + + sub start() { + + repeat(25) + txt.chrout('\n') + + equal() + txt.chrout('\n') + notequal() + txt.chrout('\n') + less() + txt.chrout('\n') + greater() + txt.chrout('\n') + lessequal() + txt.chrout('\n') + greaterequal() + txt.chrout('\n') + } + + sub equal() { + + if bb == -22 { + txt.print("ok == 1\n") + } else { + txt.print("fail == 1\n") + } + + if bb == -23 { + txt.print("fail == 2\n") + } else { + txt.print("ok == 2\n") + } + + if bb==0 { + txt.print("fail == 2b\n") + } else { + txt.print("ok == 2b\n") + } + + if ww == -2222 { + txt.print("ok == 3\n") + } else { + txt.print("fail == 3\n") + } + + if ww == -2223 { + txt.print("fail == 4\n") + } else { + txt.print("ok == 4\n") + } + + if ww == 0 { + txt.print("fail == 4a\n") + } else { + txt.print("ok == 4a\n") + } + + if ff == -2.2 { + txt.print("ok == 4c\n") + } else { + txt.print("fail == 4c\n") + } + + if ff == -2.3 { + txt.print("fail == 4d\n") + } else { + txt.print("ok == 4d\n") + } + + if ff == 0.0 { + txt.print("fail == 4e\n") + } else { + txt.print("ok == 4e\n") + } + + if ubb == 22 { + txt.print("ok == 4f\n") + } else { + txt.print("fail == 4f\n") + } + + if ubb == 23 { + txt.print("fail == 4g\n") + } else { + txt.print("ok == 4g\n") + } + + if ubb == 0 { + txt.print("fail == 4h\n") + } else { + txt.print("ok == 4h\n") + } + + if uww == 2222 { + txt.print("ok == 4i\n") + } else { + txt.print("fail == 4i\n") + } + + if uww == 2223 { + txt.print("fail == 4j\n") + } else { + txt.print("ok == 4j\n") + } + + if uww == 0 { + txt.print("fail == 4k\n") + } else { + txt.print("ok == 4k\n") + } + } + + sub notequal() { + + if bb != -23 { + txt.print("ok != 1\n") + } else { + txt.print("fail != 1\n") + } + + if bb != -22 { + txt.print("fail != 2\n") + } else { + txt.print("ok != 2\n") + } + + if bb!=0 { + txt.print("ok != 2b\n") + } else { + txt.print("fail != 2b\n") + } + + if ww != -2223 { + txt.print("ok != 3\n") + } else { + txt.print("fail != 3\n") + } + + if ww != -2222 { + txt.print("fail != 4\n") + } else { + txt.print("ok != 4\n") + } + + if ww != 0 { + txt.print("ok != 4a\n") + } else { + txt.print("fail != 4a\n") + } + + if ff != -2.3 { + txt.print("ok != 4c\n") + } else { + txt.print("fail != 4c\n") + } + + if ff != -2.2 { + txt.print("fail != 4d\n") + } else { + txt.print("ok != 4d\n") + } + + if ff != 0.0 { + txt.print("ok != 4e\n") + } else { + txt.print("fail != 4e\n") + } + + if ubb != 23 { + txt.print("ok != 4f\n") + } else { + txt.print("fail != 4f\n") + } + + if ubb != 22 { + txt.print("fail != 4g\n") + } else { + txt.print("ok != 4g\n") + } + + if ubb != 0 { + txt.print("ok != 4h\n") + } else { + txt.print("fail != 4h\n") + } + + if uww != 2223 { + txt.print("ok != 4i\n") + } else { + txt.print("fail != 4i\n") + } + + if uww != 2222 { + txt.print("fail != 4j\n") + } else { + txt.print("ok != 4j\n") + } + + if uww != 0 { + txt.print("ok != 4k\n") + } else { + txt.print("fail != 4k\n") + } + } + + sub less() { + + if bb < -1 { + txt.print("ok < 1\n") + } else { + txt.print("fail < 1\n") + } + + if bb < -99 { + txt.print("fail < 2\n") + } else { + txt.print("ok < 2\n") + } + + if bb < -22 { + txt.print("fail < 2a\n") + } else { + txt.print("ok < 2a\n") + } + + if bb<0 { + txt.print("ok < 2b\n") + } else { + txt.print("fail < 2b\n") + } + + if ww < -1 { + txt.print("ok < 3\n") + } else { + txt.print("fail < 3\n") + } + + if ww < -9999 { + txt.print("fail < 4\n") + } else { + txt.print("ok < 4\n") + } + + if ww < -2222 { + txt.print("fail < 4a\n") + } else { + txt.print("ok < 4a\n") + } + + if ww < 0 { + txt.print("ok < 4b\n") + } else { + txt.print("fail < 4b\n") + } + + if ff < -1.0 { + txt.print("ok < 4c\n") + } else { + txt.print("fail < 4c\n") + } + + if ff < -9999.9 { + txt.print("fail < 4d\n") + } else { + txt.print("ok < 4d\n") + } + + if ff < 0.0 { + txt.print("ok < 4e\n") + } else { + txt.print("fail < 4e\n") + } + + if ff < -2.2 { + txt.print("fail < 4e2\n") + } else { + txt.print("ok < 4e2\n") + } + + if ubb < 100 { + txt.print("ok < 4f\n") + } else { + txt.print("fail < 4f\n") + } + + if ubb < 2 { + txt.print("fail < 4g\n") + } else { + txt.print("ok < 4g\n") + } + + if ubb<0 { + txt.print("fail < 4h\n") + } else { + txt.print("ok < 4h\n") + } + + if ubb<22 { + txt.print("fail < 4h2\n") + } else { + txt.print("ok < 4h2\n") + } + + if uww < 10000 { + txt.print("ok < 4i\n") + } else { + txt.print("fail < 4i\n") + } + + if uww < 2 { + txt.print("fail < 4j\n") + } else { + txt.print("ok < 4j\n") + } + + if uww < 0 { + txt.print("fail < 4k\n") + } else { + txt.print("ok < 4k\n") + } + + if uww < 2222 { + txt.print("fail < 4l\n") + } else { + txt.print("ok < 4l\n") + } + + ; some more special cases for signed comparison + byte b2 = -100 + word w2 = -30000 + if b2 < -127 { + txt.print("fail < eb1\n") + } else { + txt.print("ok < eb1\n") + } + if b2 < -101 { + txt.print("fail < eb2\n") + } else { + txt.print("ok < eb2\n") + } + if b2 < -100 { + txt.print("fail < eb3\n") + } else { + txt.print("ok < eb3\n") + } + if b2 < -99 { + txt.print("ok < eb4\n") + } else { + txt.print("fail < eb4\n") + } + if b2 < 100 { + txt.print("ok < eb5\n") + } else { + txt.print("fail < eb5\n") + } + if b2 < 127 { + txt.print("ok < eb6\n") + } else { + txt.print("fail < eb6\n") + } + + if w2 < -32768 { + txt.print("fail < ew1\n") + } else { + txt.print("ok < ew1\n") + } + if w2 < -30001 { + txt.print("fail < ew2\n") + } else { + txt.print("ok < ew2\n") + } + if w2 < -30000 { + txt.print("fail < ew3\n") + } else { + txt.print("ok < ew3\n") + } + if w2 < -29999 { + txt.print("ok < ew4\n") + } else { + txt.print("fail < ew4\n") + } + if w2 < 30000 { + txt.print("ok < ew5\n") + } else { + txt.print("fail < ew5\n") + } + if w2 < 32767 { + txt.print("ok < ew6\n") + } else { + txt.print("fail < ew6\n") + } + } + + sub greater() { + if bb > -99 { + txt.print("ok > 5\n") + } else { + txt.print("fail > 5\n") + } + + if bb > -1 { + txt.print("fail > 6\n") + } else { + txt.print("ok > 6\n") + } + + if bb > 0 { + txt.print("fail > 6b\n") + } else { + txt.print("ok > 6b\n") + } + + if bb > -22 { + txt.print("fail > 6c\n") + } else { + txt.print("ok > 6c\n") + } + + if ww > -9999 { + txt.print("ok > 7\n") + } else { + txt.print("fail > 7\n") + } + + if ww > -1 { + txt.print("fail > 8\n") + } else { + txt.print("ok > 8\n") + } + + if ww>0 { + txt.print("fail > 8b\n") + } else { + txt.print("ok > 8b\n") + } + + if ww>-2222 { + txt.print("fail > 8b2\n") + } else { + txt.print("ok > 8b2\n") + } + + if ff > -1.0 { + txt.print("fail > 8c\n") + } else { + txt.print("ok > 8c\n") + } + + if ff > -9999.9 { + txt.print("ok > 8d\n") + } else { + txt.print("fail > 8d\n") + } + + if ff > 0.0 { + txt.print("fail > 8e\n") + } else { + txt.print("ok > 8e\n") + } + + if ff > -2.2 { + txt.print("fail > 8e2\n") + } else { + txt.print("ok > 8e2\n") + } + + if ubb > 5 { + txt.print("ok > 8f\n") + } else { + txt.print("fail > 8f\n") + } + + if ubb > 250 { + txt.print("fail > 8g\n") + } else { + txt.print("ok > 8g\n") + } + + if ubb > 0 { + txt.print("ok > 8h\n") + } else { + txt.print("fail > 8h\n") + } + + if ubb > 22 { + txt.print("fail > 8h2\n") + } else { + txt.print("ok > 8h2\n") + } + + if uww > 5 { + txt.print("ok > 8i\n") + } else { + txt.print("fail > 8i\n") + } + + if uww > 9999 { + txt.print("fail > 8j\n") + } else { + txt.print("ok > 8j\n") + } + + if uww>0 { + txt.print("ok > 8k\n") + } else { + txt.print("fail > 8k\n") + } + + if uww>2222 { + txt.print("fail > 8l\n") + } else { + txt.print("ok > 8l\n") + } + + ; some more special cases for signed comparison + byte b2 = -100 + word w2 = -30000 + if b2 > -127 { + txt.print("ok > eb1\n") + } else { + txt.print("fail > eb1\n") + } + if b2 > -101 { + txt.print("ok > eb2\n") + } else { + txt.print("fail > eb2\n") + } + if b2 > -100 { + txt.print("fail > eb3\n") + } else { + txt.print("ok > eb3\n") + } + if b2 > -99 { + txt.print("fail > eb4\n") + } else { + txt.print("ok > eb4\n") + } + if b2 > 100 { + txt.print("fail > eb5\n") + } else { + txt.print("ok > eb5\n") + } + if b2 > 127 { + txt.print("fail > eb6\n") + } else { + txt.print("ok > eb6\n") + } + + if w2 > -32768 { + txt.print("ok > ew1\n") + } else { + txt.print("fail > ew1\n") + } + if w2 > -30001 { + txt.print("ok > ew2\n") + } else { + txt.print("fail > ew2\n") + } + if w2 > -30000 { + txt.print("fail > ew3\n") + } else { + txt.print("ok > ew3\n") + } + if w2 > -29999 { + txt.print("fail > ew4\n") + } else { + txt.print("ok > ew4\n") + } + if w2 > 30000 { + txt.print("fail > ew5\n") + } else { + txt.print("ok > ew5\n") + } + if w2 > 32767 { + txt.print("fail > ew6\n") + } else { + txt.print("ok > ew6\n") + } + } + + sub lessequal() { + + if bb <= -1 { + txt.print("ok <= 1\n") + } else { + txt.print("fail <= 1\n") + } + + if bb <= -99 { + txt.print("fail <= 2\n") + } else { + txt.print("ok <= 2\n") + } + + if bb <= -22 { + txt.print("ok <= 2a\n") + } else { + txt.print("fail <= 2a\n") + } + + if bb<=0 { + txt.print("ok <= 2b\n") + } else { + txt.print("fail <= 2b\n") + } + + if ww <= -1 { + txt.print("ok <= 3\n") + } else { + txt.print("fail <= 3\n") + } + + if ww <= -9999 { + txt.print("fail <= 4\n") + } else { + txt.print("ok <= 4\n") + } + + if ww <= -2222 { + txt.print("ok <= 4a\n") + } else { + txt.print("fail <= 4a\n") + } + + if ww <= 0 { + txt.print("ok <= 4b\n") + } else { + txt.print("fail <= 4b\n") + } + + if ff <= -1.0 { + txt.print("ok <= 4c\n") + } else { + txt.print("fail <= 4c\n") + } + + if ff <= -9999.9 { + txt.print("fail <= 4d\n") + } else { + txt.print("ok <= 4d\n") + } + + if ff <= 0.0 { + txt.print("ok <= 4e\n") + } else { + txt.print("fail <= 4e\n") + } + + if ff <= -2.2 { + txt.print("ok <= 4e2\n") + } else { + txt.print("fail <= 4e2\n") + } + + if ubb <= 100 { + txt.print("ok <= 4f\n") + } else { + txt.print("fail <= 4f\n") + } + + if ubb <= 2 { + txt.print("fail <= 4g\n") + } else { + txt.print("ok <= 4g\n") + } + + if ubb<=0 { + txt.print("fail <= 4h\n") + } else { + txt.print("ok <= 4h\n") + } + + if ubb<=22 { + txt.print("ok <= 4h2\n") + } else { + txt.print("fail <= 4h2\n") + } + + if uww <= 10000 { + txt.print("ok <= 4i\n") + } else { + txt.print("fail <= 4i\n") + } + + if uww <= 2 { + txt.print("fail <= 4j\n") + } else { + txt.print("ok <= 4j\n") + } + + if uww <= 0 { + txt.print("fail <= 4k\n") + } else { + txt.print("ok <= 4k\n") + } + + if uww <= 2222 { + txt.print("ok <= 4l\n") + } else { + txt.print("fail <= 4l\n") + } + + ; some more special cases for signed comparison + byte b2 = -100 + word w2 = -30000 + if b2 <= -127 { + txt.print("fail <= eb1\n") + } else { + txt.print("ok <= eb1\n") + } + if b2 <= -101 { + txt.print("fail <= eb2\n") + } else { + txt.print("ok <= eb2\n") + } + if b2 <= -100 { + txt.print("ok <= eb3\n") + } else { + txt.print("fail <= eb3\n") + } + if b2 <= -99 { + txt.print("ok <= eb4\n") + } else { + txt.print("fail <= eb4\n") + } + if b2 <= 100 { + txt.print("ok <= eb5\n") + } else { + txt.print("fail <= eb5\n") + } + if b2 <= 127 { + txt.print("ok <= eb6\n") + } else { + txt.print("fail <= eb6\n") + } + + if w2 <= -32768 { + txt.print("fail <= ew1\n") + } else { + txt.print("ok <= ew1\n") + } + if w2 <= -30001 { + txt.print("fail <= ew2\n") + } else { + txt.print("ok <= ew2\n") + } + if w2 <= -30000 { + txt.print("ok <= ew3\n") + } else { + txt.print("fail <= ew3\n") + } + if w2 <= -29999 { + txt.print("ok <= ew4\n") + } else { + txt.print("fail <= ew4\n") + } + if w2 <= 30000 { + txt.print("ok <= ew5\n") + } else { + txt.print("fail <= ew5\n") + } + if w2 <= 32767 { + txt.print("ok <= ew6\n") + } else { + txt.print("fail <= ew6\n") + } + + } + + sub greaterequal() { + if bb >= -99 { + txt.print("ok >= 5\n") + } else { + txt.print("fail >= 5\n") + } + + if bb >= -1 { + txt.print("fail >= 6\n") + } else { + txt.print("ok >= 6\n") + } + + if bb >= 0 { + txt.print("fail >= 6b\n") + } else { + txt.print("ok >= 6b\n") + } + + if bb >= -22 { + txt.print("ok >= 6c\n") + } else { + txt.print("fail >= 6c\n") + } + + if ww >= -9999 { + txt.print("ok >= 7\n") + } else { + txt.print("fail >= 7\n") + } + + if ww >= -1 { + txt.print("fail >= 8\n") + } else { + txt.print("ok >= 8\n") + } + + if ww>=0 { + txt.print("fail >= 8b\n") + } else { + txt.print("ok >= 8b\n") + } + + if ww>=-2222 { + txt.print("ok >= 8b2\n") + } else { + txt.print("fail >= 8b2\n") + } + + if ff >= -1.0 { + txt.print("fail >= 8c\n") + } else { + txt.print("ok >= 8c\n") + } + + if ff >= -9999.9 { + txt.print("ok >= 8d\n") + } else { + txt.print("fail >= 8d\n") + } + + if ff >= 0.0 { + txt.print("fail >= 8e\n") + } else { + txt.print("ok >= 8e\n") + } + + if ff >= -2.2 { + txt.print("ok >= 8e2\n") + } else { + txt.print("fail >= 8e2\n") + } + + if ubb >= 5 { + txt.print("ok >= 8f\n") + } else { + txt.print("fail >= 8f\n") + } + + if ubb >= 250 { + txt.print("fail >= 8g\n") + } else { + txt.print("ok >= 8g\n") + } + + if ubb >= 0 { + txt.print("ok >= 8h\n") + } else { + txt.print("fail >= 8h\n") + } + + if ubb >= 22 { + txt.print("ok >= 8h2\n") + } else { + txt.print("fail >= 8h2\n") + } + + if uww >= 5 { + txt.print("ok >= 8i\n") + } else { + txt.print("fail >= 8i\n") + } + + if uww >= 9999 { + txt.print("fail >= 8j\n") + } else { + txt.print("ok >= 8j\n") + } + + if uww>=0 { + txt.print("ok >= 8k\n") + } else { + txt.print("fail >= 8k\n") + } + + if uww>=2222 { + txt.print("ok >= 8l\n") + } else { + txt.print("fail >= 8l\n") + } + + ; some more special cases for signed comparison + byte b2 = -100 + word w2 = -30000 + if b2 >= -127 { + txt.print("ok >= eb1\n") + } else { + txt.print("fail >= eb1\n") + } + if b2 >= -101 { + txt.print("ok >= eb2\n") + } else { + txt.print("fail >= eb2\n") + } + if b2 >= -100 { + txt.print("ok >= eb3\n") + } else { + txt.print("fail >= eb3\n") + } + if b2 >= -99 { + txt.print("fail >= eb4\n") + } else { + txt.print("ok >= eb4\n") + } + if b2 >= 100 { + txt.print("fail >= eb5\n") + } else { + txt.print("ok >= eb5\n") + } + if b2 >= 127 { + txt.print("fail >= eb6\n") + } else { + txt.print("ok >= eb6\n") + } + + if w2 >= -32768 { + txt.print("ok >= ew1\n") + } else { + txt.print("fail >= ew1\n") + } + if w2 >= -30001 { + txt.print("ok >= ew2\n") + } else { + txt.print("fail >= ew2\n") + } + if w2 >= -30000 { + txt.print("ok >= ew3\n") + } else { + txt.print("fail >= ew3\n") + } + if w2 >= -29999 { + txt.print("fail >= ew4\n") + } else { + txt.print("ok >= ew4\n") + } + if w2 >= 30000 { + txt.print("fail >= ew5\n") + } else { + txt.print("ok >= ew5\n") + } + if w2 >= 32767 { + txt.print("fail >= ew6\n") + } else { + txt.print("ok >= ew6\n") + } + } +} diff --git a/examples/test.p8 b/examples/test.p8 index 4a188099b..c675aa876 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -15,254 +15,6 @@ main { uword uww = 2222 float ff = -2.2 - repeat(25) - txt.chrout('\n') - - if bb < -1 { - txt.print("ok 1\n") - } else { - txt.print("fail 1\n") - } - - if bb < -99 { - txt.print("fail 2\n") - } else { - txt.print("ok 2\n") - } - - if bb < -22 { - txt.print("fail 2a\n") - } else { - txt.print("ok 2a\n") - } - - if bb<0 { - txt.print("ok 2b\n") - } else { - txt.print("fail 2b\n") - } - - if ww < -1 { - txt.print("ok 3\n") - } else { - txt.print("fail 3\n") - } - - if ww < -9999 { - txt.print("fail 4\n") - } else { - txt.print("ok 4\n") - } - - if ww < -2222 { - txt.print("fail 4a\n") - } else { - txt.print("ok 4a\n") - } - - if ww < 0 { - txt.print("ok 4b\n") - } else { - txt.print("fail 4b\n") - } - - if ff < -1.0 { - txt.print("ok 4c\n") - } else { - txt.print("fail 4c\n") - } - - if ff < -9999.9 { - txt.print("fail 4d\n") - } else { - txt.print("ok 4d\n") - } - - if ff < 0.0 { - txt.print("ok 4e\n") - } else { - txt.print("fail 4e\n") - } - - if ff < -2.2 { - txt.print("fail 4e2\n") - } else { - txt.print("ok 4e2\n") - } - - if ubb < 100 { - txt.print("ok 4f\n") - } else { - txt.print("fail 4f\n") - } - - if ubb < 2 { - txt.print("fail 4g\n") - } else { - txt.print("ok 4g\n") - } - - if ubb<0 { - txt.print("fail 4h\n") - } else { - txt.print("ok 4h\n") - } - - if ubb<22 { - txt.print("fail 4h2\n") - } else { - txt.print("ok 4h2\n") - } - - if uww < 10000 { - txt.print("ok 4i\n") - } else { - txt.print("fail 4i\n") - } - - if uww < 2 { - txt.print("fail 4j\n") - } else { - txt.print("ok 4j\n") - } - - if uww < 0 { - txt.print("fail 4k\n") - } else { - txt.print("ok 4k\n") - } - - if uww < 2222 { - txt.print("fail 4l\n") - } else { - txt.print("ok 4l\n") - } - - - - txt.chrout('\n') - - - - if bb > -99 { - txt.print("ok 5\n") - } else { - txt.print("fail 5\n") - } - - if bb > -1 { - txt.print("fail 6\n") - } else { - txt.print("ok 6\n") - } - - if bb > 0 { - txt.print("fail 6b\n") - } else { - txt.print("ok 6b\n") - } - - if bb > 22 { - txt.print("fail 6c\n") - } else { - txt.print("ok 6c\n") - } - - if ww > -9999 { - txt.print("ok 7\n") - } else { - txt.print("fail 7\n") - } - - if ww > -1 { - txt.print("fail 8\n") - } else { - txt.print("ok 8\n") - } - - if ww>0 { - txt.print("fail 8b\n") - } else { - txt.print("ok 8b\n") - } - - if ww>-2222 { - txt.print("fail 8b2\n") - } else { - txt.print("ok 8b2\n") - } - - if ff > -1.0 { - txt.print("fail 8c\n") - } else { - txt.print("ok 8c\n") - } - - if ff > -9999.9 { - txt.print("ok 8d\n") - } else { - txt.print("fail 8d\n") - } - - if ff > 0.0 { - txt.print("fail 8e\n") - } else { - txt.print("ok 8e\n") - } - - if ff > -2.2 { - txt.print("fail 8e2\n") - } else { - txt.print("ok 8e2\n") - } - - if ubb > 5 { - txt.print("ok 8f\n") - } else { - txt.print("fail 8f\n") - } - - if ubb > 250 { - txt.print("fail 8g\n") - } else { - txt.print("ok 8g\n") - } - - if ubb > 0 { - txt.print("ok 8h\n") - } else { - txt.print("fail 8h\n") - } - - if ubb > 22 { - txt.print("fail 8h2\n") - } else { - txt.print("ok 8h2\n") - } - - if uww > 5 { - txt.print("ok 8i\n") - } else { - txt.print("fail 8i\n") - } - - if uww > 9999 { - txt.print("fail 8j\n") - } else { - txt.print("ok 8j\n") - } - - if uww>0 { - txt.print("ok 8k\n") - } else { - txt.print("fail 8k\n") - } - - if uww>2222 { - txt.print("fail 8l\n") - } else { - txt.print("ok 8l\n") - } ; @($c000) *= 99 ; TODO implement