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 */