summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-04-29 23:02:39 -0700
committerMike Pavone <pavone@retrodev.com>2013-04-29 23:02:39 -0700
commit981623bbb34a6a1620eb609fd3069b4bf4086ffa (patch)
treeafa1018fa56348338324c1e5fb55fbc2543fddec
parentae4a60bf38d7942d2b75a98588a76e80c28047d2 (diff)
Implement CCF and SCF
-rw-r--r--z80_to_x86.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/z80_to_x86.c b/z80_to_x86.c
index 41730f5..f9bda74 100644
--- a/z80_to_x86.c
+++ b/z80_to_x86.c
@@ -698,9 +698,19 @@ uint8_t * translate_z80inst(z80inst * inst, uint8_t * dst, z80_context * context
break;
/*case Z80_DAA:
case Z80_CPL:
- case Z80_NEG:
+ case Z80_NEG:*/
case Z80_CCF:
- case Z80_SCF:*/
+ dst = zcycles(dst, 4);
+ dst = xor_irdisp8(dst, 1, CONTEXT, zf_off(ZF_C), SZ_B);
+ dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
+ //TODO: Implement half-carry flag
+ break;
+ case Z80_SCF:
+ dst = zcycles(dst, 4);
+ dst = mov_irdisp8(dst, 1, CONTEXT, zf_off(ZF_C), SZ_B);
+ dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
+ //TODO: Implement half-carry flag
+ break;
case Z80_NOP:
if (inst->immed == 42) {
dst = call(dst, (uint8_t *)z80_save_context);