diff z80.cpu @ 1745:a8f04b0ab744

Fixes to DAA, SCF and CCF to pass ZEXALL in new Z80 core
author Michael Pavone <pavone@retrodev.com>
date Wed, 06 Feb 2019 08:54:09 -0800
parents a1663a83dcab
children 48a43dff4dc0
line wrap: on
line diff
--- a/z80.cpu	Tue Feb 05 19:29:54 2019 -0800
+++ b/z80.cpu	Wed Feb 06 08:54:09 2019 -0800
@@ -1439,6 +1439,9 @@
 
 00111111 ccf
 	local tmp 8
+	and 0x80 last_flag_result last_flag_result
+	and 0x7F a tmp
+	or tmp last_flag_result last_flag_result
 	and 0x80 chflags chflags
 	lsr chflags 4 tmp
 	or tmp chflags chflags
@@ -1446,6 +1449,10 @@
 	update_flags N0
 
 00110111 scf
+	local tmp 8
+	and 0x80 last_flag_result last_flag_result
+	and 0x7F a tmp
+	or tmp last_flag_result last_flag_result
 	update_flags H0N0C1
 
 00000000 nop
@@ -2217,24 +2224,28 @@
 	if tmp
 	
 	or 0x60 diff diff
+	update_flags C1
 	
 	else
 	
-	cmp 0xA0 a
+	cmp 0x9A a
 	if >=U
 	or 0x60 diff diff
+	update_flags C1
+	else
+	update_flags C0
 	end
 	end
 	
 	if nflag
 	
 	sub diff a a
-	update_flags SZYHPXC
+	update_flags SZYHPX
 	
 	else
 	
 	add diff a a
-	update_flags SZYHPXC
+	update_flags SZYHPX
 	
 	end