Fix bug with 'set' command, allow setting registers in GUI
diff --git a/gui.c b/gui.c
index ed34655..0837f69 100644
--- a/gui.c
+++ b/gui.c
@@ -35,6 +35,12 @@
mq_send(mq, msg, strlen(msg) + 1, 2);
}
+#define cmdf(mq, buffer, pattern, args...) \
+ { \
+ sprintf(buffer, pattern, ##args); \
+ cmd(mq, buffer); \
+ }
+
void gui(gui_arg_t *arg)
{
cpu_t *cpu = arg->cpu;
@@ -118,6 +124,17 @@
uint8_t rega = nk_propertyi(ctx, "A", 0, cpu->regs[A], 0xFF, 1, 20.0f),
regx = nk_propertyi(ctx, "X", 0, cpu->regs[X], 0xFF, 1, 20.0f),
regy = nk_propertyi(ctx, "Y", 0, cpu->regs[Y], 0xFF, 1, 20.0f);
+
+ char buffer[64];
+
+ if (pc != cpu->pc)
+ cmdf(mq, buffer, "set PC #$%x", pc);
+ if (rega != cpu->regs[A])
+ cmdf(mq, buffer, "set A #$%x", rega);
+ if (regx != cpu->regs[X])
+ cmdf(mq, buffer, "set X #$%x", regx);
+ if (regy != cpu->regs[Y])
+ cmdf(mq, buffer, "set Y #$%x", regy);
}
nk_end(ctx);