summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tk80.cpp
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-09-03 20:48:47 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-09-03 20:51:58 +0200
commit11fa365606e26ec551cc4f9746b3d51b3d8ebbcf (patch)
treea000962004b7f0698af15ed4f819ee09f863bb0d /src/mame/drivers/tk80.cpp
parent21cca10414b4b0b86aad4926fba47f7b9d8e51b6 (diff)
-i8255: Removed MCFG, nw
Diffstat (limited to 'src/mame/drivers/tk80.cpp')
-rw-r--r--src/mame/drivers/tk80.cpp96
1 files changed, 54 insertions, 42 deletions
diff --git a/src/mame/drivers/tk80.cpp b/src/mame/drivers/tk80.cpp
index 09f46b3690b..a0cf2808b16 100644
--- a/src/mame/drivers/tk80.cpp
+++ b/src/mame/drivers/tk80.cpp
@@ -60,9 +60,11 @@ public:
tk80_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
+ , m_ppi(*this, "ppi8255")
, m_digit(*this, "digit%u", 0U)
{ }
+ void add_tk80_ppi(machine_config &config);
void ics8080(machine_config &config);
void tk80(machine_config &config);
void mikrolab(machine_config &config);
@@ -94,6 +96,7 @@ private:
uint8_t m_ppi_portc;
required_device<cpu_device> m_maincpu;
+ required_device<i8255_device> m_ppi;
output_finder<8> m_digit;
};
@@ -152,21 +155,21 @@ void tk80_state::tk80_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0x03);
- map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x00, 0x03).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
}
void tk80_state::mikrolab_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0x03);
- map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x00, 0x03).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
}
void tk80_state::nd80z_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0x03);
- map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x00, 0x03).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
}
/* Input ports */
@@ -283,63 +286,72 @@ WRITE8_MEMBER( tk80_state::mikrolab_serial_w )
m_ppi_portc = data;
}
-MACHINE_CONFIG_START(tk80_state::tk80)
+void tk80_state::add_tk80_ppi(machine_config &config)
+{
+ I8255(config, m_ppi);
+ m_ppi->in_pa_callback().set(FUNC(tk80_state::key_matrix_r));
+ m_ppi->in_pb_callback().set(FUNC(tk80_state::serial_r));
+ m_ppi->out_pc_callback().set(FUNC(tk80_state::serial_w));
+}
+
+void tk80_state::tk80(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'432'000) / 9)
- MCFG_DEVICE_PROGRAM_MAP(tk80_mem)
- MCFG_DEVICE_IO_MAP(tk80_io)
+ I8080A(config, m_maincpu, XTAL(18'432'000) / 9);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tk80_state::tk80_mem);
+ m_maincpu->set_addrmap(AS_IO, &tk80_state::tk80_io);
/* video hardware */
config.set_default_layout(layout_tk80);
/* Devices */
- MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- MCFG_I8255_IN_PORTA_CB(READ8(*this, tk80_state, key_matrix_r))
- MCFG_I8255_IN_PORTB_CB(READ8(*this, tk80_state, serial_r))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, tk80_state, serial_w))
-MACHINE_CONFIG_END
+ add_tk80_ppi(config);
+}
-MACHINE_CONFIG_START(tk80_state::mikrolab)
+void tk80_state::mikrolab(machine_config &config)
+{
tk80(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(tk85_mem)
- MCFG_DEVICE_IO_MAP(mikrolab_io)
+ m_maincpu->set_addrmap(AS_PROGRAM, &tk80_state::tk85_mem);
+ m_maincpu->set_addrmap(AS_IO, &tk80_state::mikrolab_io);
/* Devices */
- MCFG_DEVICE_REMOVE("ppi8255")
- MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- MCFG_I8255_IN_PORTA_CB(READ8(*this, tk80_state, key_matrix_r))
- MCFG_I8255_IN_PORTB_CB(READ8(*this, tk80_state, serial_r))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, tk80_state, mikrolab_serial_w))
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(tk80_state::nd80z)
- MCFG_DEVICE_ADD("maincpu", Z80, 1e6 ) // Sharp LH0080A, can't see writing on xtal
- MCFG_DEVICE_PROGRAM_MAP(tk85_mem)
- MCFG_DEVICE_IO_MAP(nd80z_io)
+ m_ppi->out_pc_callback().set(FUNC(tk80_state::mikrolab_serial_w));
+}
+
+void tk80_state::nd80z(machine_config &config)
+{
+ Z80(config, m_maincpu, 1e6); // Sharp LH0080A, can't see writing on xtal
+ m_maincpu->set_addrmap(AS_PROGRAM, &tk80_state::tk85_mem);
+ m_maincpu->set_addrmap(AS_IO, &tk80_state::nd80z_io);
/* video hardware */
config.set_default_layout(layout_tk80);
/* Devices */
- MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- MCFG_I8255_IN_PORTA_CB(READ8(*this, tk80_state, nd80z_key_r))
- MCFG_I8255_IN_PORTB_CB(READ8(*this, tk80_state, serial_r))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, tk80_state, mikrolab_serial_w))
-MACHINE_CONFIG_END
+ I8255(config, m_ppi, 0);
+ m_ppi->in_pa_callback().set(FUNC(tk80_state::nd80z_key_r));
+ m_ppi->in_pb_callback().set(FUNC(tk80_state::serial_r));
+ m_ppi->out_pc_callback().set(FUNC(tk80_state::mikrolab_serial_w));
+}
-MACHINE_CONFIG_START(tk80_state::tk85)
- tk80(config);
- MCFG_DEVICE_REPLACE("maincpu", I8085A, XTAL(4'915'200))
- MCFG_DEVICE_PROGRAM_MAP(tk85_mem)
- MCFG_DEVICE_IO_MAP(tk80_io)
-MACHINE_CONFIG_END
+void tk80_state::tk85(machine_config &config)
+{
+ I8085A(config, m_maincpu, XTAL(4'915'200));
+ m_maincpu->set_addrmap(AS_PROGRAM, &tk80_state::tk85_mem);
+ m_maincpu->set_addrmap(AS_IO, &tk80_state::tk80_io);
+
+ /* video hardware */
+ config.set_default_layout(layout_tk80);
-MACHINE_CONFIG_START(tk80_state::ics8080)
+ /* Devices */
+ add_tk80_ppi(config);
+}
+
+void tk80_state::ics8080(machine_config &config)
+{
tk80(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(ics8080_mem)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &tk80_state::ics8080_mem);
+}
/* ROM definition */