summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/rp5c01.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/rp5c01.h')
-rw-r--r--src/devices/machine/rp5c01.h28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h
index f26a382db67..511663b47c0 100644
--- a/src/devices/machine/rp5c01.h
+++ b/src/devices/machine/rp5c01.h
@@ -41,7 +41,7 @@ public:
rp5c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
auto out_alarm_callback() { return m_out_alarm_cb.bind(); }
- void remove_battery() { m_battery_backed = false; }
+ void remove_battery() { m_battery_backed = false; nvram_enable_backup(false); }
uint8_t read(offs_t offset);
void write(offs_t offset, uint8_t data);
@@ -54,7 +54,6 @@ 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; }
@@ -63,22 +62,22 @@ protected:
// 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_can_write() override { return m_battery_backed; }
+ virtual bool nvram_read(util::read_stream &file) override;
+ virtual bool nvram_write(util::write_stream &file) override;
+
+ virtual TIMER_CALLBACK_MEMBER(advance_1hz_clock);
+ TIMER_CALLBACK_MEMBER(advance_16hz_clock);
-private:
inline void set_alarm_line();
+private:
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;
-
devcb_write_line m_out_alarm_cb;
bool m_battery_backed;
+protected:
uint8_t m_reg[2][13]; // clock registers
uint8_t m_ram[13]; // RAM
@@ -89,6 +88,7 @@ private:
int m_1hz; // 1 Hz condition
int m_16hz; // 16 Hz condition
+private:
// timers
emu_timer *m_clock_timer;
emu_timer *m_16hz_timer;
@@ -103,9 +103,19 @@ public:
tc8521_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
+class lh5045_device : public rp5c01_device
+{
+public:
+ // construction/destruction
+ lh5045_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+private:
+ virtual TIMER_CALLBACK_MEMBER(advance_1hz_clock) override;
+};
// device type definition
DECLARE_DEVICE_TYPE(RP5C01, rp5c01_device)
DECLARE_DEVICE_TYPE(TC8521, tc8521_device)
+DECLARE_DEVICE_TYPE(LH5045, lh5045_device)
#endif // MAME_MACHINE_RP5C01_H