diff options
Diffstat (limited to 'src/mame/drivers/svi318.cpp')
-rw-r--r-- | src/mame/drivers/svi318.cpp | 57 |
1 files changed, 21 insertions, 36 deletions
diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp index bf345e1345b..3a7d60fb647 100644 --- a/src/mame/drivers/svi318.cpp +++ b/src/mame/drivers/svi318.cpp @@ -63,6 +63,7 @@ public: m_expander(*this, "exp"), m_keyboard(*this, "KEY.%u", 0), m_buttons(*this, "BUTTONS"), + m_led_caps_lock(*this, "led_caps_lock"), m_intvdp(0), m_intexp(0), m_romdis(1), m_ramdis(1), m_cart(1), m_bk21(1), @@ -78,14 +79,14 @@ public: void svi328p(machine_config &config); private: - DECLARE_READ8_MEMBER( ppi_port_a_r ); - DECLARE_READ8_MEMBER( ppi_port_b_r ); - DECLARE_WRITE8_MEMBER( ppi_port_c_w ); - DECLARE_WRITE8_MEMBER( bank_w ); + uint8_t ppi_port_a_r(); + uint8_t ppi_port_b_r(); + void ppi_port_c_w(uint8_t data); + void bank_w(uint8_t data); DECLARE_WRITE_LINE_MEMBER( intvdp_w ); - READ8_MEMBER( mreq_r ); - WRITE8_MEMBER( mreq_w ); + uint8_t mreq_r(offs_t offset); + void mreq_w(offs_t offset, uint8_t data); // from expander bus DECLARE_WRITE_LINE_MEMBER( intexp_w ); @@ -93,9 +94,6 @@ private: DECLARE_WRITE_LINE_MEMBER( ramdis_w ); DECLARE_WRITE_LINE_MEMBER( ctrl1_w ); - DECLARE_READ8_MEMBER( excs_r ); - DECLARE_WRITE8_MEMBER( excs_w ); - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge); void svi3x8_io(address_map &map); @@ -116,6 +114,7 @@ private: required_device<svi_expander_device> m_expander; required_ioport_array<16> m_keyboard; required_ioport m_buttons; + output_finder<> m_led_caps_lock; int m_intvdp; int m_intexp; @@ -340,6 +339,8 @@ WRITE_LINE_MEMBER( svi3x8_state::intvdp_w ) void svi3x8_state::machine_start() { + m_led_caps_lock.resolve(); + // register for save states save_item(NAME(m_intvdp)); save_item(NAME(m_intexp)); @@ -369,7 +370,7 @@ void svi3x8_state::machine_reset() ctrl1_w(1); } -READ8_MEMBER( svi3x8_state::mreq_r ) +uint8_t svi3x8_state::mreq_r(offs_t offset) { // ctrl1 inverts a15 if (m_ctrl1 == 0) @@ -378,7 +379,7 @@ READ8_MEMBER( svi3x8_state::mreq_r ) if (CCS1 || CCS2 || CCS3 || CCS4) return m_cart_rom->read_rom(offset); - uint8_t data = m_expander->mreq_r(space, offset); + uint8_t data = m_expander->mreq_r(offset); if (ROMCS) data = m_basic->as_u8(offset); @@ -392,7 +393,7 @@ READ8_MEMBER( svi3x8_state::mreq_r ) return data; } -WRITE8_MEMBER( svi3x8_state::mreq_w ) +void svi3x8_state::mreq_w(offs_t offset, uint8_t data) { // ctrl1 inverts a15 if (m_ctrl1 == 0) @@ -401,7 +402,7 @@ WRITE8_MEMBER( svi3x8_state::mreq_w ) if (CCS1 || CCS2 || CCS3 || CCS4) return; - m_expander->mreq_w(space, offset, data); + m_expander->mreq_w(offset, data); if (m_bk21 == 0 && IS_SVI328 && offset < 0x8000) m_ram->write(offset, data); @@ -410,7 +411,7 @@ WRITE8_MEMBER( svi3x8_state::mreq_w ) m_ram->write(IS_SVI328 ? offset : offset - 0xc000, data); } -WRITE8_MEMBER( svi3x8_state::bank_w ) +void svi3x8_state::bank_w(uint8_t data) { logerror("bank_w: %02x\n", data); @@ -425,10 +426,10 @@ WRITE8_MEMBER( svi3x8_state::bank_w ) m_rom2 = BIT(data, 6); m_rom3 = BIT(data, 7); - output().set_value("led_caps_lock", BIT(data, 5)); + m_led_caps_lock = BIT(data, 5); } -READ8_MEMBER( svi3x8_state::ppi_port_a_r ) +uint8_t svi3x8_state::ppi_port_a_r() { uint8_t data = 0x3f; @@ -444,13 +445,13 @@ READ8_MEMBER( svi3x8_state::ppi_port_a_r ) return data; } -READ8_MEMBER( svi3x8_state::ppi_port_b_r ) +uint8_t svi3x8_state::ppi_port_b_r() { // bit 0-7, keyboard data return m_keyboard[m_keyboard_row]->read(); } -WRITE8_MEMBER( svi3x8_state::ppi_port_c_w ) +void svi3x8_state::ppi_port_c_w(uint8_t data) { // bit 0-3, keyboard row m_keyboard_row = data & 0x0f; @@ -492,22 +493,6 @@ WRITE_LINE_MEMBER( svi3x8_state::ctrl1_w ) m_io->set_bank(m_ctrl1); } -READ8_MEMBER( svi3x8_state::excs_r ) -{ - if (offset & 1) - return m_vdp->register_read(); - else - return m_vdp->vram_read(); -} - -WRITE8_MEMBER( svi3x8_state::excs_w ) -{ - if (offset & 1) - m_vdp->register_write(data); - else - m_vdp->vram_write(data); -} - //************************************************************************** // CARTRIDGE @@ -571,8 +556,8 @@ MACHINE_CONFIG_START(svi3x8_state::svi318) m_expander->romdis_handler().set(FUNC(svi3x8_state::romdis_w)); m_expander->ramdis_handler().set(FUNC(svi3x8_state::ramdis_w)); m_expander->ctrl1_handler().set(FUNC(svi3x8_state::ctrl1_w)); - m_expander->excsr_handler().set(FUNC(svi3x8_state::excs_r)); - m_expander->excsw_handler().set(FUNC(svi3x8_state::excs_w)); + m_expander->excsr_handler().set(m_vdp, FUNC(tms9928a_device::read)); + m_expander->excsw_handler().set(m_vdp, FUNC(tms9928a_device::write)); MACHINE_CONFIG_END void svi3x8_state::svi318p(machine_config &config) |