From 12e82b1d9a3e49013f0e80a76254f8c689fb04ef Mon Sep 17 00:00:00 2001 From: Jim Date: Sun, 31 Jul 2011 22:54:11 -0400 Subject: [PATCH] Fix bug in CEA: 16S not truncating ea after indexing. Caught by old T&M test CPUT1. Checked ea16s, and it was already doing the truncate. --- em.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/em.c b/em.c index 0506cbb..37ff243 100755 --- a/em.c +++ b/em.c @@ -6176,21 +6176,18 @@ d_cea: /* 000111 */ switch ((crs[KEYS] & 016000) >> 10) { case 0: /* 16S */ ea = crs[A]; - i = ea & 0100000; - x = ea & 040000; - ea &= 037777; while (1) { + i = ea & 0100000; + x = ea & 040000; + ea &= 037777; if (x) /* indexed */ - ea += crs[X]; + ea = (ea + crs[X]) & 037777; if (!i) /* not indirect */ break; if (ea < gvp->livereglim) - m = get16trap(ea); + ea = get16trap(ea); else - m = get16(MAKEVA(RPH,ea)); - i = m & 0100000; - x = m & 040000; - ea = m & 037777; /* go indirect */ + ea = get16(MAKEVA(RPH,ea)); } crs[A] = ea; break;