changeset 36:5683d9ba9acc

Fix call instruction for the case in which A reg == DST reg
author Michael Pavone <pavone@retrodev.com>
date Sun, 03 Apr 2016 21:27:03 -0700
parents 5a5e02d1acf1
children 44c057a640b2
files src/cpu.c
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu.c	Sun Apr 03 20:51:23 2016 -0700
+++ b/src/cpu.c	Sun Apr 03 21:27:03 2016 -0700
@@ -307,8 +307,9 @@
 		update_flags_arith(context, tmp);
 		return;
 	case CALL:
-		context->regs[dst] = context->regs[REG_PC] - 2;
+		tmp = context->regs[REG_PC] - 2;
 		context->regs[REG_PC] = context->regs[a];
+		context->regs[dst] = tmp;
 		context->state = STATE_NEED_FETCH;
 		return;
 	case SWAP: