summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/inteladv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/inteladv.cpp')
-rw-r--r--src/mame/drivers/inteladv.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/mame/drivers/inteladv.cpp b/src/mame/drivers/inteladv.cpp
index 7e4234e84d3..440438d46a3 100644
--- a/src/mame/drivers/inteladv.cpp
+++ b/src/mame/drivers/inteladv.cpp
@@ -22,11 +22,14 @@ public:
void inteladv(machine_config &config);
void dyndesk(machine_config &config);
+ DECLARE_WRITE_LINE_MEMBER(st2205u_power_w);
+ DECLARE_WRITE_LINE_MEMBER(st2202_power_w);
+
private:
void inteladv_map(address_map &map);
void dyndesk_map(address_map &map);
- required_device<cpu_device> m_maincpu;
+ required_device<st2xxx_device> m_maincpu;
};
void inteladv_state::inteladv_map(address_map &map)
@@ -40,19 +43,41 @@ void inteladv_state::dyndesk_map(address_map &map)
map(0x800000, 0x807fff).ram();
}
-static INPUT_PORTS_START( inteladv )
+WRITE_LINE_MEMBER(inteladv_state::st2205u_power_w)
+{
+ if (!state)
+ m_maincpu->set_state_int(st2xxx_device::ST_IREQ, m_maincpu->state_int(st2xxx_device::ST_IREQ) | 0x0020);
+}
+
+WRITE_LINE_MEMBER(inteladv_state::st2202_power_w)
+{
+ if (!state)
+ m_maincpu->set_state_int(st2xxx_device::ST_IREQ, m_maincpu->state_int(st2xxx_device::ST_IREQ) | 0x0010);
+}
+
+static INPUT_PORTS_START(inteladv)
+ PORT_START("POWER")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_POWER_ON) PORT_WRITE_LINE_MEMBER(inteladv_state, st2205u_power_w)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START(dyndesk)
+ PORT_START("POWER")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_POWER_ON) PORT_WRITE_LINE_MEMBER(inteladv_state, st2202_power_w)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_START)
INPUT_PORTS_END
void inteladv_state::inteladv(machine_config &config)
{
ST2205U(config, m_maincpu, 4000000);
m_maincpu->set_addrmap(AS_DATA, &inteladv_state::inteladv_map);
+ m_maincpu->in_pa_callback().set_ioport("POWER");
}
void inteladv_state::dyndesk(machine_config &config)
{
ST2202(config, m_maincpu, 4000000);
m_maincpu->set_addrmap(AS_DATA, &inteladv_state::dyndesk_map);
+ m_maincpu->in_pa_callback().set_ioport("POWER");
}
ROM_START( inteladv )
@@ -74,5 +99,5 @@ ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 2005, inteladv, 0, 0, inteladv, inteladv, inteladv_state, empty_init, "VTech", "Intelligence Advance E/R (Germany)", MACHINE_IS_SKELETON )
-COMP( 2003, dyndesk, 0, 0, dyndesk, inteladv, inteladv_state, empty_init, "VTech", "DynamiDesk (Germany)", MACHINE_IS_SKELETON )
-COMP( 2012, cars2lap, 0, 0, dyndesk, inteladv, inteladv_state, empty_init, "VTech", "CARS 2 Laptop (Germany)", MACHINE_IS_SKELETON ) // probably doesn't belong here
+COMP( 2003, dyndesk, 0, 0, dyndesk, dyndesk, inteladv_state, empty_init, "VTech", "DynamiDesk (Germany)", MACHINE_IS_SKELETON )
+COMP( 2012, cars2lap, 0, 0, dyndesk, dyndesk, inteladv_state, empty_init, "VTech", "CARS 2 Laptop (Germany)", MACHINE_IS_SKELETON ) // probably doesn't belong here