CF clear after binary operations on Intel 8008 CPU core

This commit is contained in:
Miodrag Milanovic 2009-11-26 09:37:12 +00:00
parent 6693a2612e
commit 149c6aa7ca

View File

@ -343,18 +343,21 @@ static void execute_one(i8008_state *cpustate, int opcode)
tmp = GET_REG(cpustate,0) & ARG(cpustate); tmp = GET_REG(cpustate,0) & ARG(cpustate);
SET_REG(cpustate,0,tmp & 0xff); SET_REG(cpustate,0,tmp & 0xff);
UPDATE_FLAGS(cpustate,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff);
cpustate->CF = 0;
break; break;
case 5 : case 5 :
// XRI // XRI
tmp = GET_REG(cpustate,0) ^ ARG(cpustate); tmp = GET_REG(cpustate,0) ^ ARG(cpustate);
SET_REG(cpustate,0,tmp & 0xff); SET_REG(cpustate,0,tmp & 0xff);
UPDATE_FLAGS(cpustate,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff);
cpustate->CF = 0;
break; break;
case 6 : case 6 :
// ORI // ORI
tmp = GET_REG(cpustate,0) | ARG(cpustate); tmp = GET_REG(cpustate,0) | ARG(cpustate);
SET_REG(cpustate,0,tmp & 0xff); SET_REG(cpustate,0,tmp & 0xff);
UPDATE_FLAGS(cpustate,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff);
cpustate->CF = 0;
break; break;
case 7 : case 7 :
// CPI // CPI
@ -374,7 +377,8 @@ static void execute_one(i8008_state *cpustate, int opcode)
case 6 : // LrI case 6 : // LrI
cpustate->icount -= 8; cpustate->icount -= 8;
if (REG_1==7) cpustate->icount -= 1; // LMI 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 case 7 : // RET
cpustate->icount -= 5; cpustate->icount -= 5;
POP_STACK(cpustate); POP_STACK(cpustate);
@ -470,18 +474,21 @@ static void execute_one(i8008_state *cpustate, int opcode)
tmp = GET_REG(cpustate,0) & GET_REG(cpustate,opcode & 7); tmp = GET_REG(cpustate,0) & GET_REG(cpustate,opcode & 7);
SET_REG(cpustate,0,tmp & 0xff); SET_REG(cpustate,0,tmp & 0xff);
UPDATE_FLAGS(cpustate,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff);
cpustate->CF = 0;
break; break;
case 5 : case 5 :
// XRx // XRx
tmp = GET_REG(cpustate,0) ^ GET_REG(cpustate,opcode & 7); tmp = GET_REG(cpustate,0) ^ GET_REG(cpustate,opcode & 7);
SET_REG(cpustate,0,tmp & 0xff); SET_REG(cpustate,0,tmp & 0xff);
UPDATE_FLAGS(cpustate,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff);
cpustate->CF = 0;
break; break;
case 6 : case 6 :
// ORx // ORx
tmp = GET_REG(cpustate,0) | GET_REG(cpustate,opcode & 7); tmp = GET_REG(cpustate,0) | GET_REG(cpustate,opcode & 7);
SET_REG(cpustate,0,tmp & 0xff); SET_REG(cpustate,0,tmp & 0xff);
UPDATE_FLAGS(cpustate,tmp & 0xff); UPDATE_FLAGS(cpustate,tmp & 0xff);
cpustate->CF = 0;
break; break;
case 7 : case 7 :
// CPx // CPx