diff options
Diffstat (limited to 'src/devices/cpu/mcs51/mcs51.h')
| -rw-r--r-- | src/devices/cpu/mcs51/mcs51.h | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index da4ab9d4908..ae81cee259a 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -45,9 +45,6 @@ public: template <unsigned N> auto port_in_cb() { return m_port_in_cb[N].bind(); } template <unsigned N> auto port_out_cb() { return m_port_out_cb[N].bind(); } - void program_internal(address_map &map) ATTR_COLD; - void io_internal(address_map &map) ATTR_COLD; - protected: enum { AS_INTD = 4, @@ -56,7 +53,6 @@ protected: // construction/destruction mcs51_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int io_width, uint8_t features = 0); - mcs51_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program_map, address_map_constructor io_map, int program_width, int io_width, uint8_t features = 0); // device-level overrides virtual void device_start() override ATTR_COLD; @@ -82,6 +78,7 @@ protected: address_space_config m_program_config; address_space_config m_data_config; address_space_config m_intd_config; + address_space_config m_inti_config; // Internal stuff uint16_t m_ppc; // previous pc @@ -126,19 +123,25 @@ protected: } m_uart; // internal uart // Internal Ram - 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) + memory_share_creator<uint8_t> m_sfr_ram; // 128 SFR - these are in 0x80 - 0xFF + required_shared_ptr<uint8_t> m_internal_ram; // 128 RAM (8031/51) + 128 RAM in second bank (8032/52) + + void program_map(address_map &map) ATTR_COLD; + void intd_map(address_map &map) ATTR_COLD; + void inti_map(address_map &map) ATTR_COLD; + virtual void sfr_map(address_map &map) ATTR_COLD; // SFR Callbacks - virtual void sfr_write(size_t offset, uint8_t data); - virtual uint8_t sfr_read(size_t offset); + virtual void sfr_write(offs_t offset, uint8_t data); + virtual uint8_t sfr_read(offs_t offset); void transmit(int state); // Memory spaces memory_access<16, 0, 0, ENDIANNESS_LITTLE>::cache m_program; memory_access<18, 0, 0, ENDIANNESS_LITTLE>::specific m_data; - memory_access< 9, 0, 0, ENDIANNESS_LITTLE>::specific m_intd; + memory_access< 8, 0, 0, ENDIANNESS_LITTLE>::specific m_intd; + memory_access< 8, 0, 0, ENDIANNESS_LITTLE>::specific m_inti; devcb_read8::array<4> m_port_in_cb; devcb_write8::array<4> m_port_out_cb; @@ -161,14 +164,12 @@ protected: static const uint8_t mcs51_cycles[256]; - uint8_t iram_iread(offs_t a); - void iram_iwrite(offs_t a, uint8_t d); void clear_current_irq(); uint8_t r_acc(); uint8_t r_psw(); virtual 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); + uint8_t iram_r(offs_t offset); + void iram_w(offs_t offset, uint8_t data); void push_pc(); void pop_pc(); void set_parity(); @@ -296,7 +297,7 @@ protected: void xrl_a_ir(uint8_t r); void xrl_a_r(uint8_t r); void illegal(uint8_t r); - uint8_t ds5002fp_protected(size_t offset, uint8_t data, uint8_t ta_mask, uint8_t mask); + uint8_t ds5002fp_protected(offs_t offset, uint8_t data, uint8_t ta_mask, uint8_t mask); }; @@ -384,8 +385,8 @@ protected: virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; // SFR Callbacks - virtual void sfr_write(size_t offset, uint8_t data) override; - virtual uint8_t sfr_read(size_t offset) override; + virtual void sfr_write(offs_t offset, uint8_t data) override; + virtual uint8_t sfr_read(offs_t offset) override; }; class i8032_device : public i8052_device @@ -445,8 +446,8 @@ protected: virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; // SFR Callbacks - virtual void sfr_write(size_t offset, uint8_t data) override; - virtual uint8_t sfr_read(size_t offset) override; + virtual void sfr_write(offs_t offset, uint8_t data) override; + virtual uint8_t sfr_read(offs_t offset) override; }; class i80c32_device : public i80c52_device @@ -624,8 +625,8 @@ protected: virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; // SFR Callbacks - virtual void sfr_write(size_t offset, uint8_t data) override; - virtual uint8_t sfr_read(size_t offset) override; + virtual void sfr_write(offs_t offset, uint8_t data) override; + virtual uint8_t sfr_read(offs_t offset) override; uint8_t handle_rnr(); bool is_rnr_ready(); |
