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