summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-05-29 00:13:48 -0700
committerMike Pavone <pavone@retrodev.com>2013-05-29 00:13:48 -0700
commit1d5e794755a615e3627550f8068213e9a23b17e7 (patch)
tree016f3dfa146c5e2ccb2108c52d81613bc6e349f7
parent69bbe63efc6c692d41db36293da0eafc262ba293 (diff)
Fix push AF
-rw-r--r--z80_to_x86.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/z80_to_x86.c b/z80_to_x86.c
index 8270e9b..f2ead45 100644
--- a/z80_to_x86.c
+++ b/z80_to_x86.c
@@ -383,6 +383,8 @@ uint8_t * translate_z80inst(z80inst * inst, uint8_t * dst, z80_context * context
dst = zcycles(dst, (inst->reg == Z80_IX || inst->reg == Z80_IY) ? 9 : 5);
dst = sub_ir(dst, 2, opts->regs[Z80_SP], SZ_W);
if (inst->reg == Z80_AF) {
+ dst = mov_rr(dst, opts->regs[Z80_A], SCRATCH1, SZ_B);
+ dst = shl_ir(dst, 8, SCRATCH1, SZ_W);
dst = mov_rdisp8r(dst, CONTEXT, zf_off(ZF_S), SCRATCH1, SZ_B);
dst = shl_ir(dst, 1, SCRATCH1, SZ_B);
dst = or_rdisp8r(dst, CONTEXT, zf_off(ZF_Z), SCRATCH1, SZ_B);
@@ -394,8 +396,6 @@ uint8_t * translate_z80inst(z80inst * inst, uint8_t * dst, z80_context * context
dst = or_rdisp8r(dst, CONTEXT, zf_off(ZF_N), SCRATCH1, SZ_B);
dst = shl_ir(dst, 1, SCRATCH1, SZ_B);
dst = or_rdisp8r(dst, CONTEXT, zf_off(ZF_C), SCRATCH1, SZ_B);
- dst = shl_ir(dst, 8, SCRATCH1, SZ_W);
- dst = mov_rr(dst, opts->regs[Z80_A], SCRATCH1, SZ_B);
} else {
dst = translate_z80_reg(inst, &src_op, dst, opts);
dst = mov_rr(dst, src_op.base, SCRATCH1, SZ_W);