diff options
Diffstat (limited to 'src/mame/drivers/si5500.cpp')
-rw-r--r-- | src/mame/drivers/si5500.cpp | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/src/mame/drivers/si5500.cpp b/src/mame/drivers/si5500.cpp index 8b79ce05677..605466f5a07 100644 --- a/src/mame/drivers/si5500.cpp +++ b/src/mame/drivers/si5500.cpp @@ -41,7 +41,7 @@ private: u8 gpibpsi_input_r(offs_t offset); DECLARE_WRITE_LINE_MEMBER(gpibc_we_w); DECLARE_WRITE_LINE_MEMBER(gpibc_dbin_w); - u8 keypad_r(); + u8 keypad_r(offs_t offset); void mem_map(address_map &map); void cru_map(address_map &map); @@ -93,7 +93,7 @@ WRITE_LINE_MEMBER(si5500_state::gpibc_we_w) if (!state) { u16 pio = m_gpibpsi->pio_outputs(); - m_gpibc->reg8_w(machine().dummy_space(), (pio >> 8) & 7, pio & 0xff); + m_gpibc->write((pio >> 8) & 7, pio & 0xff); } } @@ -102,19 +102,17 @@ WRITE_LINE_MEMBER(si5500_state::gpibc_dbin_w) if (state) { u16 pio = m_gpibpsi->pio_outputs(); - m_gpib_data = m_gpibc->reg8_r(machine().dummy_space(), (pio >> 8) & 7); + m_gpib_data = m_gpibc->read((pio >> 8) & 7); } } -u8 si5500_state::keypad_r() +u8 si5500_state::keypad_r(offs_t offset) { - u8 result = 0xff; - for (int n = 0; n < 4; n++) if (!BIT(m_keyplatch->output_state(), n)) - result &= m_keypad[n]->read(); - - return result; + if (!BIT(m_keypad[n]->read(), offset)) + return 0; + return 1; } void si5500_state::mem_map(address_map &map) @@ -125,28 +123,19 @@ void si5500_state::mem_map(address_map &map) void si5500_state::cru_map(address_map &map) { - // MAME currently has incompatible addressing for CRU reads and writes - map(0x00, 0x03).r(m_mainpsi, FUNC(tms9901_device::read)); - map(0x08, 0x0b).r("acc", FUNC(tms9902_device::cruread)); - map(0x0c, 0x0f).r("adpsi", FUNC(tms9901_device::read)); - map(0x16, 0x16).nopr(); - map(0x17, 0x17).r(FUNC(si5500_state::keypad_r)); - map(0x40, 0x43).r("nvrpsi", FUNC(tms9901_device::read)); - map(0x44, 0x47).r(m_gpibpsi, FUNC(tms9901_device::read)); - map(0x80, 0xff).r("novram", FUNC(x2201_device::read_byte)); - - map(0x000, 0x01f).w(m_mainpsi, FUNC(tms9901_device::write)); - map(0x040, 0x05f).w("acc", FUNC(tms9902_device::cruwrite)); - map(0x060, 0x07f).w("adpsi", FUNC(tms9901_device::write)); - map(0x080, 0x087).w("outlatch1", FUNC(ls259_device::write_d0)); - map(0x088, 0x08f).w("outlatch2", FUNC(ls259_device::write_d0)); - map(0x090, 0x097).w("outlatch3", FUNC(ls259_device::write_d0)); - map(0x0a0, 0x0a7).w("outlatch4", FUNC(ls259_device::write_d0)); - map(0x0a8, 0x0af).w("outlatch5", FUNC(ls259_device::write_d0)); - map(0x0b0, 0x0bf).w(m_keyplatch, FUNC(ls259_device::write_d0)); - map(0x200, 0x21f).w("nvrpsi", FUNC(tms9901_device::write)); - map(0x220, 0x23f).w(m_gpibpsi, FUNC(tms9901_device::write)); - map(0x400, 0x7ff).w("novram", FUNC(x2201_device::write)); + map(0x0000, 0x003f).rw(m_mainpsi, FUNC(tms9901_device::read), FUNC(tms9901_device::write)); + map(0x0080, 0x00bf).rw("acc", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); + map(0x00c0, 0x00ff).rw("adpsi", FUNC(tms9901_device::read), FUNC(tms9901_device::write)); + map(0x0100, 0x010f).w("outlatch1", FUNC(ls259_device::write_d0)); + map(0x0110, 0x011f).w("outlatch2", FUNC(ls259_device::write_d0)); + map(0x0120, 0x012f).w("outlatch3", FUNC(ls259_device::write_d0)); + map(0x0140, 0x014f).w("outlatch4", FUNC(ls259_device::write_d0)); + map(0x0150, 0x015f).w("outlatch5", FUNC(ls259_device::write_d0)); + map(0x0160, 0x016f).w(m_keyplatch, FUNC(ls259_device::write_d0)).nopr(); + map(0x0170, 0x017f).r(FUNC(si5500_state::keypad_r)); + map(0x0400, 0x043f).rw("nvrpsi", FUNC(tms9901_device::read), FUNC(tms9901_device::write)); + map(0x0440, 0x047f).rw(m_gpibpsi, FUNC(tms9901_device::read), FUNC(tms9901_device::write)); + map(0x0800, 0x0fff).rw("novram", FUNC(x2201_device::read), FUNC(x2201_device::write)); } static INPUT_PORTS_START(si5500) |