mirror of
https://github.com/holub/mame
synced 2025-07-04 01:18:59 +03:00
nubus: Minor cleanup to fix deprecation warnings
This commit is contained in:
parent
61e021ef41
commit
27aa4fe075
@ -32,21 +32,31 @@ nubus_slot_device::nubus_slot_device(const machine_config &mconfig, const char *
|
|||||||
|
|
||||||
nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
|
nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
|
||||||
device_t(mconfig, type, tag, owner, clock),
|
device_t(mconfig, type, tag, owner, clock),
|
||||||
device_slot_interface(mconfig, *this),
|
device_single_card_slot_interface(mconfig, *this),
|
||||||
m_nubus_tag(nullptr),
|
m_nubus(*this, finder_base::DUMMY_TAG),
|
||||||
m_nubus_slottag(nullptr)
|
m_nubus_slottag(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_resolve_objects - resolve objects that
|
||||||
|
// may be needed for other devices to set
|
||||||
|
// initial conditions at start time
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void nubus_slot_device::device_resolve_objects()
|
||||||
|
{
|
||||||
|
device_nubus_card_interface *dev = get_card_device();
|
||||||
|
|
||||||
|
if (dev) dev->set_nubus_tag(m_nubus.target(), m_nubus_slottag);
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// device_start - device-specific startup
|
// device_start - device-specific startup
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void nubus_slot_device::device_start()
|
void nubus_slot_device::device_start()
|
||||||
{
|
{
|
||||||
device_nubus_card_interface *dev = dynamic_cast<device_nubus_card_interface *>(get_card_device());
|
|
||||||
|
|
||||||
if (dev) dev->set_nubus_tag(m_nubus_tag, m_nubus_slottag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -215,7 +225,7 @@ WRITE_LINE_MEMBER( nubus_device::irqe_w ) { m_out_irqe_cb(state); }
|
|||||||
device_nubus_card_interface::device_nubus_card_interface(const machine_config &mconfig, device_t &device)
|
device_nubus_card_interface::device_nubus_card_interface(const machine_config &mconfig, device_t &device)
|
||||||
: device_interface(device, "nubus"),
|
: device_interface(device, "nubus"),
|
||||||
m_nubus(nullptr),
|
m_nubus(nullptr),
|
||||||
m_nubus_tag(nullptr), m_nubus_slottag(nullptr), m_slot(0), m_next(nullptr)
|
m_nubus_slottag(nullptr), m_slot(0), m_next(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,16 +270,9 @@ void device_nubus_card_interface::interface_pre_start()
|
|||||||
fatalerror("Slot %x out of range for Apple NuBus\n", m_slot);
|
fatalerror("Slot %x out of range for Apple NuBus\n", m_slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
device_t *const bus = device().machine().device(m_nubus_tag);
|
|
||||||
if (!bus)
|
|
||||||
{
|
|
||||||
fatalerror("Can't find NuBus device %s\n", m_nubus_tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_nubus = dynamic_cast<nubus_device *>(bus);
|
|
||||||
if (!m_nubus)
|
if (!m_nubus)
|
||||||
{
|
{
|
||||||
fatalerror("Device %s (%s) is not an instance of nubus_device\n", bus->tag(), bus->name());
|
fatalerror("Can't find NuBus device\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
nubus().add_nubus_card(this);
|
nubus().add_nubus_card(this);
|
||||||
|
@ -20,32 +20,83 @@
|
|||||||
|
|
||||||
class nubus_device;
|
class nubus_device;
|
||||||
|
|
||||||
class nubus_slot_device : public device_t, public device_slot_interface
|
// ======================> device_nubus_card_interface
|
||||||
|
|
||||||
|
// class representing interface-specific live nubus card
|
||||||
|
class device_nubus_card_interface : public device_interface
|
||||||
|
{
|
||||||
|
friend class nubus_device;
|
||||||
|
template <class ElementType> friend class simple_list;
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
virtual ~device_nubus_card_interface();
|
||||||
|
|
||||||
|
device_nubus_card_interface *next() const { return m_next; }
|
||||||
|
|
||||||
|
void set_nubus_device();
|
||||||
|
|
||||||
|
// helper functions for card devices
|
||||||
|
void install_declaration_rom(device_t *dev, const char *romregion, bool mirror_all_mb = false, bool reverse_rom = false);
|
||||||
|
void install_bank(offs_t start, offs_t end, const char *tag, uint8_t *data);
|
||||||
|
|
||||||
|
uint32_t get_slotspace() { return 0xf0000000 | (m_slot<<24); }
|
||||||
|
uint32_t get_super_slotspace() { return m_slot<<28; }
|
||||||
|
|
||||||
|
void raise_slot_irq();
|
||||||
|
void lower_slot_irq();
|
||||||
|
|
||||||
|
// inline configuration
|
||||||
|
void set_nubus_tag(nubus_device *nubus, const char *slottag) { m_nubus = nubus; m_nubus_slottag = slottag; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
device_nubus_card_interface(const machine_config &mconfig, device_t &device);
|
||||||
|
virtual void interface_pre_start() override;
|
||||||
|
|
||||||
|
int slotno() const { assert(m_nubus); return m_slot; }
|
||||||
|
nubus_device &nubus() { assert(m_nubus); return *m_nubus; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
nubus_device *m_nubus;
|
||||||
|
const char *m_nubus_slottag;
|
||||||
|
int m_slot;
|
||||||
|
std::vector<uint8_t> m_declaration_rom;
|
||||||
|
device_nubus_card_interface *m_next;
|
||||||
|
};
|
||||||
|
|
||||||
|
class nubus_slot_device : public device_t, public device_single_card_slot_interface<device_nubus_card_interface>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
template <typename T>
|
template <typename T, typename U>
|
||||||
nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *nbtag, T &&opts, const char *dflt)
|
nubus_slot_device(const machine_config &mconfig, T &&tag, device_t *owner, const char *nbtag, U &&opts, const char *dflt)
|
||||||
: nubus_slot_device(mconfig, tag, owner, (uint32_t)0)
|
: nubus_slot_device(mconfig, tag, owner, (uint32_t)0)
|
||||||
{
|
{
|
||||||
option_reset();
|
option_reset();
|
||||||
opts(*this);
|
opts(*this);
|
||||||
set_default_option(dflt);
|
set_default_option(dflt);
|
||||||
set_nubus_slot(nbtag, tag);
|
set_nubus_slot(std::forward<T>(nbtag), tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
// inline configuration
|
// inline configuration
|
||||||
void set_nubus_slot(const char *tag, const char *slottag) { m_nubus_tag = tag; m_nubus_slottag = slottag; }
|
template <typename T>
|
||||||
|
void set_nubus_slot(T &&tag, const char *slottag)
|
||||||
|
{
|
||||||
|
m_nubus.set_tag(std::forward<T>(tag));
|
||||||
|
m_nubus_slottag = slottag;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
|
virtual void device_resolve_objects() override;
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
|
|
||||||
// configuration
|
// configuration
|
||||||
const char *m_nubus_tag, *m_nubus_slottag;
|
required_device<nubus_device> m_nubus;
|
||||||
|
const char *m_nubus_slottag;
|
||||||
};
|
};
|
||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
@ -104,51 +155,18 @@ protected:
|
|||||||
simple_list<device_nubus_card_interface> m_device_list;
|
simple_list<device_nubus_card_interface> m_device_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline void device_nubus_card_interface::raise_slot_irq()
|
||||||
|
{
|
||||||
|
nubus().set_irq_line(m_slot, ASSERT_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void device_nubus_card_interface::lower_slot_irq()
|
||||||
|
{
|
||||||
|
nubus().set_irq_line(m_slot, CLEAR_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
DECLARE_DEVICE_TYPE(NUBUS, nubus_device)
|
DECLARE_DEVICE_TYPE(NUBUS, nubus_device)
|
||||||
|
|
||||||
// ======================> device_nubus_card_interface
|
|
||||||
|
|
||||||
// class representing interface-specific live nubus card
|
|
||||||
class device_nubus_card_interface : public device_interface
|
|
||||||
{
|
|
||||||
friend class nubus_device;
|
|
||||||
template <class ElementType> friend class simple_list;
|
|
||||||
public:
|
|
||||||
// construction/destruction
|
|
||||||
virtual ~device_nubus_card_interface();
|
|
||||||
|
|
||||||
device_nubus_card_interface *next() const { return m_next; }
|
|
||||||
|
|
||||||
void set_nubus_device();
|
|
||||||
|
|
||||||
// helper functions for card devices
|
|
||||||
void install_declaration_rom(device_t *dev, const char *romregion, bool mirror_all_mb = false, bool reverse_rom = false);
|
|
||||||
void install_bank(offs_t start, offs_t end, const char *tag, uint8_t *data);
|
|
||||||
|
|
||||||
uint32_t get_slotspace() { return 0xf0000000 | (m_slot<<24); }
|
|
||||||
uint32_t get_super_slotspace() { return m_slot<<28; }
|
|
||||||
|
|
||||||
void raise_slot_irq() { nubus().set_irq_line(m_slot, ASSERT_LINE); }
|
|
||||||
void lower_slot_irq() { nubus().set_irq_line(m_slot, CLEAR_LINE); }
|
|
||||||
|
|
||||||
// inline configuration
|
|
||||||
void set_nubus_tag(const char *tag, const char *slottag) { m_nubus_tag = tag; m_nubus_slottag = slottag; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
device_nubus_card_interface(const machine_config &mconfig, device_t &device);
|
|
||||||
virtual void interface_pre_start() override;
|
|
||||||
|
|
||||||
int slotno() const { assert(m_nubus); return m_slot; }
|
|
||||||
nubus_device &nubus() { assert(m_nubus); return *m_nubus; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
nubus_device *m_nubus;
|
|
||||||
const char *m_nubus_tag, *m_nubus_slottag;
|
|
||||||
int m_slot;
|
|
||||||
std::vector<uint8_t> m_declaration_rom;
|
|
||||||
device_nubus_card_interface *m_next;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // MAME_BUS_NUBUS_NUBUS_H
|
#endif // MAME_BUS_NUBUS_NUBUS_H
|
||||||
|
Loading…
Reference in New Issue
Block a user