summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/upd7810/upd7810_opcodes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/upd7810/upd7810_opcodes.cpp')
-rw-r--r--src/devices/cpu/upd7810/upd7810_opcodes.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/devices/cpu/upd7810/upd7810_opcodes.cpp b/src/devices/cpu/upd7810/upd7810_opcodes.cpp
index 3bb2233df21..dd610a40ff1 100644
--- a/src/devices/cpu/upd7810/upd7810_opcodes.cpp
+++ b/src/devices/cpu/upd7810/upd7810_opcodes.cpp
@@ -323,7 +323,10 @@ void upd7810_device::DIV_B()
B = remainder;
}
else
- EA = 0xffff; /* guess */
+ {
+ B = EAL;
+ EA = 0xffff;
+ }
}
/* 48 3f: 0100 1000 0011 1111 */
@@ -337,15 +340,18 @@ void upd7810_device::DIV_C()
C = remainder;
}
else
- EA = 0xffff; /* guess */
+ {
+ C = EAL;
+ EA = 0xffff;
+ }
}
/* 48 40: 0100 1000 0100 0000 */
void upd7810_device::SKIT_NMI()
{
- if (IRR & INTNMI)
+ if (m_nmi == CLEAR_LINE) // 1 pin level
PSW |= SK;
- IRR &= ~INTNMI;
+ // INTFNMI is not tested or changed
}
/* 48 41: 0100 1000 0100 0001 */
@@ -487,9 +493,9 @@ void upd7810_device::SKIT_SB()
/* 48 60: 0100 1000 0110 0000 */
void upd7810_device::SKNIT_NMI()
{
- if (0 == (IRR & INTNMI))
+ if (m_nmi == ASSERT_LINE) // 0 pin level
PSW |= SK;
- IRR &= ~INTNMI;
+ // INTFNMI is not tested or changed
}
/* 48 61: 0100 1000 0110 0001 */
@@ -931,25 +937,25 @@ void upd7810_device::MOV_A_RXB()
/* 4c e0: 0100 1100 1110 0000 */
void upd7810_device::MOV_A_CR0()
{
- A = CR0;
+ A = CR[0];
}
/* 4c e1: 0100 1100 1110 0001 */
void upd7810_device::MOV_A_CR1()
{
- A = CR1;
+ A = CR[1];
}
/* 4c e2: 0100 1100 1110 0010 */
void upd7810_device::MOV_A_CR2()
{
- A = CR2;
+ A = CR[2];
}
/* 4c e3: 0100 1100 1110 0011 */
void upd7810_device::MOV_A_CR3()
{
- A = CR3;
+ A = CR[3];
}
/* prefix 4D */