summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/svi318.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/svi318.cpp')
-rw-r--r--src/mame/drivers/svi318.cpp57
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)