mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
rp5c15.c: converted to devcb2 (nw)
This commit is contained in:
parent
59d013bc52
commit
7721c04301
@ -130,7 +130,7 @@ inline void rp5c15_device::set_alarm_line()
|
||||
{
|
||||
if (LOG) logerror("RP5C15 '%s' Alarm %u\n", tag(), alarm);
|
||||
|
||||
m_out_alarm_func(alarm);
|
||||
m_out_alarm_cb(alarm);
|
||||
m_alarm = alarm;
|
||||
}
|
||||
}
|
||||
@ -188,6 +188,8 @@ inline void rp5c15_device::check_alarm()
|
||||
rp5c15_device::rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, RP5C15, "RP5C15", tag, owner, clock, "rp5c15", __FILE__),
|
||||
device_rtc_interface(mconfig, *this),
|
||||
m_out_alarm_cb(*this),
|
||||
m_out_clkout_cb(*this),
|
||||
m_alarm(1),
|
||||
m_alarm_on(1),
|
||||
m_1hz(1),
|
||||
@ -196,29 +198,6 @@ rp5c15_device::rp5c15_device(const machine_config &mconfig, const char *tag, dev
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void rp5c15_device::device_config_complete()
|
||||
{
|
||||
// inherit a copy of the static data
|
||||
const rp5c15_interface *intf = reinterpret_cast<const rp5c15_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<rp5c15_interface *>(this) = *intf;
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_out_alarm_cb, 0, sizeof(m_out_alarm_cb));
|
||||
memset(&m_out_clkout_cb, 0, sizeof(m_out_clkout_cb));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
@ -226,8 +205,8 @@ void rp5c15_device::device_config_complete()
|
||||
void rp5c15_device::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_out_alarm_func.resolve(m_out_alarm_cb, *this);
|
||||
m_out_clkout_func.resolve(m_out_clkout_cb, *this);
|
||||
m_out_alarm_cb.resolve_safe();
|
||||
m_out_clkout_cb.resolve_safe();
|
||||
|
||||
// allocate timers
|
||||
m_clock_timer = timer_alloc(TIMER_CLOCK);
|
||||
@ -296,7 +275,7 @@ void rp5c15_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
|
||||
case TIMER_CLKOUT:
|
||||
m_clkout = !m_clkout;
|
||||
m_out_clkout_func(m_clkout);
|
||||
m_out_clkout_cb(m_clkout);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -34,39 +34,27 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_RP5C15_ADD(_tag, _clock, _config) \
|
||||
MCFG_DEVICE_ADD((_tag), RP5C15, _clock) \
|
||||
MCFG_DEVICE_CONFIG(_config)
|
||||
|
||||
|
||||
#define RP5C15_INTERFACE(name) \
|
||||
const rp5c15_interface (name) =
|
||||
|
||||
#define MCFG_RP5C15_OUT_ALARM_CB(_devcb) \
|
||||
devcb = &rp5c15_device::set_out_alarm_callback(*device, DEVCB2_##_devcb);
|
||||
|
||||
#define MCFG_RP5C15_OUT_CLKOUT_CB(_devcb) \
|
||||
devcb = &rp5c15_device::set_out_clkout_callback(*device, DEVCB2_##_devcb);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> rp5c15_interface
|
||||
|
||||
struct rp5c15_interface
|
||||
{
|
||||
devcb_write_line m_out_alarm_cb;
|
||||
devcb_write_line m_out_clkout_cb;
|
||||
};
|
||||
|
||||
|
||||
|
||||
// ======================> rp5c15_device
|
||||
|
||||
class rp5c15_device : public device_t,
|
||||
public device_rtc_interface,
|
||||
public rp5c15_interface
|
||||
public device_rtc_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _Object> static devcb2_base &set_out_alarm_callback(device_t &device, _Object object) { return downcast<rp5c15_device &>(device).m_out_alarm_cb.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_out_clkout_callback(device_t &device, _Object object) { return downcast<rp5c15_device &>(device).m_out_clkout_cb.set_callback(object); }
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
@ -74,7 +62,6 @@ public:
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
@ -93,8 +80,8 @@ private:
|
||||
static const device_timer_id TIMER_16HZ = 1;
|
||||
static const device_timer_id TIMER_CLKOUT = 2;
|
||||
|
||||
devcb_resolved_write_line m_out_alarm_func;
|
||||
devcb_resolved_write_line m_out_clkout_func;
|
||||
devcb2_write_line m_out_alarm_cb;
|
||||
devcb2_write_line m_out_clkout_cb;
|
||||
|
||||
UINT8 m_reg[2][13]; // clock registers
|
||||
UINT8 m_ram[13]; // RAM
|
||||
|
@ -1876,17 +1876,6 @@ WRITE_LINE_MEMBER( st_state::fdc_drq_w )
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// RP5C15_INTERFACE( rtc_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
static RP5C15_INTERFACE( rtc_intf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACHINE INITIALIZATION
|
||||
//**************************************************************************
|
||||
@ -2216,7 +2205,7 @@ static MACHINE_CONFIG_START( megast, megast_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||
|
||||
// devices
|
||||
MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
|
||||
MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
|
||||
|
||||
MCFG_WD1772x_ADD(WD1772_TAG, Y2/4)
|
||||
MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(MC68901_TAG, mc68901_device, i5_w)) MCFG_DEVCB_INVERT
|
||||
@ -2377,7 +2366,7 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_DERIVED( megaste, ste )
|
||||
MCFG_CPU_MODIFY(M68000_TAG)
|
||||
MCFG_CPU_PROGRAM_MAP(megaste_map)
|
||||
MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
|
||||
MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
|
||||
MCFG_DEVICE_ADD(Z8530_TAG, SCC8530, Y2/4)
|
||||
|
||||
/* internal ram */
|
||||
|
@ -221,12 +221,6 @@ static GFXDECODE_START( lcmate2 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
static RP5C15_INTERFACE( rtc_intf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( lcmate2, lcmate2_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) // confirmed
|
||||
@ -258,7 +252,7 @@ static MACHINE_CONFIG_START( lcmate2, lcmate2_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
|
||||
/* Devices */
|
||||
MCFG_RP5C15_ADD("rtc", XTAL_32_768kHz, rtc_intf)
|
||||
MCFG_DEVICE_ADD("rtc", RP5C15, XTAL_32_768kHz)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* ROM definition */
|
||||
|
@ -2090,12 +2090,6 @@ WRITE_LINE_MEMBER(mz2500_state::mz2500_rtc_alarm_irq)
|
||||
// m_maincpu->set_input_line_and_vector(0, HOLD_LINE,drvm_irq_vector[3]);
|
||||
}
|
||||
|
||||
static RP5C15_INTERFACE( rtc_intf )
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(mz2500_state,mz2500_rtc_alarm_irq),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static Z80SIO_INTERFACE( mz2500_sio_intf )
|
||||
{
|
||||
0, 0, 0, 0,
|
||||
@ -2131,8 +2125,9 @@ static MACHINE_CONFIG_START( mz2500, mz2500_state )
|
||||
MCFG_I8255_ADD( "i8255_0", ppi8255_intf )
|
||||
MCFG_Z80PIO_ADD( "z80pio_1", 6000000, mz2500_pio1_intf )
|
||||
MCFG_Z80SIO0_ADD( "z80sio", 6000000, mz2500_sio_intf )
|
||||
MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
|
||||
|
||||
MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
|
||||
MCFG_RP5C15_OUT_ALARM_CB(WRITELINE(mz2500_state, mz2500_rtc_alarm_irq))
|
||||
|
||||
MCFG_DEVICE_ADD("pit", PIT8253, 0)
|
||||
MCFG_PIT8253_CLK0(31250)
|
||||
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(mz2500_state, pit8253_clk0_irq))
|
||||
|
@ -1444,12 +1444,6 @@ static const okim6258_interface x68k_okim6258_interface =
|
||||
OUTPUT_10BITS,
|
||||
};
|
||||
|
||||
static RP5C15_INTERFACE( rtc_intf )
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(MC68901_TAG, mc68901_device, i0_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static INPUT_PORTS_START( x68000 )
|
||||
PORT_START("ctrltype")
|
||||
PORT_CONFNAME(0x0f, 0x00, "Joystick Port 1")
|
||||
@ -1925,7 +1919,8 @@ static MACHINE_CONFIG_FRAGMENT( x68000_base )
|
||||
|
||||
MCFG_DEVICE_ADD( "scc", SCC8530, 5000000 )
|
||||
|
||||
MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
|
||||
MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
|
||||
MCFG_RP5C15_OUT_ALARM_CB(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
|
Loading…
Reference in New Issue
Block a user