# HG changeset patch # User Mike Pavone # Date 1368059548 25200 # Node ID 921f9d8819da151d7fb3e97ead09dfb64580ec82 # Parent ba97772b1662aaff050910287a8c41ed694fe87e Fix byte order of pop AF diff -r ba97772b1662 -r 921f9d8819da z80_to_x86.c --- a/z80_to_x86.c Wed May 08 17:05:12 2013 -0700 +++ b/z80_to_x86.c Wed May 08 17:32:28 2013 -0700 @@ -387,19 +387,21 @@ dst = call(dst, (uint8_t *)z80_read_word); dst = add_ir(dst, 2, opts->regs[Z80_SP], SZ_W); if (inst->reg == Z80_AF) { - dst = mov_rr(dst, SCRATCH1, opts->regs[Z80_A], SZ_B); - dst = bt_ir(dst, 8, SCRATCH1, SZ_W); + + dst = bt_ir(dst, 0, SCRATCH1, SZ_W); dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); - dst = bt_ir(dst, 9, SCRATCH1, SZ_W); + dst = bt_ir(dst, 1, SCRATCH1, SZ_W); dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_N)); - dst = bt_ir(dst, 10, SCRATCH1, SZ_W); + dst = bt_ir(dst, 2, SCRATCH1, SZ_W); dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_PV)); - dst = bt_ir(dst, 12, SCRATCH1, SZ_W); + dst = bt_ir(dst, 4, SCRATCH1, SZ_W); dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_H)); - dst = bt_ir(dst, 14, SCRATCH1, SZ_W); + dst = bt_ir(dst, 6, SCRATCH1, SZ_W); dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_Z)); - dst = bt_ir(dst, 15, SCRATCH1, SZ_W); + dst = bt_ir(dst, 7, SCRATCH1, SZ_W); dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_S)); + dst = shr_ir(dst, 8, SCRATCH1, SZ_W); + dst = mov_rr(dst, SCRATCH1, opts->regs[Z80_A], SZ_B); } else { dst = translate_z80_reg(inst, &src_op, dst, opts); dst = mov_rr(dst, SCRATCH1, src_op.base, SZ_W);