mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
z88cart_slot_device: converted to devcb2 (nw)
This commit is contained in:
parent
8f416aa020
commit
e88c33c2c7
@ -59,7 +59,8 @@ device_z88cart_interface::~device_z88cart_interface()
|
|||||||
z88cart_slot_device::z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
z88cart_slot_device::z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||||
device_t(mconfig, Z88CART_SLOT, "Z88 Cartridge Slot", tag, owner, clock, "z88cart_slot", __FILE__),
|
device_t(mconfig, Z88CART_SLOT, "Z88 Cartridge Slot", tag, owner, clock, "z88cart_slot", __FILE__),
|
||||||
device_image_interface(mconfig, *this),
|
device_image_interface(mconfig, *this),
|
||||||
device_slot_interface(mconfig, *this)
|
device_slot_interface(mconfig, *this),
|
||||||
|
m_out_flp_cb(*this)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +81,7 @@ void z88cart_slot_device::device_start()
|
|||||||
m_cart = dynamic_cast<device_z88cart_interface *>(get_card_device());
|
m_cart = dynamic_cast<device_z88cart_interface *>(get_card_device());
|
||||||
|
|
||||||
// resolve callbacks
|
// resolve callbacks
|
||||||
m_out_flp_func.resolve(m_out_flp_cb, *this);
|
m_out_flp_cb.resolve_safe();
|
||||||
|
|
||||||
m_flp_timer = timer_alloc(TIMER_FLP_CLEAR);
|
m_flp_timer = timer_alloc(TIMER_FLP_CLEAR);
|
||||||
m_flp_timer->reset();
|
m_flp_timer->reset();
|
||||||
@ -94,19 +95,6 @@ void z88cart_slot_device::device_start()
|
|||||||
|
|
||||||
void z88cart_slot_device::device_config_complete()
|
void z88cart_slot_device::device_config_complete()
|
||||||
{
|
{
|
||||||
// inherit a copy of the static data
|
|
||||||
const z88cart_interface *intf = reinterpret_cast<const z88cart_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
{
|
|
||||||
*static_cast<z88cart_interface *>(this) = *intf;
|
|
||||||
}
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(&m_out_flp_cb, 0, sizeof(m_out_flp_cb));
|
|
||||||
}
|
|
||||||
|
|
||||||
// set brief and instance name
|
// set brief and instance name
|
||||||
update_names();
|
update_names();
|
||||||
}
|
}
|
||||||
@ -121,7 +109,7 @@ void z88cart_slot_device::device_timer(emu_timer &timer, device_timer_id id, int
|
|||||||
if (id == TIMER_FLP_CLEAR)
|
if (id == TIMER_FLP_CLEAR)
|
||||||
{
|
{
|
||||||
// close the flap
|
// close the flap
|
||||||
m_out_flp_func(CLEAR_LINE);
|
m_out_flp_cb(CLEAR_LINE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,7 +142,7 @@ bool z88cart_slot_device::call_load()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// open the flap
|
// open the flap
|
||||||
m_out_flp_func(ASSERT_LINE);
|
m_out_flp_cb(ASSERT_LINE);
|
||||||
|
|
||||||
// setup the timer for close the flap
|
// setup the timer for close the flap
|
||||||
m_flp_timer->adjust(CLOSE_FLAP_TIME);
|
m_flp_timer->adjust(CLOSE_FLAP_TIME);
|
||||||
@ -173,7 +161,7 @@ void z88cart_slot_device::call_unload()
|
|||||||
memset(m_cart->get_cart_base(), 0xff, m_cart->get_cart_size());
|
memset(m_cart->get_cart_base(), 0xff, m_cart->get_cart_size());
|
||||||
|
|
||||||
// open the flap
|
// open the flap
|
||||||
m_out_flp_func(ASSERT_LINE);
|
m_out_flp_cb(ASSERT_LINE);
|
||||||
|
|
||||||
// setup the timer for close the flap
|
// setup the timer for close the flap
|
||||||
m_flp_timer->adjust(CLOSE_FLAP_TIME);
|
m_flp_timer->adjust(CLOSE_FLAP_TIME);
|
||||||
|
@ -58,14 +58,6 @@
|
|||||||
TYPE DEFINITIONS
|
TYPE DEFINITIONS
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
// ======================> z88cart_interface
|
|
||||||
|
|
||||||
struct z88cart_interface
|
|
||||||
{
|
|
||||||
devcb_write_line m_out_flp_cb;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ======================> device_z88cart_interface
|
// ======================> device_z88cart_interface
|
||||||
|
|
||||||
class device_z88cart_interface : public device_slot_card_interface
|
class device_z88cart_interface : public device_slot_card_interface
|
||||||
@ -86,7 +78,6 @@ public:
|
|||||||
// ======================> z88cart_slot_device
|
// ======================> z88cart_slot_device
|
||||||
|
|
||||||
class z88cart_slot_device : public device_t,
|
class z88cart_slot_device : public device_t,
|
||||||
public z88cart_interface,
|
|
||||||
public device_image_interface,
|
public device_image_interface,
|
||||||
public device_slot_interface
|
public device_slot_interface
|
||||||
{
|
{
|
||||||
@ -95,6 +86,8 @@ public:
|
|||||||
z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
virtual ~z88cart_slot_device();
|
virtual ~z88cart_slot_device();
|
||||||
|
|
||||||
|
template<class _Object> static devcb2_base &set_out_flp_callback(device_t &device, _Object object) { return downcast<z88cart_slot_device &>(device).m_out_flp_cb.set_callback(object); }
|
||||||
|
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
@ -125,7 +118,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
static const device_timer_id TIMER_FLP_CLEAR = 0;
|
static const device_timer_id TIMER_FLP_CLEAR = 0;
|
||||||
|
|
||||||
devcb_resolved_write_line m_out_flp_func;
|
devcb2_write_line m_out_flp_cb;
|
||||||
device_z88cart_interface* m_cart;
|
device_z88cart_interface* m_cart;
|
||||||
emu_timer * m_flp_timer;
|
emu_timer * m_flp_timer;
|
||||||
};
|
};
|
||||||
@ -139,9 +132,7 @@ extern const device_type Z88CART_SLOT;
|
|||||||
DEVICE CONFIGURATION MACROS
|
DEVICE CONFIGURATION MACROS
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#define MCFG_Z88_CARTRIDGE_ADD(_tag,_config,_slot_intf,_def_slot) \
|
#define MCFG_Z88CART_SLOT_OUT_FLP_CB(_devcb) \
|
||||||
MCFG_DEVICE_ADD(_tag, Z88CART_SLOT, 0) \
|
devcb = &z88cart_slot_device::set_out_flp_callback(*device, DEVCB2_##_devcb);
|
||||||
MCFG_DEVICE_CONFIG(_config) \
|
|
||||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
|
|
||||||
|
|
||||||
#endif /* __Z88CART_H__ */
|
#endif /* __Z88CART_H__ */
|
||||||
|
@ -605,11 +605,6 @@ READ8_MEMBER(z88_state::kb_r)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const z88cart_interface z88_cart_interface =
|
|
||||||
{
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER("blink", upd65031_device, flp_w)
|
|
||||||
};
|
|
||||||
|
|
||||||
static SLOT_INTERFACE_START(z88_cart)
|
static SLOT_INTERFACE_START(z88_cart)
|
||||||
SLOT_INTERFACE("32krom", Z88_32K_ROM) // 32KB ROM cart
|
SLOT_INTERFACE("32krom", Z88_32K_ROM) // 32KB ROM cart
|
||||||
SLOT_INTERFACE("128krom", Z88_128K_ROM) // 128KB ROM cart
|
SLOT_INTERFACE("128krom", Z88_128K_ROM) // 128KB ROM cart
|
||||||
@ -660,9 +655,15 @@ static MACHINE_CONFIG_START( z88, z88_state )
|
|||||||
MCFG_RAM_EXTRA_OPTIONS("32K,64K,256K,512k")
|
MCFG_RAM_EXTRA_OPTIONS("32K,64K,256K,512k")
|
||||||
|
|
||||||
// cartridges
|
// cartridges
|
||||||
MCFG_Z88_CARTRIDGE_ADD("slot1", z88_cart_interface, z88_cart, NULL)
|
MCFG_DEVICE_ADD("slot1", Z88CART_SLOT, 0)
|
||||||
MCFG_Z88_CARTRIDGE_ADD("slot2", z88_cart_interface, z88_cart, NULL)
|
MCFG_DEVICE_SLOT_INTERFACE(z88_cart, NULL, false)
|
||||||
MCFG_Z88_CARTRIDGE_ADD("slot3", z88_cart_interface, z88_cart, NULL)
|
MCFG_Z88CART_SLOT_OUT_FLP_CB(DEVWRITELINE("blink", upd65031_device, flp_w))
|
||||||
|
MCFG_DEVICE_ADD("slot2", Z88CART_SLOT, 0)
|
||||||
|
MCFG_DEVICE_SLOT_INTERFACE(z88_cart, NULL, false)
|
||||||
|
MCFG_Z88CART_SLOT_OUT_FLP_CB(DEVWRITELINE("blink", upd65031_device, flp_w))
|
||||||
|
MCFG_DEVICE_ADD("slot3", Z88CART_SLOT, 0)
|
||||||
|
MCFG_DEVICE_SLOT_INTERFACE(z88_cart, NULL, false)
|
||||||
|
MCFG_Z88CART_SLOT_OUT_FLP_CB(DEVWRITELINE("blink", upd65031_device, flp_w))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user