commit e5df4de

Devine Lu Linvega  ·  2025-05-13 18:10:54 +0000 UTC
parent 66ece0d
Moved pc check outside of eval
2 files changed,  +12, -11
+9, -9
 1@@ -95,7 +95,7 @@ int
 2 uxn_eval(Uint16 pc)
 3 {
 4 	Uint32 a, b, c, x[2], y[2], z[2], step;
 5-	if(!pc || uxn.dev[0x0f]) return 0;
 6+	if(uxn.dev[0x0f]) return 0;
 7 	for(step = STEP_MAX; step; step--) {
 8 		switch(uxn.ram[pc++]) {
 9 		/* BRK */ case 0x00: return 1;
10@@ -409,7 +409,7 @@ console_input(int c, int type)
11 {
12 	if(c == EOF) c = 0, type = 4;
13 	uxn.dev[0x12] = c, uxn.dev[0x17] = type;
14-	uxn_eval(console_vector);
15+	if(console_vector) uxn_eval(console_vector);
16 	return type != 4;
17 }
18 
19@@ -618,7 +618,7 @@ controller_down(Uint8 mask)
20 {
21 	if(mask) {
22 		uxn.dev[0x82] |= mask;
23-		uxn_eval(controller_vector);
24+		if(controller_vector) uxn_eval(controller_vector);
25 	}
26 }
27 
28@@ -627,7 +627,7 @@ controller_up(Uint8 mask)
29 {
30 	if(mask) {
31 		uxn.dev[0x82] &= (~mask);
32-		uxn_eval(controller_vector);
33+		if(controller_vector) uxn_eval(controller_vector);
34 	}
35 }
36 
37@@ -636,7 +636,7 @@ controller_key(Uint8 key)
38 {
39 	if(key) {
40 		uxn.dev[0x83] = key;
41-		uxn_eval(controller_vector);
42+		if(controller_vector) uxn_eval(controller_vector);
43 		uxn.dev[0x83] = 0;
44 	}
45 }
46@@ -650,14 +650,14 @@ static void
47 mouse_down(Uint8 mask)
48 {
49 	uxn.dev[0x96] |= mask;
50-	uxn_eval(mouse_vector);
51+	if(mouse_vector) uxn_eval(mouse_vector);
52 }
53 
54 static void
55 mouse_up(Uint8 mask)
56 {
57 	uxn.dev[0x96] &= (~mask);
58-	uxn_eval(mouse_vector);
59+	if(mouse_vector) uxn_eval(mouse_vector);
60 }
61 
62 static void
63@@ -665,7 +665,7 @@ mouse_pos(Uint16 x, Uint16 y)
64 {
65 	uxn.dev[0x92] = x >> 8, uxn.dev[0x93] = x;
66 	uxn.dev[0x94] = y >> 8, uxn.dev[0x95] = y;
67-	uxn_eval(mouse_vector);
68+	if(mouse_vector) uxn_eval(mouse_vector);
69 }
70 
71 static void
72@@ -673,7 +673,7 @@ mouse_scroll(Uint16 x, Uint16 y)
73 {
74 	uxn.dev[0x9a] = x >> 8, uxn.dev[0x9b] = x;
75 	uxn.dev[0x9c] = -y >> 8, uxn.dev[0x9d] = -y;
76-	uxn_eval(mouse_vector);
77+	if(mouse_vector) uxn_eval(mouse_vector);
78 	uxn.dev[0x9a] = 0, uxn.dev[0x9b] = 0;
79 	uxn.dev[0x9c] = 0, uxn.dev[0x9d] = 0;
80 }
+3, -2
 1@@ -80,7 +80,7 @@ int
 2 uxn_eval(Uint16 pc)
 3 {
 4 	Uint32 a, b, c, x[2], y[2], z[2], step;
 5-	if(!pc || uxn.dev[0x0f]) return 0;
 6+	if(uxn.dev[0x0f]) return 0;
 7 	for(step = STEP_MAX; step; step--) {
 8 		switch(uxn.ram[pc++]) {
 9 		/* BRK */ case 0x00: return 1;
10@@ -378,7 +378,8 @@ console_input(int c, int type)
11 {
12 	if(c == EOF) c = 0, type = 4;
13 	uxn.dev[0x12] = c, uxn.dev[0x17] = type;
14-	uxn_eval(console_vector);
15+	if(console_vector)
16+		uxn_eval(console_vector);
17 	return type != 4;
18 }
19