summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mc68hc11/mc68hc11.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mc68hc11/mc68hc11.h')
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index 9ad9a84492d..01e2477c17b 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
@@ -20,7 +20,7 @@ DECLARE_DEVICE_TYPE(MC68HC11F1, mc68hc11f1_device)
DECLARE_DEVICE_TYPE(MC68HC11K1, mc68hc11k1_device)
DECLARE_DEVICE_TYPE(MC68HC11M0, mc68hc11m0_device)
-class mc68hc11_cpu_device : public cpu_device
+class mc68hc11_cpu_device : public cpu_device, public device_nvram_interface
{
public:
// port configuration
@@ -51,6 +51,8 @@ public:
auto in_spi2_data_callback() { return m_spi2_data_input_cb.bind(); }
auto out_spi2_data_callback() { return m_spi2_data_output_cb.bind(); }
+ void set_default_config(uint8_t data) { assert(!configured()); m_config = data & m_config_mask; }
+
protected:
mc68hc11_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint16_t ram_size, uint16_t reg_block_size, uint16_t rom_size, uint16_t eeprom_size, uint8_t init_value, uint8_t config_mask, uint8_t option_mask);
@@ -71,6 +73,12 @@ protected:
// device_memory_interface overrides
virtual space_config_vector memory_space_config() const override;
+ // device_nvram_interface overrides
+ virtual bool nvram_can_write() override;
+ virtual bool nvram_read(util::read_stream &file) override;
+ virtual bool nvram_write(util::write_stream &file) override;
+ virtual void nvram_default() override;
+
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -117,6 +125,8 @@ protected:
void config_w(uint8_t data);
uint8_t init_r();
void init_w(uint8_t data);
+ uint8_t init2_r();
+ void init2_w(uint8_t data);
uint8_t option_r();
void option_w(uint8_t data);
uint8_t scbd_r(offs_t offset);
@@ -169,6 +179,8 @@ private:
memory_view m_ram_view;
memory_view m_reg_view;
+ memory_view m_eeprom_view;
+ optional_shared_ptr<uint8_t> m_eeprom_data;
const uint16_t m_internal_ram_size;
const uint16_t m_reg_block_size; // size of internal I/O space
@@ -192,6 +204,7 @@ private:
uint8_t m_tmsk2;
uint8_t m_pactl;
uint8_t m_init;
+ uint8_t m_init2;
protected:
uint8_t m_config;
@@ -627,8 +640,6 @@ public:
mc68hc11m0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- virtual void device_reset() override;
-
virtual void mc68hc11_reg_map(memory_view::memory_view_entry &block, offs_t base) override;
};