summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/6850acia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/6850acia.cpp')
-rw-r--r--src/devices/machine/6850acia.cpp64
1 files changed, 35 insertions, 29 deletions
diff --git a/src/devices/machine/6850acia.cpp b/src/devices/machine/6850acia.cpp
index 6527608bf0f..08e8459fd36 100644
--- a/src/devices/machine/6850acia.cpp
+++ b/src/devices/machine/6850acia.cpp
@@ -150,24 +150,27 @@ void acia6850_device::device_reset()
output_irq(1);
}
-READ8_MEMBER( acia6850_device::status_r )
+uint8_t acia6850_device::status_r()
{
uint8_t status = m_status;
- if (status & SR_CTS)
+ if (!machine().side_effects_disabled())
{
- status &= ~SR_TDRE;
- }
+ if (status & SR_CTS)
+ {
+ status &= ~SR_TDRE;
+ }
- if (m_dcd_irq_pending == DCD_IRQ_READ_STATUS)
- {
- m_dcd_irq_pending = DCD_IRQ_READ_DATA;
+ if (m_dcd_irq_pending == DCD_IRQ_READ_STATUS)
+ {
+ m_dcd_irq_pending = DCD_IRQ_READ_DATA;
+ }
}
return status;
}
-WRITE8_MEMBER( acia6850_device::control_w )
+void acia6850_device::control_w(uint8_t data)
{
LOG("MC6850 '%s' Control: %02x\n", tag(), data);
@@ -237,7 +240,7 @@ void acia6850_device::update_irq()
output_irq(calculate_txirq() && calculate_rxirq());
}
-WRITE8_MEMBER( acia6850_device::data_w )
+void acia6850_device::data_w(uint8_t data)
{
LOG("MC6850 '%s' Data: %02x\n", tag(), data);
@@ -254,40 +257,43 @@ WRITE8_MEMBER( acia6850_device::data_w )
update_irq();
}
-READ8_MEMBER( acia6850_device::data_r )
+uint8_t acia6850_device::data_r()
{
- if (m_overrun_pending)
+ if (!machine().side_effects_disabled())
{
- m_status |= SR_OVRN;
- m_overrun_pending = false;
- }
- else
- {
- m_status &= ~SR_OVRN;
- m_status &= ~SR_RDRF;
- }
+ if (m_overrun_pending)
+ {
+ m_status |= SR_OVRN;
+ m_overrun_pending = false;
+ }
+ else
+ {
+ m_status &= ~SR_OVRN;
+ m_status &= ~SR_RDRF;
+ }
- if (m_dcd_irq_pending == DCD_IRQ_READ_DATA)
- {
- m_dcd_irq_pending = DCD_IRQ_NONE;
- }
+ if (m_dcd_irq_pending == DCD_IRQ_READ_DATA)
+ {
+ m_dcd_irq_pending = DCD_IRQ_NONE;
+ }
- update_irq();
+ update_irq();
+ }
return m_rdr;
}
-WRITE8_MEMBER( acia6850_device::write )
+void acia6850_device::write(offs_t offset, uint8_t data)
{
if (BIT(offset, 0))
- data_w(space, 0, data);
+ data_w(data);
else
- control_w(space, 0, data);
+ control_w(data);
}
-READ8_MEMBER( acia6850_device::read )
+uint8_t acia6850_device::read(offs_t offset)
{
- return BIT(offset, 0) ? data_r(space, 0) : status_r(space, 0);
+ return BIT(offset, 0) ? data_r() : status_r();
}
DECLARE_WRITE_LINE_MEMBER( acia6850_device::write_cts )