diff options
author | mooglyguy <therealmogminer@gmail.com> | 2018-09-03 20:48:47 +0200 |
---|---|---|
committer | mooglyguy <therealmogminer@gmail.com> | 2018-09-03 20:51:58 +0200 |
commit | 11fa365606e26ec551cc4f9746b3d51b3d8ebbcf (patch) | |
tree | a000962004b7f0698af15ed4f819ee09f863bb0d /src/mame/drivers/tk80.cpp | |
parent | 21cca10414b4b0b86aad4926fba47f7b9d8e51b6 (diff) |
-i8255: Removed MCFG, nw
Diffstat (limited to 'src/mame/drivers/tk80.cpp')
-rw-r--r-- | src/mame/drivers/tk80.cpp | 96 |
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 */ |