From 149c6aa7ca28feb9862daef56489b1da32483c19 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 26 Nov 2009 09:37:12 +0000 Subject: [PATCH] CF clear after binary operations on Intel 8008 CPU core --- src/emu/cpu/i8008/i8008.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/emu/cpu/i8008/i8008.c b/src/emu/cpu/i8008/i8008.c index 52b5c5f32c5..12a13c0434a 100644 --- a/src/emu/cpu/i8008/i8008.c +++ b/src/emu/cpu/i8008/i8008.c @@ -343,18 +343,21 @@ static void execute_one(i8008_state *cpustate, int opcode) tmp = GET_REG(cpustate,0) & ARG(cpustate); SET_REG(cpustate,0,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff); + cpustate->CF = 0; break; case 5 : // XRI tmp = GET_REG(cpustate,0) ^ ARG(cpustate); SET_REG(cpustate,0,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff); + cpustate->CF = 0; break; case 6 : // ORI tmp = GET_REG(cpustate,0) | ARG(cpustate); SET_REG(cpustate,0,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff); + cpustate->CF = 0; break; case 7 : // CPI @@ -374,12 +377,13 @@ static void execute_one(i8008_state *cpustate, int opcode) case 6 : // LrI cpustate->icount -= 8; if (REG_1==7) cpustate->icount -= 1; // LMI - SET_REG(cpustate,REG_1, ARG(cpustate)); break; + SET_REG(cpustate,REG_1, ARG(cpustate)); + break; case 7 : // RET cpustate->icount -= 5; POP_STACK(cpustate); cpustate->PC = GET_PC; - break; + break; } break; @@ -470,18 +474,21 @@ static void execute_one(i8008_state *cpustate, int opcode) tmp = GET_REG(cpustate,0) & GET_REG(cpustate,opcode & 7); SET_REG(cpustate,0,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff); + cpustate->CF = 0; break; case 5 : // XRx tmp = GET_REG(cpustate,0) ^ GET_REG(cpustate,opcode & 7); SET_REG(cpustate,0,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff); + cpustate->CF = 0; break; case 6 : // ORx tmp = GET_REG(cpustate,0) | GET_REG(cpustate,opcode & 7); SET_REG(cpustate,0,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff); + cpustate->CF = 0; break; case 7 : // CPx