commit a854af4

Devine Lu Linvega  ·  2026-02-15 18:21:01 +0000 UTC
parent f8433ac
Removed invariants in macros
1 files changed,  +17, -17
+17, -17
 1@@ -1032,16 +1032,16 @@ emu_deo(const Uint8 port, const Uint8 value)
 2 #define REM ptr[r] -= 1 + d;
 3 #define DEC(m) stk[m][--ptr[m]]
 4 #define INC(m) stk[m][ptr[m]++]
 5-#define IMM(o) o = ram[pc++] << 8, o |= ram[pc++];
 6-#define MOV(o) { pc = d ? (Uint16)o : pc + (Sint8)o; }
 7+#define IMM c = ram[pc++] << 8, c |= ram[pc++];
 8+#define MOV pc = d ? (Uint16)a : pc + (Sint8)a;
 9 #define POx(o,m) o = DEC(r); if(m) o |= DEC(r) << 8;
10 #define PUx(i,m,s) if(m) c = (i), INC(s) = c >> 8, INC(s) = c; else INC(s) = i;
11 #define GOT(o) if(d) o[1] = DEC(r); o[0] = DEC(r);
12-#define PUT(i,m,s) INC(s) = i[0]; if(m) INC(s) = i[1];
13+#define PUT(i,s) INC(s) = i[0]; if(d) INC(s) = i[1];
14 #define DEO(o,v) emu_deo(o, v[0]); if(d) emu_deo(o + 1, v[1]);
15-#define DEI(i,v) v[0] = emu_dei(i); if(d) v[1] = emu_dei(i + 1); PUT(v,d,r)
16+#define DEI(i,v) v[0] = emu_dei(i); if(d) v[1] = emu_dei(i + 1); PUT(v,r)
17 #define POK(o,v,m) ram[o] = v[0]; if(d) ram[(o + 1) & m] = v[1];
18-#define PEK(i,v,m) v[0] = ram[i]; if(d) v[1] = ram[(i + 1) & m]; PUT(v,d,r)
19+#define PEK(i,v,m) v[0] = ram[i]; if(d) v[1] = ram[(i + 1) & m]; PUT(v,r)
20 
21 static unsigned int
22 uxn_eval(Uint16 pc)
23@@ -1050,28 +1050,28 @@ uxn_eval(Uint16 pc)
24 	for(;;) {
25 	switch(ram[pc++]) {
26 	/* BRK */ case 0x00: return 1;
27-	/* JCI */ case 0x20: if(DEC(0)) { IMM(c) pc += c; } else pc += 2; break;
28-	/* JMI */ case 0x40: IMM(c) pc += c; break;
29-	/* JSI */ case 0x60: IMM(c) INC(1) = pc >> 8, INC(1) = pc, pc += c; break;
30+	/* JCI */ case 0x20: if(DEC(0)) { IMM pc += c; } else pc += 2; break;
31+	/* JMI */ case 0x40: IMM pc += c; break;
32+	/* JSI */ case 0x60: IMM INC(1) = pc >> 8, INC(1) = pc, pc += c; break;
33 	/* LI2 */ case 0xa0: INC(0) = ram[pc++]; /* fall-through */
34 	/* LIT */ case 0x80: INC(0) = ram[pc++]; break;
35 	/* L2r */ case 0xe0: INC(1) = ram[pc++]; /* fall-through */
36 	/* LIr */ case 0xc0: INC(1) = ram[pc++]; break;
37 	/* INC */ OPC(0x01,POx(a,d),PUx(a + 1,d,r))
38 	/* POP */ OPC(0x02,REM,{})
39-	/* NIP */ OPC(0x03,GOT(x) REM,PUT(x,d,r))
40-	/* SWP */ OPC(0x04,GOT(x) GOT(y),PUT(x,d,r) PUT(y,d,r))
41-	/* ROT */ OPC(0x05,GOT(x) GOT(y) GOT(z),PUT(y,d,r) PUT(x,d,r) PUT(z,d,r))
42-	/* DUP */ OPC(0x06,GOT(x),PUT(x,d,r) PUT(x,d,r))
43-	/* OVR */ OPC(0x07,GOT(x) GOT(y),PUT(y,d,r) PUT(x,d,r) PUT(y,d,r))
44+	/* NIP */ OPC(0x03,GOT(x) REM,PUT(x,r))
45+	/* SWP */ OPC(0x04,GOT(x) GOT(y),PUT(x,r) PUT(y,r))
46+	/* ROT */ OPC(0x05,GOT(x) GOT(y) GOT(z),PUT(y,r) PUT(x,r) PUT(z,r))
47+	/* DUP */ OPC(0x06,GOT(x),PUT(x,r) PUT(x,r))
48+	/* OVR */ OPC(0x07,GOT(x) GOT(y),PUT(y,r) PUT(x,r) PUT(y,r))
49 	/* EQU */ OPC(0x08,POx(a,d) POx(b,d),PUx(b == a,0,r))
50 	/* NEQ */ OPC(0x09,POx(a,d) POx(b,d),PUx(b != a,0,r))
51 	/* GTH */ OPC(0x0a,POx(a,d) POx(b,d),PUx(b > a,0,r))
52 	/* LTH */ OPC(0x0b,POx(a,d) POx(b,d),PUx(b < a,0,r))
53-	/* JMP */ OPC(0x0c,POx(a,d),MOV(a))
54-	/* JCN */ OPC(0x0d,POx(a,d) POx(b,0),if(b) MOV(a))
55-	/* JSR */ OPC(0x0e,POx(a,d),PUx(pc,1,!r) MOV(a))
56-	/* STH */ OPC(0x0f,GOT(x),PUT(x,d,!r))
57+	/* JMP */ OPC(0x0c,POx(a,d),MOV)
58+	/* JCN */ OPC(0x0d,POx(a,d) POx(b,0),if(b) MOV)
59+	/* JSR */ OPC(0x0e,POx(a,d),PUx(pc,1,!r) MOV)
60+	/* STH */ OPC(0x0f,GOT(x),PUT(x,!r))
61 	/* LDZ */ OPC(0x10,POx(a,0),PEK(a, x, 0xff))
62 	/* STZ */ OPC(0x11,POx(a,0) GOT(y),POK(a, y, 0xff))
63 	/* LDR */ OPC(0x12,POx(a,0),PEK(pc + (Sint8)a, x, 0xffff))