comparison z80_to_x86.c @ 305:a57fac5b3d65

Contrary to the official documenation, OR and AND also set PV based on parity instead of overflow
author Mike Pavone <pavone@retrodev.com>
date Wed, 08 May 2013 23:29:21 -0700
parents 8dcc9d14413c
children 3970006fae90
comparison
equal deleted inserted replaced
304:8dcc9d14413c 305:a57fac5b3d65
676 //TODO: Cleanup flags 676 //TODO: Cleanup flags
677 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); 677 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
678 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 678 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
679 //TODO: Implement half-carry flag 679 //TODO: Implement half-carry flag
680 if (z80_size(inst) == SZ_B) { 680 if (z80_size(inst) == SZ_B) {
681 dst = setcc_rdisp8(dst, CC_O, CONTEXT, zf_off(ZF_PV)); 681 dst = setcc_rdisp8(dst, CC_P, CONTEXT, zf_off(ZF_PV));
682 dst = setcc_rdisp8(dst, CC_Z, CONTEXT, zf_off(ZF_Z)); 682 dst = setcc_rdisp8(dst, CC_Z, CONTEXT, zf_off(ZF_Z));
683 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S)); 683 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S));
684 } 684 }
685 dst = z80_save_reg(dst, inst, opts); 685 dst = z80_save_reg(dst, inst, opts);
686 dst = z80_save_ea(dst, inst, opts); 686 dst = z80_save_ea(dst, inst, opts);
705 //TODO: Cleanup flags 705 //TODO: Cleanup flags
706 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); 706 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
707 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 707 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
708 //TODO: Implement half-carry flag 708 //TODO: Implement half-carry flag
709 if (z80_size(inst) == SZ_B) { 709 if (z80_size(inst) == SZ_B) {
710 dst = setcc_rdisp8(dst, CC_O, CONTEXT, zf_off(ZF_PV)); 710 dst = setcc_rdisp8(dst, CC_P, CONTEXT, zf_off(ZF_PV));
711 dst = setcc_rdisp8(dst, CC_Z, CONTEXT, zf_off(ZF_Z)); 711 dst = setcc_rdisp8(dst, CC_Z, CONTEXT, zf_off(ZF_Z));
712 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S)); 712 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S));
713 } 713 }
714 dst = z80_save_reg(dst, inst, opts); 714 dst = z80_save_reg(dst, inst, opts);
715 dst = z80_save_ea(dst, inst, opts); 715 dst = z80_save_ea(dst, inst, opts);