uPD7801: Fixed the MOV MC,A instruction.

This commit is contained in:
Wilbert Pol 2010-04-05 18:53:22 +00:00
parent 2758f10e8c
commit 39ba484e7b
2 changed files with 18 additions and 1 deletions

View File

@ -9468,3 +9468,19 @@ static void STM_7801(upd7810_state *cpustate)
/* Reload the timer */
cpustate->ovc0 = 16 * ( TM0 + ( ( TM1 & 0x0f ) << 8 ) );
}
static void MOV_MC_A_7801(upd7810_state *cpustate)
{
/* On the 7801 the mode C bits function as follows: */
/* Cn=1 Cn=0 */
/* PC0 Input Output */
/* PC1 Input Output */
/* PC2 Input -SCS Input */
/* PC3 Output SAK Output */
/* PC4 Output To Output */
/* PC5 Output IO/-M Output */
/* PC6 Output HLDA Output */
/* PC7 Input HOLD Input */
MC = 0x84 | ( ( A & 0x02 ) ? 0x02 : 0x00 ) | ( ( A & 0x01 ) ? 0x01 : 0x00 );
}

View File

@ -1044,6 +1044,7 @@ static void INR_B_7801(upd7810_state *cpustate);
static void INR_C_7801(upd7810_state *cpustate);
static void INRW_wa_7801(upd7810_state *cpustate);
static void STM_7801(upd7810_state *cpustate);
static void MOV_MC_A_7801(upd7810_state *cpustate);
static const struct opcode_s op48[256] =
@ -3970,7 +3971,7 @@ static const struct opcode_s op4D_7801[256] =
/* 0xC0 - 0xDF */
{MOV_PA_A, 2,10,10,L0|L1}, {MOV_PB_A, 2,10,10,L0|L1},
{MOV_PC_A, 2,10,10,L0|L1}, {MOV_MKL_A, 2,10,10,L0|L1},
{MOV_MB_A, 2,10,10,L0|L1}, {MOV_MC_A, 2,10,10,L0|L1},
{MOV_MB_A, 2,10,10,L0|L1}, {MOV_MC_A_7801, 2,10,10,L0|L1},
{MOV_TM0_A, 2,10,10,L0|L1}, {MOV_TM1_A, 2,10,10,L0|L1},
{MOV_S_A, 2,10,10,L0|L1}, {illegal2, 2, 8, 8,L0|L1},
{illegal2, 2, 8, 8,L0|L1}, {illegal2, 2, 8, 8,L0|L1},