Merge branch 'master' into multi-assign

# Conflicts:
#	docs/source/todo.rst
#	examples/test.p8
This commit is contained in:
Irmen de Jong 2024-03-26 22:07:08 +01:00
commit 56c1035581
95 changed files with 689854 additions and 18 deletions

View File

@ -96,9 +96,9 @@ val BuiltinFunctions: Map<String, FSignature> = mapOf(
"sqrt__ubyte" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UBYTE))), DataType.UBYTE),
"sqrt__uword" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UWORD))), DataType.UBYTE),
"sqrt__float" to FSignature(true, listOf(FParam("value", arrayOf(DataType.FLOAT))), DataType.FLOAT),
"divmod" to FSignature(false, listOf(FParam("number", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("divident", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("division", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("remainder", arrayOf(DataType.UBYTE, DataType.UWORD))), null),
"divmod__ubyte" to FSignature(false, listOf(FParam("number", arrayOf(DataType.UBYTE)), FParam("divident", arrayOf(DataType.UBYTE)), FParam("division", arrayOf(DataType.UBYTE)), FParam("remainder", arrayOf(DataType.UBYTE))), null),
"divmod__uword" to FSignature(false, listOf(FParam("number", arrayOf(DataType.UWORD)), FParam("divident", arrayOf(DataType.UWORD)), FParam("division", arrayOf(DataType.UWORD)), FParam("remainder", arrayOf(DataType.UWORD))), null),
"divmod" to FSignature(false, listOf(FParam("dividend", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("divisor", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("quotient", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("remainder", arrayOf(DataType.UBYTE, DataType.UWORD))), null),
"divmod__ubyte" to FSignature(false, listOf(FParam("dividend", arrayOf(DataType.UBYTE)), FParam("divisor", arrayOf(DataType.UBYTE)), FParam("quotient", arrayOf(DataType.UBYTE)), FParam("remainder", arrayOf(DataType.UBYTE))), null),
"divmod__uword" to FSignature(false, listOf(FParam("dividend", arrayOf(DataType.UWORD)), FParam("divisor", arrayOf(DataType.UWORD)), FParam("quotient", arrayOf(DataType.UWORD)), FParam("remainder", arrayOf(DataType.UWORD))), null),
"any" to FSignature(true, listOf(FParam("values", ArrayDatatypes)), DataType.BOOL),
"all" to FSignature(true, listOf(FParam("values", ArrayDatatypes)), DataType.BOOL),
"lsb" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UWORD, DataType.WORD))), DataType.UBYTE),
@ -133,4 +133,9 @@ val BuiltinFunctions: Map<String, FSignature> = mapOf(
"call" to FSignature(false, listOf(FParam("address", arrayOf(DataType.UWORD))), DataType.UWORD),
)
val InplaceModifyingBuiltinFunctions = setOf("setlsb", "setmsb", "rol", "ror", "rol2", "ror2", "sort", "reverse")
val InplaceModifyingBuiltinFunctions = setOf(
"setlsb", "setmsb",
"rol", "ror", "rol2", "ror2",
"sort", "reverse",
"divmod", "divmod__ubyte", "divmod__uword"
)

View File

@ -75,7 +75,7 @@ class VarConstantValueTypeAdjuster(
val declValue = decl.value?.constValue(program)
if (declValue != null) {
// variable is never written to, so it can be replaced with a constant, IF the value is a constant
errors.info("variable is never written to and was replaced by a constant", decl.position)
errors.info("variable '${decl.name}' is never written to and was replaced by a constant", decl.position)
val const = VarDecl(VarDeclType.CONST, decl.origin, decl.datatype, decl.zeropage, decl.arraysize, decl.name, decl.names, declValue, decl.sharedWithAsm, decl.splitArray, decl.position)
return listOf(
IAstModification.ReplaceNode(decl, const, parent),
@ -94,7 +94,7 @@ class VarConstantValueTypeAdjuster(
)
}
// variable only has a single write and it is the initialization value, so it can be replaced with a constant, IF the value is a constant
errors.info("variable is never written to and was replaced by a constant", decl.position)
errors.info("variable '${decl.name}' is never written to and was replaced by a constant", decl.position)
val const = VarDecl(VarDeclType.CONST, decl.origin, decl.datatype, decl.zeropage, decl.arraysize, decl.name, decl.names, singleAssignment.value, decl.sharedWithAsm, decl.splitArray, decl.position)
return listOf(
IAstModification.ReplaceNode(decl, const, parent),
@ -103,15 +103,15 @@ class VarConstantValueTypeAdjuster(
}
}
/*
TODO: need to check if there are no variable usages between the declaration and the assignment (because these rely on the original initialization value)
if(writes.size==2) {
val firstAssignment = writes[0].parent as? Assignment
val secondAssignment = writes[1].parent as? Assignment
if(firstAssignment?.origin==AssignmentOrigin.VARINIT && secondAssignment?.value?.constValue(program)!=null) {
errors.warn("variable is only assigned once here, consider using this as the initialization value in the declaration instead", secondAssignment.position)
TODO: need to check if there are no variable usages between the declaration and the assignment (because these rely on the original initialization value)
if(writes.size==2) {
val firstAssignment = writes[0].parent as? Assignment
val secondAssignment = writes[1].parent as? Assignment
if(firstAssignment?.origin==AssignmentOrigin.VARINIT && secondAssignment?.value?.constValue(program)!=null) {
errors.warn("variable is only assigned once here, consider using this as the initialization value in the declaration instead", secondAssignment.position)
}
}
}
*/
*/
}
return noModifications

View File

@ -170,6 +170,7 @@ save_end:
sub set_bpp(ubyte bpp) {
ubyte[8] depths = [0,1,1,2,2,2,2,3]
vera_colordepth = depths[bpp-1]
bitsperpixel = bpp
}
sub set_vera_colordepth(ubyte depth) {

View File

@ -1294,7 +1294,14 @@ internal class AstChecker(private val program: Program,
if(funcName[0]=="setlsb" || funcName[0]=="setmsb") {
val firstArg = functionCallStatement.args[0]
if(firstArg !is IdentifierReference && firstArg !is ArrayIndexedExpression)
errors.err("invalid argument to a in-place modifying function", functionCallStatement.args.first().position)
errors.err("invalid argument to a in-place modifying function", firstArg.position)
} else if(funcName[0]=="divmod" || funcName[0].startsWith("divmod__")) {
val thirdArg = functionCallStatement.args[2]
val fourthArg = functionCallStatement.args[3]
if(thirdArg !is IdentifierReference && thirdArg !is ArrayIndexedExpression)
errors.err("invalid argument to a in-place modifying function", thirdArg.position)
if(fourthArg !is IdentifierReference && fourthArg !is ArrayIndexedExpression)
errors.err("invalid argument to a in-place modifying function", fourthArg.position)
} else {
if(functionCallStatement.args.any { it !is IdentifierReference && it !is ArrayIndexedExpression && it !is DirectMemoryRead })
errors.err("invalid argument to a in-place modifying function", functionCallStatement.args.first().position)

View File

@ -2,6 +2,7 @@ package prog8tests
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
import io.kotest.matchers.shouldNotBe
import prog8.ast.expressions.NumericLiteral
import prog8.ast.statements.Assignment
import prog8.ast.statements.FunctionCallStatement
@ -98,5 +99,19 @@ main {
(a4.value as NumericLiteral).number shouldBe 200*256+100
(a5.args[0] as NumericLiteral).number shouldBe 6.0
}
test("divmod target args should be treated as variables that are written") {
val src="""
main {
ubyte c
ubyte l
sub start() {
divmod(99, 10, c, l)
}
}"""
compileText(Cx16Target(), true, src, writeAssembly = true) shouldNotBe null
}
})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "byte"
uword @shared comparison
sub start() {
txt.print("\ngreater-than tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>number: ")
test_cmp_number()
txt.print("\n>var: ")
test_cmp_var()
txt.print("\n>array[]: ")
test_cmp_array()
txt.print("\n>expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
byte @shared x
success = 0
x=-1
; direct jump
if x>-1
goto lbl1a
goto skip1a
lbl1a: fail_byte(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>-1
goto cx16.r3
goto skip1b
lbl1b: fail_byte(2)
skip1b:
; no else
if x>-1
fail_byte(3)
; with else
if x>-1
fail_byte(4)
else
success++
; direct jump
if x>0
goto lbl2a
goto skip2a
lbl2a: fail_byte(5)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>0
goto cx16.r3
goto skip2b
lbl2b: fail_byte(6)
skip2b:
; no else
if x>0
fail_byte(7)
; with else
if x>0
fail_byte(8)
else
success++
; direct jump
if x>1
goto lbl3a
goto skip3a
lbl3a: fail_byte(9)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>1
goto cx16.r3
goto skip3b
lbl3b: fail_byte(10)
skip3b:
; no else
if x>1
fail_byte(11)
; with else
if x>1
fail_byte(12)
else
success++
x=0
; direct jump
if x>-1
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>-1
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>-1
success++
; with else
if x>-1
success++
else
cx16.r0L++
; direct jump
if x>0
goto lbl5a
goto skip5a
lbl5a: fail_byte(13)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>0
goto cx16.r3
goto skip5b
lbl5b: fail_byte(14)
skip5b:
; no else
if x>0
fail_byte(15)
; with else
if x>0
fail_byte(16)
else
success++
; direct jump
if x>1
goto lbl6a
goto skip6a
lbl6a: fail_byte(17)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>1
goto cx16.r3
goto skip6b
lbl6b: fail_byte(18)
skip6b:
; no else
if x>1
fail_byte(19)
; with else
if x>1
fail_byte(20)
else
success++
x=1
; direct jump
if x>-1
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>-1
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>-1
success++
; with else
if x>-1
success++
else
cx16.r0L++
; direct jump
if x>0
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>0
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>0
success++
; with else
if x>0
success++
else
cx16.r0L++
; direct jump
if x>1
goto lbl9a
goto skip9a
lbl9a: fail_byte(21)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>1
goto cx16.r3
goto skip9b
lbl9b: fail_byte(22)
skip9b:
; no else
if x>1
fail_byte(23)
; with else
if x>1
fail_byte(24)
else
success++
verify_success(18)
}
sub test_cmp_var() {
byte @shared x, value
success = 0
x=-1
value=-1
; direct jump
if x>value
goto lbl1a
goto skip1a
lbl1a: fail_byte(25)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>value
goto cx16.r3
goto skip1b
lbl1b: fail_byte(26)
skip1b:
; no else
if x>value
fail_byte(27)
; with else
if x>value
fail_byte(28)
else
success++
value=0
; direct jump
if x>value
goto lbl2a
goto skip2a
lbl2a: fail_byte(29)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>value
goto cx16.r3
goto skip2b
lbl2b: fail_byte(30)
skip2b:
; no else
if x>value
fail_byte(31)
; with else
if x>value
fail_byte(32)
else
success++
value=1
; direct jump
if x>value
goto lbl3a
goto skip3a
lbl3a: fail_byte(33)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>value
goto cx16.r3
goto skip3b
lbl3b: fail_byte(34)
skip3b:
; no else
if x>value
fail_byte(35)
; with else
if x>value
fail_byte(36)
else
success++
x=0
value=-1
; direct jump
if x>value
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>value
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=0
; direct jump
if x>value
goto lbl5a
goto skip5a
lbl5a: fail_byte(37)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>value
goto cx16.r3
goto skip5b
lbl5b: fail_byte(38)
skip5b:
; no else
if x>value
fail_byte(39)
; with else
if x>value
fail_byte(40)
else
success++
value=1
; direct jump
if x>value
goto lbl6a
goto skip6a
lbl6a: fail_byte(41)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>value
goto cx16.r3
goto skip6b
lbl6b: fail_byte(42)
skip6b:
; no else
if x>value
fail_byte(43)
; with else
if x>value
fail_byte(44)
else
success++
x=1
value=-1
; direct jump
if x>value
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>value
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=0
; direct jump
if x>value
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>value
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=1
; direct jump
if x>value
goto lbl9a
goto skip9a
lbl9a: fail_byte(45)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>value
goto cx16.r3
goto skip9b
lbl9b: fail_byte(46)
skip9b:
; no else
if x>value
fail_byte(47)
; with else
if x>value
fail_byte(48)
else
success++
verify_success(18)
}
sub test_cmp_array() {
byte @shared x
byte[] values = [0, 0]
success = 0
x=-1
values[1]=-1
; direct jump
if x>values[1]
goto lbl1a
goto skip1a
lbl1a: fail_byte(49)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_byte(50)
skip1b:
; no else
if x>values[1]
fail_byte(51)
; with else
if x>values[1]
fail_byte(52)
else
success++
values[1]=0
; direct jump
if x>values[1]
goto lbl2a
goto skip2a
lbl2a: fail_byte(53)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_byte(54)
skip2b:
; no else
if x>values[1]
fail_byte(55)
; with else
if x>values[1]
fail_byte(56)
else
success++
values[1]=1
; direct jump
if x>values[1]
goto lbl3a
goto skip3a
lbl3a: fail_byte(57)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_byte(58)
skip3b:
; no else
if x>values[1]
fail_byte(59)
; with else
if x>values[1]
fail_byte(60)
else
success++
x=0
values[1]=-1
; direct jump
if x>values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=0
; direct jump
if x>values[1]
goto lbl5a
goto skip5a
lbl5a: fail_byte(61)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>values[1]
goto cx16.r3
goto skip5b
lbl5b: fail_byte(62)
skip5b:
; no else
if x>values[1]
fail_byte(63)
; with else
if x>values[1]
fail_byte(64)
else
success++
values[1]=1
; direct jump
if x>values[1]
goto lbl6a
goto skip6a
lbl6a: fail_byte(65)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>values[1]
goto cx16.r3
goto skip6b
lbl6b: fail_byte(66)
skip6b:
; no else
if x>values[1]
fail_byte(67)
; with else
if x>values[1]
fail_byte(68)
else
success++
x=1
values[1]=-1
; direct jump
if x>values[1]
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>values[1]
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=0
; direct jump
if x>values[1]
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>values[1]
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>values[1]
goto lbl9a
goto skip9a
lbl9a: fail_byte(69)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>values[1]
goto cx16.r3
goto skip9b
lbl9b: fail_byte(70)
skip9b:
; no else
if x>values[1]
fail_byte(71)
; with else
if x>values[1]
fail_byte(72)
else
success++
verify_success(18)
}
sub test_cmp_expr() {
byte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=-1
; direct jump
if x>cx16.r4sL+-1-cx16.r5sL
goto lbl1a
goto skip1a
lbl1a: fail_byte(73)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip1b
lbl1b: fail_byte(74)
skip1b:
; no else
if x>cx16.r4sL+-1-cx16.r5sL
fail_byte(75)
; with else
if x>cx16.r4sL+-1-cx16.r5sL
fail_byte(76)
else
success++
; direct jump
if x>cx16.r4sL+0-cx16.r5sL
goto lbl2a
goto skip2a
lbl2a: fail_byte(77)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip2b
lbl2b: fail_byte(78)
skip2b:
; no else
if x>cx16.r4sL+0-cx16.r5sL
fail_byte(79)
; with else
if x>cx16.r4sL+0-cx16.r5sL
fail_byte(80)
else
success++
; direct jump
if x>cx16.r4sL+1-cx16.r5sL
goto lbl3a
goto skip3a
lbl3a: fail_byte(81)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip3b
lbl3b: fail_byte(82)
skip3b:
; no else
if x>cx16.r4sL+1-cx16.r5sL
fail_byte(83)
; with else
if x>cx16.r4sL+1-cx16.r5sL
fail_byte(84)
else
success++
x=0
; direct jump
if x>cx16.r4sL+-1-cx16.r5sL
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>cx16.r4sL+-1-cx16.r5sL
success++
; with else
if x>cx16.r4sL+-1-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>cx16.r4sL+0-cx16.r5sL
goto lbl5a
goto skip5a
lbl5a: fail_byte(85)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip5b
lbl5b: fail_byte(86)
skip5b:
; no else
if x>cx16.r4sL+0-cx16.r5sL
fail_byte(87)
; with else
if x>cx16.r4sL+0-cx16.r5sL
fail_byte(88)
else
success++
; direct jump
if x>cx16.r4sL+1-cx16.r5sL
goto lbl6a
goto skip6a
lbl6a: fail_byte(89)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip6b
lbl6b: fail_byte(90)
skip6b:
; no else
if x>cx16.r4sL+1-cx16.r5sL
fail_byte(91)
; with else
if x>cx16.r4sL+1-cx16.r5sL
fail_byte(92)
else
success++
x=1
; direct jump
if x>cx16.r4sL+-1-cx16.r5sL
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>cx16.r4sL+-1-cx16.r5sL
success++
; with else
if x>cx16.r4sL+-1-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>cx16.r4sL+0-cx16.r5sL
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>cx16.r4sL+0-cx16.r5sL
success++
; with else
if x>cx16.r4sL+0-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>cx16.r4sL+1-cx16.r5sL
goto lbl9a
goto skip9a
lbl9a: fail_byte(93)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip9b
lbl9b: fail_byte(94)
skip9b:
; no else
if x>cx16.r4sL+1-cx16.r5sL
fail_byte(95)
; with else
if x>cx16.r4sL+1-cx16.r5sL
fail_byte(96)
else
success++
verify_success(18)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "byte"
uword @shared comparison
sub start() {
txt.print("\ngreater-equal tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>=number: ")
test_cmp_number()
txt.print("\n>=var: ")
test_cmp_var()
txt.print("\n>=array[]: ")
test_cmp_array()
txt.print("\n>=expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
byte @shared x
success = 0
x=-1
; direct jump
if x>=-1
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=-1
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=-1
success++
; with else
if x>=-1
success++
else
cx16.r0L++
; direct jump
if x>=0
goto lbl2a
goto skip2a
lbl2a: fail_byte(1)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=0
goto cx16.r3
goto skip2b
lbl2b: fail_byte(2)
skip2b:
; no else
if x>=0
fail_byte(3)
; with else
if x>=0
fail_byte(4)
else
success++
; direct jump
if x>=1
goto lbl3a
goto skip3a
lbl3a: fail_byte(5)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=1
goto cx16.r3
goto skip3b
lbl3b: fail_byte(6)
skip3b:
; no else
if x>=1
fail_byte(7)
; with else
if x>=1
fail_byte(8)
else
success++
x=0
; direct jump
if x>=-1
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=-1
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=-1
success++
; with else
if x>=-1
success++
else
cx16.r0L++
; direct jump
if x>=0
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=0
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=0
success++
; with else
if x>=0
success++
else
cx16.r0L++
; direct jump
if x>=1
goto lbl6a
goto skip6a
lbl6a: fail_byte(9)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=1
goto cx16.r3
goto skip6b
lbl6b: fail_byte(10)
skip6b:
; no else
if x>=1
fail_byte(11)
; with else
if x>=1
fail_byte(12)
else
success++
x=1
; direct jump
if x>=-1
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=-1
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=-1
success++
; with else
if x>=-1
success++
else
cx16.r0L++
; direct jump
if x>=0
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=0
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=0
success++
; with else
if x>=0
success++
else
cx16.r0L++
; direct jump
if x>=1
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=1
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=1
success++
; with else
if x>=1
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_var() {
byte @shared x, value
success = 0
x=-1
value=-1
; direct jump
if x>=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=0
; direct jump
if x>=value
goto lbl2a
goto skip2a
lbl2a: fail_byte(13)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=value
goto cx16.r3
goto skip2b
lbl2b: fail_byte(14)
skip2b:
; no else
if x>=value
fail_byte(15)
; with else
if x>=value
fail_byte(16)
else
success++
value=1
; direct jump
if x>=value
goto lbl3a
goto skip3a
lbl3a: fail_byte(17)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=value
goto cx16.r3
goto skip3b
lbl3b: fail_byte(18)
skip3b:
; no else
if x>=value
fail_byte(19)
; with else
if x>=value
fail_byte(20)
else
success++
x=0
value=-1
; direct jump
if x>=value
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=value
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=0
; direct jump
if x>=value
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=value
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1
; direct jump
if x>=value
goto lbl6a
goto skip6a
lbl6a: fail_byte(21)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=value
goto cx16.r3
goto skip6b
lbl6b: fail_byte(22)
skip6b:
; no else
if x>=value
fail_byte(23)
; with else
if x>=value
fail_byte(24)
else
success++
x=1
value=-1
; direct jump
if x>=value
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=value
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=0
; direct jump
if x>=value
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=value
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1
; direct jump
if x>=value
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=value
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_array() {
byte @shared x
byte[] values = [0, 0]
success = 0
x=-1
values[1]=-1
; direct jump
if x>=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=0
; direct jump
if x>=values[1]
goto lbl2a
goto skip2a
lbl2a: fail_byte(25)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_byte(26)
skip2b:
; no else
if x>=values[1]
fail_byte(27)
; with else
if x>=values[1]
fail_byte(28)
else
success++
values[1]=1
; direct jump
if x>=values[1]
goto lbl3a
goto skip3a
lbl3a: fail_byte(29)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_byte(30)
skip3b:
; no else
if x>=values[1]
fail_byte(31)
; with else
if x>=values[1]
fail_byte(32)
else
success++
x=0
values[1]=-1
; direct jump
if x>=values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=0
; direct jump
if x>=values[1]
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=values[1]
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl6a
goto skip6a
lbl6a: fail_byte(33)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=values[1]
goto cx16.r3
goto skip6b
lbl6b: fail_byte(34)
skip6b:
; no else
if x>=values[1]
fail_byte(35)
; with else
if x>=values[1]
fail_byte(36)
else
success++
x=1
values[1]=-1
; direct jump
if x>=values[1]
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=values[1]
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=0
; direct jump
if x>=values[1]
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=values[1]
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=values[1]
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_expr() {
byte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=-1
; direct jump
if x>=cx16.r4sL+-1-cx16.r5sL
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=cx16.r4sL+-1-cx16.r5sL
success++
; with else
if x>=cx16.r4sL+-1-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4sL+0-cx16.r5sL
goto lbl2a
goto skip2a
lbl2a: fail_byte(37)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip2b
lbl2b: fail_byte(38)
skip2b:
; no else
if x>=cx16.r4sL+0-cx16.r5sL
fail_byte(39)
; with else
if x>=cx16.r4sL+0-cx16.r5sL
fail_byte(40)
else
success++
; direct jump
if x>=cx16.r4sL+1-cx16.r5sL
goto lbl3a
goto skip3a
lbl3a: fail_byte(41)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip3b
lbl3b: fail_byte(42)
skip3b:
; no else
if x>=cx16.r4sL+1-cx16.r5sL
fail_byte(43)
; with else
if x>=cx16.r4sL+1-cx16.r5sL
fail_byte(44)
else
success++
x=0
; direct jump
if x>=cx16.r4sL+-1-cx16.r5sL
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=cx16.r4sL+-1-cx16.r5sL
success++
; with else
if x>=cx16.r4sL+-1-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4sL+0-cx16.r5sL
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=cx16.r4sL+0-cx16.r5sL
success++
; with else
if x>=cx16.r4sL+0-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4sL+1-cx16.r5sL
goto lbl6a
goto skip6a
lbl6a: fail_byte(45)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip6b
lbl6b: fail_byte(46)
skip6b:
; no else
if x>=cx16.r4sL+1-cx16.r5sL
fail_byte(47)
; with else
if x>=cx16.r4sL+1-cx16.r5sL
fail_byte(48)
else
success++
x=1
; direct jump
if x>=cx16.r4sL+-1-cx16.r5sL
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=cx16.r4sL+-1-cx16.r5sL
success++
; with else
if x>=cx16.r4sL+-1-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4sL+0-cx16.r5sL
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=cx16.r4sL+0-cx16.r5sL
success++
; with else
if x>=cx16.r4sL+0-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4sL+1-cx16.r5sL
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=cx16.r4sL+1-cx16.r5sL
success++
; with else
if x>=cx16.r4sL+1-cx16.r5sL
success++
else
cx16.r0L++
verify_success(27)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "byte"
uword @shared comparison
sub start() {
txt.print("\nless-than tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<number: ")
test_cmp_number()
txt.print("\n<var: ")
test_cmp_var()
txt.print("\n<array[]: ")
test_cmp_array()
txt.print("\n<expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
byte @shared x
success = 0
x=-1
; direct jump
if x<-1
goto lbl1a
goto skip1a
lbl1a: fail_byte(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<-1
goto cx16.r3
goto skip1b
lbl1b: fail_byte(2)
skip1b:
; no else
if x<-1
fail_byte(3)
; with else
if x<-1
fail_byte(4)
else
success++
; direct jump
if x<0
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<0
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<0
success++
; with else
if x<0
success++
else
cx16.r0L++
; direct jump
if x<1
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<1
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<1
success++
; with else
if x<1
success++
else
cx16.r0L++
x=0
; direct jump
if x<-1
goto lbl4a
goto skip4a
lbl4a: fail_byte(5)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<-1
goto cx16.r3
goto skip4b
lbl4b: fail_byte(6)
skip4b:
; no else
if x<-1
fail_byte(7)
; with else
if x<-1
fail_byte(8)
else
success++
; direct jump
if x<0
goto lbl5a
goto skip5a
lbl5a: fail_byte(9)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<0
goto cx16.r3
goto skip5b
lbl5b: fail_byte(10)
skip5b:
; no else
if x<0
fail_byte(11)
; with else
if x<0
fail_byte(12)
else
success++
; direct jump
if x<1
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<1
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<1
success++
; with else
if x<1
success++
else
cx16.r0L++
x=1
; direct jump
if x<-1
goto lbl7a
goto skip7a
lbl7a: fail_byte(13)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<-1
goto cx16.r3
goto skip7b
lbl7b: fail_byte(14)
skip7b:
; no else
if x<-1
fail_byte(15)
; with else
if x<-1
fail_byte(16)
else
success++
; direct jump
if x<0
goto lbl8a
goto skip8a
lbl8a: fail_byte(17)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<0
goto cx16.r3
goto skip8b
lbl8b: fail_byte(18)
skip8b:
; no else
if x<0
fail_byte(19)
; with else
if x<0
fail_byte(20)
else
success++
; direct jump
if x<1
goto lbl9a
goto skip9a
lbl9a: fail_byte(21)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<1
goto cx16.r3
goto skip9b
lbl9b: fail_byte(22)
skip9b:
; no else
if x<1
fail_byte(23)
; with else
if x<1
fail_byte(24)
else
success++
verify_success(18)
}
sub test_cmp_var() {
byte @shared x, value
success = 0
x=-1
value=-1
; direct jump
if x<value
goto lbl1a
goto skip1a
lbl1a: fail_byte(25)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<value
goto cx16.r3
goto skip1b
lbl1b: fail_byte(26)
skip1b:
; no else
if x<value
fail_byte(27)
; with else
if x<value
fail_byte(28)
else
success++
value=0
; direct jump
if x<value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
value=1
; direct jump
if x<value
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<value
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
x=0
value=-1
; direct jump
if x<value
goto lbl4a
goto skip4a
lbl4a: fail_byte(29)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<value
goto cx16.r3
goto skip4b
lbl4b: fail_byte(30)
skip4b:
; no else
if x<value
fail_byte(31)
; with else
if x<value
fail_byte(32)
else
success++
value=0
; direct jump
if x<value
goto lbl5a
goto skip5a
lbl5a: fail_byte(33)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<value
goto cx16.r3
goto skip5b
lbl5b: fail_byte(34)
skip5b:
; no else
if x<value
fail_byte(35)
; with else
if x<value
fail_byte(36)
else
success++
value=1
; direct jump
if x<value
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<value
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
x=1
value=-1
; direct jump
if x<value
goto lbl7a
goto skip7a
lbl7a: fail_byte(37)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<value
goto cx16.r3
goto skip7b
lbl7b: fail_byte(38)
skip7b:
; no else
if x<value
fail_byte(39)
; with else
if x<value
fail_byte(40)
else
success++
value=0
; direct jump
if x<value
goto lbl8a
goto skip8a
lbl8a: fail_byte(41)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<value
goto cx16.r3
goto skip8b
lbl8b: fail_byte(42)
skip8b:
; no else
if x<value
fail_byte(43)
; with else
if x<value
fail_byte(44)
else
success++
value=1
; direct jump
if x<value
goto lbl9a
goto skip9a
lbl9a: fail_byte(45)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<value
goto cx16.r3
goto skip9b
lbl9b: fail_byte(46)
skip9b:
; no else
if x<value
fail_byte(47)
; with else
if x<value
fail_byte(48)
else
success++
verify_success(18)
}
sub test_cmp_array() {
byte @shared x
byte[] values = [0, 0]
success = 0
x=-1
values[1]=-1
; direct jump
if x<values[1]
goto lbl1a
goto skip1a
lbl1a: fail_byte(49)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_byte(50)
skip1b:
; no else
if x<values[1]
fail_byte(51)
; with else
if x<values[1]
fail_byte(52)
else
success++
values[1]=0
; direct jump
if x<values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x<values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
x=0
values[1]=-1
; direct jump
if x<values[1]
goto lbl4a
goto skip4a
lbl4a: fail_byte(53)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_byte(54)
skip4b:
; no else
if x<values[1]
fail_byte(55)
; with else
if x<values[1]
fail_byte(56)
else
success++
values[1]=0
; direct jump
if x<values[1]
goto lbl5a
goto skip5a
lbl5a: fail_byte(57)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<values[1]
goto cx16.r3
goto skip5b
lbl5b: fail_byte(58)
skip5b:
; no else
if x<values[1]
fail_byte(59)
; with else
if x<values[1]
fail_byte(60)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<values[1]
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
x=1
values[1]=-1
; direct jump
if x<values[1]
goto lbl7a
goto skip7a
lbl7a: fail_byte(61)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<values[1]
goto cx16.r3
goto skip7b
lbl7b: fail_byte(62)
skip7b:
; no else
if x<values[1]
fail_byte(63)
; with else
if x<values[1]
fail_byte(64)
else
success++
values[1]=0
; direct jump
if x<values[1]
goto lbl8a
goto skip8a
lbl8a: fail_byte(65)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<values[1]
goto cx16.r3
goto skip8b
lbl8b: fail_byte(66)
skip8b:
; no else
if x<values[1]
fail_byte(67)
; with else
if x<values[1]
fail_byte(68)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl9a
goto skip9a
lbl9a: fail_byte(69)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<values[1]
goto cx16.r3
goto skip9b
lbl9b: fail_byte(70)
skip9b:
; no else
if x<values[1]
fail_byte(71)
; with else
if x<values[1]
fail_byte(72)
else
success++
verify_success(18)
}
sub test_cmp_expr() {
byte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=-1
; direct jump
if x<cx16.r4sL+-1-cx16.r5sL
goto lbl1a
goto skip1a
lbl1a: fail_byte(73)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip1b
lbl1b: fail_byte(74)
skip1b:
; no else
if x<cx16.r4sL+-1-cx16.r5sL
fail_byte(75)
; with else
if x<cx16.r4sL+-1-cx16.r5sL
fail_byte(76)
else
success++
; direct jump
if x<cx16.r4sL+0-cx16.r5sL
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<cx16.r4sL+0-cx16.r5sL
success++
; with else
if x<cx16.r4sL+0-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x<cx16.r4sL+1-cx16.r5sL
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<cx16.r4sL+1-cx16.r5sL
success++
; with else
if x<cx16.r4sL+1-cx16.r5sL
success++
else
cx16.r0L++
x=0
; direct jump
if x<cx16.r4sL+-1-cx16.r5sL
goto lbl4a
goto skip4a
lbl4a: fail_byte(77)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip4b
lbl4b: fail_byte(78)
skip4b:
; no else
if x<cx16.r4sL+-1-cx16.r5sL
fail_byte(79)
; with else
if x<cx16.r4sL+-1-cx16.r5sL
fail_byte(80)
else
success++
; direct jump
if x<cx16.r4sL+0-cx16.r5sL
goto lbl5a
goto skip5a
lbl5a: fail_byte(81)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip5b
lbl5b: fail_byte(82)
skip5b:
; no else
if x<cx16.r4sL+0-cx16.r5sL
fail_byte(83)
; with else
if x<cx16.r4sL+0-cx16.r5sL
fail_byte(84)
else
success++
; direct jump
if x<cx16.r4sL+1-cx16.r5sL
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<cx16.r4sL+1-cx16.r5sL
success++
; with else
if x<cx16.r4sL+1-cx16.r5sL
success++
else
cx16.r0L++
x=1
; direct jump
if x<cx16.r4sL+-1-cx16.r5sL
goto lbl7a
goto skip7a
lbl7a: fail_byte(85)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip7b
lbl7b: fail_byte(86)
skip7b:
; no else
if x<cx16.r4sL+-1-cx16.r5sL
fail_byte(87)
; with else
if x<cx16.r4sL+-1-cx16.r5sL
fail_byte(88)
else
success++
; direct jump
if x<cx16.r4sL+0-cx16.r5sL
goto lbl8a
goto skip8a
lbl8a: fail_byte(89)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip8b
lbl8b: fail_byte(90)
skip8b:
; no else
if x<cx16.r4sL+0-cx16.r5sL
fail_byte(91)
; with else
if x<cx16.r4sL+0-cx16.r5sL
fail_byte(92)
else
success++
; direct jump
if x<cx16.r4sL+1-cx16.r5sL
goto lbl9a
goto skip9a
lbl9a: fail_byte(93)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip9b
lbl9b: fail_byte(94)
skip9b:
; no else
if x<cx16.r4sL+1-cx16.r5sL
fail_byte(95)
; with else
if x<cx16.r4sL+1-cx16.r5sL
fail_byte(96)
else
success++
verify_success(18)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "byte"
uword @shared comparison
sub start() {
txt.print("\nless-equal tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<=number: ")
test_cmp_number()
txt.print("\n<=var: ")
test_cmp_var()
txt.print("\n<=array[]: ")
test_cmp_array()
txt.print("\n<=expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
byte @shared x
success = 0
x=-1
; direct jump
if x<=-1
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=-1
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=-1
success++
; with else
if x<=-1
success++
else
cx16.r0L++
; direct jump
if x<=0
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=0
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=0
success++
; with else
if x<=0
success++
else
cx16.r0L++
; direct jump
if x<=1
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=1
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=1
success++
; with else
if x<=1
success++
else
cx16.r0L++
x=0
; direct jump
if x<=-1
goto lbl4a
goto skip4a
lbl4a: fail_byte(1)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=-1
goto cx16.r3
goto skip4b
lbl4b: fail_byte(2)
skip4b:
; no else
if x<=-1
fail_byte(3)
; with else
if x<=-1
fail_byte(4)
else
success++
; direct jump
if x<=0
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=0
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=0
success++
; with else
if x<=0
success++
else
cx16.r0L++
; direct jump
if x<=1
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=1
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=1
success++
; with else
if x<=1
success++
else
cx16.r0L++
x=1
; direct jump
if x<=-1
goto lbl7a
goto skip7a
lbl7a: fail_byte(5)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=-1
goto cx16.r3
goto skip7b
lbl7b: fail_byte(6)
skip7b:
; no else
if x<=-1
fail_byte(7)
; with else
if x<=-1
fail_byte(8)
else
success++
; direct jump
if x<=0
goto lbl8a
goto skip8a
lbl8a: fail_byte(9)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=0
goto cx16.r3
goto skip8b
lbl8b: fail_byte(10)
skip8b:
; no else
if x<=0
fail_byte(11)
; with else
if x<=0
fail_byte(12)
else
success++
; direct jump
if x<=1
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=1
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=1
success++
; with else
if x<=1
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_var() {
byte @shared x, value
success = 0
x=-1
value=-1
; direct jump
if x<=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=0
; direct jump
if x<=value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=1
; direct jump
if x<=value
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=value
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
x=0
value=-1
; direct jump
if x<=value
goto lbl4a
goto skip4a
lbl4a: fail_byte(13)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=value
goto cx16.r3
goto skip4b
lbl4b: fail_byte(14)
skip4b:
; no else
if x<=value
fail_byte(15)
; with else
if x<=value
fail_byte(16)
else
success++
value=0
; direct jump
if x<=value
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=value
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=1
; direct jump
if x<=value
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=value
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
x=1
value=-1
; direct jump
if x<=value
goto lbl7a
goto skip7a
lbl7a: fail_byte(17)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=value
goto cx16.r3
goto skip7b
lbl7b: fail_byte(18)
skip7b:
; no else
if x<=value
fail_byte(19)
; with else
if x<=value
fail_byte(20)
else
success++
value=0
; direct jump
if x<=value
goto lbl8a
goto skip8a
lbl8a: fail_byte(21)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=value
goto cx16.r3
goto skip8b
lbl8b: fail_byte(22)
skip8b:
; no else
if x<=value
fail_byte(23)
; with else
if x<=value
fail_byte(24)
else
success++
value=1
; direct jump
if x<=value
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=value
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_array() {
byte @shared x
byte[] values = [0, 0]
success = 0
x=-1
values[1]=-1
; direct jump
if x<=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=0
; direct jump
if x<=values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x<=values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
x=0
values[1]=-1
; direct jump
if x<=values[1]
goto lbl4a
goto skip4a
lbl4a: fail_byte(25)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_byte(26)
skip4b:
; no else
if x<=values[1]
fail_byte(27)
; with else
if x<=values[1]
fail_byte(28)
else
success++
values[1]=0
; direct jump
if x<=values[1]
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=values[1]
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x<=values[1]
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=values[1]
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
x=1
values[1]=-1
; direct jump
if x<=values[1]
goto lbl7a
goto skip7a
lbl7a: fail_byte(29)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=values[1]
goto cx16.r3
goto skip7b
lbl7b: fail_byte(30)
skip7b:
; no else
if x<=values[1]
fail_byte(31)
; with else
if x<=values[1]
fail_byte(32)
else
success++
values[1]=0
; direct jump
if x<=values[1]
goto lbl8a
goto skip8a
lbl8a: fail_byte(33)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=values[1]
goto cx16.r3
goto skip8b
lbl8b: fail_byte(34)
skip8b:
; no else
if x<=values[1]
fail_byte(35)
; with else
if x<=values[1]
fail_byte(36)
else
success++
values[1]=1
; direct jump
if x<=values[1]
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=values[1]
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_expr() {
byte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=-1
; direct jump
if x<=cx16.r4sL+-1-cx16.r5sL
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=cx16.r4sL+-1-cx16.r5sL
success++
; with else
if x<=cx16.r4sL+-1-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x<=cx16.r4sL+0-cx16.r5sL
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=cx16.r4sL+0-cx16.r5sL
success++
; with else
if x<=cx16.r4sL+0-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x<=cx16.r4sL+1-cx16.r5sL
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=cx16.r4sL+1-cx16.r5sL
success++
; with else
if x<=cx16.r4sL+1-cx16.r5sL
success++
else
cx16.r0L++
x=0
; direct jump
if x<=cx16.r4sL+-1-cx16.r5sL
goto lbl4a
goto skip4a
lbl4a: fail_byte(37)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip4b
lbl4b: fail_byte(38)
skip4b:
; no else
if x<=cx16.r4sL+-1-cx16.r5sL
fail_byte(39)
; with else
if x<=cx16.r4sL+-1-cx16.r5sL
fail_byte(40)
else
success++
; direct jump
if x<=cx16.r4sL+0-cx16.r5sL
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=cx16.r4sL+0-cx16.r5sL
success++
; with else
if x<=cx16.r4sL+0-cx16.r5sL
success++
else
cx16.r0L++
; direct jump
if x<=cx16.r4sL+1-cx16.r5sL
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=cx16.r4sL+1-cx16.r5sL
success++
; with else
if x<=cx16.r4sL+1-cx16.r5sL
success++
else
cx16.r0L++
x=1
; direct jump
if x<=cx16.r4sL+-1-cx16.r5sL
goto lbl7a
goto skip7a
lbl7a: fail_byte(41)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=cx16.r4sL+-1-cx16.r5sL
goto cx16.r3
goto skip7b
lbl7b: fail_byte(42)
skip7b:
; no else
if x<=cx16.r4sL+-1-cx16.r5sL
fail_byte(43)
; with else
if x<=cx16.r4sL+-1-cx16.r5sL
fail_byte(44)
else
success++
; direct jump
if x<=cx16.r4sL+0-cx16.r5sL
goto lbl8a
goto skip8a
lbl8a: fail_byte(45)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=cx16.r4sL+0-cx16.r5sL
goto cx16.r3
goto skip8b
lbl8b: fail_byte(46)
skip8b:
; no else
if x<=cx16.r4sL+0-cx16.r5sL
fail_byte(47)
; with else
if x<=cx16.r4sL+0-cx16.r5sL
fail_byte(48)
else
success++
; direct jump
if x<=cx16.r4sL+1-cx16.r5sL
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=cx16.r4sL+1-cx16.r5sL
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=cx16.r4sL+1-cx16.r5sL
success++
; with else
if x<=cx16.r4sL+1-cx16.r5sL
success++
else
cx16.r0L++
verify_success(27)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,745 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "float"
uword @shared comparison
sub start() {
txt.print("\n(in)equality tests for datatype: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("==0: ")
test_is_zero()
txt.print("\n!=0: ")
test_not_zero()
txt.print("\n==number: ")
test_is_number()
txt.print("\n!=number: ")
test_not_number()
txt.print("\n==var: ")
test_is_var()
txt.print("\n!=var: ")
test_not_var()
txt.print("\n==array[]: ")
test_is_array()
txt.print("\n!=array[]: ")
test_not_array()
txt.print("\n==expr: ")
test_is_expr()
txt.print("\n!=expr: ")
test_not_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx, byte v1) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.chrout(':')
txt.print_b(v1)
txt.print(" **")
}
sub fail_ubyte(uword idx, ubyte v1) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.chrout(':')
txt.print_ub(v1)
txt.print(" **")
}
sub fail_word(uword idx, word v1) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.chrout(':')
txt.print_w(v1)
txt.print(" **")
}
sub fail_uword(uword idx, uword v1) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.chrout(':')
txt.print_uw(v1)
txt.print(" **")
}
sub fail_float(uword idx, float v1) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.chrout(':')
floats.print(v1)
txt.print(" **")
}
sub test_is_zero() {
float @shared x
success = 0
x=0.0
; direct jump
if x==0
goto lbl1
goto skip1
lbl1: success++
skip1:
; indirect jump
cx16.r3 = &lbl2
if x==0
goto cx16.r3
goto skip2
lbl2: success++
skip2:
; no else
if x==0
success++
; with else
if x==0
success++
else
cx16.r0L++
x = 1234.56
; direct jump
if x==0
goto skip3
success++
skip3:
; indirect jump
cx16.r3 = &skip4
if x==0
goto cx16.r3
success++
skip4:
; no else
success++
if x==0
success--
; with else
if x==0
cx16.r0L++
else
success++
verify_success(8)
}
sub test_not_zero() {
float @shared x
success = 0
x=1234.56
; direct jump
if x!=0
goto lbl1
goto skip1
lbl1: success++
skip1:
; indirect jump
cx16.r3 = &lbl2
if x!=0
goto cx16.r3
goto skip2
lbl2: success++
skip2:
; no else
if x!=0
success++
; with else
if x!=0
success++
else
cx16.r0L++
x = 0.0
; direct jump
if x!=0
goto skip3
success++
skip3:
; indirect jump
cx16.r3 = &skip4
if x!=0
goto cx16.r3
success++
skip4:
; no else
success++
if x!=0
success--
; with else
if x!=0
cx16.r0L++
else
success++
verify_success(8)
}
sub test_is_number() {
float @shared x
success = 0
x=0.0
; direct jump
if x==1234.56
goto lbl1a
goto skip1a
lbl1a: fail_float(1,0.0)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x==1234.56
goto cx16.r3
goto skip1b
lbl1b: fail_float(2,0.0)
skip1b:
; no else
if x==1234.56
fail_float(3,0.0)
; with else
if x==1234.56
fail_float(4,0.0)
else
cx16.r0L++
x=1234.56
; direct jump
if x==1234.56
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x==1234.56
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x==1234.56
success++
; with else
if x==1234.56
success++
else
cx16.r0L++
verify_success(4)
}
sub test_not_number() {
float @shared x
success = 0
x=0.0
; direct jump
if x!=1234.56
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x!=1234.56
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x!=1234.56
success++
; with else
if x!=1234.56
success++
else
cx16.r0L++
x=1234.56
; direct jump
if x!=1234.56
goto lbl2a
goto skip2a
lbl2a: fail_float(5,1234.56)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x!=1234.56
goto cx16.r3
goto skip2b
lbl2b: fail_float(6,1234.56)
skip2b:
; no else
if x!=1234.56
fail_float(7,1234.56)
; with else
if x!=1234.56
fail_float(8,1234.56)
else
cx16.r0L++
verify_success(4)
}
sub test_is_var() {
float @shared x, value
success = 0
x=0.0
value=1234.56
; direct jump
if x==value
goto lbl1a
goto skip1a
lbl1a: fail_float(9,0.0)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x==value
goto cx16.r3
goto skip1b
lbl1b: fail_float(10,0.0)
skip1b:
; no else
if x==value
fail_float(11,0.0)
; with else
if x==value
fail_float(12,0.0)
else
cx16.r0L++
x=1234.56
value=1234.56
; direct jump
if x==value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x==value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x==value
success++
; with else
if x==value
success++
else
cx16.r0L++
verify_success(4)
}
sub test_not_var() {
float @shared x, value
success = 0
x=0.0
value=1234.56
; direct jump
if x!=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x!=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x!=value
success++
; with else
if x!=value
success++
else
cx16.r0L++
x=1234.56
value=1234.56
; direct jump
if x!=value
goto lbl2a
goto skip2a
lbl2a: fail_float(13,1234.56)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x!=value
goto cx16.r3
goto skip2b
lbl2b: fail_float(14,1234.56)
skip2b:
; no else
if x!=value
fail_float(15,1234.56)
; with else
if x!=value
fail_float(16,1234.56)
else
cx16.r0L++
verify_success(4)
}
sub test_is_expr() {
float @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0.0
; direct jump
if x==f4+1234.56-f5
goto lbl1a
goto skip1a
lbl1a: fail_float(17,0.0)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x==f4+1234.56-f5
goto cx16.r3
goto skip1b
lbl1b: fail_float(18,0.0)
skip1b:
; no else
if x==f4+1234.56-f5
fail_float(19,0.0)
; with else
if x==f4+1234.56-f5
fail_float(20,0.0)
else
cx16.r0L++
x=1234.56
; direct jump
if x==f4+1234.56-f5
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x==f4+1234.56-f5
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x==f4+1234.56-f5
success++
; with else
if x==f4+1234.56-f5
success++
else
cx16.r0L++
verify_success(4)
}
sub test_not_expr() {
float @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0.0
; direct jump
if x!=f4+1234.56-f5
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x!=f4+1234.56-f5
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x!=f4+1234.56-f5
success++
; with else
if x!=f4+1234.56-f5
success++
else
cx16.r0L++
x=1234.56
; direct jump
if x!=f4+1234.56-f5
goto lbl2a
goto skip2a
lbl2a: fail_float(21,1234.56)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x!=f4+1234.56-f5
goto cx16.r3
goto skip2b
lbl2b: fail_float(22,1234.56)
skip2b:
; no else
if x!=f4+1234.56-f5
fail_float(23,1234.56)
; with else
if x!=f4+1234.56-f5
fail_float(24,1234.56)
else
cx16.r0L++
verify_success(4)
}
sub test_is_array() {
float @shared x
float[] values = [0, 0]
float[] sources = [0, 0]
success = 0
x=0.0
sources[1]=0.0
values[1]=1234.56
; direct jump
if x==values[1]
goto lbl1a
goto skip1a
lbl1a: fail_float(25,0.0)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x==values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_float(26,0.0)
skip1b:
; no else
if x==values[1]
fail_float(27,0.0)
; with else
if x==values[1]
fail_float(28,0.0)
else
cx16.r0L++
; direct jump
if sources[1]==values[1]
goto lbl1c
goto skip1c
lbl1c: fail_float(29,0.0)
skip1c:
; indirect jump
cx16.r3 = &lbl1d
if sources[1]==values[1]
goto cx16.r3
goto skip1d
lbl1d: fail_float(30,0.0)
skip1d:
; no else
if sources[1]==values[1]
fail_float(31,0.0)
; with else
if sources[1]==values[1]
fail_float(32,0.0)
else
cx16.r0L++
x=1234.56
sources[1]=1234.56
values[1]=1234.56
; direct jump
if x==values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x==values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x==values[1]
success++
; with else
if x==values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]==values[1]
goto lbl2c
goto skip2c
lbl2c: success++
skip2c:
; indirect jump
cx16.r3 = &lbl2d
if sources[1]==values[1]
goto cx16.r3
goto skip2d
lbl2d: success++
skip2d:
; no else
if sources[1]==values[1]
success++
; with else
if sources[1]==values[1]
success++
else
cx16.r0L++
verify_success(8)
}
sub test_not_array() {
float @shared x
float[] values = [0, 0]
float[] sources = [0, 0]
success = 0
x=0.0
sources[1]=0.0
values[1]=1234.56
; direct jump
if x!=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x!=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x!=values[1]
success++
; with else
if x!=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]!=values[1]
goto lbl1c
goto skip1c
lbl1c: success++
skip1c:
; indirect jump
cx16.r3 = &lbl1d
if sources[1]!=values[1]
goto cx16.r3
goto skip1d
lbl1d: success++
skip1d:
; no else
if sources[1]!=values[1]
success++
; with else
if sources[1]!=values[1]
success++
else
cx16.r0L++
x=1234.56
sources[1]=1234.56
values[1]=1234.56
; direct jump
if x!=values[1]
goto lbl2a
goto skip2a
lbl2a: fail_float(33,1234.56)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x!=values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_float(34,1234.56)
skip2b:
; no else
if x!=values[1]
fail_float(35,1234.56)
; with else
if x!=values[1]
fail_float(36,1234.56)
else
cx16.r0L++
; direct jump
if sources[1]!=values[1]
goto lbl2c
goto skip2c
lbl2c: fail_float(37,1234.56)
skip2c:
; indirect jump
cx16.r3 = &lbl2d
if sources[1]!=values[1]
goto cx16.r3
goto skip2d
lbl2d: fail_float(38,1234.56)
skip2d:
; no else
if sources[1]!=values[1]
fail_float(39,1234.56)
; with else
if sources[1]!=values[1]
fail_float(40,1234.56)
else
cx16.r0L++
verify_success(8)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,482 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "float"
uword @shared comparison
sub start() {
txt.print("\ngreater-than tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>number: ")
test_cmp_number()
txt.print("\n>var: ")
test_cmp_var()
txt.print("\n>array[]: ")
test_cmp_array()
txt.print("\n>expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
float @shared x
success = 0
x=0.0
; direct jump
if x>0.0
goto lbl1a
goto skip1a
lbl1a: fail_float(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>0.0
goto cx16.r3
goto skip1b
lbl1b: fail_float(2)
skip1b:
; no else
if x>0.0
fail_float(3)
; with else
if x>0.0
fail_float(4)
else
success++
; direct jump
if x>1234.56
goto lbl2a
goto skip2a
lbl2a: fail_float(5)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>1234.56
goto cx16.r3
goto skip2b
lbl2b: fail_float(6)
skip2b:
; no else
if x>1234.56
fail_float(7)
; with else
if x>1234.56
fail_float(8)
else
success++
x=1234.56
; direct jump
if x>0.0
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>0.0
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>0.0
success++
; with else
if x>0.0
success++
else
cx16.r0L++
; direct jump
if x>1234.56
goto lbl4a
goto skip4a
lbl4a: fail_float(9)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>1234.56
goto cx16.r3
goto skip4b
lbl4b: fail_float(10)
skip4b:
; no else
if x>1234.56
fail_float(11)
; with else
if x>1234.56
fail_float(12)
else
success++
verify_success(7)
}
sub test_cmp_var() {
float @shared x, value
success = 0
x=0.0
value=0.0
; direct jump
if x>value
goto lbl1a
goto skip1a
lbl1a: fail_float(13)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>value
goto cx16.r3
goto skip1b
lbl1b: fail_float(14)
skip1b:
; no else
if x>value
fail_float(15)
; with else
if x>value
fail_float(16)
else
success++
value=1234.56
; direct jump
if x>value
goto lbl2a
goto skip2a
lbl2a: fail_float(17)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>value
goto cx16.r3
goto skip2b
lbl2b: fail_float(18)
skip2b:
; no else
if x>value
fail_float(19)
; with else
if x>value
fail_float(20)
else
success++
x=1234.56
value=0.0
; direct jump
if x>value
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>value
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=1234.56
; direct jump
if x>value
goto lbl4a
goto skip4a
lbl4a: fail_float(21)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>value
goto cx16.r3
goto skip4b
lbl4b: fail_float(22)
skip4b:
; no else
if x>value
fail_float(23)
; with else
if x>value
fail_float(24)
else
success++
verify_success(7)
}
sub test_cmp_array() {
float @shared x
float[] values = [0, 0]
success = 0
x=0.0
values[1]=0.0
; direct jump
if x>values[1]
goto lbl1a
goto skip1a
lbl1a: fail_float(25)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_float(26)
skip1b:
; no else
if x>values[1]
fail_float(27)
; with else
if x>values[1]
fail_float(28)
else
success++
values[1]=1234.56
; direct jump
if x>values[1]
goto lbl2a
goto skip2a
lbl2a: fail_float(29)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_float(30)
skip2b:
; no else
if x>values[1]
fail_float(31)
; with else
if x>values[1]
fail_float(32)
else
success++
x=1234.56
values[1]=0.0
; direct jump
if x>values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=1234.56
; direct jump
if x>values[1]
goto lbl4a
goto skip4a
lbl4a: fail_float(33)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_float(34)
skip4b:
; no else
if x>values[1]
fail_float(35)
; with else
if x>values[1]
fail_float(36)
else
success++
verify_success(7)
}
sub test_cmp_expr() {
float @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0.0
; direct jump
if x>f4+0.0-f5
goto lbl1a
goto skip1a
lbl1a: fail_float(37)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>f4+0.0-f5
goto cx16.r3
goto skip1b
lbl1b: fail_float(38)
skip1b:
; no else
if x>f4+0.0-f5
fail_float(39)
; with else
if x>f4+0.0-f5
fail_float(40)
else
success++
; direct jump
if x>f4+1234.56-f5
goto lbl2a
goto skip2a
lbl2a: fail_float(41)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>f4+1234.56-f5
goto cx16.r3
goto skip2b
lbl2b: fail_float(42)
skip2b:
; no else
if x>f4+1234.56-f5
fail_float(43)
; with else
if x>f4+1234.56-f5
fail_float(44)
else
success++
x=1234.56
; direct jump
if x>f4+0.0-f5
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>f4+0.0-f5
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>f4+0.0-f5
success++
; with else
if x>f4+0.0-f5
success++
else
cx16.r0L++
; direct jump
if x>f4+1234.56-f5
goto lbl4a
goto skip4a
lbl4a: fail_float(45)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>f4+1234.56-f5
goto cx16.r3
goto skip4b
lbl4b: fail_float(46)
skip4b:
; no else
if x>f4+1234.56-f5
fail_float(47)
; with else
if x>f4+1234.56-f5
fail_float(48)
else
success++
verify_success(7)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,482 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "float"
uword @shared comparison
sub start() {
txt.print("\ngreater-equal tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>=number: ")
test_cmp_number()
txt.print("\n>=var: ")
test_cmp_var()
txt.print("\n>=array[]: ")
test_cmp_array()
txt.print("\n>=expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
float @shared x
success = 0
x=0.0
; direct jump
if x>=0.0
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=0.0
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=0.0
success++
; with else
if x>=0.0
success++
else
cx16.r0L++
; direct jump
if x>=1234.56
goto lbl2a
goto skip2a
lbl2a: fail_float(1)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=1234.56
goto cx16.r3
goto skip2b
lbl2b: fail_float(2)
skip2b:
; no else
if x>=1234.56
fail_float(3)
; with else
if x>=1234.56
fail_float(4)
else
success++
x=1234.56
; direct jump
if x>=0.0
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=0.0
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>=0.0
success++
; with else
if x>=0.0
success++
else
cx16.r0L++
; direct jump
if x>=1234.56
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=1234.56
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=1234.56
success++
; with else
if x>=1234.56
success++
else
cx16.r0L++
verify_success(13)
}
sub test_cmp_var() {
float @shared x, value
success = 0
x=0.0
value=0.0
; direct jump
if x>=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1234.56
; direct jump
if x>=value
goto lbl2a
goto skip2a
lbl2a: fail_float(5)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=value
goto cx16.r3
goto skip2b
lbl2b: fail_float(6)
skip2b:
; no else
if x>=value
fail_float(7)
; with else
if x>=value
fail_float(8)
else
success++
x=1234.56
value=0.0
; direct jump
if x>=value
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=value
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1234.56
; direct jump
if x>=value
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=value
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
verify_success(13)
}
sub test_cmp_array() {
float @shared x
float[] values = [0, 0]
success = 0
x=0.0
values[1]=0.0
; direct jump
if x>=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1234.56
; direct jump
if x>=values[1]
goto lbl2a
goto skip2a
lbl2a: fail_float(9)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_float(10)
skip2b:
; no else
if x>=values[1]
fail_float(11)
; with else
if x>=values[1]
fail_float(12)
else
success++
x=1234.56
values[1]=0.0
; direct jump
if x>=values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1234.56
; direct jump
if x>=values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
verify_success(13)
}
sub test_cmp_expr() {
float @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0.0
; direct jump
if x>=f4+0.0-f5
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=f4+0.0-f5
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=f4+0.0-f5
success++
; with else
if x>=f4+0.0-f5
success++
else
cx16.r0L++
; direct jump
if x>=f4+1234.56-f5
goto lbl2a
goto skip2a
lbl2a: fail_float(13)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=f4+1234.56-f5
goto cx16.r3
goto skip2b
lbl2b: fail_float(14)
skip2b:
; no else
if x>=f4+1234.56-f5
fail_float(15)
; with else
if x>=f4+1234.56-f5
fail_float(16)
else
success++
x=1234.56
; direct jump
if x>=f4+0.0-f5
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=f4+0.0-f5
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x>=f4+0.0-f5
success++
; with else
if x>=f4+0.0-f5
success++
else
cx16.r0L++
; direct jump
if x>=f4+1234.56-f5
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=f4+1234.56-f5
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=f4+1234.56-f5
success++
; with else
if x>=f4+1234.56-f5
success++
else
cx16.r0L++
verify_success(13)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,482 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "float"
uword @shared comparison
sub start() {
txt.print("\nless-than tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<number: ")
test_cmp_number()
txt.print("\n<var: ")
test_cmp_var()
txt.print("\n<array[]: ")
test_cmp_array()
txt.print("\n<expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
float @shared x
success = 0
x=0.0
; direct jump
if x<0.0
goto lbl1a
goto skip1a
lbl1a: fail_float(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<0.0
goto cx16.r3
goto skip1b
lbl1b: fail_float(2)
skip1b:
; no else
if x<0.0
fail_float(3)
; with else
if x<0.0
fail_float(4)
else
success++
; direct jump
if x<1234.56
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<1234.56
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<1234.56
success++
; with else
if x<1234.56
success++
else
cx16.r0L++
x=1234.56
; direct jump
if x<0.0
goto lbl3a
goto skip3a
lbl3a: fail_float(5)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<0.0
goto cx16.r3
goto skip3b
lbl3b: fail_float(6)
skip3b:
; no else
if x<0.0
fail_float(7)
; with else
if x<0.0
fail_float(8)
else
success++
; direct jump
if x<1234.56
goto lbl4a
goto skip4a
lbl4a: fail_float(9)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<1234.56
goto cx16.r3
goto skip4b
lbl4b: fail_float(10)
skip4b:
; no else
if x<1234.56
fail_float(11)
; with else
if x<1234.56
fail_float(12)
else
success++
verify_success(7)
}
sub test_cmp_var() {
float @shared x, value
success = 0
x=0.0
value=0.0
; direct jump
if x<value
goto lbl1a
goto skip1a
lbl1a: fail_float(13)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<value
goto cx16.r3
goto skip1b
lbl1b: fail_float(14)
skip1b:
; no else
if x<value
fail_float(15)
; with else
if x<value
fail_float(16)
else
success++
value=1234.56
; direct jump
if x<value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
x=1234.56
value=0.0
; direct jump
if x<value
goto lbl3a
goto skip3a
lbl3a: fail_float(17)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<value
goto cx16.r3
goto skip3b
lbl3b: fail_float(18)
skip3b:
; no else
if x<value
fail_float(19)
; with else
if x<value
fail_float(20)
else
success++
value=1234.56
; direct jump
if x<value
goto lbl4a
goto skip4a
lbl4a: fail_float(21)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<value
goto cx16.r3
goto skip4b
lbl4b: fail_float(22)
skip4b:
; no else
if x<value
fail_float(23)
; with else
if x<value
fail_float(24)
else
success++
verify_success(7)
}
sub test_cmp_array() {
float @shared x
float[] values = [0, 0]
success = 0
x=0.0
values[1]=0.0
; direct jump
if x<values[1]
goto lbl1a
goto skip1a
lbl1a: fail_float(25)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_float(26)
skip1b:
; no else
if x<values[1]
fail_float(27)
; with else
if x<values[1]
fail_float(28)
else
success++
values[1]=1234.56
; direct jump
if x<values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
x=1234.56
values[1]=0.0
; direct jump
if x<values[1]
goto lbl3a
goto skip3a
lbl3a: fail_float(29)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_float(30)
skip3b:
; no else
if x<values[1]
fail_float(31)
; with else
if x<values[1]
fail_float(32)
else
success++
values[1]=1234.56
; direct jump
if x<values[1]
goto lbl4a
goto skip4a
lbl4a: fail_float(33)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_float(34)
skip4b:
; no else
if x<values[1]
fail_float(35)
; with else
if x<values[1]
fail_float(36)
else
success++
verify_success(7)
}
sub test_cmp_expr() {
float @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0.0
; direct jump
if x<f4+0.0-f5
goto lbl1a
goto skip1a
lbl1a: fail_float(37)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<f4+0.0-f5
goto cx16.r3
goto skip1b
lbl1b: fail_float(38)
skip1b:
; no else
if x<f4+0.0-f5
fail_float(39)
; with else
if x<f4+0.0-f5
fail_float(40)
else
success++
; direct jump
if x<f4+1234.56-f5
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<f4+1234.56-f5
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<f4+1234.56-f5
success++
; with else
if x<f4+1234.56-f5
success++
else
cx16.r0L++
x=1234.56
; direct jump
if x<f4+0.0-f5
goto lbl3a
goto skip3a
lbl3a: fail_float(41)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<f4+0.0-f5
goto cx16.r3
goto skip3b
lbl3b: fail_float(42)
skip3b:
; no else
if x<f4+0.0-f5
fail_float(43)
; with else
if x<f4+0.0-f5
fail_float(44)
else
success++
; direct jump
if x<f4+1234.56-f5
goto lbl4a
goto skip4a
lbl4a: fail_float(45)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<f4+1234.56-f5
goto cx16.r3
goto skip4b
lbl4b: fail_float(46)
skip4b:
; no else
if x<f4+1234.56-f5
fail_float(47)
; with else
if x<f4+1234.56-f5
fail_float(48)
else
success++
verify_success(7)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,482 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "float"
uword @shared comparison
sub start() {
txt.print("\nless-equal tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<=number: ")
test_cmp_number()
txt.print("\n<=var: ")
test_cmp_var()
txt.print("\n<=array[]: ")
test_cmp_array()
txt.print("\n<=expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
float @shared x
success = 0
x=0.0
; direct jump
if x<=0.0
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=0.0
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=0.0
success++
; with else
if x<=0.0
success++
else
cx16.r0L++
; direct jump
if x<=1234.56
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=1234.56
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=1234.56
success++
; with else
if x<=1234.56
success++
else
cx16.r0L++
x=1234.56
; direct jump
if x<=0.0
goto lbl3a
goto skip3a
lbl3a: fail_float(1)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=0.0
goto cx16.r3
goto skip3b
lbl3b: fail_float(2)
skip3b:
; no else
if x<=0.0
fail_float(3)
; with else
if x<=0.0
fail_float(4)
else
success++
; direct jump
if x<=1234.56
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=1234.56
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x<=1234.56
success++
; with else
if x<=1234.56
success++
else
cx16.r0L++
verify_success(13)
}
sub test_cmp_var() {
float @shared x, value
success = 0
x=0.0
value=0.0
; direct jump
if x<=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=1234.56
; direct jump
if x<=value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
x=1234.56
value=0.0
; direct jump
if x<=value
goto lbl3a
goto skip3a
lbl3a: fail_float(5)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=value
goto cx16.r3
goto skip3b
lbl3b: fail_float(6)
skip3b:
; no else
if x<=value
fail_float(7)
; with else
if x<=value
fail_float(8)
else
success++
value=1234.56
; direct jump
if x<=value
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=value
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
verify_success(13)
}
sub test_cmp_array() {
float @shared x
float[] values = [0, 0]
success = 0
x=0.0
values[1]=0.0
; direct jump
if x<=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=1234.56
; direct jump
if x<=values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
x=1234.56
values[1]=0.0
; direct jump
if x<=values[1]
goto lbl3a
goto skip3a
lbl3a: fail_float(9)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_float(10)
skip3b:
; no else
if x<=values[1]
fail_float(11)
; with else
if x<=values[1]
fail_float(12)
else
success++
values[1]=1234.56
; direct jump
if x<=values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
verify_success(13)
}
sub test_cmp_expr() {
float @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0.0
; direct jump
if x<=f4+0.0-f5
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=f4+0.0-f5
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=f4+0.0-f5
success++
; with else
if x<=f4+0.0-f5
success++
else
cx16.r0L++
; direct jump
if x<=f4+1234.56-f5
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=f4+1234.56-f5
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=f4+1234.56-f5
success++
; with else
if x<=f4+1234.56-f5
success++
else
cx16.r0L++
x=1234.56
; direct jump
if x<=f4+0.0-f5
goto lbl3a
goto skip3a
lbl3a: fail_float(13)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=f4+0.0-f5
goto cx16.r3
goto skip3b
lbl3b: fail_float(14)
skip3b:
; no else
if x<=f4+0.0-f5
fail_float(15)
; with else
if x<=f4+0.0-f5
fail_float(16)
else
success++
; direct jump
if x<=f4+1234.56-f5
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=f4+1234.56-f5
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x<=f4+1234.56-f5
success++
; with else
if x<=f4+1234.56-f5
success++
else
cx16.r0L++
verify_success(13)
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "ubyte"
uword @shared comparison
sub start() {
txt.print("\ngreater-than tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>number: ")
test_cmp_number()
txt.print("\n>var: ")
test_cmp_var()
txt.print("\n>array[]: ")
test_cmp_array()
txt.print("\n>expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
ubyte @shared x
success = 0
x=0
; direct jump
if x>0
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>0
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(2)
skip1b:
; no else
if x>0
fail_ubyte(3)
; with else
if x>0
fail_ubyte(4)
else
success++
; direct jump
if x>1
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(5)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>1
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(6)
skip2b:
; no else
if x>1
fail_ubyte(7)
; with else
if x>1
fail_ubyte(8)
else
success++
; direct jump
if x>255
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(9)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>255
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(10)
skip3b:
; no else
if x>255
fail_ubyte(11)
; with else
if x>255
fail_ubyte(12)
else
success++
x=1
; direct jump
if x>0
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>0
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>0
success++
; with else
if x>0
success++
else
cx16.r0L++
; direct jump
if x>1
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(13)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>1
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(14)
skip5b:
; no else
if x>1
fail_ubyte(15)
; with else
if x>1
fail_ubyte(16)
else
success++
; direct jump
if x>255
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(17)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>255
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(18)
skip6b:
; no else
if x>255
fail_ubyte(19)
; with else
if x>255
fail_ubyte(20)
else
success++
x=255
; direct jump
if x>0
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>0
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>0
success++
; with else
if x>0
success++
else
cx16.r0L++
; direct jump
if x>1
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>1
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>1
success++
; with else
if x>1
success++
else
cx16.r0L++
; direct jump
if x>255
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(21)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>255
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(22)
skip9b:
; no else
if x>255
fail_ubyte(23)
; with else
if x>255
fail_ubyte(24)
else
success++
verify_success(18)
}
sub test_cmp_var() {
ubyte @shared x, value
success = 0
x=0
value=0
; direct jump
if x>value
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(25)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>value
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(26)
skip1b:
; no else
if x>value
fail_ubyte(27)
; with else
if x>value
fail_ubyte(28)
else
success++
value=1
; direct jump
if x>value
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(29)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>value
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(30)
skip2b:
; no else
if x>value
fail_ubyte(31)
; with else
if x>value
fail_ubyte(32)
else
success++
value=255
; direct jump
if x>value
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(33)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>value
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(34)
skip3b:
; no else
if x>value
fail_ubyte(35)
; with else
if x>value
fail_ubyte(36)
else
success++
x=1
value=0
; direct jump
if x>value
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>value
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=1
; direct jump
if x>value
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(37)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>value
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(38)
skip5b:
; no else
if x>value
fail_ubyte(39)
; with else
if x>value
fail_ubyte(40)
else
success++
value=255
; direct jump
if x>value
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(41)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>value
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(42)
skip6b:
; no else
if x>value
fail_ubyte(43)
; with else
if x>value
fail_ubyte(44)
else
success++
x=255
value=0
; direct jump
if x>value
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>value
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=1
; direct jump
if x>value
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>value
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>value
success++
; with else
if x>value
success++
else
cx16.r0L++
value=255
; direct jump
if x>value
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(45)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>value
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(46)
skip9b:
; no else
if x>value
fail_ubyte(47)
; with else
if x>value
fail_ubyte(48)
else
success++
verify_success(18)
}
sub test_cmp_array() {
ubyte @shared x
ubyte[] values = [0, 0]
success = 0
x=0
values[1]=0
; direct jump
if x>values[1]
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(49)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(50)
skip1b:
; no else
if x>values[1]
fail_ubyte(51)
; with else
if x>values[1]
fail_ubyte(52)
else
success++
values[1]=1
; direct jump
if x>values[1]
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(53)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(54)
skip2b:
; no else
if x>values[1]
fail_ubyte(55)
; with else
if x>values[1]
fail_ubyte(56)
else
success++
values[1]=255
; direct jump
if x>values[1]
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(57)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(58)
skip3b:
; no else
if x>values[1]
fail_ubyte(59)
; with else
if x>values[1]
fail_ubyte(60)
else
success++
x=1
values[1]=0
; direct jump
if x>values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>values[1]
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(61)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>values[1]
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(62)
skip5b:
; no else
if x>values[1]
fail_ubyte(63)
; with else
if x>values[1]
fail_ubyte(64)
else
success++
values[1]=255
; direct jump
if x>values[1]
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(65)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>values[1]
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(66)
skip6b:
; no else
if x>values[1]
fail_ubyte(67)
; with else
if x>values[1]
fail_ubyte(68)
else
success++
x=255
values[1]=0
; direct jump
if x>values[1]
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>values[1]
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>values[1]
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>values[1]
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
values[1]=255
; direct jump
if x>values[1]
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(69)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>values[1]
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(70)
skip9b:
; no else
if x>values[1]
fail_ubyte(71)
; with else
if x>values[1]
fail_ubyte(72)
else
success++
verify_success(18)
}
sub test_cmp_expr() {
ubyte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0
; direct jump
if x>cx16.r4L+0-cx16.r5L
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(73)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(74)
skip1b:
; no else
if x>cx16.r4L+0-cx16.r5L
fail_ubyte(75)
; with else
if x>cx16.r4L+0-cx16.r5L
fail_ubyte(76)
else
success++
; direct jump
if x>cx16.r4L+1-cx16.r5L
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(77)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(78)
skip2b:
; no else
if x>cx16.r4L+1-cx16.r5L
fail_ubyte(79)
; with else
if x>cx16.r4L+1-cx16.r5L
fail_ubyte(80)
else
success++
; direct jump
if x>cx16.r4L+255-cx16.r5L
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(81)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(82)
skip3b:
; no else
if x>cx16.r4L+255-cx16.r5L
fail_ubyte(83)
; with else
if x>cx16.r4L+255-cx16.r5L
fail_ubyte(84)
else
success++
x=1
; direct jump
if x>cx16.r4L+0-cx16.r5L
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>cx16.r4L+0-cx16.r5L
success++
; with else
if x>cx16.r4L+0-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>cx16.r4L+1-cx16.r5L
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(85)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(86)
skip5b:
; no else
if x>cx16.r4L+1-cx16.r5L
fail_ubyte(87)
; with else
if x>cx16.r4L+1-cx16.r5L
fail_ubyte(88)
else
success++
; direct jump
if x>cx16.r4L+255-cx16.r5L
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(89)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(90)
skip6b:
; no else
if x>cx16.r4L+255-cx16.r5L
fail_ubyte(91)
; with else
if x>cx16.r4L+255-cx16.r5L
fail_ubyte(92)
else
success++
x=255
; direct jump
if x>cx16.r4L+0-cx16.r5L
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>cx16.r4L+0-cx16.r5L
success++
; with else
if x>cx16.r4L+0-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>cx16.r4L+1-cx16.r5L
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>cx16.r4L+1-cx16.r5L
success++
; with else
if x>cx16.r4L+1-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>cx16.r4L+255-cx16.r5L
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(93)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(94)
skip9b:
; no else
if x>cx16.r4L+255-cx16.r5L
fail_ubyte(95)
; with else
if x>cx16.r4L+255-cx16.r5L
fail_ubyte(96)
else
success++
verify_success(18)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "ubyte"
uword @shared comparison
sub start() {
txt.print("\ngreater-equal tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>=number: ")
test_cmp_number()
txt.print("\n>=var: ")
test_cmp_var()
txt.print("\n>=array[]: ")
test_cmp_array()
txt.print("\n>=expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
ubyte @shared x
success = 0
x=0
; direct jump
if x>=0
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=0
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=0
success++
; with else
if x>=0
success++
else
cx16.r0L++
; direct jump
if x>=1
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(1)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=1
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(2)
skip2b:
; no else
if x>=1
fail_ubyte(3)
; with else
if x>=1
fail_ubyte(4)
else
success++
; direct jump
if x>=255
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(5)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=255
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(6)
skip3b:
; no else
if x>=255
fail_ubyte(7)
; with else
if x>=255
fail_ubyte(8)
else
success++
x=1
; direct jump
if x>=0
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=0
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=0
success++
; with else
if x>=0
success++
else
cx16.r0L++
; direct jump
if x>=1
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=1
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=1
success++
; with else
if x>=1
success++
else
cx16.r0L++
; direct jump
if x>=255
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(9)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=255
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(10)
skip6b:
; no else
if x>=255
fail_ubyte(11)
; with else
if x>=255
fail_ubyte(12)
else
success++
x=255
; direct jump
if x>=0
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=0
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=0
success++
; with else
if x>=0
success++
else
cx16.r0L++
; direct jump
if x>=1
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=1
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=1
success++
; with else
if x>=1
success++
else
cx16.r0L++
; direct jump
if x>=255
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=255
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=255
success++
; with else
if x>=255
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_var() {
ubyte @shared x, value
success = 0
x=0
value=0
; direct jump
if x>=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1
; direct jump
if x>=value
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(13)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=value
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(14)
skip2b:
; no else
if x>=value
fail_ubyte(15)
; with else
if x>=value
fail_ubyte(16)
else
success++
value=255
; direct jump
if x>=value
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(17)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=value
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(18)
skip3b:
; no else
if x>=value
fail_ubyte(19)
; with else
if x>=value
fail_ubyte(20)
else
success++
x=1
value=0
; direct jump
if x>=value
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=value
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1
; direct jump
if x>=value
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=value
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=255
; direct jump
if x>=value
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(21)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=value
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(22)
skip6b:
; no else
if x>=value
fail_ubyte(23)
; with else
if x>=value
fail_ubyte(24)
else
success++
x=255
value=0
; direct jump
if x>=value
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=value
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=1
; direct jump
if x>=value
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=value
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
value=255
; direct jump
if x>=value
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=value
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=value
success++
; with else
if x>=value
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_array() {
ubyte @shared x
ubyte[] values = [0, 0]
success = 0
x=0
values[1]=0
; direct jump
if x>=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(25)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(26)
skip2b:
; no else
if x>=values[1]
fail_ubyte(27)
; with else
if x>=values[1]
fail_ubyte(28)
else
success++
values[1]=255
; direct jump
if x>=values[1]
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(29)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(30)
skip3b:
; no else
if x>=values[1]
fail_ubyte(31)
; with else
if x>=values[1]
fail_ubyte(32)
else
success++
x=1
values[1]=0
; direct jump
if x>=values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=values[1]
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=255
; direct jump
if x>=values[1]
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(33)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=values[1]
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(34)
skip6b:
; no else
if x>=values[1]
fail_ubyte(35)
; with else
if x>=values[1]
fail_ubyte(36)
else
success++
x=255
values[1]=0
; direct jump
if x>=values[1]
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=values[1]
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=values[1]
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
values[1]=255
; direct jump
if x>=values[1]
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=values[1]
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_expr() {
ubyte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0
; direct jump
if x>=cx16.r4L+0-cx16.r5L
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=cx16.r4L+0-cx16.r5L
success++
; with else
if x>=cx16.r4L+0-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4L+1-cx16.r5L
goto lbl2a
goto skip2a
lbl2a: fail_ubyte(37)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip2b
lbl2b: fail_ubyte(38)
skip2b:
; no else
if x>=cx16.r4L+1-cx16.r5L
fail_ubyte(39)
; with else
if x>=cx16.r4L+1-cx16.r5L
fail_ubyte(40)
else
success++
; direct jump
if x>=cx16.r4L+255-cx16.r5L
goto lbl3a
goto skip3a
lbl3a: fail_ubyte(41)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip3b
lbl3b: fail_ubyte(42)
skip3b:
; no else
if x>=cx16.r4L+255-cx16.r5L
fail_ubyte(43)
; with else
if x>=cx16.r4L+255-cx16.r5L
fail_ubyte(44)
else
success++
x=1
; direct jump
if x>=cx16.r4L+0-cx16.r5L
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x>=cx16.r4L+0-cx16.r5L
success++
; with else
if x>=cx16.r4L+0-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4L+1-cx16.r5L
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=cx16.r4L+1-cx16.r5L
success++
; with else
if x>=cx16.r4L+1-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4L+255-cx16.r5L
goto lbl6a
goto skip6a
lbl6a: fail_ubyte(45)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip6b
lbl6b: fail_ubyte(46)
skip6b:
; no else
if x>=cx16.r4L+255-cx16.r5L
fail_ubyte(47)
; with else
if x>=cx16.r4L+255-cx16.r5L
fail_ubyte(48)
else
success++
x=255
; direct jump
if x>=cx16.r4L+0-cx16.r5L
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x>=cx16.r4L+0-cx16.r5L
success++
; with else
if x>=cx16.r4L+0-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4L+1-cx16.r5L
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x>=cx16.r4L+1-cx16.r5L
success++
; with else
if x>=cx16.r4L+1-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x>=cx16.r4L+255-cx16.r5L
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=cx16.r4L+255-cx16.r5L
success++
; with else
if x>=cx16.r4L+255-cx16.r5L
success++
else
cx16.r0L++
verify_success(27)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "ubyte"
uword @shared comparison
sub start() {
txt.print("\nless-than tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<number: ")
test_cmp_number()
txt.print("\n<var: ")
test_cmp_var()
txt.print("\n<array[]: ")
test_cmp_array()
txt.print("\n<expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
ubyte @shared x
success = 0
x=0
; direct jump
if x<0
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<0
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(2)
skip1b:
; no else
if x<0
fail_ubyte(3)
; with else
if x<0
fail_ubyte(4)
else
success++
; direct jump
if x<1
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<1
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<1
success++
; with else
if x<1
success++
else
cx16.r0L++
; direct jump
if x<255
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<255
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<255
success++
; with else
if x<255
success++
else
cx16.r0L++
x=1
; direct jump
if x<0
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(5)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<0
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(6)
skip4b:
; no else
if x<0
fail_ubyte(7)
; with else
if x<0
fail_ubyte(8)
else
success++
; direct jump
if x<1
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(9)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<1
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(10)
skip5b:
; no else
if x<1
fail_ubyte(11)
; with else
if x<1
fail_ubyte(12)
else
success++
; direct jump
if x<255
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<255
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<255
success++
; with else
if x<255
success++
else
cx16.r0L++
x=255
; direct jump
if x<0
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(13)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<0
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(14)
skip7b:
; no else
if x<0
fail_ubyte(15)
; with else
if x<0
fail_ubyte(16)
else
success++
; direct jump
if x<1
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(17)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<1
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(18)
skip8b:
; no else
if x<1
fail_ubyte(19)
; with else
if x<1
fail_ubyte(20)
else
success++
; direct jump
if x<255
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(21)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<255
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(22)
skip9b:
; no else
if x<255
fail_ubyte(23)
; with else
if x<255
fail_ubyte(24)
else
success++
verify_success(18)
}
sub test_cmp_var() {
ubyte @shared x, value
success = 0
x=0
value=0
; direct jump
if x<value
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(25)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<value
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(26)
skip1b:
; no else
if x<value
fail_ubyte(27)
; with else
if x<value
fail_ubyte(28)
else
success++
value=1
; direct jump
if x<value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
value=255
; direct jump
if x<value
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<value
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
x=1
value=0
; direct jump
if x<value
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(29)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<value
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(30)
skip4b:
; no else
if x<value
fail_ubyte(31)
; with else
if x<value
fail_ubyte(32)
else
success++
value=1
; direct jump
if x<value
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(33)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<value
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(34)
skip5b:
; no else
if x<value
fail_ubyte(35)
; with else
if x<value
fail_ubyte(36)
else
success++
value=255
; direct jump
if x<value
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<value
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<value
success++
; with else
if x<value
success++
else
cx16.r0L++
x=255
value=0
; direct jump
if x<value
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(37)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<value
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(38)
skip7b:
; no else
if x<value
fail_ubyte(39)
; with else
if x<value
fail_ubyte(40)
else
success++
value=1
; direct jump
if x<value
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(41)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<value
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(42)
skip8b:
; no else
if x<value
fail_ubyte(43)
; with else
if x<value
fail_ubyte(44)
else
success++
value=255
; direct jump
if x<value
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(45)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<value
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(46)
skip9b:
; no else
if x<value
fail_ubyte(47)
; with else
if x<value
fail_ubyte(48)
else
success++
verify_success(18)
}
sub test_cmp_array() {
ubyte @shared x
ubyte[] values = [0, 0]
success = 0
x=0
values[1]=0
; direct jump
if x<values[1]
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(49)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(50)
skip1b:
; no else
if x<values[1]
fail_ubyte(51)
; with else
if x<values[1]
fail_ubyte(52)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
values[1]=255
; direct jump
if x<values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
x=1
values[1]=0
; direct jump
if x<values[1]
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(53)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(54)
skip4b:
; no else
if x<values[1]
fail_ubyte(55)
; with else
if x<values[1]
fail_ubyte(56)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(57)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<values[1]
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(58)
skip5b:
; no else
if x<values[1]
fail_ubyte(59)
; with else
if x<values[1]
fail_ubyte(60)
else
success++
values[1]=255
; direct jump
if x<values[1]
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<values[1]
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
x=255
values[1]=0
; direct jump
if x<values[1]
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(61)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<values[1]
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(62)
skip7b:
; no else
if x<values[1]
fail_ubyte(63)
; with else
if x<values[1]
fail_ubyte(64)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(65)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<values[1]
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(66)
skip8b:
; no else
if x<values[1]
fail_ubyte(67)
; with else
if x<values[1]
fail_ubyte(68)
else
success++
values[1]=255
; direct jump
if x<values[1]
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(69)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<values[1]
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(70)
skip9b:
; no else
if x<values[1]
fail_ubyte(71)
; with else
if x<values[1]
fail_ubyte(72)
else
success++
verify_success(18)
}
sub test_cmp_expr() {
ubyte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0
; direct jump
if x<cx16.r4L+0-cx16.r5L
goto lbl1a
goto skip1a
lbl1a: fail_ubyte(73)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip1b
lbl1b: fail_ubyte(74)
skip1b:
; no else
if x<cx16.r4L+0-cx16.r5L
fail_ubyte(75)
; with else
if x<cx16.r4L+0-cx16.r5L
fail_ubyte(76)
else
success++
; direct jump
if x<cx16.r4L+1-cx16.r5L
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<cx16.r4L+1-cx16.r5L
success++
; with else
if x<cx16.r4L+1-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x<cx16.r4L+255-cx16.r5L
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<cx16.r4L+255-cx16.r5L
success++
; with else
if x<cx16.r4L+255-cx16.r5L
success++
else
cx16.r0L++
x=1
; direct jump
if x<cx16.r4L+0-cx16.r5L
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(77)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(78)
skip4b:
; no else
if x<cx16.r4L+0-cx16.r5L
fail_ubyte(79)
; with else
if x<cx16.r4L+0-cx16.r5L
fail_ubyte(80)
else
success++
; direct jump
if x<cx16.r4L+1-cx16.r5L
goto lbl5a
goto skip5a
lbl5a: fail_ubyte(81)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip5b
lbl5b: fail_ubyte(82)
skip5b:
; no else
if x<cx16.r4L+1-cx16.r5L
fail_ubyte(83)
; with else
if x<cx16.r4L+1-cx16.r5L
fail_ubyte(84)
else
success++
; direct jump
if x<cx16.r4L+255-cx16.r5L
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<cx16.r4L+255-cx16.r5L
success++
; with else
if x<cx16.r4L+255-cx16.r5L
success++
else
cx16.r0L++
x=255
; direct jump
if x<cx16.r4L+0-cx16.r5L
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(85)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(86)
skip7b:
; no else
if x<cx16.r4L+0-cx16.r5L
fail_ubyte(87)
; with else
if x<cx16.r4L+0-cx16.r5L
fail_ubyte(88)
else
success++
; direct jump
if x<cx16.r4L+1-cx16.r5L
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(89)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(90)
skip8b:
; no else
if x<cx16.r4L+1-cx16.r5L
fail_ubyte(91)
; with else
if x<cx16.r4L+1-cx16.r5L
fail_ubyte(92)
else
success++
; direct jump
if x<cx16.r4L+255-cx16.r5L
goto lbl9a
goto skip9a
lbl9a: fail_ubyte(93)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip9b
lbl9b: fail_ubyte(94)
skip9b:
; no else
if x<cx16.r4L+255-cx16.r5L
fail_ubyte(95)
; with else
if x<cx16.r4L+255-cx16.r5L
fail_ubyte(96)
else
success++
verify_success(18)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,956 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
ubyte success = 0
str datatype = "ubyte"
uword @shared comparison
sub start() {
txt.print("\nless-equal tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<=number: ")
test_cmp_number()
txt.print("\n<=var: ")
test_cmp_var()
txt.print("\n<=array[]: ")
test_cmp_array()
txt.print("\n<=expr: ")
test_cmp_expr()
test_stack.test()
}
sub verify_success(ubyte expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_ub(success)
txt.print(" success, expected ")
txt.print_ub(expected)
}
}
sub fail_byte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_ubyte(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_float(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_number() {
ubyte @shared x
success = 0
x=0
; direct jump
if x<=0
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=0
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=0
success++
; with else
if x<=0
success++
else
cx16.r0L++
; direct jump
if x<=1
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=1
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=1
success++
; with else
if x<=1
success++
else
cx16.r0L++
; direct jump
if x<=255
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=255
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=255
success++
; with else
if x<=255
success++
else
cx16.r0L++
x=1
; direct jump
if x<=0
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(1)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=0
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(2)
skip4b:
; no else
if x<=0
fail_ubyte(3)
; with else
if x<=0
fail_ubyte(4)
else
success++
; direct jump
if x<=1
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=1
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=1
success++
; with else
if x<=1
success++
else
cx16.r0L++
; direct jump
if x<=255
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=255
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=255
success++
; with else
if x<=255
success++
else
cx16.r0L++
x=255
; direct jump
if x<=0
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(5)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=0
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(6)
skip7b:
; no else
if x<=0
fail_ubyte(7)
; with else
if x<=0
fail_ubyte(8)
else
success++
; direct jump
if x<=1
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(9)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=1
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(10)
skip8b:
; no else
if x<=1
fail_ubyte(11)
; with else
if x<=1
fail_ubyte(12)
else
success++
; direct jump
if x<=255
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=255
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=255
success++
; with else
if x<=255
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_var() {
ubyte @shared x, value
success = 0
x=0
value=0
; direct jump
if x<=value
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=value
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=1
; direct jump
if x<=value
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=value
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=255
; direct jump
if x<=value
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=value
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
x=1
value=0
; direct jump
if x<=value
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(13)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=value
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(14)
skip4b:
; no else
if x<=value
fail_ubyte(15)
; with else
if x<=value
fail_ubyte(16)
else
success++
value=1
; direct jump
if x<=value
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=value
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
value=255
; direct jump
if x<=value
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=value
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
x=255
value=0
; direct jump
if x<=value
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(17)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=value
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(18)
skip7b:
; no else
if x<=value
fail_ubyte(19)
; with else
if x<=value
fail_ubyte(20)
else
success++
value=1
; direct jump
if x<=value
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(21)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=value
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(22)
skip8b:
; no else
if x<=value
fail_ubyte(23)
; with else
if x<=value
fail_ubyte(24)
else
success++
value=255
; direct jump
if x<=value
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=value
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=value
success++
; with else
if x<=value
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_array() {
ubyte @shared x
ubyte[] values = [0, 0]
success = 0
x=0
values[1]=0
; direct jump
if x<=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x<=values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=255
; direct jump
if x<=values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
x=1
values[1]=0
; direct jump
if x<=values[1]
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(25)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(26)
skip4b:
; no else
if x<=values[1]
fail_ubyte(27)
; with else
if x<=values[1]
fail_ubyte(28)
else
success++
values[1]=1
; direct jump
if x<=values[1]
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=values[1]
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
values[1]=255
; direct jump
if x<=values[1]
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=values[1]
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
x=255
values[1]=0
; direct jump
if x<=values[1]
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(29)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=values[1]
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(30)
skip7b:
; no else
if x<=values[1]
fail_ubyte(31)
; with else
if x<=values[1]
fail_ubyte(32)
else
success++
values[1]=1
; direct jump
if x<=values[1]
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(33)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=values[1]
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(34)
skip8b:
; no else
if x<=values[1]
fail_ubyte(35)
; with else
if x<=values[1]
fail_ubyte(36)
else
success++
values[1]=255
; direct jump
if x<=values[1]
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=values[1]
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
verify_success(27)
}
sub test_cmp_expr() {
ubyte @shared x
cx16.r4 = 1
cx16.r5 = 1
float @shared f4 = 1.0
float @shared f5 = 1.0
success = 0
x=0
; direct jump
if x<=cx16.r4L+0-cx16.r5L
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=cx16.r4L+0-cx16.r5L
success++
; with else
if x<=cx16.r4L+0-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x<=cx16.r4L+1-cx16.r5L
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=cx16.r4L+1-cx16.r5L
success++
; with else
if x<=cx16.r4L+1-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x<=cx16.r4L+255-cx16.r5L
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=cx16.r4L+255-cx16.r5L
success++
; with else
if x<=cx16.r4L+255-cx16.r5L
success++
else
cx16.r0L++
x=1
; direct jump
if x<=cx16.r4L+0-cx16.r5L
goto lbl4a
goto skip4a
lbl4a: fail_ubyte(37)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip4b
lbl4b: fail_ubyte(38)
skip4b:
; no else
if x<=cx16.r4L+0-cx16.r5L
fail_ubyte(39)
; with else
if x<=cx16.r4L+0-cx16.r5L
fail_ubyte(40)
else
success++
; direct jump
if x<=cx16.r4L+1-cx16.r5L
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x<=cx16.r4L+1-cx16.r5L
success++
; with else
if x<=cx16.r4L+1-cx16.r5L
success++
else
cx16.r0L++
; direct jump
if x<=cx16.r4L+255-cx16.r5L
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=cx16.r4L+255-cx16.r5L
success++
; with else
if x<=cx16.r4L+255-cx16.r5L
success++
else
cx16.r0L++
x=255
; direct jump
if x<=cx16.r4L+0-cx16.r5L
goto lbl7a
goto skip7a
lbl7a: fail_ubyte(41)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=cx16.r4L+0-cx16.r5L
goto cx16.r3
goto skip7b
lbl7b: fail_ubyte(42)
skip7b:
; no else
if x<=cx16.r4L+0-cx16.r5L
fail_ubyte(43)
; with else
if x<=cx16.r4L+0-cx16.r5L
fail_ubyte(44)
else
success++
; direct jump
if x<=cx16.r4L+1-cx16.r5L
goto lbl8a
goto skip8a
lbl8a: fail_ubyte(45)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=cx16.r4L+1-cx16.r5L
goto cx16.r3
goto skip8b
lbl8b: fail_ubyte(46)
skip8b:
; no else
if x<=cx16.r4L+1-cx16.r5L
fail_ubyte(47)
; with else
if x<=cx16.r4L+1-cx16.r5L
fail_ubyte(48)
else
success++
; direct jump
if x<=cx16.r4L+255-cx16.r5L
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=cx16.r4L+255-cx16.r5L
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x<=cx16.r4L+255-cx16.r5L
success++
; with else
if x<=cx16.r4L+255-cx16.r5L
success++
else
cx16.r0L++
verify_success(27)
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,816 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
uword success = 0
str datatype = "uword"
uword @shared comparison
sub start() {
txt.print("\ngreater-than split words array tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>array[]: ")
test_cmp_array()
test_stack.test()
}
sub verify_success(uword expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_uw(success)
txt.print(" success, expected ")
txt.print_uw(expected)
}
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_array() {
uword @shared x
uword[] @split values = [0, 0]
uword[] @split sources = [0, 0]
success = 0
x=0
sources[1]=0
values[1]=0
; direct jump
if x>values[1]
goto lbl1a
goto skip1a
lbl1a: fail_uword(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_uword(2)
skip1b:
; no else
if x>values[1]
fail_uword(3)
; with else
if x>values[1]
fail_uword(4)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl1c
goto skip1c
lbl1c: fail_uword(5)
skip1c:
; indirect jump
cx16.r3 = &lbl1d
if sources[1]>values[1]
goto cx16.r3
goto skip1d
lbl1d: fail_uword(6)
skip1d:
; no else
if sources[1]>values[1]
fail_uword(7)
; with else
if sources[1]>values[1]
fail_uword(8)
else
success++
values[1]=1
; direct jump
if x>values[1]
goto lbl2a
goto skip2a
lbl2a: fail_uword(9)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_uword(10)
skip2b:
; no else
if x>values[1]
fail_uword(11)
; with else
if x>values[1]
fail_uword(12)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl2c
goto skip2c
lbl2c: fail_uword(13)
skip2c:
; indirect jump
cx16.r3 = &lbl2d
if sources[1]>values[1]
goto cx16.r3
goto skip2d
lbl2d: fail_uword(14)
skip2d:
; no else
if sources[1]>values[1]
fail_uword(15)
; with else
if sources[1]>values[1]
fail_uword(16)
else
success++
values[1]=30464
; direct jump
if x>values[1]
goto lbl3a
goto skip3a
lbl3a: fail_uword(17)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_uword(18)
skip3b:
; no else
if x>values[1]
fail_uword(19)
; with else
if x>values[1]
fail_uword(20)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl3c
goto skip3c
lbl3c: fail_uword(21)
skip3c:
; indirect jump
cx16.r3 = &lbl3d
if sources[1]>values[1]
goto cx16.r3
goto skip3d
lbl3d: fail_uword(22)
skip3d:
; no else
if sources[1]>values[1]
fail_uword(23)
; with else
if sources[1]>values[1]
fail_uword(24)
else
success++
values[1]=65535
; direct jump
if x>values[1]
goto lbl4a
goto skip4a
lbl4a: fail_uword(25)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_uword(26)
skip4b:
; no else
if x>values[1]
fail_uword(27)
; with else
if x>values[1]
fail_uword(28)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl4c
goto skip4c
lbl4c: fail_uword(29)
skip4c:
; indirect jump
cx16.r3 = &lbl4d
if sources[1]>values[1]
goto cx16.r3
goto skip4d
lbl4d: fail_uword(30)
skip4d:
; no else
if sources[1]>values[1]
fail_uword(31)
; with else
if sources[1]>values[1]
fail_uword(32)
else
success++
x=1
sources[1]=1
values[1]=0
; direct jump
if x>values[1]
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>values[1]
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>values[1]
goto lbl5c
goto skip5c
lbl5c: success++
skip5c:
; indirect jump
cx16.r3 = &lbl5d
if sources[1]>values[1]
goto cx16.r3
goto skip5d
lbl5d: success++
skip5d:
; no else
if sources[1]>values[1]
success++
; with else
if sources[1]>values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>values[1]
goto lbl6a
goto skip6a
lbl6a: fail_uword(33)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>values[1]
goto cx16.r3
goto skip6b
lbl6b: fail_uword(34)
skip6b:
; no else
if x>values[1]
fail_uword(35)
; with else
if x>values[1]
fail_uword(36)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl6c
goto skip6c
lbl6c: fail_uword(37)
skip6c:
; indirect jump
cx16.r3 = &lbl6d
if sources[1]>values[1]
goto cx16.r3
goto skip6d
lbl6d: fail_uword(38)
skip6d:
; no else
if sources[1]>values[1]
fail_uword(39)
; with else
if sources[1]>values[1]
fail_uword(40)
else
success++
values[1]=30464
; direct jump
if x>values[1]
goto lbl7a
goto skip7a
lbl7a: fail_uword(41)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>values[1]
goto cx16.r3
goto skip7b
lbl7b: fail_uword(42)
skip7b:
; no else
if x>values[1]
fail_uword(43)
; with else
if x>values[1]
fail_uword(44)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl7c
goto skip7c
lbl7c: fail_uword(45)
skip7c:
; indirect jump
cx16.r3 = &lbl7d
if sources[1]>values[1]
goto cx16.r3
goto skip7d
lbl7d: fail_uword(46)
skip7d:
; no else
if sources[1]>values[1]
fail_uword(47)
; with else
if sources[1]>values[1]
fail_uword(48)
else
success++
values[1]=65535
; direct jump
if x>values[1]
goto lbl8a
goto skip8a
lbl8a: fail_uword(49)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>values[1]
goto cx16.r3
goto skip8b
lbl8b: fail_uword(50)
skip8b:
; no else
if x>values[1]
fail_uword(51)
; with else
if x>values[1]
fail_uword(52)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl8c
goto skip8c
lbl8c: fail_uword(53)
skip8c:
; indirect jump
cx16.r3 = &lbl8d
if sources[1]>values[1]
goto cx16.r3
goto skip8d
lbl8d: fail_uword(54)
skip8d:
; no else
if sources[1]>values[1]
fail_uword(55)
; with else
if sources[1]>values[1]
fail_uword(56)
else
success++
x=30464
sources[1]=30464
values[1]=0
; direct jump
if x>values[1]
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>values[1]
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>values[1]
goto lbl9c
goto skip9c
lbl9c: success++
skip9c:
; indirect jump
cx16.r3 = &lbl9d
if sources[1]>values[1]
goto cx16.r3
goto skip9d
lbl9d: success++
skip9d:
; no else
if sources[1]>values[1]
success++
; with else
if sources[1]>values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>values[1]
goto lbl10a
goto skip10a
lbl10a: success++
skip10a:
; indirect jump
cx16.r3 = &lbl10b
if x>values[1]
goto cx16.r3
goto skip10b
lbl10b: success++
skip10b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>values[1]
goto lbl10c
goto skip10c
lbl10c: success++
skip10c:
; indirect jump
cx16.r3 = &lbl10d
if sources[1]>values[1]
goto cx16.r3
goto skip10d
lbl10d: success++
skip10d:
; no else
if sources[1]>values[1]
success++
; with else
if sources[1]>values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x>values[1]
goto lbl11a
goto skip11a
lbl11a: fail_uword(57)
skip11a:
; indirect jump
cx16.r3 = &lbl11b
if x>values[1]
goto cx16.r3
goto skip11b
lbl11b: fail_uword(58)
skip11b:
; no else
if x>values[1]
fail_uword(59)
; with else
if x>values[1]
fail_uword(60)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl11c
goto skip11c
lbl11c: fail_uword(61)
skip11c:
; indirect jump
cx16.r3 = &lbl11d
if sources[1]>values[1]
goto cx16.r3
goto skip11d
lbl11d: fail_uword(62)
skip11d:
; no else
if sources[1]>values[1]
fail_uword(63)
; with else
if sources[1]>values[1]
fail_uword(64)
else
success++
values[1]=65535
; direct jump
if x>values[1]
goto lbl12a
goto skip12a
lbl12a: fail_uword(65)
skip12a:
; indirect jump
cx16.r3 = &lbl12b
if x>values[1]
goto cx16.r3
goto skip12b
lbl12b: fail_uword(66)
skip12b:
; no else
if x>values[1]
fail_uword(67)
; with else
if x>values[1]
fail_uword(68)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl12c
goto skip12c
lbl12c: fail_uword(69)
skip12c:
; indirect jump
cx16.r3 = &lbl12d
if sources[1]>values[1]
goto cx16.r3
goto skip12d
lbl12d: fail_uword(70)
skip12d:
; no else
if sources[1]>values[1]
fail_uword(71)
; with else
if sources[1]>values[1]
fail_uword(72)
else
success++
x=65535
sources[1]=65535
values[1]=0
; direct jump
if x>values[1]
goto lbl13a
goto skip13a
lbl13a: success++
skip13a:
; indirect jump
cx16.r3 = &lbl13b
if x>values[1]
goto cx16.r3
goto skip13b
lbl13b: success++
skip13b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>values[1]
goto lbl13c
goto skip13c
lbl13c: success++
skip13c:
; indirect jump
cx16.r3 = &lbl13d
if sources[1]>values[1]
goto cx16.r3
goto skip13d
lbl13d: success++
skip13d:
; no else
if sources[1]>values[1]
success++
; with else
if sources[1]>values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>values[1]
goto lbl14a
goto skip14a
lbl14a: success++
skip14a:
; indirect jump
cx16.r3 = &lbl14b
if x>values[1]
goto cx16.r3
goto skip14b
lbl14b: success++
skip14b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>values[1]
goto lbl14c
goto skip14c
lbl14c: success++
skip14c:
; indirect jump
cx16.r3 = &lbl14d
if sources[1]>values[1]
goto cx16.r3
goto skip14d
lbl14d: success++
skip14d:
; no else
if sources[1]>values[1]
success++
; with else
if sources[1]>values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x>values[1]
goto lbl15a
goto skip15a
lbl15a: success++
skip15a:
; indirect jump
cx16.r3 = &lbl15b
if x>values[1]
goto cx16.r3
goto skip15b
lbl15b: success++
skip15b:
; no else
if x>values[1]
success++
; with else
if x>values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>values[1]
goto lbl15c
goto skip15c
lbl15c: success++
skip15c:
; indirect jump
cx16.r3 = &lbl15d
if sources[1]>values[1]
goto cx16.r3
goto skip15d
lbl15d: success++
skip15d:
; no else
if sources[1]>values[1]
success++
; with else
if sources[1]>values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x>values[1]
goto lbl16a
goto skip16a
lbl16a: fail_uword(73)
skip16a:
; indirect jump
cx16.r3 = &lbl16b
if x>values[1]
goto cx16.r3
goto skip16b
lbl16b: fail_uword(74)
skip16b:
; no else
if x>values[1]
fail_uword(75)
; with else
if x>values[1]
fail_uword(76)
else
success++
; direct jump
if sources[1]>values[1]
goto lbl16c
goto skip16c
lbl16c: fail_uword(77)
skip16c:
; indirect jump
cx16.r3 = &lbl16d
if sources[1]>values[1]
goto cx16.r3
goto skip16d
lbl16d: fail_uword(78)
skip16d:
; no else
if sources[1]>values[1]
fail_uword(79)
; with else
if sources[1]>values[1]
fail_uword(80)
else
success++
verify_success(68)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,816 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
uword success = 0
str datatype = "uword"
uword @shared comparison
sub start() {
txt.print("\ngreater-equal split words array tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n>=array[]: ")
test_cmp_array()
test_stack.test()
}
sub verify_success(uword expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_uw(success)
txt.print(" success, expected ")
txt.print_uw(expected)
}
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_array() {
uword @shared x
uword[] @split values = [0, 0]
uword[] @split sources = [0, 0]
success = 0
x=0
sources[1]=0
values[1]=0
; direct jump
if x>=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x>=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl1c
goto skip1c
lbl1c: success++
skip1c:
; indirect jump
cx16.r3 = &lbl1d
if sources[1]>=values[1]
goto cx16.r3
goto skip1d
lbl1d: success++
skip1d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl2a
goto skip2a
lbl2a: fail_uword(1)
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x>=values[1]
goto cx16.r3
goto skip2b
lbl2b: fail_uword(2)
skip2b:
; no else
if x>=values[1]
fail_uword(3)
; with else
if x>=values[1]
fail_uword(4)
else
success++
; direct jump
if sources[1]>=values[1]
goto lbl2c
goto skip2c
lbl2c: fail_uword(5)
skip2c:
; indirect jump
cx16.r3 = &lbl2d
if sources[1]>=values[1]
goto cx16.r3
goto skip2d
lbl2d: fail_uword(6)
skip2d:
; no else
if sources[1]>=values[1]
fail_uword(7)
; with else
if sources[1]>=values[1]
fail_uword(8)
else
success++
values[1]=30464
; direct jump
if x>=values[1]
goto lbl3a
goto skip3a
lbl3a: fail_uword(9)
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x>=values[1]
goto cx16.r3
goto skip3b
lbl3b: fail_uword(10)
skip3b:
; no else
if x>=values[1]
fail_uword(11)
; with else
if x>=values[1]
fail_uword(12)
else
success++
; direct jump
if sources[1]>=values[1]
goto lbl3c
goto skip3c
lbl3c: fail_uword(13)
skip3c:
; indirect jump
cx16.r3 = &lbl3d
if sources[1]>=values[1]
goto cx16.r3
goto skip3d
lbl3d: fail_uword(14)
skip3d:
; no else
if sources[1]>=values[1]
fail_uword(15)
; with else
if sources[1]>=values[1]
fail_uword(16)
else
success++
values[1]=65535
; direct jump
if x>=values[1]
goto lbl4a
goto skip4a
lbl4a: fail_uword(17)
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x>=values[1]
goto cx16.r3
goto skip4b
lbl4b: fail_uword(18)
skip4b:
; no else
if x>=values[1]
fail_uword(19)
; with else
if x>=values[1]
fail_uword(20)
else
success++
; direct jump
if sources[1]>=values[1]
goto lbl4c
goto skip4c
lbl4c: fail_uword(21)
skip4c:
; indirect jump
cx16.r3 = &lbl4d
if sources[1]>=values[1]
goto cx16.r3
goto skip4d
lbl4d: fail_uword(22)
skip4d:
; no else
if sources[1]>=values[1]
fail_uword(23)
; with else
if sources[1]>=values[1]
fail_uword(24)
else
success++
x=1
sources[1]=1
values[1]=0
; direct jump
if x>=values[1]
goto lbl5a
goto skip5a
lbl5a: success++
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x>=values[1]
goto cx16.r3
goto skip5b
lbl5b: success++
skip5b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl5c
goto skip5c
lbl5c: success++
skip5c:
; indirect jump
cx16.r3 = &lbl5d
if sources[1]>=values[1]
goto cx16.r3
goto skip5d
lbl5d: success++
skip5d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x>=values[1]
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl6c
goto skip6c
lbl6c: success++
skip6c:
; indirect jump
cx16.r3 = &lbl6d
if sources[1]>=values[1]
goto cx16.r3
goto skip6d
lbl6d: success++
skip6d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x>=values[1]
goto lbl7a
goto skip7a
lbl7a: fail_uword(25)
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x>=values[1]
goto cx16.r3
goto skip7b
lbl7b: fail_uword(26)
skip7b:
; no else
if x>=values[1]
fail_uword(27)
; with else
if x>=values[1]
fail_uword(28)
else
success++
; direct jump
if sources[1]>=values[1]
goto lbl7c
goto skip7c
lbl7c: fail_uword(29)
skip7c:
; indirect jump
cx16.r3 = &lbl7d
if sources[1]>=values[1]
goto cx16.r3
goto skip7d
lbl7d: fail_uword(30)
skip7d:
; no else
if sources[1]>=values[1]
fail_uword(31)
; with else
if sources[1]>=values[1]
fail_uword(32)
else
success++
values[1]=65535
; direct jump
if x>=values[1]
goto lbl8a
goto skip8a
lbl8a: fail_uword(33)
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x>=values[1]
goto cx16.r3
goto skip8b
lbl8b: fail_uword(34)
skip8b:
; no else
if x>=values[1]
fail_uword(35)
; with else
if x>=values[1]
fail_uword(36)
else
success++
; direct jump
if sources[1]>=values[1]
goto lbl8c
goto skip8c
lbl8c: fail_uword(37)
skip8c:
; indirect jump
cx16.r3 = &lbl8d
if sources[1]>=values[1]
goto cx16.r3
goto skip8d
lbl8d: fail_uword(38)
skip8d:
; no else
if sources[1]>=values[1]
fail_uword(39)
; with else
if sources[1]>=values[1]
fail_uword(40)
else
success++
x=30464
sources[1]=30464
values[1]=0
; direct jump
if x>=values[1]
goto lbl9a
goto skip9a
lbl9a: success++
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x>=values[1]
goto cx16.r3
goto skip9b
lbl9b: success++
skip9b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl9c
goto skip9c
lbl9c: success++
skip9c:
; indirect jump
cx16.r3 = &lbl9d
if sources[1]>=values[1]
goto cx16.r3
goto skip9d
lbl9d: success++
skip9d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl10a
goto skip10a
lbl10a: success++
skip10a:
; indirect jump
cx16.r3 = &lbl10b
if x>=values[1]
goto cx16.r3
goto skip10b
lbl10b: success++
skip10b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl10c
goto skip10c
lbl10c: success++
skip10c:
; indirect jump
cx16.r3 = &lbl10d
if sources[1]>=values[1]
goto cx16.r3
goto skip10d
lbl10d: success++
skip10d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x>=values[1]
goto lbl11a
goto skip11a
lbl11a: success++
skip11a:
; indirect jump
cx16.r3 = &lbl11b
if x>=values[1]
goto cx16.r3
goto skip11b
lbl11b: success++
skip11b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl11c
goto skip11c
lbl11c: success++
skip11c:
; indirect jump
cx16.r3 = &lbl11d
if sources[1]>=values[1]
goto cx16.r3
goto skip11d
lbl11d: success++
skip11d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x>=values[1]
goto lbl12a
goto skip12a
lbl12a: fail_uword(41)
skip12a:
; indirect jump
cx16.r3 = &lbl12b
if x>=values[1]
goto cx16.r3
goto skip12b
lbl12b: fail_uword(42)
skip12b:
; no else
if x>=values[1]
fail_uword(43)
; with else
if x>=values[1]
fail_uword(44)
else
success++
; direct jump
if sources[1]>=values[1]
goto lbl12c
goto skip12c
lbl12c: fail_uword(45)
skip12c:
; indirect jump
cx16.r3 = &lbl12d
if sources[1]>=values[1]
goto cx16.r3
goto skip12d
lbl12d: fail_uword(46)
skip12d:
; no else
if sources[1]>=values[1]
fail_uword(47)
; with else
if sources[1]>=values[1]
fail_uword(48)
else
success++
x=65535
sources[1]=65535
values[1]=0
; direct jump
if x>=values[1]
goto lbl13a
goto skip13a
lbl13a: success++
skip13a:
; indirect jump
cx16.r3 = &lbl13b
if x>=values[1]
goto cx16.r3
goto skip13b
lbl13b: success++
skip13b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl13c
goto skip13c
lbl13c: success++
skip13c:
; indirect jump
cx16.r3 = &lbl13d
if sources[1]>=values[1]
goto cx16.r3
goto skip13d
lbl13d: success++
skip13d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x>=values[1]
goto lbl14a
goto skip14a
lbl14a: success++
skip14a:
; indirect jump
cx16.r3 = &lbl14b
if x>=values[1]
goto cx16.r3
goto skip14b
lbl14b: success++
skip14b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl14c
goto skip14c
lbl14c: success++
skip14c:
; indirect jump
cx16.r3 = &lbl14d
if sources[1]>=values[1]
goto cx16.r3
goto skip14d
lbl14d: success++
skip14d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x>=values[1]
goto lbl15a
goto skip15a
lbl15a: success++
skip15a:
; indirect jump
cx16.r3 = &lbl15b
if x>=values[1]
goto cx16.r3
goto skip15b
lbl15b: success++
skip15b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl15c
goto skip15c
lbl15c: success++
skip15c:
; indirect jump
cx16.r3 = &lbl15d
if sources[1]>=values[1]
goto cx16.r3
goto skip15d
lbl15d: success++
skip15d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x>=values[1]
goto lbl16a
goto skip16a
lbl16a: success++
skip16a:
; indirect jump
cx16.r3 = &lbl16b
if x>=values[1]
goto cx16.r3
goto skip16b
lbl16b: success++
skip16b:
; no else
if x>=values[1]
success++
; with else
if x>=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]>=values[1]
goto lbl16c
goto skip16c
lbl16c: success++
skip16c:
; indirect jump
cx16.r3 = &lbl16d
if sources[1]>=values[1]
goto cx16.r3
goto skip16d
lbl16d: success++
skip16d:
; no else
if sources[1]>=values[1]
success++
; with else
if sources[1]>=values[1]
success++
else
cx16.r0L++
verify_success(92)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,816 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
uword success = 0
str datatype = "uword"
uword @shared comparison
sub start() {
txt.print("\nless-than split words array tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<array[]: ")
test_cmp_array()
test_stack.test()
}
sub verify_success(uword expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_uw(success)
txt.print(" success, expected ")
txt.print_uw(expected)
}
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_array() {
uword @shared x
uword[] @split values = [0, 0]
uword[] @split sources = [0, 0]
success = 0
x=0
sources[1]=0
values[1]=0
; direct jump
if x<values[1]
goto lbl1a
goto skip1a
lbl1a: fail_uword(1)
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<values[1]
goto cx16.r3
goto skip1b
lbl1b: fail_uword(2)
skip1b:
; no else
if x<values[1]
fail_uword(3)
; with else
if x<values[1]
fail_uword(4)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl1c
goto skip1c
lbl1c: fail_uword(5)
skip1c:
; indirect jump
cx16.r3 = &lbl1d
if sources[1]<values[1]
goto cx16.r3
goto skip1d
lbl1d: fail_uword(6)
skip1d:
; no else
if sources[1]<values[1]
fail_uword(7)
; with else
if sources[1]<values[1]
fail_uword(8)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<values[1]
goto lbl2c
goto skip2c
lbl2c: success++
skip2c:
; indirect jump
cx16.r3 = &lbl2d
if sources[1]<values[1]
goto cx16.r3
goto skip2d
lbl2d: success++
skip2d:
; no else
if sources[1]<values[1]
success++
; with else
if sources[1]<values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x<values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<values[1]
goto lbl3c
goto skip3c
lbl3c: success++
skip3c:
; indirect jump
cx16.r3 = &lbl3d
if sources[1]<values[1]
goto cx16.r3
goto skip3d
lbl3d: success++
skip3d:
; no else
if sources[1]<values[1]
success++
; with else
if sources[1]<values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x<values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<values[1]
goto lbl4c
goto skip4c
lbl4c: success++
skip4c:
; indirect jump
cx16.r3 = &lbl4d
if sources[1]<values[1]
goto cx16.r3
goto skip4d
lbl4d: success++
skip4d:
; no else
if sources[1]<values[1]
success++
; with else
if sources[1]<values[1]
success++
else
cx16.r0L++
x=1
sources[1]=1
values[1]=0
; direct jump
if x<values[1]
goto lbl5a
goto skip5a
lbl5a: fail_uword(9)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<values[1]
goto cx16.r3
goto skip5b
lbl5b: fail_uword(10)
skip5b:
; no else
if x<values[1]
fail_uword(11)
; with else
if x<values[1]
fail_uword(12)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl5c
goto skip5c
lbl5c: fail_uword(13)
skip5c:
; indirect jump
cx16.r3 = &lbl5d
if sources[1]<values[1]
goto cx16.r3
goto skip5d
lbl5d: fail_uword(14)
skip5d:
; no else
if sources[1]<values[1]
fail_uword(15)
; with else
if sources[1]<values[1]
fail_uword(16)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl6a
goto skip6a
lbl6a: fail_uword(17)
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<values[1]
goto cx16.r3
goto skip6b
lbl6b: fail_uword(18)
skip6b:
; no else
if x<values[1]
fail_uword(19)
; with else
if x<values[1]
fail_uword(20)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl6c
goto skip6c
lbl6c: fail_uword(21)
skip6c:
; indirect jump
cx16.r3 = &lbl6d
if sources[1]<values[1]
goto cx16.r3
goto skip6d
lbl6d: fail_uword(22)
skip6d:
; no else
if sources[1]<values[1]
fail_uword(23)
; with else
if sources[1]<values[1]
fail_uword(24)
else
success++
values[1]=30464
; direct jump
if x<values[1]
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<values[1]
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<values[1]
goto lbl7c
goto skip7c
lbl7c: success++
skip7c:
; indirect jump
cx16.r3 = &lbl7d
if sources[1]<values[1]
goto cx16.r3
goto skip7d
lbl7d: success++
skip7d:
; no else
if sources[1]<values[1]
success++
; with else
if sources[1]<values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x<values[1]
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<values[1]
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<values[1]
goto lbl8c
goto skip8c
lbl8c: success++
skip8c:
; indirect jump
cx16.r3 = &lbl8d
if sources[1]<values[1]
goto cx16.r3
goto skip8d
lbl8d: success++
skip8d:
; no else
if sources[1]<values[1]
success++
; with else
if sources[1]<values[1]
success++
else
cx16.r0L++
x=30464
sources[1]=30464
values[1]=0
; direct jump
if x<values[1]
goto lbl9a
goto skip9a
lbl9a: fail_uword(25)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<values[1]
goto cx16.r3
goto skip9b
lbl9b: fail_uword(26)
skip9b:
; no else
if x<values[1]
fail_uword(27)
; with else
if x<values[1]
fail_uword(28)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl9c
goto skip9c
lbl9c: fail_uword(29)
skip9c:
; indirect jump
cx16.r3 = &lbl9d
if sources[1]<values[1]
goto cx16.r3
goto skip9d
lbl9d: fail_uword(30)
skip9d:
; no else
if sources[1]<values[1]
fail_uword(31)
; with else
if sources[1]<values[1]
fail_uword(32)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl10a
goto skip10a
lbl10a: fail_uword(33)
skip10a:
; indirect jump
cx16.r3 = &lbl10b
if x<values[1]
goto cx16.r3
goto skip10b
lbl10b: fail_uword(34)
skip10b:
; no else
if x<values[1]
fail_uword(35)
; with else
if x<values[1]
fail_uword(36)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl10c
goto skip10c
lbl10c: fail_uword(37)
skip10c:
; indirect jump
cx16.r3 = &lbl10d
if sources[1]<values[1]
goto cx16.r3
goto skip10d
lbl10d: fail_uword(38)
skip10d:
; no else
if sources[1]<values[1]
fail_uword(39)
; with else
if sources[1]<values[1]
fail_uword(40)
else
success++
values[1]=30464
; direct jump
if x<values[1]
goto lbl11a
goto skip11a
lbl11a: fail_uword(41)
skip11a:
; indirect jump
cx16.r3 = &lbl11b
if x<values[1]
goto cx16.r3
goto skip11b
lbl11b: fail_uword(42)
skip11b:
; no else
if x<values[1]
fail_uword(43)
; with else
if x<values[1]
fail_uword(44)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl11c
goto skip11c
lbl11c: fail_uword(45)
skip11c:
; indirect jump
cx16.r3 = &lbl11d
if sources[1]<values[1]
goto cx16.r3
goto skip11d
lbl11d: fail_uword(46)
skip11d:
; no else
if sources[1]<values[1]
fail_uword(47)
; with else
if sources[1]<values[1]
fail_uword(48)
else
success++
values[1]=65535
; direct jump
if x<values[1]
goto lbl12a
goto skip12a
lbl12a: success++
skip12a:
; indirect jump
cx16.r3 = &lbl12b
if x<values[1]
goto cx16.r3
goto skip12b
lbl12b: success++
skip12b:
; no else
if x<values[1]
success++
; with else
if x<values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<values[1]
goto lbl12c
goto skip12c
lbl12c: success++
skip12c:
; indirect jump
cx16.r3 = &lbl12d
if sources[1]<values[1]
goto cx16.r3
goto skip12d
lbl12d: success++
skip12d:
; no else
if sources[1]<values[1]
success++
; with else
if sources[1]<values[1]
success++
else
cx16.r0L++
x=65535
sources[1]=65535
values[1]=0
; direct jump
if x<values[1]
goto lbl13a
goto skip13a
lbl13a: fail_uword(49)
skip13a:
; indirect jump
cx16.r3 = &lbl13b
if x<values[1]
goto cx16.r3
goto skip13b
lbl13b: fail_uword(50)
skip13b:
; no else
if x<values[1]
fail_uword(51)
; with else
if x<values[1]
fail_uword(52)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl13c
goto skip13c
lbl13c: fail_uword(53)
skip13c:
; indirect jump
cx16.r3 = &lbl13d
if sources[1]<values[1]
goto cx16.r3
goto skip13d
lbl13d: fail_uword(54)
skip13d:
; no else
if sources[1]<values[1]
fail_uword(55)
; with else
if sources[1]<values[1]
fail_uword(56)
else
success++
values[1]=1
; direct jump
if x<values[1]
goto lbl14a
goto skip14a
lbl14a: fail_uword(57)
skip14a:
; indirect jump
cx16.r3 = &lbl14b
if x<values[1]
goto cx16.r3
goto skip14b
lbl14b: fail_uword(58)
skip14b:
; no else
if x<values[1]
fail_uword(59)
; with else
if x<values[1]
fail_uword(60)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl14c
goto skip14c
lbl14c: fail_uword(61)
skip14c:
; indirect jump
cx16.r3 = &lbl14d
if sources[1]<values[1]
goto cx16.r3
goto skip14d
lbl14d: fail_uword(62)
skip14d:
; no else
if sources[1]<values[1]
fail_uword(63)
; with else
if sources[1]<values[1]
fail_uword(64)
else
success++
values[1]=30464
; direct jump
if x<values[1]
goto lbl15a
goto skip15a
lbl15a: fail_uword(65)
skip15a:
; indirect jump
cx16.r3 = &lbl15b
if x<values[1]
goto cx16.r3
goto skip15b
lbl15b: fail_uword(66)
skip15b:
; no else
if x<values[1]
fail_uword(67)
; with else
if x<values[1]
fail_uword(68)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl15c
goto skip15c
lbl15c: fail_uword(69)
skip15c:
; indirect jump
cx16.r3 = &lbl15d
if sources[1]<values[1]
goto cx16.r3
goto skip15d
lbl15d: fail_uword(70)
skip15d:
; no else
if sources[1]<values[1]
fail_uword(71)
; with else
if sources[1]<values[1]
fail_uword(72)
else
success++
values[1]=65535
; direct jump
if x<values[1]
goto lbl16a
goto skip16a
lbl16a: fail_uword(73)
skip16a:
; indirect jump
cx16.r3 = &lbl16b
if x<values[1]
goto cx16.r3
goto skip16b
lbl16b: fail_uword(74)
skip16b:
; no else
if x<values[1]
fail_uword(75)
; with else
if x<values[1]
fail_uword(76)
else
success++
; direct jump
if sources[1]<values[1]
goto lbl16c
goto skip16c
lbl16c: fail_uword(77)
skip16c:
; indirect jump
cx16.r3 = &lbl16d
if sources[1]<values[1]
goto cx16.r3
goto skip16d
lbl16d: fail_uword(78)
skip16d:
; no else
if sources[1]<values[1]
fail_uword(79)
; with else
if sources[1]<values[1]
fail_uword(80)
else
success++
verify_success(68)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,816 @@
%import textio
%import floats
%import test_stack
%zeropage dontuse
%option no_sysinit
main {
uword success = 0
str datatype = "uword"
uword @shared comparison
sub start() {
txt.print("\nless-equal split words array tests for: ")
txt.print(datatype)
txt.nl()
test_stack.test()
txt.print("\n<=array[]: ")
test_cmp_array()
test_stack.test()
}
sub verify_success(uword expected) {
if success==expected {
txt.print("ok")
} else {
txt.print(" **failed** ")
txt.print_uw(success)
txt.print(" success, expected ")
txt.print_uw(expected)
}
}
sub fail_word(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub fail_uword(uword idx) {
txt.print(" **fail#")
txt.print_uw(idx)
txt.print(" **")
}
sub test_cmp_array() {
uword @shared x
uword[] @split values = [0, 0]
uword[] @split sources = [0, 0]
success = 0
x=0
sources[1]=0
values[1]=0
; direct jump
if x<=values[1]
goto lbl1a
goto skip1a
lbl1a: success++
skip1a:
; indirect jump
cx16.r3 = &lbl1b
if x<=values[1]
goto cx16.r3
goto skip1b
lbl1b: success++
skip1b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl1c
goto skip1c
lbl1c: success++
skip1c:
; indirect jump
cx16.r3 = &lbl1d
if sources[1]<=values[1]
goto cx16.r3
goto skip1d
lbl1d: success++
skip1d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
values[1]=1
; direct jump
if x<=values[1]
goto lbl2a
goto skip2a
lbl2a: success++
skip2a:
; indirect jump
cx16.r3 = &lbl2b
if x<=values[1]
goto cx16.r3
goto skip2b
lbl2b: success++
skip2b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl2c
goto skip2c
lbl2c: success++
skip2c:
; indirect jump
cx16.r3 = &lbl2d
if sources[1]<=values[1]
goto cx16.r3
goto skip2d
lbl2d: success++
skip2d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x<=values[1]
goto lbl3a
goto skip3a
lbl3a: success++
skip3a:
; indirect jump
cx16.r3 = &lbl3b
if x<=values[1]
goto cx16.r3
goto skip3b
lbl3b: success++
skip3b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl3c
goto skip3c
lbl3c: success++
skip3c:
; indirect jump
cx16.r3 = &lbl3d
if sources[1]<=values[1]
goto cx16.r3
goto skip3d
lbl3d: success++
skip3d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x<=values[1]
goto lbl4a
goto skip4a
lbl4a: success++
skip4a:
; indirect jump
cx16.r3 = &lbl4b
if x<=values[1]
goto cx16.r3
goto skip4b
lbl4b: success++
skip4b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl4c
goto skip4c
lbl4c: success++
skip4c:
; indirect jump
cx16.r3 = &lbl4d
if sources[1]<=values[1]
goto cx16.r3
goto skip4d
lbl4d: success++
skip4d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
x=1
sources[1]=1
values[1]=0
; direct jump
if x<=values[1]
goto lbl5a
goto skip5a
lbl5a: fail_uword(1)
skip5a:
; indirect jump
cx16.r3 = &lbl5b
if x<=values[1]
goto cx16.r3
goto skip5b
lbl5b: fail_uword(2)
skip5b:
; no else
if x<=values[1]
fail_uword(3)
; with else
if x<=values[1]
fail_uword(4)
else
success++
; direct jump
if sources[1]<=values[1]
goto lbl5c
goto skip5c
lbl5c: fail_uword(5)
skip5c:
; indirect jump
cx16.r3 = &lbl5d
if sources[1]<=values[1]
goto cx16.r3
goto skip5d
lbl5d: fail_uword(6)
skip5d:
; no else
if sources[1]<=values[1]
fail_uword(7)
; with else
if sources[1]<=values[1]
fail_uword(8)
else
success++
values[1]=1
; direct jump
if x<=values[1]
goto lbl6a
goto skip6a
lbl6a: success++
skip6a:
; indirect jump
cx16.r3 = &lbl6b
if x<=values[1]
goto cx16.r3
goto skip6b
lbl6b: success++
skip6b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl6c
goto skip6c
lbl6c: success++
skip6c:
; indirect jump
cx16.r3 = &lbl6d
if sources[1]<=values[1]
goto cx16.r3
goto skip6d
lbl6d: success++
skip6d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
values[1]=30464
; direct jump
if x<=values[1]
goto lbl7a
goto skip7a
lbl7a: success++
skip7a:
; indirect jump
cx16.r3 = &lbl7b
if x<=values[1]
goto cx16.r3
goto skip7b
lbl7b: success++
skip7b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl7c
goto skip7c
lbl7c: success++
skip7c:
; indirect jump
cx16.r3 = &lbl7d
if sources[1]<=values[1]
goto cx16.r3
goto skip7d
lbl7d: success++
skip7d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x<=values[1]
goto lbl8a
goto skip8a
lbl8a: success++
skip8a:
; indirect jump
cx16.r3 = &lbl8b
if x<=values[1]
goto cx16.r3
goto skip8b
lbl8b: success++
skip8b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl8c
goto skip8c
lbl8c: success++
skip8c:
; indirect jump
cx16.r3 = &lbl8d
if sources[1]<=values[1]
goto cx16.r3
goto skip8d
lbl8d: success++
skip8d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
x=30464
sources[1]=30464
values[1]=0
; direct jump
if x<=values[1]
goto lbl9a
goto skip9a
lbl9a: fail_uword(9)
skip9a:
; indirect jump
cx16.r3 = &lbl9b
if x<=values[1]
goto cx16.r3
goto skip9b
lbl9b: fail_uword(10)
skip9b:
; no else
if x<=values[1]
fail_uword(11)
; with else
if x<=values[1]
fail_uword(12)
else
success++
; direct jump
if sources[1]<=values[1]
goto lbl9c
goto skip9c
lbl9c: fail_uword(13)
skip9c:
; indirect jump
cx16.r3 = &lbl9d
if sources[1]<=values[1]
goto cx16.r3
goto skip9d
lbl9d: fail_uword(14)
skip9d:
; no else
if sources[1]<=values[1]
fail_uword(15)
; with else
if sources[1]<=values[1]
fail_uword(16)
else
success++
values[1]=1
; direct jump
if x<=values[1]
goto lbl10a
goto skip10a
lbl10a: fail_uword(17)
skip10a:
; indirect jump
cx16.r3 = &lbl10b
if x<=values[1]
goto cx16.r3
goto skip10b
lbl10b: fail_uword(18)
skip10b:
; no else
if x<=values[1]
fail_uword(19)
; with else
if x<=values[1]
fail_uword(20)
else
success++
; direct jump
if sources[1]<=values[1]
goto lbl10c
goto skip10c
lbl10c: fail_uword(21)
skip10c:
; indirect jump
cx16.r3 = &lbl10d
if sources[1]<=values[1]
goto cx16.r3
goto skip10d
lbl10d: fail_uword(22)
skip10d:
; no else
if sources[1]<=values[1]
fail_uword(23)
; with else
if sources[1]<=values[1]
fail_uword(24)
else
success++
values[1]=30464
; direct jump
if x<=values[1]
goto lbl11a
goto skip11a
lbl11a: success++
skip11a:
; indirect jump
cx16.r3 = &lbl11b
if x<=values[1]
goto cx16.r3
goto skip11b
lbl11b: success++
skip11b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl11c
goto skip11c
lbl11c: success++
skip11c:
; indirect jump
cx16.r3 = &lbl11d
if sources[1]<=values[1]
goto cx16.r3
goto skip11d
lbl11d: success++
skip11d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
values[1]=65535
; direct jump
if x<=values[1]
goto lbl12a
goto skip12a
lbl12a: success++
skip12a:
; indirect jump
cx16.r3 = &lbl12b
if x<=values[1]
goto cx16.r3
goto skip12b
lbl12b: success++
skip12b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl12c
goto skip12c
lbl12c: success++
skip12c:
; indirect jump
cx16.r3 = &lbl12d
if sources[1]<=values[1]
goto cx16.r3
goto skip12d
lbl12d: success++
skip12d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
x=65535
sources[1]=65535
values[1]=0
; direct jump
if x<=values[1]
goto lbl13a
goto skip13a
lbl13a: fail_uword(25)
skip13a:
; indirect jump
cx16.r3 = &lbl13b
if x<=values[1]
goto cx16.r3
goto skip13b
lbl13b: fail_uword(26)
skip13b:
; no else
if x<=values[1]
fail_uword(27)
; with else
if x<=values[1]
fail_uword(28)
else
success++
; direct jump
if sources[1]<=values[1]
goto lbl13c
goto skip13c
lbl13c: fail_uword(29)
skip13c:
; indirect jump
cx16.r3 = &lbl13d
if sources[1]<=values[1]
goto cx16.r3
goto skip13d
lbl13d: fail_uword(30)
skip13d:
; no else
if sources[1]<=values[1]
fail_uword(31)
; with else
if sources[1]<=values[1]
fail_uword(32)
else
success++
values[1]=1
; direct jump
if x<=values[1]
goto lbl14a
goto skip14a
lbl14a: fail_uword(33)
skip14a:
; indirect jump
cx16.r3 = &lbl14b
if x<=values[1]
goto cx16.r3
goto skip14b
lbl14b: fail_uword(34)
skip14b:
; no else
if x<=values[1]
fail_uword(35)
; with else
if x<=values[1]
fail_uword(36)
else
success++
; direct jump
if sources[1]<=values[1]
goto lbl14c
goto skip14c
lbl14c: fail_uword(37)
skip14c:
; indirect jump
cx16.r3 = &lbl14d
if sources[1]<=values[1]
goto cx16.r3
goto skip14d
lbl14d: fail_uword(38)
skip14d:
; no else
if sources[1]<=values[1]
fail_uword(39)
; with else
if sources[1]<=values[1]
fail_uword(40)
else
success++
values[1]=30464
; direct jump
if x<=values[1]
goto lbl15a
goto skip15a
lbl15a: fail_uword(41)
skip15a:
; indirect jump
cx16.r3 = &lbl15b
if x<=values[1]
goto cx16.r3
goto skip15b
lbl15b: fail_uword(42)
skip15b:
; no else
if x<=values[1]
fail_uword(43)
; with else
if x<=values[1]
fail_uword(44)
else
success++
; direct jump
if sources[1]<=values[1]
goto lbl15c
goto skip15c
lbl15c: fail_uword(45)
skip15c:
; indirect jump
cx16.r3 = &lbl15d
if sources[1]<=values[1]
goto cx16.r3
goto skip15d
lbl15d: fail_uword(46)
skip15d:
; no else
if sources[1]<=values[1]
fail_uword(47)
; with else
if sources[1]<=values[1]
fail_uword(48)
else
success++
values[1]=65535
; direct jump
if x<=values[1]
goto lbl16a
goto skip16a
lbl16a: success++
skip16a:
; indirect jump
cx16.r3 = &lbl16b
if x<=values[1]
goto cx16.r3
goto skip16b
lbl16b: success++
skip16b:
; no else
if x<=values[1]
success++
; with else
if x<=values[1]
success++
else
cx16.r0L++
; direct jump
if sources[1]<=values[1]
goto lbl16c
goto skip16c
lbl16c: success++
skip16c:
; indirect jump
cx16.r3 = &lbl16d
if sources[1]<=values[1]
goto cx16.r3
goto skip16d
lbl16d: success++
skip16d:
; no else
if sources[1]<=values[1]
success++
; with else
if sources[1]<=values[1]
success++
else
cx16.r0L++
verify_success(92)
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -828,10 +828,11 @@ sqrt (w)
Supports unsigned integer (result is ubyte) and floating point numbers.
To do the reverse - squaring a number - just write ``x*x``.
divmod (number, divident, division, remainder)
Performs division and remainder calculation in a single call. This is faster than using separate '/' and '%' calculations.
divmod (dividend, divisor, quotient, remainder)
Performs division only once and returns both quotient and remainder in a single call, where using '/' and '%' separately
would perform the division operation twice.
All values are ubytes or all are uwords.
The last two arguments must be ubyte variables to receive the division and remainder results, respectively.
The last two arguments must be variables to receive the quotient and remainder results, respectively.
Array operations

View File

@ -4,6 +4,7 @@ TODO
add docs for multi-assigns.
add IR peephole optimizer for : loadm.X rX,$address | storem.X rX,$address. (get rid of the store)
(you can generate this code by assigning a asmsub's R0 return value to R0 for instance).
...