mirror of
https://github.com/holub/mame
synced 2025-04-22 00:11:58 +03:00
(MESS) ep64: Cleaned up devcb2. (nw)
This commit is contained in:
parent
cae402dd2e
commit
36de1d31b2
@ -50,7 +50,8 @@ ep64_expansion_bus_slot_device::ep64_expansion_bus_slot_device(const machine_con
|
||||
device_slot_interface(mconfig, *this),
|
||||
m_write_irq(*this),
|
||||
m_write_nmi(*this),
|
||||
m_write_wait(*this)
|
||||
m_write_wait(*this),
|
||||
m_dave(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -61,7 +62,6 @@ ep64_expansion_bus_slot_device::ep64_expansion_bus_slot_device(const machine_con
|
||||
|
||||
void ep64_expansion_bus_slot_device::device_start()
|
||||
{
|
||||
m_dave = dynamic_cast<dave_device *>(m_owner->subdevice(m_dave_tag));
|
||||
m_card = dynamic_cast<device_ep64_expansion_bus_card_interface *>(get_card_device());
|
||||
|
||||
// resolve callbacks
|
||||
|
@ -67,15 +67,22 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _dave_tag, _def_slot) \
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, EP64_EXPANSION_BUS_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false) \
|
||||
downcast<ep64_expansion_bus_slot_device *>(device)->set_dave_tag(_dave_tag);
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_CALLBACKS(_irq, _nmi, _wait) \
|
||||
downcast<ep64_expansion_bus_slot_device *>(device)->set_irq_callback(DEVCB2_##_irq); \
|
||||
downcast<ep64_expansion_bus_slot_device *>(device)->set_nmi_callback(DEVCB2_##_nmi); \
|
||||
downcast<ep64_expansion_bus_slot_device *>(device)->set_wait_callback(DEVCB2_##_wait);
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \
|
||||
ep64_expansion_bus_slot_device::static_set_dave_tag(*device, "^"_tag);
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \
|
||||
devcb = &ep64_expansion_bus_slot_device::set_irq_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \
|
||||
devcb = &ep64_expansion_bus_slot_device::set_nmi_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \
|
||||
devcb = &ep64_expansion_bus_slot_device::set_wait_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
|
||||
|
||||
@ -88,7 +95,7 @@
|
||||
class device_ep64_expansion_bus_card_interface;
|
||||
|
||||
class ep64_expansion_bus_slot_device : public device_t,
|
||||
public device_slot_interface
|
||||
public device_slot_interface
|
||||
{
|
||||
friend class device_ep64_expansion_bus_card_interface;
|
||||
|
||||
@ -96,10 +103,10 @@ public:
|
||||
// construction/destruction
|
||||
ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
void set_dave_tag(const char* dave_tag) { m_dave_tag = dave_tag; }
|
||||
template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
|
||||
template<class _nmi> void set_nmi_callback(_nmi nmi) { m_write_nmi.set_callback(nmi); }
|
||||
template<class _wait> void set_wait_callback(_wait wait) { m_write_wait.set_callback(wait); }
|
||||
static void static_set_dave_tag(device_t &device, const char* tag) { downcast<ep64_expansion_bus_slot_device &>(device).m_dave.set_tag(tag); }
|
||||
template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_wait_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(object); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); }
|
||||
@ -118,8 +125,7 @@ private:
|
||||
devcb2_write_line m_write_nmi;
|
||||
devcb2_write_line m_write_wait;
|
||||
|
||||
const char *m_dave_tag;
|
||||
dave_device *m_dave;
|
||||
required_device<dave_device> m_dave;
|
||||
|
||||
device_ep64_expansion_bus_card_interface *m_card;
|
||||
};
|
||||
|
@ -26,14 +26,23 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
///*************************************************************************
|
||||
|
||||
#define MCFG_DAVE_ADD(_tag, _clock, _irq, _program_map, _io_map) \
|
||||
#define MCFG_DAVE_ADD(_tag, _clock, _program_map, _io_map) \
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") \
|
||||
MCFG_SOUND_ADD(_tag, DAVE, _clock) \
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) \
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) \
|
||||
MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, _program_map) \
|
||||
MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map) \
|
||||
downcast<dave_device *>(device)->set_irq_callback(DEVCB2_##_irq);
|
||||
MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map)
|
||||
|
||||
|
||||
#define MCFG_DAVE_IRQ_CALLBACK(_write) \
|
||||
devcb = &dave_device::set_irq_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_DAVE_LH_CALLBACK(_write) \
|
||||
devcb = &dave_device::set_lh_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_DAVE_RH_CALLBACK(_write) \
|
||||
devcb = &dave_device::set_rh_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
|
||||
|
||||
@ -50,11 +59,9 @@ class dave_device : public device_t,
|
||||
public:
|
||||
dave_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
|
||||
template<class _lh, class _rh> void set_dac_callbacks(_lh lh, _rh rh) {
|
||||
m_write_lh.set_callback(lh);
|
||||
m_write_rh.set_callback(rh);
|
||||
}
|
||||
template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_irq.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_lh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_lh.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_rh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_rh.set_callback(object); }
|
||||
|
||||
virtual DECLARE_ADDRESS_MAP(z80_program_map, 8);
|
||||
virtual DECLARE_ADDRESS_MAP(z80_io_map, 8);
|
||||
|
@ -525,18 +525,22 @@ static MACHINE_CONFIG_START( ep64, ep64_state )
|
||||
MCFG_CPU_IO_MAP(ep64_io)
|
||||
|
||||
// video hardware
|
||||
MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL_8MHz, DEVWRITELINE(DAVE_TAG, dave_device, int1_w))
|
||||
MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL_8MHz)
|
||||
MCFG_NICK_VIRQ_CALLBACK(DEVWRITELINE(DAVE_TAG, dave_device, int1_w))
|
||||
|
||||
// sound hardware
|
||||
MCFG_DAVE_ADD(DAVE_TAG, XTAL_8MHz, INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), dave_64k_mem, dave_io)
|
||||
MCFG_DAVE_ADD(DAVE_TAG, XTAL_8MHz, dave_64k_mem, dave_io)
|
||||
MCFG_DAVE_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
|
||||
|
||||
// devices
|
||||
MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, DAVE_TAG, NULL)
|
||||
MCFG_EP64_EXPANSION_BUS_CALLBACKS(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), INPUTLINE(Z80_TAG, INPUT_LINE_NMI), INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT))
|
||||
MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, NULL)
|
||||
MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(DAVE_TAG)
|
||||
MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
|
||||
MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI))
|
||||
MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT))
|
||||
|
||||
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "image")
|
||||
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ep64_state, write_centronics_busy))
|
||||
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
|
@ -22,7 +22,7 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
///*************************************************************************
|
||||
|
||||
#define MCFG_NICK_ADD(_tag, _screen_tag, _clock, _virq) \
|
||||
#define MCFG_NICK_ADD(_tag, _screen_tag, _clock) \
|
||||
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
|
||||
MCFG_SCREEN_REFRESH_RATE(50) \
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
|
||||
@ -30,8 +30,11 @@
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, ENTERPRISE_SCREEN_WIDTH-1, 0, ENTERPRISE_SCREEN_HEIGHT-1) \
|
||||
MCFG_SCREEN_UPDATE_DEVICE(_tag, nick_device, screen_update) \
|
||||
MCFG_DEVICE_ADD(_tag, NICK, _clock) \
|
||||
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
|
||||
downcast<nick_device *>(device)->set_virq_callback(DEVCB2_##_virq);
|
||||
MCFG_VIDEO_SET_SCREEN(_screen_tag)
|
||||
|
||||
|
||||
#define MCFG_NICK_VIRQ_CALLBACK(_write) \
|
||||
devcb = &nick_device::set_virq_wr_callback(*device, DEVCB2_##_write);
|
||||
|
||||
|
||||
/* there are 64us per line, although in reality
|
||||
@ -73,7 +76,7 @@ public:
|
||||
// construction/destruction
|
||||
nick_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _virq> void set_virq_callback(_virq virq) { m_write_virq.set_callback(virq); }
|
||||
template<class _Object> static devcb2_base &set_virq_wr_callback(device_t &device, _Object object) { return downcast<nick_device &>(device).m_write_virq.set_callback(object); }
|
||||
|
||||
virtual DECLARE_ADDRESS_MAP(vram_map, 8);
|
||||
virtual DECLARE_ADDRESS_MAP(vio_map, 8);
|
||||
|
Loading…
Reference in New Issue
Block a user