Browse code

(uxn.c) Removed needless masking of opcode lookup

neauoire authored on 29/08/2023 16:41:00
Showing 3 changed files
... ...
@@ -34,23 +34,22 @@ WITH REGARD TO THIS SOFTWARE.
34 34
 int
35 35
 uxn_eval(Uxn *u, Uint16 pc)
36 36
 {
37
-	int t, n, l, k, r;
38
-	Uint8 *ram = u->ram, *ptr, ins;
39
-	Stack *s;
37
+	int t, n, l, r;
38
+	Uint8 *ram = u->ram;
40 39
 	if(!pc || u->dev[0x0f]) return 0;
41 40
 	for(;;) {
42
-		ins = ram[pc++];
43
-		k = ins & 0x80 ? 0xff : 0;
44
-		s = ins & 0x40 ? &u->rst : &u->wst;
45
-		ptr = s->dat + s->ptr - 1;
46
-		switch(ins & 0x1f ? ins & 0x3f : (0 - (ins >> 5)) & 0xff) {
41
+		int ins = ram[pc++];
42
+		int k = ins & 0x80 ? 0xff : 0;
43
+		Stack *s = ins & 0x40 ? &u->rst : &u->wst;
44
+		Uint8 *ptr = s->dat + s->ptr - 1;
45
+		switch(ins & 0x1f ? ins & 0x3f : (0 - (ins >> 5))) {
47 46
 			/* IMM */
48
-			case 0x00: /* BRK   */                          return 1;
49
-			case 0xff: /* JCI   */                          if(!s->dat[--s->ptr]) { pc += 2; break; } /* else fallthrough */
50
-			case 0xfe: /* JMI   */                          pc += PEEK2(ram + pc) + 2; break;
51
-			case 0xfd: /* JSI   */                SET(0, 2) PUT2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
52
-			case 0xfc: /* LITr */ case 0xfa:      SET(0, 1) PUT1(ram[pc++]) break;
53
-			case 0xfb: /* LIT2r*/ case 0xf9:      SET(0, 2) PUT2(PEEK2(ram + pc)) pc += 2; break;
47
+			case -0:   /* BRK  */                           return 1;
48
+			case -1:   /* JCI  */                           if(!s->dat[--s->ptr]) { pc += 2; break; } /* else fallthrough */
49
+			case -2:   /* JMI  */                           pc += PEEK2(ram + pc) + 2; break;
50
+			case -3:   /* JSI  */                 SET(0, 2) PUT2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
51
+			case -4:   /* LITr */ case -6:        SET(0, 1) PUT1(ram[pc++]) break;
52
+			case -5:   /* LIT2r*/ case -7:        SET(0, 2) PUT2(PEEK2(ram + pc)) pc += 2; break;
54 53
 			/* ALU */
55 54
 			case 0x01: /* INC  */ t=T;            SET(1, 0) PUT1(t + 1) break;
56 55
 			case 0x21: /* INC2 */ t=T2;           SET(2, 0) PUT2(t + 1) break;
... ...
@@ -72,7 +72,7 @@ main(int argc, char **argv)
72 72
 	system_connect(0xc, DATETIME_VERSION, DATETIME_DEIMASK, DATETIME_DEOMASK);
73 73
 	/* Read flags */
74 74
 	if(argv[i][0] == '-' && argv[i][1] == 'v')
75
-		return system_version("Uxncli - Console Varvara Emulator", "19 Aug 2023");
75
+		return system_version("Uxncli - Console Varvara Emulator", "29 Aug 2023");
76 76
 	if(!system_init(&u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++]))
77 77
 		return system_error("Init", "Failed to initialize uxn.");
78 78
 	/* Game Loop */
... ...
@@ -516,7 +516,7 @@ main(int argc, char **argv)
516 516
 	system_connect(0xc, DATETIME_VERSION, DATETIME_DEIMASK, DATETIME_DEOMASK);
517 517
 	/* Read flags */
518 518
 	if(argv[i][0] == '-' && argv[i][1] == 'v')
519
-		return system_version("Uxnemu - Graphical Varvara Emulator", "19 Aug 2023");
519
+		return system_version("Uxnemu - Graphical Varvara Emulator", "29 Aug 2023");
520 520
 	if(strcmp(argv[i], "-2x") == 0 || strcmp(argv[i], "-3x") == 0)
521 521
 		set_zoom(argv[i++][1] - '0', 0);
522 522
 	if(!emu_init())