From 640643cb6548c1e60732ec6e88a43f1dcf72bf49 Mon Sep 17 00:00:00 2001
From: Folkert van Heusden <mail@vanheusden.com>
Date: Sun, 6 Apr 2025 18:33:58 +0200
Subject: [PATCH] fixes vor ADC/SBC & added byte-ode for ADC/SBC

---
 PDP11/test.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/PDP11/test.c b/PDP11/test.c
index 8024defa..55b40039 100644
--- a/PDP11/test.c
+++ b/PDP11/test.c
@@ -325,18 +325,24 @@ void emit_add_sub_c()
 	int id = 0;
 	json_t *out = json_array();
 	for(int group=0; group<4; group++) {
-		uint16_t instr = 0;
-		int      word  = group & 1;
+		for(int word=0; word<2; word++) {
+			uint16_t instr = 0;
 
-		if (group == 0 || group == 1)
-			instr = (6 << 12 /* instr */) | (word << 15 /* ADD/SUB */) | (1 << 6 /* src=R1 */);
-		else if (group == 2)
-			instr = (055 << 6 /* instr */) | (word << 15 /* ADCb/ADCw */) | (1 << 6 /* src=R1 */);
-		else if (group == 3)
-			instr = (056 << 6 /* instr */) | (word << 15 /* SBCb/SBCw */) | (1 << 6 /* src=R1 */);
+			if (group == 0 || group == 1)
+				instr = (6 << 12 /* instr */) | (word << 15 /* ADD/SUB */) | (1 << 6 /* src=R1 */);
+			else if (group == 2)
+				instr = (055 << 6 /* instr */) | (word << 15 /* ADCb/ADCw */) | 1 /* src=R1 */;
+			else if (group == 3)
+				instr = (056 << 6 /* instr */) | (word << 15 /* SBCb/SBCw */) | 1 /* src=R1 */;
 
-		for(int psw_val=0; psw_val<2; psw_val++)
-			produce_set_register(instr, psw_val, &id, out);
+			if (group == 2 || group == 3) {
+				for(int psw_val=0; psw_val<2; psw_val++)
+					produce_set_register(instr, psw_val, &id, out);
+			}
+			else {
+				produce_set_register(instr, 0, &id, out);
+			}
+		}
 	}
 	dump_json(filename, out);
 }