diff options
Diffstat (limited to 'src/devices/bus/isa/dectalk.cpp')
-rw-r--r-- | src/devices/bus/isa/dectalk.cpp | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp index 07aa5181a9d..a66896f51a4 100644 --- a/src/devices/bus/isa/dectalk.cpp +++ b/src/devices/bus/isa/dectalk.cpp @@ -3,7 +3,6 @@ #include "emu.h" #include "dectalk.h" -#include "sound/volt_reg.h" #include "speaker.h" @@ -26,50 +25,51 @@ dectalk_isa_device::dectalk_isa_device(const machine_config& mconfig, const char { } -WRITE16_MEMBER(dectalk_isa_device::status_w) +void dectalk_isa_device::status_w(uint16_t data) { m_stat = data; } -READ16_MEMBER(dectalk_isa_device::cmd_r) +uint16_t dectalk_isa_device::cmd_r() { return m_cmd; } -WRITE16_MEMBER(dectalk_isa_device::data_w) +void dectalk_isa_device::data_w(uint16_t data) { m_data = data; } -READ16_MEMBER(dectalk_isa_device::data_r) +uint16_t dectalk_isa_device::data_r() { return m_data; } -READ16_MEMBER(dectalk_isa_device::host_irq_r) +uint16_t dectalk_isa_device::host_irq_r() { //m_isa->ir?_w(1); return 0; } -READ8_MEMBER(dectalk_isa_device::dma_r) +uint8_t dectalk_isa_device::dma_r() { - m_cpu->drq1_w(0); + if (!machine().side_effects_disabled()) + m_cpu->drq1_w(0); return m_dma; } -WRITE8_MEMBER(dectalk_isa_device::dma_w) +void dectalk_isa_device::dma_w(uint8_t data) { m_cpu->drq1_w(0); m_dma = data; } -WRITE16_MEMBER(dectalk_isa_device::dac_w) +void dectalk_isa_device::dac_w(uint16_t data) { m_dac->write(data >> 4); } -WRITE16_MEMBER(dectalk_isa_device::output_ctl_w) +void dectalk_isa_device::output_ctl_w(uint16_t data) { // X9C503P potentiometer, 8-CS, 4-U/D, 2-INC if(!(data & 8) && !(m_ctl & 2) && (data & 2)) @@ -85,20 +85,20 @@ WRITE16_MEMBER(dectalk_isa_device::output_ctl_w) m_ctl = data; } -READ16_MEMBER(dectalk_isa_device::dsp_dma_r) +uint16_t dectalk_isa_device::dsp_dma_r() { m_bio = ASSERT_LINE; m_cpu->drq1_w(0); return m_dsp_dma; } -WRITE16_MEMBER(dectalk_isa_device::dsp_dma_w) +void dectalk_isa_device::dsp_dma_w(uint16_t data) { m_bio = CLEAR_LINE; m_dsp_dma = data; } -READ_LINE_MEMBER(dectalk_isa_device::bio_line_r) +int dectalk_isa_device::bio_line_r() { // TODO: reading the bio line doesn't cause any direct external effects so this is wrong if(m_bio == ASSERT_LINE) @@ -106,12 +106,12 @@ READ_LINE_MEMBER(dectalk_isa_device::bio_line_r) return m_bio; } -WRITE16_MEMBER(dectalk_isa_device::irq_line_w) +void dectalk_isa_device::irq_line_w(uint16_t data) { m_cpu->int1_w(0); } -WRITE_LINE_MEMBER(dectalk_isa_device::clock_w) +void dectalk_isa_device::clock_w(int state) { m_dsp->set_input_line(INPUT_LINE_IRQ0, (!(m_ctl & 0x20) || state) ? CLEAR_LINE : ASSERT_LINE); } @@ -171,12 +171,9 @@ void dectalk_isa_device::device_add_mconfig(machine_config &config) SPEAKER(config, "speaker").front_center(); DAC_12BIT_R2R(config, m_dac, 0).add_route(0, "speaker", 1.0); // unknown DAC - voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); - vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); - vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); } -WRITE8_MEMBER(dectalk_isa_device::write) +void dectalk_isa_device::write(offs_t offset, uint8_t data) { switch(offset) { @@ -202,7 +199,7 @@ WRITE8_MEMBER(dectalk_isa_device::write) } } -READ8_MEMBER(dectalk_isa_device::read) +uint8_t dectalk_isa_device::read(offs_t offset) { switch(offset) { @@ -215,7 +212,8 @@ READ8_MEMBER(dectalk_isa_device::read) case 3: return m_data >> 8; case 4: - m_cpu->drq1_w(1); + if (!machine().side_effects_disabled()) + m_cpu->drq1_w(1); return m_dma; } return 0; @@ -224,7 +222,7 @@ READ8_MEMBER(dectalk_isa_device::read) void dectalk_isa_device::device_start() { set_isa_device(); - m_isa->install_device(0x0250, 0x0257, read8_delegate(*this, FUNC(dectalk_isa_device::read)), write8_delegate(*this, FUNC(dectalk_isa_device::write))); + m_isa->install_device(0x0250, 0x0257, read8sm_delegate(*this, FUNC(dectalk_isa_device::read)), write8sm_delegate(*this, FUNC(dectalk_isa_device::write))); } void dectalk_isa_device::device_reset() |