Added remainder of non-prefixed instructions
authorLukas Krickl <lukas@krickl.dev>
Sat, 25 Nov 2023 07:00:23 +0000 (08:00 +0100)
committerLukas Krickl <lukas@krickl.dev>
Sat, 25 Nov 2023 07:00:23 +0000 (08:00 +0100)
src/ulas.c
test/t0.s

index bfacaa507019263bf0c640ea49e92290388a2cee..be255f6f635b122063e22ae86dc120c7403f6706 100644 (file)
@@ -1516,6 +1516,10 @@ const struct ulas_instr ULASINSTRS[] = {
     {"ld", {'[', ULAS_E16, ']', ',', ULAS_REG_A, 0}, {0xEA, ULAS_E16, 0}},
     {"ld", {ULAS_REG_A, ',', '[', ULAS_E16, ']', 0}, {0xFA, ULAS_E16, 0}},
 
+    {"ld",
+     {ULAS_REG_HL, ',', ULAS_REG_SP, '+', ULAS_E8, 0},
+     {0xF8, ULAS_E8, 0}},
+
     {"ldh", {'[', ULAS_REG_C, ']', ',', ULAS_REG_A, 0}, {0xE2, 0}},
     {"ldh", {ULAS_REG_A, ',', '[', ULAS_REG_C, ']', 0}, {0xF2, 0}},
 
@@ -1550,17 +1554,24 @@ const struct ulas_instr ULASINSTRS[] = {
     ULAS_INSTR_REG("ret", 0xD0, ULAS_REG_NOT_CARRY),
     ULAS_INSTR_REG("ret", 0xC9, ULAS_REG_ZERO),
     ULAS_INSTR_REG("ret", 0xD9, ULAS_REG_CARRY),
+    {"ret", {0}, {0xC9, 0x00}},
+    {"reti", {0}, {0xD9, 0x00}},
 
     // jp
     ULAS_INSTR_R16E16("jp", 0xC2, ULAS_REG_NOT_ZERO),
     ULAS_INSTR_R16E16("jp", 0xD2, ULAS_REG_NOT_CARRY),
+    ULAS_INSTR_R16E16("jp", 0xCA, ULAS_REG_ZERO),
+    ULAS_INSTR_R16E16("jp", 0xDA, ULAS_REG_CARRY),
     {"jp", {ULAS_E16, 0}, {0xC3, ULAS_E16, 0x00}},
 
     // call
     ULAS_INSTR_R16E16("call", 0xC4, ULAS_REG_NOT_ZERO),
     ULAS_INSTR_R16E16("call", 0xD4, ULAS_REG_NOT_CARRY),
+    ULAS_INSTR_R16E16("call", 0xCC, ULAS_REG_ZERO),
+    ULAS_INSTR_R16E16("call", 0xDC, ULAS_REG_CARRY),
+    {"call", {ULAS_E16, 0}, {0xCD, ULAS_E16, 0x00}},
 
-    // rst 
+    // rst
     ULAS_INSTR_REG("rst", 0xC7, ULAS_VEC00),
     ULAS_INSTR_REG("rst", 0xD7, ULAS_VEC10),
     ULAS_INSTR_REG("rst", 0xE7, ULAS_VEC20),
@@ -1616,6 +1627,13 @@ const struct ulas_instr ULASINSTRS[] = {
     ULAS_INSTR_R8_EXPR8("and", 0xE6, ULAS_REG_A),
     ULAS_INSTR_R8_EXPR8("or", 0xF6, ULAS_REG_A),
 
+    ULAS_INSTR_R8_EXPR8("adc", 0xCE, ULAS_REG_A),
+    ULAS_INSTR_R8_EXPR8("suc", 0xDE, ULAS_REG_A),
+    ULAS_INSTR_R8_EXPR8("xor", 0xEE, ULAS_REG_A),
+    ULAS_INSTR_R8_EXPR8("cp", 0xFE, ULAS_REG_A),
+
+    ULAS_INSTR_R8_EXPR8("add", 0xE8, ULAS_REG_SP),
+
     // alu r16, r16
     ULAS_INSTR_R16R16("add", 0x09, ULAS_REG_HL, ULAS_REG_BC),
     ULAS_INSTR_R16R16("add", 0x19, ULAS_REG_HL, ULAS_REG_DE),
index cc344a0f8ce8b3b28dd3d316e84680df113c5d10..82ee3455fc2a81d25a1b730bacf5b53e7274a7b6 100644 (file)
--- a/test/t0.s
+++ b/test/t0.s
 
   add a, 1+2
   rst 0x00
+  
+  add sp, 2 + 2
+  ld hl, sp+2
+
+  ret 
+  reti
+
+  jp z, 2
+  call 5