Added more ld instructions
authorLukas Krickl <lukas@krickl.dev>
Fri, 24 Nov 2023 15:33:05 +0000 (16:33 +0100)
committerLukas Krickl <lukas@krickl.dev>
Fri, 24 Nov 2023 15:33:05 +0000 (16:33 +0100)
src/ulas.c
test/t0.s

index 68875c4449b83823beda3133494153e36c59805b..ceebeecaaac69f5bc0c8b7fed7bc4fc1e2abe133 100644 (file)
@@ -1461,7 +1461,7 @@ const struct ulas_instr ULASINSTRS[] = {
     // misc
     {"daa", {0}, {0x27, 0x00}},
     {"scf", {0}, {0x37, 0x00}},
-    
+
     {"cpl", {0}, {0x2F, 0x00}},
     {"ccf", {0}, {0x3F, 0x00}},
 
@@ -1495,6 +1495,15 @@ const struct ulas_instr ULASINSTRS[] = {
 
     {"ld", {'[', ULAS_E16, ']', ',', ULAS_REG_SP, 0}, {0x08, ULAS_E16, 0}},
 
+    {"ld", {'[', ULAS_E16, ']', ',', ULAS_REG_A, 0}, {0xEA, ULAS_E16, 0}},
+    {"ld", {ULAS_REG_A, ',', '[', ULAS_E16, ']', 0}, {0xFA, ULAS_E16, 0}},
+
+    {"ldh", {'[', ULAS_REG_C, ']', ',', ULAS_REG_A, 0}, {0xE2, 0}},
+    {"ldh", {ULAS_REG_A, ',', '[', ULAS_REG_C, ']', 0}, {0xF2, 0}},
+
+    {"ldh", {'[', ULAS_E8, ']', ',', ULAS_REG_A, 0}, {0xE0, ULAS_E8, 0}},
+    {"ldh", {ULAS_REG_A, ',', '[', ULAS_E8, ']', 0}, {0xF0, ULAS_E8, 0}},
+
     // ld r8, e8
     ULAS_INSTR_R8_EXPR8("ld", 0x06, ULAS_REG_B),
     ULAS_INSTR_R8_EXPR8("ld", 0x16, ULAS_REG_D),
@@ -1518,6 +1527,10 @@ const struct ulas_instr ULASINSTRS[] = {
     ULAS_INSTR_R8_EXPR8("jr", 0x28, ULAS_REG_ZERO),
     ULAS_INSTR_R8_EXPR8("jr", 0x38, ULAS_REG_CARRY),
 
+    // ret
+    ULAS_INSTR_REG("ret", 0xC0, ULAS_REG_NOT_ZERO),
+    ULAS_INSTR_REG("ret", 0xD0, ULAS_REG_NOT_CARRY),
+
     // inc/dec
     ULAS_INSTR_REG("inc", 0x03, ULAS_REG_BC),
     ULAS_INSTR_REG("inc", 0x13, ULAS_REG_DE),
index 62ffa841eb55eeac8e87fc0b574cde78d3b4d441..e792dbbb0375837edd4bd797e5e6a1ef0bb7b555 100644 (file)
--- a/test/t0.s
+++ b/test/t0.s
   dec a
 
   ld c, 1+2
+
+  ret nz
+
+  ldh [1], a
+  ldh a, [2]
+
+  ldh [c], a
+  ldh a, [c]
+
+  ld [1], a
+  ld a, [2]