comparison src/cpu.c @ 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 083347ccd508
children 6e7bfe83d2b0
comparison
equal deleted inserted replaced
35:5a5e02d1acf1 36:5683d9ba9acc
305 case CMP: 305 case CMP:
306 tmp = context->regs[dst] - context->regs[a]; 306 tmp = context->regs[dst] - context->regs[a];
307 update_flags_arith(context, tmp); 307 update_flags_arith(context, tmp);
308 return; 308 return;
309 case CALL: 309 case CALL:
310 context->regs[dst] = context->regs[REG_PC] - 2; 310 tmp = context->regs[REG_PC] - 2;
311 context->regs[REG_PC] = context->regs[a]; 311 context->regs[REG_PC] = context->regs[a];
312 context->regs[dst] = tmp;
312 context->state = STATE_NEED_FETCH; 313 context->state = STATE_NEED_FETCH;
313 return; 314 return;
314 case SWAP: 315 case SWAP:
315 tmp = context->regs[dst]; 316 tmp = context->regs[dst];
316 context->regs[dst] = context->regs[a]; 317 context->regs[dst] = context->regs[a];