diff options
Diffstat (limited to 'src/devices/cpu/mcs51/mcs51.h')
-rw-r--r-- | src/devices/cpu/mcs51/mcs51.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index 9651b7e77fd..13f19d3fd28 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -159,8 +159,8 @@ protected: } m_uart; /* internal uart */ /* Internal Ram */ - uint8_t *m_internal_ram; /* 128 RAM (8031/51) + 128 RAM in second bank (8032/52) */ - uint8_t *m_sfr_ram; /* 128 SFR - these are in 0x80 - 0xFF */ + required_shared_ptr<uint8_t> m_sfr_ram; /* 128 SFR - these are in 0x80 - 0xFF */ + required_shared_ptr<uint8_t> m_scratchpad; /* 128 RAM (8031/51) + 128 RAM in second bank (8032/52) */ /* SFR Callbacks */ virtual void sfr_write(size_t offset, uint8_t data); @@ -197,7 +197,6 @@ protected: void clear_current_irq(); uint8_t r_acc(); uint8_t r_psw(); - void update_ptrs(); offs_t external_ram_iaddr(offs_t offset, offs_t mem_mask); uint8_t iram_read(size_t offset); void iram_write(size_t offset, uint8_t data); @@ -496,12 +495,18 @@ public: * Internal ram 128k and security features */ -#define MCFG_DS5002FP_CONFIG(_mcon, _rpctl, _crc) \ - ds5002fp_device::set_mcon(*device, _mcon); \ - ds5002fp_device::set_rpctl(*device, _rpctl); \ - ds5002fp_device::set_crc(*device, _crc); +/* these allow the default state of RAM to be set from a region */ +#define DS5002FP_SET_MON( _mcon) \ + ROM_FILL( 0xc6, 1, _mcon) -class ds5002fp_device : public mcs51_cpu_device +#define DS5002FP_SET_RPCTL( _rpctl) \ + ROM_FILL( 0xd8, 1, _rpctl) + +#define DS5002FP_SET_CRCR( _crcr) \ + ROM_FILL( 0xc1, 1, _crcr) + + +class ds5002fp_device : public mcs51_cpu_device, public device_nvram_interface { public: // construction/destruction @@ -511,12 +516,20 @@ public: static void set_rpctl(device_t &device, uint8_t rpctl) { downcast<ds5002fp_device &>(device).m_ds5002fp.rpctl = rpctl; } static void set_crc(device_t &device, uint8_t crc) { downcast<ds5002fp_device &>(device).m_ds5002fp.crc = crc; } + // 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; + protected: virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; /* SFR Callbacks */ virtual void sfr_write(size_t offset, uint8_t data) override; virtual uint8_t sfr_read(size_t offset) override; + +private: + optional_memory_region m_region; }; |