summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/rp5c15.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/rp5c15.h')
-rw-r--r--src/devices/machine/rp5c15.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h
index 6d4e161ac3e..6630260fc8c 100644
--- a/src/devices/machine/rp5c15.h
+++ b/src/devices/machine/rp5c15.h
@@ -34,29 +34,31 @@ public:
auto alarm() { return m_out_alarm_cb.bind(); }
auto clkout() { return m_out_clkout_cb.bind(); }
+ void set_year_offset(int year) { m_year_offset = year; }
uint8_t read(offs_t offset);
void write(offs_t offset, uint8_t data);
+ virtual void set_current_time(const system_time &systime) override;
+
protected:
// device-level overrides
virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// device_rtc_interface overrides
virtual bool rtc_feature_leap_year() const override { return true; }
virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override;
+ TIMER_CALLBACK_MEMBER(advance_1hz_clock);
+ TIMER_CALLBACK_MEMBER(advance_16hz_clock);
+ TIMER_CALLBACK_MEMBER(advance_output_clock);
+
private:
inline void set_alarm_line();
inline int read_counter(int counter);
inline void write_counter(int counter, int value);
inline void check_alarm();
- static const device_timer_id TIMER_CLOCK = 0;
- static const device_timer_id TIMER_16HZ = 1;
- static const device_timer_id TIMER_CLKOUT = 2;
-
devcb_write_line m_out_alarm_cb;
devcb_write_line m_out_clkout_cb;
@@ -71,6 +73,8 @@ private:
int m_16hz; // 16 Hz condition
int m_clkout; // clock output
+ int m_year_offset = 0;
+
// timers
emu_timer *m_clock_timer;
emu_timer *m_16hz_timer;