diff options
Diffstat (limited to 'src/devices/bus/epson_sio/tf20.cpp')
-rw-r--r-- | src/devices/bus/epson_sio/tf20.cpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/devices/bus/epson_sio/tf20.cpp b/src/devices/bus/epson_sio/tf20.cpp index 1fb12a66c0e..22959af2730 100644 --- a/src/devices/bus/epson_sio/tf20.cpp +++ b/src/devices/bus/epson_sio/tf20.cpp @@ -14,6 +14,7 @@ #include "emu.h" #include "tf20.h" +#include "imagedev/floppy.h" #define XTAL_CR1 XTAL(8'000'000) #define XTAL_CR2 XTAL(4'915'200) @@ -86,12 +87,11 @@ static void tf20_floppies(device_slot_interface &device) device.option_add("sd320", EPSON_SD_320); } -void epson_tf20_device::device_add_mconfig(machine_config &config) -{ - Z80(config, m_cpu, XTAL_CR1 / 2); /* uPD780C */ - m_cpu->set_addrmap(AS_PROGRAM, &epson_tf20_device::cpu_mem); - m_cpu->set_addrmap(AS_IO, &epson_tf20_device::cpu_io); - m_cpu->set_irq_acknowledge_callback(FUNC(epson_tf20_device::irq_callback)); +MACHINE_CONFIG_START(epson_tf20_device::device_add_mconfig) + MCFG_DEVICE_ADD("19b", Z80, XTAL_CR1 / 2) /* uPD780C */ + MCFG_DEVICE_PROGRAM_MAP(cpu_mem) + MCFG_DEVICE_IO_MAP(cpu_io) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, epson_tf20_device, irq_callback) // 64k internal ram RAM(config, "ram").set_default_size("64K"); @@ -106,14 +106,14 @@ void epson_tf20_device::device_add_mconfig(machine_config &config) m_fdc->intrq_wr_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); // floppy drives - for (auto &fd : m_fd) - FLOPPY_CONNECTOR(config, fd, tf20_floppies, "sd320", floppy_image_device::default_floppy_formats); + MCFG_FLOPPY_DRIVE_ADD("5a:0", tf20_floppies, "sd320", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("5a:1", tf20_floppies, "sd320", floppy_image_device::default_floppy_formats) // serial interface to another device - EPSON_SIO(config, m_sio_output, nullptr); - m_sio_output->rx_callback().set(DEVICE_SELF, FUNC(epson_tf20_device::rxc_w)); - m_sio_output->pin_callback().set(DEVICE_SELF, FUNC(epson_tf20_device::pinc_w)); -} + MCFG_EPSON_SIO_ADD("sio", nullptr) + MCFG_EPSON_SIO_RX(WRITELINE(DEVICE_SELF, epson_tf20_device, rxc_w)) + MCFG_EPSON_SIO_PIN(WRITELINE(DEVICE_SELF, epson_tf20_device, pinc_w)) +MACHINE_CONFIG_END //************************************************************************** @@ -131,9 +131,7 @@ epson_tf20_device::epson_tf20_device(const machine_config &mconfig, const char * m_ram(*this, "ram"), m_fdc(*this, "5a"), m_mpsc(*this, "3a"), - m_sio_output(*this, "sio"), - m_fd(*this, "5a:%u", 0U), - m_timer_serial(nullptr), m_timer_tc(nullptr), + m_sio_output(*this, "sio"), m_fd0(nullptr), m_fd1(nullptr), m_timer_serial(nullptr), m_timer_tc(nullptr), m_rxc(1), m_txda(0), m_dtra(0), m_pinc(0) { m_sio_input = dynamic_cast<epson_sio_device *>(owner); @@ -152,6 +150,9 @@ void epson_tf20_device::device_start() m_timer_serial = timer_alloc(0, nullptr); m_timer_tc = timer_alloc(1, nullptr); + m_fd0 = subdevice<floppy_connector>("5a:0")->get_device(); + m_fd1 = subdevice<floppy_connector>("5a:1")->get_device(); + // enable second half of ram m_cpu->space(AS_PROGRAM).install_ram(0x8000, 0xffff, m_ram->pointer() + 0x8000); @@ -247,9 +248,8 @@ WRITE8_MEMBER( epson_tf20_device::fdc_control_w ) logerror("%s: tf20_fdc_control_w(%02x)\n", machine().describe_context(), data); // bit 0, motor on signal - for (auto &fd : m_fd) - if (fd->get_device() != nullptr) - fd->get_device()->mon_w(!BIT(data, 0)); + m_fd0->mon_w(!BIT(data, 0)); + m_fd1->mon_w(!BIT(data, 0)); } |