diff options
Diffstat (limited to 'src/devices/machine/timekpr.h')
-rw-r--r-- | src/devices/machine/timekpr.h | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/devices/machine/timekpr.h b/src/devices/machine/timekpr.h index def60c02059..653a73060ea 100644 --- a/src/devices/machine/timekpr.h +++ b/src/devices/machine/timekpr.h @@ -12,6 +12,9 @@ - MK48T08 - MK48T12 + Dallas clones that have the same functional interface: + - DS1643 + ***************************************************************************/ #ifndef MAME_MACHINE_TIMEKPR_H @@ -19,7 +22,7 @@ #pragma once - +#include "dirtc.h" //************************************************************************** @@ -29,7 +32,7 @@ // ======================> timekeeper_device -class timekeeper_device : public device_t, public device_nvram_interface +class timekeeper_device : public device_t, public device_nvram_interface, public device_rtc_interface { public: void write(offs_t offset, u8 data); @@ -44,15 +47,20 @@ protected: timekeeper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u32 size); // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; + + // device_rtc_interface overrides + virtual bool rtc_feature_y2k() const override { return m_offset_century != -1; } + 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(timer_tick); TIMER_CALLBACK_MEMBER(watchdog_callback); devcb_write_line m_reset_cb; devcb_write_line m_irq_cb; @@ -77,6 +85,7 @@ private: emu_timer* m_watchdog_timer; attotime m_watchdog_delay; + protected: u32 const m_size; s32 m_offset_watchdog; @@ -114,6 +123,15 @@ class m48t58_device : public timekeeper_device { public: m48t58_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0); + +protected: + m48t58_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); +}; + +class ds1643_device : public m48t58_device +{ +public: + ds1643_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0); }; class mk48t08_device : public timekeeper_device @@ -135,5 +153,6 @@ DECLARE_DEVICE_TYPE(M48T37, m48t37_device) DECLARE_DEVICE_TYPE(M48T58, m48t58_device) DECLARE_DEVICE_TYPE(MK48T08, mk48t08_device) DECLARE_DEVICE_TYPE(MK48T12, mk48t12_device) +DECLARE_DEVICE_TYPE(DS1643, ds1643_device) #endif // MAME_MACHINE_TIMEKPR_H |