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);