diff --git a/src/devices/bus/bbc/1mhzbus/ieee488.cpp b/src/devices/bus/bbc/1mhzbus/ieee488.cpp index 383ceef537b..dc227a21729 100644 --- a/src/devices/bus/bbc/1mhzbus/ieee488.cpp +++ b/src/devices/bus/bbc/1mhzbus/ieee488.cpp @@ -54,7 +54,8 @@ ROM_END // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(bbc_ieee488_device::device_add_mconfig) +void bbc_ieee488_device::device_add_mconfig(machine_config &config) +{ TMS9914(config, m_tms9914, 5_MHz_XTAL); m_tms9914->int_write_cb().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); m_tms9914->dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); @@ -67,23 +68,25 @@ MACHINE_CONFIG_START(bbc_ieee488_device::device_add_mconfig) m_tms9914->srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); m_tms9914->atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); m_tms9914->ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_tms9914, tms9914_device, eoi_w)) - MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_tms9914, tms9914_device, dav_w)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_tms9914, tms9914_device, nrfd_w)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ndac_w)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ifc_w)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_tms9914, tms9914_device, srq_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, atn_w)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ren_w)) - MCFG_IEEE488_SLOT_ADD("ieee_dev", 0, cbm_ieee488_devices, nullptr) + + IEEE488(config, m_ieee); + m_ieee->eoi_callback().set(m_tms9914, FUNC(tms9914_device::eoi_w)); + m_ieee->dav_callback().set(m_tms9914, FUNC(tms9914_device::dav_w)); + m_ieee->nrfd_callback().set(m_tms9914, FUNC(tms9914_device::nrfd_w)); + m_ieee->ndac_callback().set(m_tms9914, FUNC(tms9914_device::ndac_w)); + m_ieee->ifc_callback().set(m_tms9914, FUNC(tms9914_device::ifc_w)); + m_ieee->srq_callback().set(m_tms9914, FUNC(tms9914_device::srq_w)); + m_ieee->atn_callback().set(m_tms9914, FUNC(tms9914_device::atn_w)); + m_ieee->ren_callback().set(m_tms9914, FUNC(tms9914_device::ren_w)); + IEEE488_SLOT(config, "ieee_dev", 0, cbm_ieee488_devices, nullptr); BBC_1MHZBUS_SLOT(config, m_1mhzbus, DERIVED_CLOCK(1, 1), bbc_1mhzbus_devices, nullptr); m_1mhzbus->irq_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); m_1mhzbus->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::nmi_w)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(bbc_b488_device::device_add_mconfig) +void bbc_b488_device::device_add_mconfig(machine_config &config) +{ TMS9914(config, m_tms9914, 5_MHz_XTAL); // TODO: verify clock m_tms9914->int_write_cb().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); m_tms9914->dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); @@ -96,35 +99,37 @@ MACHINE_CONFIG_START(bbc_b488_device::device_add_mconfig) m_tms9914->srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); m_tms9914->atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); m_tms9914->ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_tms9914, tms9914_device, eoi_w)) - MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_tms9914, tms9914_device, dav_w)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_tms9914, tms9914_device, nrfd_w)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ndac_w)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ifc_w)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_tms9914, tms9914_device, srq_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, atn_w)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ren_w)) - MCFG_IEEE488_SLOT_ADD("ieee_dev", 0, cbm_ieee488_devices, nullptr) + + IEEE488(config, m_ieee); + m_ieee->eoi_callback().set(m_tms9914, FUNC(tms9914_device::eoi_w)); + m_ieee->dav_callback().set(m_tms9914, FUNC(tms9914_device::dav_w)); + m_ieee->nrfd_callback().set(m_tms9914, FUNC(tms9914_device::nrfd_w)); + m_ieee->ndac_callback().set(m_tms9914, FUNC(tms9914_device::ndac_w)); + m_ieee->ifc_callback().set(m_tms9914, FUNC(tms9914_device::ifc_w)); + m_ieee->srq_callback().set(m_tms9914, FUNC(tms9914_device::srq_w)); + m_ieee->atn_callback().set(m_tms9914, FUNC(tms9914_device::atn_w)); + m_ieee->ren_callback().set(m_tms9914, FUNC(tms9914_device::ren_w)); + IEEE488_SLOT(config, "ieee_dev", 0, cbm_ieee488_devices, nullptr); // TODO: LED's for ATN, TALK, and DATA -MACHINE_CONFIG_END +} -//MACHINE_CONFIG_START(bbc_procyon_device::device_add_mconfig) +//void bbc_procyon_device::device_add_mconfig(machine_config &config) +//{ // TODO: Implement MC68488 - //MCFG_IEEE488_BUS_ADD() - //MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_mc68488, mc68488_device, eoi_w)) - //MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_mc68488, mc68488_device, dav_w)) - //MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_mc68488, mc68488_device, nrfd_w)) - //MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_mc68488, mc68488_device, ndac_w)) - //MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_mc68488, mc68488_device, ifc_w)) - //MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_mc68488, mc68488_device, srq_w)) - //MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_mc68488, mc68488_device, atn_w)) - //MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_mc68488, mc68488_device, ren_w)) - //MCFG_IEEE488_SLOT_ADD("ieee_dev", 0, cbm_ieee488_devices, nullptr) + //IEEE488(config, m_ieee); + //m_ieee->eoi_callback(m_mc68488, FUNC(mc68488_device::eoi_w)); + //m_ieee->dav_callback(m_mc68488, FUNC(mc68488_device::dav_w)); + //m_ieee->nrfd_callback(m_mc68488, FUNC(mc68488_device::nrfd_w)); + //m_ieee->ndac_callback(m_mc68488, FUNC(mc68488_device::ndac_w)); + //m_ieee->ifc_callback(m_mc68488, FUNC(mc68488_device::ifc_w)); + //m_ieee->srq_callback(m_mc68488, FUNC(mc68488_device::srq_w)); + //m_ieee->atn_callback(m_mc68488, FUNC(mc68488_device::atn_w)); + //m_ieee->ren_callback(m_mc68488, FUNC(mc68488_device::ren_w)); + //IEEE488_SLOT(config, "ieee_dev", 0, cbm_ieee488_devices, nullptr); // TODO: LED's for Bus Active, Byte Out, and Byte In -//MACHINE_CONFIG_END +//} //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/cbmiec/interpod.cpp b/src/devices/bus/cbmiec/interpod.cpp index d6111dafe4d..ac87a55cf21 100644 --- a/src/devices/bus/cbmiec/interpod.cpp +++ b/src/devices/bus/cbmiec/interpod.cpp @@ -123,16 +123,17 @@ void interpod_device::interpod_mem(address_map &map) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(interpod_device::device_add_mconfig) - MCFG_DEVICE_ADD(R6502_TAG, M6502, 1000000) - MCFG_DEVICE_PROGRAM_MAP(interpod_mem) +void interpod_device::device_add_mconfig(machine_config &config) +{ + M6502(config, m_maincpu, 1000000); + m_maincpu->set_addrmap(AS_PROGRAM, &interpod_device::interpod_mem); - MCFG_DEVICE_ADD(R6522_TAG, VIA6522, 1000000) - MCFG_DEVICE_ADD(R6532_TAG, MOS6532_NEW, 1000000) - MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0) + VIA6522(config, m_via, 1000000); + MOS6532_NEW(config, m_riot, 1000000); + ACIA6850(config, m_acia, 0); - MCFG_CBM_IEEE488_ADD(nullptr) -MACHINE_CONFIG_END + ieee488_device::add_cbm_devices(config, nullptr); +} //************************************************************************** diff --git a/src/devices/bus/hp9845_io/98034.cpp b/src/devices/bus/hp9845_io/98034.cpp index b82935a9762..ab2985db6e2 100644 --- a/src/devices/bus/hp9845_io/98034.cpp +++ b/src/devices/bus/hp9845_io/98034.cpp @@ -363,9 +363,10 @@ const tiny_rom_entry *hp98034_io_card_device::device_rom_region() const return ROM_NAME(hp98034); } -MACHINE_CONFIG_START(hp98034_io_card_device::device_add_mconfig) -// Clock for NP is generated by a RC oscillator. Manual says its typical frequency -// is around 2 MHz. +void hp98034_io_card_device::device_add_mconfig(machine_config &config) +{ + // Clock for NP is generated by a RC oscillator. Manual says its typical frequency + // is around 2 MHz. HP_NANOPROCESSOR(config, m_cpu, 2000000); m_cpu->set_addrmap(AS_PROGRAM, &hp98034_io_card_device::np_program_map); m_cpu->set_addrmap(AS_IO, &hp98034_io_card_device::np_io_map); @@ -373,12 +374,12 @@ MACHINE_CONFIG_START(hp98034_io_card_device::device_add_mconfig) m_cpu->read_dc().set(FUNC(hp98034_io_card_device::dc_r)); m_cpu->set_irq_acknowledge_callback(FUNC(hp98034_io_card_device::irq_callback)); - MCFG_IEEE488_SLOT_ADD("ieee_dev" , 0 , hp_ieee488_devices , nullptr) - MCFG_IEEE488_SLOT_ADD("ieee_rem" , 0 , remote488_devices , nullptr) - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_IFC_CALLBACK(WRITELINE(*this, hp98034_io_card_device , ieee488_ctrl_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE(*this, hp98034_io_card_device , ieee488_ctrl_w)) -MACHINE_CONFIG_END + IEEE488_SLOT(config , "ieee_dev" , 0 , hp_ieee488_devices , nullptr); + IEEE488_SLOT(config , "ieee_rem" , 0 , remote488_devices , nullptr); + IEEE488(config, m_ieee488); + m_ieee488->ifc_callback().set(FUNC(hp98034_io_card_device::ieee488_ctrl_w)); + m_ieee488->atn_callback().set(FUNC(hp98034_io_card_device::ieee488_ctrl_w)); +} // device type definition DEFINE_DEVICE_TYPE(HP98034_IO_CARD, hp98034_io_card_device, "hp98034", "HP98034 card") diff --git a/src/devices/bus/ieee488/ieee488.h b/src/devices/bus/ieee488/ieee488.h index 791e2d74293..cb29783d294 100644 --- a/src/devices/bus/ieee488/ieee488.h +++ b/src/devices/bus/ieee488/ieee488.h @@ -12,8 +12,12 @@ #pragma once +void cbm_ieee488_devices(device_slot_interface &device); +void hp_ieee488_devices(device_slot_interface &device); +void remote488_devices(device_slot_interface &device); - +DECLARE_DEVICE_TYPE(IEEE488, ieee488_device) +DECLARE_DEVICE_TYPE(IEEE488_SLOT, ieee488_slot_device) //************************************************************************** // MACROS / CONSTANTS @@ -23,65 +27,6 @@ -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_IEEE488_BUS_ADD() \ - MCFG_DEVICE_ADD(IEEE488_TAG, IEEE488, 0) - - -#define MCFG_IEEE488_EOI_CALLBACK(_write) \ - downcast(device)->set_eoi_callback(DEVCB_##_write); - -#define MCFG_IEEE488_DAV_CALLBACK(_write) \ - downcast(device)->set_dav_callback(DEVCB_##_write); - -#define MCFG_IEEE488_NRFD_CALLBACK(_write) \ - downcast(device)->set_nrfd_callback(DEVCB_##_write); - -#define MCFG_IEEE488_NDAC_CALLBACK(_write) \ - downcast(device)->set_ndac_callback(DEVCB_##_write); - -#define MCFG_IEEE488_IFC_CALLBACK(_write) \ - downcast(device)->set_ifc_callback(DEVCB_##_write); - -#define MCFG_IEEE488_SRQ_CALLBACK(_write) \ - downcast(device)->set_srq_callback(DEVCB_##_write); - -#define MCFG_IEEE488_ATN_CALLBACK(_write) \ - downcast(device)->set_atn_callback(DEVCB_##_write); - -#define MCFG_IEEE488_REN_CALLBACK(_write) \ - downcast(device)->set_ren_callback(DEVCB_##_write); - -// This CB reports changes to the DIO lines on the bus (whose value comes from -// ANDing the DIO lines of each device on the bus) -// This CB is needed by those controllers that start a parallel poll and wait -// for some condition to be set by devices on the DIO lines (e.g. PHI controller). -#define MCFG_IEEE488_DIO_CALLBACK(_write) \ - downcast(device)->set_dio_callback(DEVCB_##_write); - -#define MCFG_IEEE488_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, IEEE488_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - downcast(device)->set_address(_address); - - -#define MCFG_CBM_IEEE488_ADD(_default_drive) \ - MCFG_IEEE488_SLOT_ADD("ieee4", 4, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee8", 8, cbm_ieee488_devices, _default_drive) \ - MCFG_IEEE488_SLOT_ADD("ieee9", 9, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee10", 10, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee11", 11, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee12", 12, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee13", 13, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee14", 14, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_SLOT_ADD("ieee15", 15, cbm_ieee488_devices, nullptr) \ - MCFG_IEEE488_BUS_ADD() - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -97,16 +42,6 @@ public: // construction/destruction ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - template devcb_base &set_eoi_callback(Object &&cb) { return m_write_eoi.set_callback(std::forward(cb)); } - template devcb_base &set_dav_callback(Object &&cb) { return m_write_dav.set_callback(std::forward(cb)); } - template devcb_base &set_nrfd_callback(Object &&cb) { return m_write_nrfd.set_callback(std::forward(cb)); } - template devcb_base &set_ndac_callback(Object &&cb) { return m_write_ndac.set_callback(std::forward(cb)); } - template devcb_base &set_ifc_callback(Object &&cb) { return m_write_ifc.set_callback(std::forward(cb)); } - template devcb_base &set_srq_callback(Object &&cb) { return m_write_srq.set_callback(std::forward(cb)); } - template devcb_base &set_atn_callback(Object &&cb) { return m_write_atn.set_callback(std::forward(cb)); } - template devcb_base &set_ren_callback(Object &&cb) { return m_write_ren.set_callback(std::forward(cb)); } - template devcb_base &set_dio_callback(Object &&cb) { return m_write_dio.set_callback(std::forward(cb)); } - auto eoi_callback() { return m_write_eoi.bind(); } auto dav_callback() { return m_write_dav.bind(); } auto nrfd_callback() { return m_write_nrfd.bind(); } @@ -115,6 +50,11 @@ public: auto srq_callback() { return m_write_srq.bind(); } auto atn_callback() { return m_write_atn.bind(); } auto ren_callback() { return m_write_ren.bind(); } + + // This CB reports changes to the DIO lines on the bus (whose value comes from + // ANDing the DIO lines of each device on the bus) + // This CB is needed by those controllers that start a parallel poll and wait + // for some condition to be set by devices on the DIO lines (e.g. PHI controller). auto dio_callback() { return m_write_dio.bind(); } void add_device(ieee488_slot_device *slot, device_t *target); @@ -154,6 +94,20 @@ public: void atn_w(device_t *device, int state) { set_signal(device, ATN, state); } void ren_w(device_t *device, int state) { set_signal(device, REN, state); } + // helper functions + static void add_cbm_devices(machine_config &config, const char *_default_drive) + { + IEEE488_SLOT(config, "ieee4", 4, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee8", 8, cbm_ieee488_devices, _default_drive); + IEEE488_SLOT(config, "ieee9", 9, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee10", 10, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee11", 11, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee12", 12, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee13", 13, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee14", 14, cbm_ieee488_devices, nullptr); + IEEE488_SLOT(config, "ieee15", 15, cbm_ieee488_devices, nullptr); + IEEE488(config, IEEE488_TAG); + } protected: enum { @@ -208,8 +162,6 @@ private: uint8_t m_dio; }; -DECLARE_DEVICE_TYPE(IEEE488, ieee488_device) - // ======================> ieee488_slot_device @@ -218,6 +170,16 @@ class ieee488_slot_device : public device_t, { public: // construction/destruction + template + ieee488_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, int address, T &&opts, char const *dflt) + : ieee488_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + set_address(address); + } ieee488_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void add_cbm_slot(machine_config &config, const char *_tag, int _address, const char *_def_slot); @@ -244,8 +206,6 @@ protected: int m_address; }; -DECLARE_DEVICE_TYPE(IEEE488_SLOT, ieee488_slot_device) - // ======================> device_ieee488_interface @@ -280,10 +240,4 @@ private: device_ieee488_interface *m_next; }; - -void cbm_ieee488_devices(device_slot_interface &device); -void hp_ieee488_devices(device_slot_interface &device); -void remote488_devices(device_slot_interface &device); - - #endif // MAME_BUS_IEEE488_IEEE488_H diff --git a/src/devices/bus/ieee488/softbox.cpp b/src/devices/bus/ieee488/softbox.cpp index 0c26dded7a3..e2041d3e4e2 100644 --- a/src/devices/bus/ieee488/softbox.cpp +++ b/src/devices/bus/ieee488/softbox.cpp @@ -232,11 +232,12 @@ DEVICE_INPUT_DEFAULTS_END // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(softbox_device::device_add_mconfig) +void softbox_device::device_add_mconfig(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(8'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(softbox_mem) - MCFG_DEVICE_IO_MAP(softbox_io) + Z80(config, m_maincpu, XTAL(8'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &softbox_device::softbox_mem); + m_maincpu->set_addrmap(AS_IO, &softbox_device::softbox_io); // devices i8251_device &i8251(I8251(config, I8251_TAG, 0)); @@ -264,17 +265,13 @@ MACHINE_CONFIG_START(softbox_device::device_add_mconfig) m_dbrg->fr_handler().set(I8251_TAG, FUNC(i8251_device::write_rxc)); m_dbrg->ft_handler().set(I8251_TAG, FUNC(i8251_device::write_txc)); - MCFG_DEVICE_ADD(m_hdc, CORVUS_HDC, 0) - MCFG_HARDDISK_ADD("harddisk1") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - MCFG_HARDDISK_ADD("harddisk2") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - MCFG_HARDDISK_ADD("harddisk3") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - MCFG_HARDDISK_ADD("harddisk4") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - //MCFG_IMI7000_BUS_ADD("imi5000h", nullptr, nullptr, nullptr) -MACHINE_CONFIG_END + CORVUS_HDC(config, m_hdc, 0); + HARDDISK(config, "harddisk1", "corvus_hdd"); + HARDDISK(config, "harddisk2", "corvus_hdd"); + HARDDISK(config, "harddisk3", "corvus_hdd"); + HARDDISK(config, "harddisk4", "corvus_hdd"); + //imi7000_bus_device::add_config(config, "imi5000h", nullptr, nullptr, nullptr); +} //------------------------------------------------- diff --git a/src/devices/bus/imi7000/imi7000.h b/src/devices/bus/imi7000/imi7000.h index 0559a565285..38de3341ae5 100644 --- a/src/devices/bus/imi7000/imi7000.h +++ b/src/devices/bus/imi7000/imi7000.h @@ -31,8 +31,10 @@ #pragma once +void imi7000_devices(device_slot_interface &device); - +DECLARE_DEVICE_TYPE(IMI7000_BUS, imi7000_bus_device) +DECLARE_DEVICE_TYPE(IMI7000_SLOT, imi7000_slot_device) //************************************************************************** // CONSTANTS @@ -42,23 +44,6 @@ -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_IMI7000_BUS_ADD(_def_slot1, _def_slot2, _def_slot3, _def_slot4) \ - MCFG_DEVICE_ADD(IMI7000_BUS_TAG, IMI7000_BUS, 0) \ - MCFG_DEVICE_ADD(IMI7000_BUS_TAG":0", IMI7000_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(imi7000_devices, _def_slot1, false) \ - MCFG_DEVICE_ADD(IMI7000_BUS_TAG":1", IMI7000_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(imi7000_devices, _def_slot2, false) \ - MCFG_DEVICE_ADD(IMI7000_BUS_TAG":2", IMI7000_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(imi7000_devices, _def_slot3, false) \ - MCFG_DEVICE_ADD(IMI7000_BUS_TAG":3", IMI7000_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(imi7000_devices, _def_slot4, false) - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -73,7 +58,17 @@ class imi7000_bus_device : public device_t { public: // construction/destruction - imi7000_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + imi7000_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); + + template + static void add_config(machine_config &config, T &&_def_slot1, U &&_def_slot2, V &&_def_slot3, W &&_def_slot4) + { + IMI7000_BUS(config, IMI7000_BUS_TAG); + IMI7000_SLOT(config, IMI7000_BUS_TAG":0", imi7000_devices, std::forward(_def_slot1)); + IMI7000_SLOT(config, IMI7000_BUS_TAG":1", imi7000_devices, std::forward(_def_slot2)); + IMI7000_SLOT(config, IMI7000_BUS_TAG":2", imi7000_devices, std::forward(_def_slot3)); + IMI7000_SLOT(config, IMI7000_BUS_TAG":3", imi7000_devices, std::forward(_def_slot4)); + } protected: // device-level overrides @@ -90,6 +85,15 @@ class imi7000_slot_device : public device_t, { public: // construction/destruction + template + imi7000_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : imi7000_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } imi7000_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: @@ -113,13 +117,4 @@ protected: imi7000_slot_device *m_slot; }; - -// device type definition -DECLARE_DEVICE_TYPE(IMI7000_BUS, imi7000_bus_device) -DECLARE_DEVICE_TYPE(IMI7000_SLOT, imi7000_slot_device) - - -// slot interface -void imi7000_devices(device_slot_interface &device); - #endif // MAME_BUS_IMI7000_IMI7000_H diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h index 92a6b733275..7b71d13d2c7 100644 --- a/src/devices/imagedev/harddriv.h +++ b/src/devices/imagedev/harddriv.h @@ -25,6 +25,11 @@ class harddisk_image_device : public device_t, { public: // construction/destruction + harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *intf) + : harddisk_image_device(mconfig, tag, owner, (uint32_t)0) + { + set_interface(intf); + } harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual ~harddisk_image_device(); diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp index 6b3c59c609e..8eb04d479b9 100644 --- a/src/mame/drivers/gridcomp.cpp +++ b/src/mame/drivers/gridcomp.cpp @@ -367,11 +367,12 @@ INPUT_PORTS_END * IRQ6 8087 * IRQ7 ring */ -MACHINE_CONFIG_START(gridcomp_state::grid1101) - MCFG_DEVICE_ADD("maincpu", I8086, XTAL(15'000'000) / 3) - MCFG_DEVICE_PROGRAM_MAP(grid1101_map) - MCFG_DEVICE_IO_MAP(grid1101_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(gridcomp_state, irq_callback) +void gridcomp_state::grid1101(machine_config &config) +{ + I8086(config, m_maincpu, XTAL(15'000'000) / 3); + m_maincpu->set_addrmap(AS_PROGRAM, &gridcomp_state::grid1101_map); + m_maincpu->set_addrmap(AS_IO, &gridcomp_state::grid1101_io); + m_maincpu->set_irq_acknowledge_callback(FUNC(gridcomp_state::irq_callback)); MCFG_MACHINE_START_OVERRIDE(gridcomp_state, gridcomp) MCFG_MACHINE_RESET_OVERRIDE(gridcomp_state, gridcomp) @@ -380,14 +381,14 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101) m_osp->irq().set_inputline("maincpu", 0); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00); - MCFG_SCREEN_ADD_MONOCHROME("screen", LCD, rgb_t::amber()) // actually a kind of EL display - MCFG_SCREEN_UPDATE_DRIVER(gridcomp_state, screen_update_110x) - MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000)/2, 424, 0, 320, 262, 0, 240) // XXX 66 Hz refresh - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir3_w)) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); // actually a kind of EL display + screen.set_color(rgb_t::amber()); + screen.set_screen_update(FUNC(gridcomp_state::screen_update_110x)); + screen.set_raw(XTAL(15'000'000)/2, 424, 0, 320, 262, 0, 240); // XXX 66 Hz refresh + screen.screen_vblank().set(m_osp, FUNC(i80130_device::ir3_w)); + screen.set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); @@ -411,23 +412,24 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101) hpib.srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); hpib.atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); hpib.ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_EOI_CALLBACK(WRITELINE("hpib", tms9914_device, eoi_w)) - MCFG_IEEE488_DAV_CALLBACK(WRITELINE("hpib", tms9914_device, dav_w)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE("hpib", tms9914_device, nrfd_w)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE("hpib", tms9914_device, ndac_w)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE("hpib", tms9914_device, ifc_w)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE("hpib", tms9914_device, srq_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE("hpib", tms9914_device, atn_w)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE("hpib", tms9914_device, ren_w)) - MCFG_IEEE488_SLOT_ADD("ieee_rem", 0, remote488_devices, nullptr) + + ieee488_device &ieee(IEEE488(config, IEEE488_TAG)); + ieee.eoi_callback().set("hpib", FUNC(tms9914_device::eoi_w)); + ieee.dav_callback().set("hpib", FUNC(tms9914_device::dav_w)); + ieee.nrfd_callback().set("hpib", FUNC(tms9914_device::nrfd_w)); + ieee.ndac_callback().set("hpib", FUNC(tms9914_device::ndac_w)); + ieee.ifc_callback().set("hpib", FUNC(tms9914_device::ifc_w)); + ieee.srq_callback().set("hpib", FUNC(tms9914_device::srq_w)); + ieee.atn_callback().set("hpib", FUNC(tms9914_device::atn_w)); + ieee.ren_callback().set("hpib", FUNC(tms9914_device::ren_w)); + IEEE488_SLOT(config, "ieee_rem", 0, remote488_devices, nullptr); I8274_NEW(config, m_uart8274, XTAL(4'032'000)); - MCFG_DEVICE_ADD("modem", I8255, 0) + I8255(config, "modem", 0); RAM(config, m_ram).set_default_size("256K").set_default_value(0); -MACHINE_CONFIG_END +} void gridcomp_state::grid1109(machine_config &config) { @@ -435,12 +437,12 @@ void gridcomp_state::grid1109(machine_config &config) m_ram->set_default_size("512K"); } -MACHINE_CONFIG_START(gridcomp_state::grid1121) +void gridcomp_state::grid1121(machine_config &config) +{ grid1101(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(XTAL(24'000'000) / 3) // XXX - MCFG_DEVICE_PROGRAM_MAP(grid1121_map) -MACHINE_CONFIG_END + m_maincpu->set_clock(XTAL(24'000'000) / 3); // XXX + m_maincpu->set_addrmap(AS_PROGRAM, &gridcomp_state::grid1121_map); +} void gridcomp_state::grid1129(machine_config &config) { @@ -448,12 +450,12 @@ void gridcomp_state::grid1129(machine_config &config) m_ram->set_default_size("512K"); } -MACHINE_CONFIG_START(gridcomp_state::grid1131) +void gridcomp_state::grid1131(machine_config &config) +{ grid1121(config); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(gridcomp_state, screen_update_113x) - MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000)/2, 720, 0, 512, 262, 0, 240) // XXX -MACHINE_CONFIG_END + subdevice("screen")->set_screen_update(FUNC(gridcomp_state::screen_update_113x)); + subdevice("screen")->set_raw(XTAL(15'000'000)/2, 720, 0, 512, 262, 0, 240); // XXX +} void gridcomp_state::grid1139(machine_config &config) { diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp index 93ae1412fe4..7dd4ce3f03a 100644 --- a/src/mame/drivers/hp64k.cpp +++ b/src/mame/drivers/hp64k.cpp @@ -1372,15 +1372,16 @@ INPUT_PORTS_END static void hp64k_floppies(device_slot_interface &device) { - device.option_add("525dd" , FLOPPY_525_DD); + device.option_add("525dd", FLOPPY_525_DD); } -MACHINE_CONFIG_START(hp64k_state::hp64k) - HP_5061_3011(config , m_cpu , 6250000); +void hp64k_state::hp64k(machine_config &config) +{ + HP_5061_3011(config, m_cpu, 6250000); m_cpu->set_rw_cycles(6 , 6); m_cpu->set_relative_mode(true); - m_cpu->set_addrmap(AS_PROGRAM , &hp64k_state::cpu_mem_map); - m_cpu->set_addrmap(AS_IO , &hp64k_state::cpu_io_map); + m_cpu->set_addrmap(AS_PROGRAM, &hp64k_state::cpu_mem_map); + m_cpu->set_addrmap(AS_IO, &hp64k_state::cpu_io_map); m_cpu->set_irq_acknowledge_callback(FUNC(hp64k_state::hp64k_irq_callback)); // Actual keyboard refresh rate should be between 1 and 2 kHz @@ -1397,11 +1398,12 @@ MACHINE_CONFIG_START(hp64k_state::hp64k) m_crtc->drq_wr_callback().set(FUNC(hp64k_state::hp64k_crtc_drq_w)); m_crtc->vrtc_wr_callback().set(FUNC(hp64k_state::hp64k_crtc_vrtc_w)); - MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) - MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(720, 390) - MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 390-1) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::green()); + screen.set_screen_update("crtc", FUNC(i8275_device::screen_update)); + screen.set_refresh_hz(60); + screen.set_size(720, 390); + screen.set_visarea(0, 720-1, 0, 390-1); PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT); FD1791(config, m_fdc, 4_MHz_XTAL / 4); @@ -1463,21 +1465,21 @@ MACHINE_CONFIG_START(hp64k_state::hp64k) m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_phi, phi_device, eoi_w)) - MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_phi, phi_device, dav_w)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_phi, phi_device, nrfd_w)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_phi, phi_device, ndac_w)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_phi, phi_device, ifc_w)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_phi, phi_device, srq_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_phi, phi_device, atn_w)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_phi, phi_device, ren_w)) - MCFG_IEEE488_DIO_CALLBACK(WRITE8(m_phi, phi_device , bus_dio_w)) - MCFG_IEEE488_SLOT_ADD("ieee_rem" , 0 , remote488_devices , nullptr) -MACHINE_CONFIG_END + ieee488_device &ieee(IEEE488(config, IEEE488_TAG)); + ieee.eoi_callback().set(m_phi, FUNC(phi_device::eoi_w)); + ieee.dav_callback().set(m_phi, FUNC(phi_device::dav_w)); + ieee.nrfd_callback().set(m_phi, FUNC(phi_device::nrfd_w)); + ieee.ndac_callback().set(m_phi, FUNC(phi_device::ndac_w)); + ieee.ifc_callback().set(m_phi, FUNC(phi_device::ifc_w)); + ieee.srq_callback().set(m_phi, FUNC(phi_device::srq_w)); + ieee.atn_callback().set(m_phi, FUNC(phi_device::atn_w)); + ieee.ren_callback().set(m_phi, FUNC(phi_device::ren_w)); + ieee.dio_callback().set(m_phi, FUNC(phi_device::bus_dio_w)); + IEEE488_SLOT(config, "ieee_rem", 0, remote488_devices, nullptr); +} ROM_START(hp64k) - ROM_REGION(0x8000 , "cpu" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_INVERT) + ROM_REGION(0x8000, "cpu" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_INVERT) ROM_LOAD16_BYTE("64100_80022.bin" , 0x0000 , 0x1000 , CRC(38b2aae5) SHA1(bfd0f126bfaf3724dc501979ad2d46afc41913aa)) ROM_LOAD16_BYTE("64100_80020.bin" , 0x0001 , 0x1000 , CRC(ac01b436) SHA1(be1e827ea1393a95abb02a52ab5cc35dc2cd96e4)) ROM_LOAD16_BYTE("64100_80023.bin" , 0x2000 , 0x1000 , CRC(6b4bc2ce) SHA1(00e6c58ccae9640dc81cb3e92db90a8c69b02a93)) diff --git a/src/mame/drivers/hp_ipc.cpp b/src/mame/drivers/hp_ipc.cpp index 11ed4d2b7b0..098472e00ac 100644 --- a/src/mame/drivers/hp_ipc.cpp +++ b/src/mame/drivers/hp_ipc.cpp @@ -737,9 +737,10 @@ static void hp_ipc_floppies(device_slot_interface &device) * 2 HP-HIL devices (keyboard, mouse) * 1 Real-time clock */ -MACHINE_CONFIG_START(hp_ipc_state::hp_ipc_base) - MCFG_DEVICE_ADD("maincpu", M68000, 15.92_MHz_XTAL / 2) - MCFG_DEVICE_PROGRAM_MAP(hp_ipc_mem_outer) +void hp_ipc_state::hp_ipc_base(machine_config &config) +{ + M68000(config, m_maincpu, 15.92_MHz_XTAL / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &hp_ipc_state::hp_ipc_mem_outer); HP1LL3(config , m_gpu , 24_MHz_XTAL / 8).set_screen("screen"); @@ -774,21 +775,23 @@ MACHINE_CONFIG_START(hp_ipc_state::hp_ipc_base) hpib.srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); hpib.atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); hpib.ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_EOI_CALLBACK(WRITELINE("hpib" , tms9914_device , eoi_w)) - MCFG_IEEE488_DAV_CALLBACK(WRITELINE("hpib" , tms9914_device , dav_w)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE("hpib" , tms9914_device , nrfd_w)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE("hpib" , tms9914_device , ndac_w)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE("hpib" , tms9914_device , ifc_w)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE("hpib" , tms9914_device , srq_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE("hpib" , tms9914_device , atn_w)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE("hpib" , tms9914_device , ren_w)) - MCFG_IEEE488_SLOT_ADD("ieee_rem" , 0 , remote488_devices , nullptr) + + ieee488_device &ieee(IEEE488(config, IEEE488_TAG)); + ieee.eoi_callback().set("hpib" , FUNC(tms9914_device::eoi_w)); + ieee.dav_callback().set("hpib" , FUNC(tms9914_device::dav_w)); + ieee.nrfd_callback().set("hpib" , FUNC(tms9914_device::nrfd_w)); + ieee.ndac_callback().set("hpib" , FUNC(tms9914_device::ndac_w)); + ieee.ifc_callback().set("hpib" , FUNC(tms9914_device::ifc_w)); + ieee.srq_callback().set("hpib" , FUNC(tms9914_device::srq_w)); + ieee.atn_callback().set("hpib" , FUNC(tms9914_device::atn_w)); + ieee.ren_callback().set("hpib" , FUNC(tms9914_device::ren_w)); + IEEE488_SLOT(config , "ieee_rem" , 0 , remote488_devices , nullptr); RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("768K,1M,1576K,2M,3M,4M,5M,6M,7M,7680K"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(hp_ipc_state::hp_ipc) +void hp_ipc_state::hp_ipc(machine_config &config) +{ hp_ipc_base(config); ADDRESS_MAP_BANK(config, "bankdev").set_map(&hp_ipc_state::hp_ipc_mem_inner_9807a).set_options(ENDIANNESS_BIG, 16, 25, 0x1000000); @@ -807,9 +810,10 @@ MACHINE_CONFIG_START(hp_ipc_state::hp_ipc) m_screen->set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(hp_ipc_state::hp9808a) +void hp_ipc_state::hp9808a(machine_config &config) +{ hp_ipc_base(config); ADDRESS_MAP_BANK(config, "bankdev").set_map(&hp_ipc_state::hp_ipc_mem_inner_9808a).set_options(ENDIANNESS_BIG, 16, 25, 0x1000000); @@ -825,7 +829,7 @@ MACHINE_CONFIG_START(hp_ipc_state::hp9808a) m_screen->set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); -MACHINE_CONFIG_END +} ROM_START(hp_ipc) diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp index 50f80bca948..d3a6cd9f1e8 100644 --- a/src/mame/drivers/sage2.cpp +++ b/src/mame/drivers/sage2.cpp @@ -408,10 +408,11 @@ READ16_MEMBER(sage2_state::rom_r) // MACHINE_CONFIG( sage2 ) //------------------------------------------------- -MACHINE_CONFIG_START(sage2_state::sage2) +void sage2_state::sage2(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD(M68000_TAG, M68000, XTAL(16'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(sage2_mem) + M68000(config, m_maincpu, XTAL(16'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &sage2_state::sage2_mem); // devices PIC8259(config, m_pic, 0); @@ -482,14 +483,15 @@ MACHINE_CONFIG_START(sage2_state::sage2) FLOPPY_CONNECTOR(config, UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats); - MCFG_IEEE488_BUS_ADD() + + IEEE488(config, m_ieee488); // internal ram RAM(config, RAM_TAG).set_default_size("512K"); // software list SOFTWARE_LIST(config, "flop_list").set_original("sage2"); -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp index 7a37c671c02..634bb426a93 100644 --- a/src/mame/drivers/softbox.cpp +++ b/src/mame/drivers/softbox.cpp @@ -355,15 +355,12 @@ void softbox_state::ieee488_ifc(int state) // MACHINE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// MACHINE_CONFIG( softbox ) -//------------------------------------------------- - -MACHINE_CONFIG_START(softbox_state::softbox) +void softbox_state::softbox(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(8'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(softbox_mem) - MCFG_DEVICE_IO_MAP(softbox_io) + Z80(config, m_maincpu, XTAL(8'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &softbox_state::softbox_mem); + m_maincpu->set_addrmap(AS_IO, &softbox_state::softbox_io); // devices i8251_device &i8251(I8251(config, I8251_TAG, 0)); @@ -392,23 +389,19 @@ MACHINE_CONFIG_START(softbox_state::softbox) dbrg.fr_handler().set(I8251_TAG, FUNC(i8251_device::write_rxc)); dbrg.ft_handler().set(I8251_TAG, FUNC(i8251_device::write_txc)); - MCFG_CBM_IEEE488_ADD("c8050") + ieee488_device::add_cbm_devices(config, "c8050"); - MCFG_DEVICE_ADD(CORVUS_HDC_TAG, CORVUS_HDC, 0) - MCFG_HARDDISK_ADD("harddisk1") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - MCFG_HARDDISK_ADD("harddisk2") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - MCFG_HARDDISK_ADD("harddisk3") - MCFG_HARDDISK_INTERFACE("corvus_hdd") - MCFG_HARDDISK_ADD("harddisk4") - MCFG_HARDDISK_INTERFACE("corvus_hdd") + CORVUS_HDC(config, m_hdc, 0); + HARDDISK(config, "harddisk1", "corvus_hdd"); + HARDDISK(config, "harddisk2", "corvus_hdd"); + HARDDISK(config, "harddisk3", "corvus_hdd"); + HARDDISK(config, "harddisk4", "corvus_hdd"); - MCFG_IMI7000_BUS_ADD("imi5000h", nullptr, nullptr, nullptr) + imi7000_bus_device::add_config(config, "imi5000h", nullptr, nullptr, nullptr); // software lists SOFTWARE_LIST(config, "flop_list").set_original("softbox"); -MACHINE_CONFIG_END +}