comparison z80_to_x86.c @ 274:be2b845d3e94

Implement CPL and NEG (untested)
author Mike Pavone <pavone@retrodev.com>
date Thu, 02 May 2013 22:39:39 -0700
parents 719b9fea2fe9
children 1a7d0a964ad2
comparison
equal deleted inserted replaced
273:719b9fea2fe9 274:be2b845d3e94
849 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S)); 849 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S));
850 } 850 }
851 dst = z80_save_reg(dst, inst, opts); 851 dst = z80_save_reg(dst, inst, opts);
852 dst = z80_save_ea(dst, inst, opts); 852 dst = z80_save_ea(dst, inst, opts);
853 break; 853 break;
854 /*case Z80_DAA: 854 //case Z80_DAA:
855 case Z80_CPL: 855 case Z80_CPL:
856 case Z80_NEG:*/ 856 dst = zcycles(dst, 4);
857 dst = not_r(dst, opts->regs[Z80_A], SZ_B);
858 //TODO: Implement half-carry flag
859 dst = mov_irdisp8(dst, 1, CONTEXT, zf_off(ZF_N), SZ_B);
860 break;
861 case Z80_NEG:
862 dst = zcycles(dst, 8);
863 dst = neg_r(dst, opts->regs[Z80_A], SZ_B);
864 //TODO: Implement half-carry flag
865 dst = setcc_rdisp8(dst, CC_Z, CONTEXT, zf_off(ZF_Z));
866 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S));
867 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
868 dst = setcc_rdisp8(dst, CC_O, CONTEXT, zf_off(ZF_PV));
869 dst = mov_irdisp8(dst, 1, CONTEXT, zf_off(ZF_N), SZ_B);
870 break;
857 case Z80_CCF: 871 case Z80_CCF:
858 dst = zcycles(dst, 4); 872 dst = zcycles(dst, 4);
859 dst = xor_irdisp8(dst, 1, CONTEXT, zf_off(ZF_C), SZ_B); 873 dst = xor_irdisp8(dst, 1, CONTEXT, zf_off(ZF_C), SZ_B);
860 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 874 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
861 //TODO: Implement half-carry flag 875 //TODO: Implement half-carry flag