aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-04-27 04:36:41 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-04-27 04:36:41 +0000
commit29318b1e33bd838f43c5303dda3b7d75f3e429c8 (patch)
tree34d9412fed25a5e8d7fec3076f3e9338d43a5682
parentd0f296b1ea0af4ad6eb4ab462110da8fbd46e947 (diff)
revert EX: spec don't make sense here
-rw-r--r--emu.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/emu.c b/emu.c
index feb2e35..00012a1 100644
--- a/emu.c
+++ b/emu.c
@@ -153,7 +153,7 @@ add(unsigned short *b, unsigned short *a)
{
int tmp = *b + *a;
- reg[EX] = !!(tmp >> 16);
+ reg[EX] = tmp >> 16;
*b = tmp;
cycle += 2;
}
@@ -163,7 +163,7 @@ sub(unsigned short *b, unsigned short *a)
{
int tmp = *b - *a;
- reg[EX] = -1 * !!(tmp >> 16);
+ reg[EX] = tmp >> 16;
*b = tmp;
cycle += 2;
}
@@ -346,7 +346,7 @@ adx(unsigned short *b, unsigned short *a)
{
int tmp = *b + *a + reg[EX];
- reg[EX] = !!(tmp > 16);
+ reg[EX] = tmp > 16;
*b = tmp;
cycle += 3;
}
@@ -356,7 +356,7 @@ sbx(unsigned short *b, unsigned short *a)
{
int tmp = *b - *a + reg[EX];
- reg[EX] = -1 * !!(tmp >> 16);
+ reg[EX] = tmp >> 16;
*b = tmp;
cycle += 3;
}
@@ -488,7 +488,7 @@ step(unsigned short *m, unsigned short *r)
{
unsigned short c, o, *a, *b, s, tmp;
- if (!run)
+ if (!run || errors > 3)
return -1;
mem = m;
@@ -517,8 +517,5 @@ step(unsigned short *m, unsigned short *r)
usleep(10 * cycle); /* 100kHz */
- if (errors > 3)
- return -1;
-
return cycle;
}