WIP: ld8
authorLukas Krickl <lukas@krickl.dev>
Tue, 21 Nov 2023 17:39:28 +0000 (18:39 +0100)
committerLukas Krickl <lukas@krickl.dev>
Tue, 21 Nov 2023 17:39:28 +0000 (18:39 +0100)
include/ulas.h
src/ulas.c

index 2cbf545a1cdd987335d48c2491d5ab27372d3e5c..e664f87820e627bdfc613c3ae174b5bcfc863b7f 100644 (file)
@@ -298,6 +298,10 @@ enum ulas_asmdir {
   ULAS_ASMDIR_INCBIN,
 };
 
+// amount of registers
+#define ULAS_NR8 7
+#define ULAS_NR16 3
+
 enum ulas_asmregs {
   // r8
   ULAS_REG_A = 7,
index d6041d4b63a465cb5e5f362cbd98fcf88c122ee5..9c9bcfc36b7fa2b937abb3e725faf9f95983544c 100644 (file)
@@ -1392,13 +1392,14 @@ const char *ulas_asmregstr(enum ulas_asmregs reg) {
     return n;                                                                  \
   }
 
-#define ULAS_LDR8(name, base, regleft, regright)                               \
-  if (strncmp(ulas.tok.buf, (name), ulas.tok.maxlen) == 0) {                   \
-  }
-
 // parses ld r8, r8
 int ulas_ldr8r8(char *dst, unsigned long max, char *name, int base,
-                enum ulas_asmregs regleft, enum ulas_asmregs regright) {
+                enum ulas_asmregs regleft) {
+  const char *left = ulas_asmregstr(regleft);
+  if (strncmp(ulas.tok.buf, (name), ulas.tok.maxlen) != 0) {
+    return 0;
+  }
+
   return 1;
 }
 
@@ -1428,7 +1429,6 @@ int ulas_asminstr(char *dst, unsigned long max, const char *line,
   ULAS_STATICINSTR("ei", 1, 0xFB);
 
   // 8 bit loads
-  ULAS_LDR8("ld", 0x40, ULAS_REG_B, ULAS_REG_B);
 
   ULASERR("Invalid instruction '%s'\n", ulas.tok.buf);
   return -1;