summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mcs96/mcs96.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mcs96/mcs96.cpp')
-rw-r--r--src/devices/cpu/mcs96/mcs96.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp
index a6f5ecd9638..877fff833bd 100644
--- a/src/devices/cpu/mcs96/mcs96.cpp
+++ b/src/devices/cpu/mcs96/mcs96.cpp
@@ -42,7 +42,20 @@ void mcs96_device::device_start()
state_add(STATE_GENFLAGS, "GENFLAGS", PSW).formatstr("%16s").noshow();
state_add(MCS96_PC, "PC", PC);
state_add(MCS96_PSW, "PSW", PSW);
- state_add(MCS96_R, "SP", register_file[0]);
+ state_add(MCS96_INT_PENDING, "INT_PENDING", pending_irq);
+ state_add(MCS96_SP, "SP", register_file[0]);
+ state_add(MCS96_AX, "AX", register_file[2]);
+ state_add(MCS96_DX, "DX", register_file[3]);
+ state_add(MCS96_BX, "BX", register_file[4]);
+ state_add(MCS96_CX, "CX", register_file[5]);
+ state_add(MCS96_AL, "AL", reinterpret_cast<u8 *>(&register_file[2])[BYTE_XOR_LE(0)]).noshow();
+ state_add(MCS96_AH, "AH", reinterpret_cast<u8 *>(&register_file[2])[BYTE_XOR_LE(1)]).noshow();
+ state_add(MCS96_DL, "DL", reinterpret_cast<u8 *>(&register_file[3])[BYTE_XOR_LE(0)]).noshow();
+ state_add(MCS96_DH, "DH", reinterpret_cast<u8 *>(&register_file[3])[BYTE_XOR_LE(1)]).noshow();
+ state_add(MCS96_BL, "BL", reinterpret_cast<u8 *>(&register_file[4])[BYTE_XOR_LE(0)]).noshow();
+ state_add(MCS96_BH, "BH", reinterpret_cast<u8 *>(&register_file[4])[BYTE_XOR_LE(1)]).noshow();
+ state_add(MCS96_CL, "CL", reinterpret_cast<u8 *>(&register_file[5])[BYTE_XOR_LE(0)]).noshow();
+ state_add(MCS96_CH, "CH", reinterpret_cast<u8 *>(&register_file[5])[BYTE_XOR_LE(1)]).noshow();
}
void mcs96_device::device_reset()
@@ -84,6 +97,28 @@ void mcs96_device::check_irq()
irq_requested = (PSW & pending_irq) && (PSW & F_I);
}
+void mcs96_device::int_mask_w(u8 data)
+{
+ PSW = (PSW & 0xff00) | data;
+ check_irq();
+}
+
+u8 mcs96_device::int_mask_r()
+{
+ return PSW;
+}
+
+void mcs96_device::int_pending_w(u8 data)
+{
+ pending_irq = data;
+ check_irq();
+}
+
+u8 mcs96_device::int_pending_r()
+{
+ return pending_irq;
+}
+
void mcs96_device::execute_run()
{
internal_update(total_cycles());