Mercurial > repos > blastem
comparison z80_to_x86.c @ 242:d3b84b2a4397
Implemente CP (untested)
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 28 Apr 2013 14:05:02 -0700 |
parents | 2586d49ddd46 |
children | 2f069a0b487e |
comparison
equal
deleted
inserted
replaced
241:2586d49ddd46 | 242:d3b84b2a4397 |
---|---|
555 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S)); | 555 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S)); |
556 } | 556 } |
557 dst = z80_save_reg(dst, inst, opts); | 557 dst = z80_save_reg(dst, inst, opts); |
558 dst = z80_save_ea(dst, inst, opts); | 558 dst = z80_save_ea(dst, inst, opts); |
559 break; | 559 break; |
560 //case Z80_CP:*/ | 560 case Z80_CP: |
561 cycles = 4; | |
562 if (inst->addr_mode == Z80_IX_DISPLACE || inst->addr_mode == Z80_IY_DISPLACE) { | |
563 cycles += 12; | |
564 } else if(inst->addr_mode == Z80_IMMED) { | |
565 cycles += 3; | |
566 } | |
567 dst = zcycles(dst, cycles); | |
568 dst = translate_z80_reg(inst, &dst_op, dst, opts); | |
569 dst = translate_z80_ea(inst, &src_op, dst, opts, READ, DONT_MODIFY); | |
570 if (src_op.mode == MODE_REG_DIRECT) { | |
571 dst = cmp_rr(dst, src_op.base, dst_op.base, z80_size(inst)); | |
572 } else { | |
573 dst = cmp_ir(dst, src_op.disp, dst_op.base, z80_size(inst)); | |
574 } | |
575 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); | |
576 dst = mov_irdisp8(dst, 1, CONTEXT, zf_off(ZF_N), SZ_B); | |
577 dst = setcc_rdisp8(dst, CC_O, CONTEXT, zf_off(ZF_PV)); | |
578 //TODO: Implement half-carry flag | |
579 dst = setcc_rdisp8(dst, CC_Z, CONTEXT, zf_off(ZF_Z)); | |
580 dst = setcc_rdisp8(dst, CC_S, CONTEXT, zf_off(ZF_S)); | |
581 dst = z80_save_reg(dst, inst, opts); | |
582 dst = z80_save_ea(dst, inst, opts); | |
583 break; | |
561 case Z80_INC: | 584 case Z80_INC: |
562 cycles = 4; | 585 cycles = 4; |
563 if (inst->reg == Z80_IX || inst->reg == Z80_IY) { | 586 if (inst->reg == Z80_IX || inst->reg == Z80_IY) { |
564 cycles += 6; | 587 cycles += 6; |
565 } else if(z80_size(inst) == SZ_W) { | 588 } else if(z80_size(inst) == SZ_W) { |