commit e247b86

Devine Lu Linvega  ·  2024-01-11 01:26:29 +0000 UTC
parent 69cc924
Improved core
2 files changed,  +5, -8
+1, -1
1@@ -13,7 +13,7 @@ dest:
2 	@ mkdir -p bin
3 rom:
4 	@ ./bin/uxnasm etc/screen.bounds.tal bin/screen.bounds.rom
5-run: bin/uxnasm bin/uxncli bin/uxn11 rom
6+run: all bin/uxnasm bin/uxncli bin/uxn11 rom
7 	@ ./bin/uxn11 bin/screen.bounds.rom
8 test: bin/uxnasm bin/uxncli bin/uxn11
9 	@ ./bin/uxnasm && ./bin/uxncli && ./bin/uxn11 && ./bin/uxnasm -v && ./bin/uxncli -v && ./bin/uxn11 -v
+4, -7
 1@@ -35,19 +35,16 @@ uxn_eval(Uxn *u, Uint16 pc)
 2 		Stack *s = ins & 0x40 ? &u->rst : &u->wst;
 3 		if(ins & 0x80) kp = s->ptr, sp = &kp;
 4 		else sp = &s->ptr;
 5-		/* OPC */
 6 		switch(ins & 0x1f) {
 7-		/* IMM */
 8 		case 0x00: case 0x20:
 9 		switch(ins) {
10 			case 0x00: /* BRK */ return 1;
11-			case 0x20: /* JCI */ POP1(b) if(!b) { pc += 2; break; } /* fall-through */
12-			case 0x40: /* JMI */ pc += PEEK2(ram + pc) + 2; break;
13-			case 0x60: /* JSI */ PUSH2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
14+			case 0x20: /* JCI */ POP1(b) if(!b) { pc += 2; break; }
15+			case 0x40: /* JMI */ a = ram[pc++] << 8 | ram[pc++]; pc += a; break;
16+			case 0x60: /* JSI */ PUSH2(pc + 2) a = ram[pc++] << 8 | ram[pc++]; pc += a; break;
17 			case 0x80: case 0xc0: /* LIT  */ PUSH1(ram[pc++]) break;
18 			case 0xa0: case 0xe0: /* LIT2 */ PUSH1(ram[pc++]) PUSH1(ram[pc++]) break;
19 		} break;
20-		/* ALU */
21 		case 0x01: /* INC */ POPx(a) PUSHx(a + 1) break;
22 		case 0x02: /* POP */ POPx(a) break;
23 		case 0x03: /* NIP */ POPx(a) POPx(b) PUSHx(a) break;
24@@ -73,7 +70,7 @@ uxn_eval(Uxn *u, Uint16 pc)
25 		case 0x17: /* DEO */ POP1(a) POPx(b) DEVW(a, b) break;
26 		case 0x18: /* ADD */ POPx(a) POPx(b) PUSHx(b + a) break;
27 		case 0x19: /* SUB */ POPx(a) POPx(b) PUSHx(b - a) break;
28-		case 0x1a: /* MUL */ POPx(a) POPx(b) PUSHx((Uint32)b * a) break;
29+		case 0x1a: /* MUL */ POPx(a) POPx(b) PUSHx(b * a) break;
30 		case 0x1b: /* DIV */ POPx(a) POPx(b) PUSHx(a ? b / a : 0) break;
31 		case 0x1c: /* AND */ POPx(a) POPx(b) PUSHx(b & a) break;
32 		case 0x1d: /* ORA */ POPx(a) POPx(b) PUSHx(b | a) break;