From 6ae4b9b6417389d3bb4c287d96f52f21e64accd8 Mon Sep 17 00:00:00 2001 From: Folkert van Heusden Date: Wed, 9 Apr 2025 07:00:17 +0200 Subject: [PATCH] memory before/after, instruction count --- jsonprocessor.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/jsonprocessor.py b/jsonprocessor.py index 3f41028..6e164e5 100755 --- a/jsonprocessor.py +++ b/jsonprocessor.py @@ -37,14 +37,23 @@ for test in j: for kv in before['memory']: for k in kv: a = int(k, 8) - p.physRW(a, value=int(kv[k])) + clean_a = a & (~1) + v_work = p.physRW(clean_a) + if a & 1: + v_work = (v_work & 0xff00) | int(kv[k]) + else: + v_work = (v_work & 0x00ff) | (int(kv[k]) << 8) + p.physRW(clean_a, value=v_work) for reg in range(6): p.r[reg] = int(before[f'reg-{reg}.0']) p.r_alt[reg] = int(before[f'reg-{reg}.1']) + do_n_instructions = int(before['run-n-instructions']) + # do - p.run(pc=pc, breakpoint=return_true) + for count in range(do_n_instructions): + p.run(pc=pc, breakpoint=return_true) p._syncregs() # verify @@ -57,7 +66,11 @@ for test in j: for kv in after['memory']: for k in kv: a = int(k, 8) - v = p.physRW(a) + v = p.physRW(a & (~1)) + if a & 1: + v &= 0xff + else: + v >>= 8 now_errors += compare(v, int(kv[k]), f'memory {a:06o}', id_) for reg in range(6):