summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/timekpr.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/timekpr.h')
-rw-r--r--src/devices/machine/timekpr.h33
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