changeset 1126:63cd87d910cc

Clear interrupt status flags after getting the status register value rather than before
author Michael Pavone <pavone@retrodev.com>
date Tue, 27 Dec 2016 13:59:01 -0800
parents fba485949723
children cb4771f4543a
files sms.c
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/sms.c	Tue Dec 27 13:46:06 2016 -0800
+++ b/sms.c	Tue Dec 27 13:59:01 2016 -0800
@@ -56,9 +56,10 @@
 	sms_context *sms = z80->system;
 	vdp_run_context(sms->vdp, z80->current_cycle);
 	if (location & 1) {
+		uint8_t ret = vdp_control_port_read(sms->vdp);
 		sms->vdp->flags2 &= ~(FLAG2_VINT_PENDING|FLAG2_HINT_PENDING);
 		update_interrupts(sms);
-		return vdp_control_port_read(sms->vdp);
+		return ret;
 	} else {
 		return vdp_data_port_read(sms->vdp);
 	}