commit d534731

neauoire  ·  2023-11-09 22:25:12 +0000 UTC
parent 9125736
(uxn.c) tighter switch
3 files changed,  +17, -16
+15, -14
 1@@ -31,21 +31,22 @@ uxn_eval(Uxn *u, Uint16 pc)
 2 	Uint16 tt, a, b, c;
 3 	if(!pc || u->dev[0x0f]) return 0;
 4 	for(;;) {
 5-		Uint8 ins = ram[pc++], opc = ins & 0x1f, m2 = ins & 0x20;
 6+		Uint8 ins = ram[pc++], m2 = ins & 0x20;
 7 		Stack *s = ins & 0x40 ? &u->rst : &u->wst;
 8-		if(ins & 0x80)
 9-			kp = s->ptr, sp = &kp;
10-		else
11-			sp = &s->ptr;
12-		/* Opcodes */
13-		switch(opc ? opc : ins) {
14-		/* Immediate */
15-		case 0x00: /* BRK   */ return 1;
16-		case 0x20: /* JCI   */ POP1(b) if(!b) { pc += 2; break; } /* else fallthrough */
17-		case 0x40: /* JMI   */ pc += PEEK2(ram + pc) + 2; break;
18-		case 0x60: /* JSI   */ PUSH2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
19-		case 0x80: case 0xc0: /* LIT   */ PUSH1(ram[pc++]) break;
20-		case 0xa0: case 0xe0: /* LIT2  */ PUSH1(ram[pc++]) PUSH1(ram[pc++]) break;
21+		if(ins & 0x80) kp = s->ptr, sp = &kp;
22+		else sp = &s->ptr;
23+		/* OPC */
24+		switch(ins & 0x1f) {
25+		/* IMM */
26+		case 0x00: case 0x20:
27+		switch(ins) {
28+			case 0x00: /* BRK */ return 1;
29+			case 0x20: /* JCI */ POP1(b) if(!b) { pc += 2; break; } /* fall-through */
30+			case 0x40: /* JMI */ pc += PEEK2(ram + pc) + 2; break;
31+			case 0x60: /* JSI */ PUSH2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
32+			case 0x80: case 0xc0: /* LIT  */ PUSH1(ram[pc++]) break;
33+			case 0xa0: case 0xe0: /* LIT2 */ PUSH1(ram[pc++]) PUSH1(ram[pc++]) break;
34+		} break;
35 		/* ALU */
36 		case 0x01: /* INC */ POPx(a) PUSHx(a + 1) break;
37 		case 0x02: /* POP */ POPx(a) break;
+1, -1
1@@ -261,7 +261,7 @@ main(int argc, char **argv)
2 		return system_error("usage", "uxn11 [-v] file.rom [args...]");
3 	/* Read flags */
4 	if(argv[i][0] == '-' && argv[i][1] == 'v')
5-		return system_version("Uxn11 - Graphical Varvara Emulator", "31 Oct 2023");
6+		return system_version("Uxn11 - Graphical Varvara Emulator", "9 Nov 2023");
7 	if(!emu_init())
8 		return system_error("Init", "Failed to initialize varvara.");
9 	if(!system_init(&u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++]))
+1, -1
1@@ -70,7 +70,7 @@ main(int argc, char **argv)
2 		return system_error("usage", "uxncli [-v] file.rom [args..]");
3 	/* Read flags */
4 	if(argv[i][0] == '-' && argv[i][1] == 'v')
5-		return system_version("Uxncli - Console Varvara Emulator", "31 Oct 2023");
6+		return system_version("Uxncli - Console Varvara Emulator", "9 Nov 2023");
7 	if(!system_init(&u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++]))
8 		return system_error("Init", "Failed to initialize uxn.");
9 	/* Game Loop */