diff z80_to_x86.c @ 257:4c7933444df4

Implement CCF and SCF
author Mike Pavone <pavone@retrodev.com>
date Mon, 29 Apr 2013 23:02:39 -0700
parents 572b935dd030
children d9417261366f
line wrap: on
line diff
--- a/z80_to_x86.c	Mon Apr 29 22:58:45 2013 -0700
+++ b/z80_to_x86.c	Mon Apr 29 23:02:39 2013 -0700
@@ -698,9 +698,19 @@
 		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);