summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-08-12 09:32:24 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-08-12 09:34:02 -0400
commit9fb06589421aa171a5e2cc7b34acd64090fc250d (patch)
treed1e1d54bb1a3716775680a994a6dc8b491195632
parent2a5b20e2c7ac5c08cbb32979068756b7b39ac4d5 (diff)
v53: Add 8-bit mappings for internal peripherals and save associated registers (nw)
-rw-r--r--src/devices/cpu/nec/v53.cpp24
-rw-r--r--src/devices/cpu/nec/v53.h1
2 files changed, 25 insertions, 0 deletions
diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp
index ba71f8fb296..e073baaa5c8 100644
--- a/src/devices/cpu/nec/v53.cpp
+++ b/src/devices/cpu/nec/v53.cpp
@@ -222,6 +222,21 @@ void v53_base_device::device_start()
m_out_dack_3_cb.resolve_safe();
set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu));
+
+ save_item(NAME(m_SCTL));
+ save_item(NAME(m_OPSEL));
+ save_item(NAME(m_SULA));
+ save_item(NAME(m_TULA));
+ save_item(NAME(m_IULA));
+ save_item(NAME(m_DULA));
+ save_item(NAME(m_OPHA));
+
+ save_item(NAME(m_simk));
+}
+
+void v53_base_device::device_post_load()
+{
+ install_peripheral_io();
}
void v53_base_device::install_peripheral_io()
@@ -262,6 +277,7 @@ void v53_base_device::install_peripheral_io()
if (IOAG) // 8-bit
{
+ space(AS_IO).install_readwrite_handler(base+0x00, base+0x01, read8_delegate(FUNC(pic8259_device::read), (pic8259_device*)m_v53icu), write8_delegate(FUNC(pic8259_device::write), (pic8259_device*)m_v53icu), 0xffff);
}
else
{
@@ -277,6 +293,10 @@ void v53_base_device::install_peripheral_io()
if (IOAG) // 8-bit
{
+ space(AS_IO).install_readwrite_handler(base+0x00, base+0x01, read8_delegate(FUNC(v53_base_device::tmu_tst0_r), this), write8_delegate(FUNC(v53_base_device::tmu_tct0_w), this), 0x00ff);
+ space(AS_IO).install_readwrite_handler(base+0x00, base+0x01, read8_delegate(FUNC(v53_base_device::tmu_tst1_r), this), write8_delegate(FUNC(v53_base_device::tmu_tct1_w), this), 0xff00);
+ space(AS_IO).install_readwrite_handler(base+0x02, base+0x02, read8_delegate(FUNC(v53_base_device::tmu_tst2_r), this), write8_delegate(FUNC(v53_base_device::tmu_tct2_w), this), 0x00ff);
+ space(AS_IO).install_write_handler(base+0x02, base+0x03, write8_delegate(FUNC(v53_base_device::tmu_tmd_w), this), 0xff00);
}
else
{
@@ -294,6 +314,10 @@ void v53_base_device::install_peripheral_io()
if (IOAG) // 8-bit
{
+ space(AS_IO).install_readwrite_handler(base+0x00, base+0x01, read8_delegate(FUNC(v53_scu_device::data_r), (v53_scu_device*)m_v53scu), write8_delegate(FUNC(v53_scu_device::data_w), (v53_scu_device*)m_v53scu), 0x00ff);
+ space(AS_IO).install_readwrite_handler(base+0x00, base+0x01, read8_delegate(FUNC(v53_scu_device::status_r), (v53_scu_device*)m_v53scu), write8_delegate(FUNC(v53_scu_device::command_w), (v53_scu_device*)m_v53scu), 0xff00);
+ space(AS_IO).install_write_handler(base+0x02, base+0x02, write8_delegate(FUNC(v53_scu_device::mode_w), (v53_scu_device*)m_v53scu), 0x00ff);
+ space(AS_IO).install_readwrite_handler(base+0x02, base+0x03, read8_delegate(FUNC(v53_base_device::scu_simk_r), this), write8_delegate(FUNC(v53_base_device::scu_simk_w), this), 0xff00);
}
else
{
diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h
index fab17150500..70909a619bd 100644
--- a/src/devices/cpu/nec/v53.h
+++ b/src/devices/cpu/nec/v53.h
@@ -197,6 +197,7 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_post_load() override;
virtual void execute_set_input(int inputnum, int state) override;
void install_peripheral_io();