diff options
Diffstat (limited to 'src/devices/bus/scsi/scsi.cpp')
-rw-r--r-- | src/devices/bus/scsi/scsi.cpp | 50 |
1 files changed, 20 insertions, 30 deletions
diff --git a/src/devices/bus/scsi/scsi.cpp b/src/devices/bus/scsi/scsi.cpp index 1642ad51408..d11bef77de5 100644 --- a/src/devices/bus/scsi/scsi.cpp +++ b/src/devices/bus/scsi/scsi.cpp @@ -23,6 +23,7 @@ scsi_port_device::scsi_port_device(const machine_config &mconfig, const char *ta m_data5_handler(*this), m_data6_handler(*this), m_data7_handler(*this), + m_slot(*this, "%u", 1U), m_device_count(0), m_bsy_in(0), m_sel_in(0), @@ -61,39 +62,15 @@ scsi_port_device::scsi_port_device(const machine_config &mconfig, const char *ta { } -MACHINE_CONFIG_START(scsi_port_device::device_add_mconfig) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE1, SCSI_PORT_SLOT, 0 ) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE2, SCSI_PORT_SLOT, 0 ) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE3, SCSI_PORT_SLOT, 0 ) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE4, SCSI_PORT_SLOT, 0 ) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE5, SCSI_PORT_SLOT, 0 ) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE6, SCSI_PORT_SLOT, 0 ) - MCFG_DEVICE_ADD( SCSI_PORT_DEVICE7, SCSI_PORT_SLOT, 0 ) -MACHINE_CONFIG_END - -void scsi_port_device::device_start() +void scsi_port_device::device_add_mconfig(machine_config &config) { - const char *deviceName[] = - { - SCSI_PORT_DEVICE1, - SCSI_PORT_DEVICE2, - SCSI_PORT_DEVICE3, - SCSI_PORT_DEVICE4, - SCSI_PORT_DEVICE5, - SCSI_PORT_DEVICE6, - SCSI_PORT_DEVICE7 - }; - - m_device_count = 0; - for (int i = 0; i < 7; i++) - { - scsi_port_slot_device *slot = subdevice<scsi_port_slot_device>(deviceName[i]); - m_slot[i] = slot; + SCSI_PORT_SLOT(config, m_slot[i]); +} - if (slot != nullptr) - m_device_count = i + 1; - } +void scsi_port_device::device_start() +{ + m_device_count = 8; m_bsy_handler.resolve_safe(); m_sel_handler.resolve_safe(); @@ -660,6 +637,19 @@ WRITE_LINE_MEMBER( scsi_port_device::write_data7 ) } } +scsi_port_slot_device &scsi_port_device::slot(int index) +{ + assert(index >= 1 && index <= 7); + return *subdevice<scsi_port_slot_device>(m_slot[index-1].finder_tag()); +} + +void scsi_port_device::set_slot_device(int index, const char *option, const device_type &type, const input_device_default *id) +{ + slot(index).option_add(option, type); + slot(index).set_option_device_input_defaults(option, id); + slot(index).set_default_option(option); +} + DEFINE_DEVICE_TYPE(SCSI_PORT, scsi_port_device, "scsi", "SCSI Port") scsi_port_slot_device::scsi_port_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : |