Previous 199869 Revisions Next

r28710 Wednesday 19th March, 2014 at 12:25:59 UTC by Osso
rp5c15.c: converted to devcb2 (nw)
[src/emu/machine]rp5c15.c rp5c15.h
[src/mess/drivers]atarist.c lcmate2.c mz2500.c x68k.c

trunk/src/emu/machine/rp5c15.c
r28709r28710
130130   {
131131      if (LOG) logerror("RP5C15 '%s' Alarm %u\n", tag(), alarm);
132132
133      m_out_alarm_func(alarm);
133      m_out_alarm_cb(alarm);
134134      m_alarm = alarm;
135135   }
136136}
r28709r28710
188188rp5c15_device::rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
189189   : device_t(mconfig, RP5C15, "RP5C15", tag, owner, clock, "rp5c15", __FILE__),
190190      device_rtc_interface(mconfig, *this),
191      m_out_alarm_cb(*this),
192      m_out_clkout_cb(*this),
191193      m_alarm(1),
192194      m_alarm_on(1),
193195      m_1hz(1),
r28709r28710
196198{
197199}
198200
199
200201//-------------------------------------------------
201//  device_config_complete - perform any
202//  operations now that the configuration is
203//  complete
204//-------------------------------------------------
205
206void rp5c15_device::device_config_complete()
207{
208   // inherit a copy of the static data
209   const rp5c15_interface *intf = reinterpret_cast<const rp5c15_interface *>(static_config());
210   if (intf != NULL)
211      *static_cast<rp5c15_interface *>(this) = *intf;
212
213   // or initialize to defaults if none provided
214   else
215   {
216      memset(&m_out_alarm_cb, 0, sizeof(m_out_alarm_cb));
217      memset(&m_out_clkout_cb, 0, sizeof(m_out_clkout_cb));
218   }
219}
220
221
222//-------------------------------------------------
223202//  device_start - device-specific startup
224203//-------------------------------------------------
225204
226205void rp5c15_device::device_start()
227206{
228207   // resolve callbacks
229   m_out_alarm_func.resolve(m_out_alarm_cb, *this);
230   m_out_clkout_func.resolve(m_out_clkout_cb, *this);
208   m_out_alarm_cb.resolve_safe();
209   m_out_clkout_cb.resolve_safe();
231210
232211   // allocate timers
233212   m_clock_timer = timer_alloc(TIMER_CLOCK);
r28709r28710
296275
297276   case TIMER_CLKOUT:
298277      m_clkout = !m_clkout;
299      m_out_clkout_func(m_clkout);
278      m_out_clkout_cb(m_clkout);
300279      break;
301280   }
302281}
trunk/src/emu/machine/rp5c15.h
r28709r28710
3434//  INTERFACE CONFIGURATION MACROS
3535//**************************************************************************
3636
37#define MCFG_RP5C15_ADD(_tag, _clock, _config) \
38   MCFG_DEVICE_ADD((_tag), RP5C15, _clock) \
39   MCFG_DEVICE_CONFIG(_config)
37#define MCFG_RP5C15_OUT_ALARM_CB(_devcb) \
38   devcb = &rp5c15_device::set_out_alarm_callback(*device, DEVCB2_##_devcb);
4039
40#define MCFG_RP5C15_OUT_CLKOUT_CB(_devcb) \
41   devcb = &rp5c15_device::set_out_clkout_callback(*device, DEVCB2_##_devcb);
4142
42#define RP5C15_INTERFACE(name) \
43   const rp5c15_interface (name) =
44
45
46
4743//**************************************************************************
4844//  TYPE DEFINITIONS
4945//**************************************************************************
5046
51// ======================> rp5c15_interface
52
53struct rp5c15_interface
54{
55   devcb_write_line        m_out_alarm_cb;
56   devcb_write_line        m_out_clkout_cb;
57};
58
59
60
6147// ======================> rp5c15_device
6248
6349class rp5c15_device :   public device_t,
64                  public device_rtc_interface,
65                  public rp5c15_interface
50                  public device_rtc_interface
6651{
6752public:
6853   // construction/destruction
6954   rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
55   
56   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); }
57   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); }
7058
7159   DECLARE_READ8_MEMBER( read );
7260   DECLARE_WRITE8_MEMBER( write );
r28709r28710
7462
7563protected:
7664   // device-level overrides
77   virtual void device_config_complete();
7865   virtual void device_start();
7966   virtual void device_reset();
8067   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
r28709r28710
9380   static const device_timer_id TIMER_16HZ = 1;
9481   static const device_timer_id TIMER_CLKOUT = 2;
9582
96   devcb_resolved_write_line   m_out_alarm_func;
97   devcb_resolved_write_line   m_out_clkout_func;
83   devcb2_write_line        m_out_alarm_cb;
84   devcb2_write_line        m_out_clkout_cb;
9885
9986   UINT8 m_reg[2][13];         // clock registers
10087   UINT8 m_ram[13];            // RAM
trunk/src/mess/drivers/atarist.c
r28709r28710
18761876}
18771877
18781878
1879//-------------------------------------------------
1880//  RP5C15_INTERFACE( rtc_intf )
1881//-------------------------------------------------
1882
1883static RP5C15_INTERFACE( rtc_intf )
1884{
1885   DEVCB_NULL,
1886   DEVCB_NULL
1887};
1888
1889
18901879//**************************************************************************
18911880//  MACHINE INITIALIZATION
18921881//**************************************************************************
r28709r28710
22162205   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
22172206
22182207   // devices
2219   MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
2208   MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
22202209
22212210   MCFG_WD1772x_ADD(WD1772_TAG, Y2/4)
22222211   MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(MC68901_TAG, mc68901_device, i5_w)) MCFG_DEVCB_INVERT
r28709r28710
23772366static MACHINE_CONFIG_DERIVED( megaste, ste )
23782367   MCFG_CPU_MODIFY(M68000_TAG)
23792368   MCFG_CPU_PROGRAM_MAP(megaste_map)
2380   MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
2369   MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
23812370   MCFG_DEVICE_ADD(Z8530_TAG, SCC8530, Y2/4)
23822371
23832372   /* internal ram */
trunk/src/mess/drivers/mz2500.c
r28709r28710
20902090//      m_maincpu->set_input_line_and_vector(0, HOLD_LINE,drvm_irq_vector[3]);
20912091}
20922092
2093static RP5C15_INTERFACE( rtc_intf )
2094{
2095   DEVCB_DRIVER_LINE_MEMBER(mz2500_state,mz2500_rtc_alarm_irq),
2096   DEVCB_NULL
2097};
2098
20992093static Z80SIO_INTERFACE( mz2500_sio_intf )
21002094{
21012095   0, 0, 0, 0,
r28709r28710
21312125   MCFG_I8255_ADD( "i8255_0", ppi8255_intf )
21322126   MCFG_Z80PIO_ADD( "z80pio_1", 6000000, mz2500_pio1_intf )
21332127   MCFG_Z80SIO0_ADD( "z80sio", 6000000, mz2500_sio_intf )
2134   MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
2135
2128   MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
2129   MCFG_RP5C15_OUT_ALARM_CB(WRITELINE(mz2500_state, mz2500_rtc_alarm_irq))
2130   
21362131   MCFG_DEVICE_ADD("pit", PIT8253, 0)
21372132   MCFG_PIT8253_CLK0(31250)
21382133   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(mz2500_state, pit8253_clk0_irq))
trunk/src/mess/drivers/lcmate2.c
r28709r28710
221221GFXDECODE_END
222222
223223
224static RP5C15_INTERFACE( rtc_intf )
225{
226   DEVCB_NULL,
227   DEVCB_NULL
228};
229
230224static MACHINE_CONFIG_START( lcmate2, lcmate2_state )
231225   /* basic machine hardware */
232226   MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) // confirmed
r28709r28710
258252   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
259253
260254   /* Devices */
261   MCFG_RP5C15_ADD("rtc", XTAL_32_768kHz, rtc_intf)
255   MCFG_DEVICE_ADD("rtc", RP5C15, XTAL_32_768kHz)
262256MACHINE_CONFIG_END
263257
264258/* ROM definition */
trunk/src/mess/drivers/x68k.c
r28709r28710
14441444   OUTPUT_10BITS,
14451445};
14461446
1447static RP5C15_INTERFACE( rtc_intf )
1448{
1449   DEVCB_DEVICE_LINE_MEMBER(MC68901_TAG, mc68901_device, i0_w),
1450   DEVCB_NULL
1451};
1452
14531447static INPUT_PORTS_START( x68000 )
14541448   PORT_START("ctrltype")
14551449   PORT_CONFNAME(0x0f, 0x00, "Joystick Port 1")
r28709r28710
19251919
19261920   MCFG_DEVICE_ADD( "scc", SCC8530, 5000000 )
19271921
1928   MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf)
1922   MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz)
1923   MCFG_RP5C15_OUT_ALARM_CB(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
19291924
19301925   /* video hardware */
19311926   MCFG_SCREEN_ADD("screen", RASTER)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team