aboutsummaryrefslogtreecommitdiff
path: root/src/test/kotlin
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2018-06-28 21:38:42 +0100
committerJames Barnett <noreply@jamesbarnett.xyz>2018-06-28 21:38:42 +0100
commitdfbf83a9a42907063aa5b3789f1ce9606de32e84 (patch)
treeeea8e2232f9f6b8841bcf4a3a740cf895afdd629 /src/test/kotlin
parent6f87feb0c835589adcd566323e058a9158860071 (diff)
downloadKGB-dfbf83a9a42907063aa5b3789f1ce9606de32e84.tar.xz
KGB-dfbf83a9a42907063aa5b3789f1ce9606de32e84.zip
Add register flags and set from LDHL SP,n op
Diffstat (limited to 'src/test/kotlin')
-rw-r--r--src/test/kotlin/RegisterTest.kt54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/test/kotlin/RegisterTest.kt b/src/test/kotlin/RegisterTest.kt
index 7b9188c..617d6f7 100644
--- a/src/test/kotlin/RegisterTest.kt
+++ b/src/test/kotlin/RegisterTest.kt
@@ -1,4 +1,6 @@
+
import cpu.Registers
+import cpu.Registers.Flag
import io.kotlintest.shouldBe
import io.kotlintest.shouldThrow
import io.kotlintest.specs.StringSpec
@@ -124,4 +126,56 @@ class RegisterTest : StringSpec({
reg.PC shouldBe 0xAAFE
}
+ "Test flags" {
+ val reg = Registers()
+
+ reg.getFlag(Flag.ZERO) shouldBe 0
+ reg.getFlag(Flag.SUBTRACT) shouldBe 0
+ reg.getFlag(Flag.HALF_CARRY) shouldBe 0
+ reg.getFlag(Flag.CARRY) shouldBe 0
+
+ reg.setFlag(Flag.ZERO)
+ reg.setFlag(Flag.SUBTRACT)
+ reg.setFlag(Flag.HALF_CARRY)
+ reg.setFlag(Flag.CARRY)
+
+ reg.getFlag(Flag.ZERO) shouldBe 1
+ reg.getFlag(Flag.SUBTRACT) shouldBe 1
+ reg.getFlag(Flag.HALF_CARRY) shouldBe 1
+ reg.getFlag(Flag.CARRY) shouldBe 1
+ reg.F shouldBe 0xF0
+
+ reg.clearFlag(Flag.ZERO)
+ reg.clearFlag(Flag.SUBTRACT)
+ reg.clearFlag(Flag.HALF_CARRY)
+ reg.clearFlag(Flag.CARRY)
+
+ reg.getFlag(Flag.ZERO) shouldBe 0
+ reg.getFlag(Flag.SUBTRACT) shouldBe 0
+ reg.getFlag(Flag.HALF_CARRY) shouldBe 0
+ reg.getFlag(Flag.CARRY) shouldBe 0
+ reg.F shouldBe 0x00
+
+ reg.setFlag(Flag.ZERO)
+ reg.setFlag(Flag.HALF_CARRY)
+
+ reg.getFlag(Flag.ZERO) shouldBe 1
+ reg.getFlag(Flag.SUBTRACT) shouldBe 0
+ reg.getFlag(Flag.HALF_CARRY) shouldBe 1
+ reg.getFlag(Flag.CARRY) shouldBe 0
+ reg.F shouldBe 0xA0 // 10100000
+
+ reg.setFlag(Flag.SUBTRACT)
+ reg.setFlag(Flag.CARRY)
+ reg.clearFlag(Flag.ZERO)
+ reg.clearFlag(Flag.HALF_CARRY)
+
+ reg.getFlag(Flag.ZERO) shouldBe 0
+ reg.getFlag(Flag.SUBTRACT) shouldBe 1
+ reg.getFlag(Flag.HALF_CARRY) shouldBe 0
+ reg.getFlag(Flag.CARRY) shouldBe 1
+ reg.F shouldBe 0x50 // 01010000
+
+ }
+
}) \ No newline at end of file