diff options
Diffstat (limited to 'src/devices/cpu/upd7725/upd7725.h')
-rw-r--r-- | src/devices/cpu/upd7725/upd7725.h | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h index 0ebb4338f8d..d77e3620dcf 100644 --- a/src/devices/cpu/upd7725/upd7725.h +++ b/src/devices/cpu/upd7725/upd7725.h @@ -36,25 +36,25 @@ public: auto p0() { return m_out_p0_cb.bind(); } auto p1() { return m_out_p1_cb.bind(); } - uint8_t snesdsp_read(bool mode); - void snesdsp_write(bool mode, uint8_t data); + uint8_t status_r(); + uint8_t data_r(); + void data_w(uint8_t data); protected: // construction/destruction necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits); - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + // device_t implementation + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; - // device_execute_interface overrides - virtual uint32_t execute_min_cycles() const override; - virtual uint32_t execute_max_cycles() const override; - virtual uint32_t execute_input_lines() const override; + // device_execute_interface implementation + virtual uint32_t execute_min_cycles() const noexcept override; + virtual uint32_t execute_max_cycles() const noexcept override; virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; - // device_memory_interface overrides + // device_memory_interface implementation virtual space_config_vector memory_space_config() const override; // device_state_interface overrides @@ -62,7 +62,7 @@ protected: virtual void state_export(const device_state_entry &entry) override; virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; - // device_disasm_interface overrides + // device_disasm_interface implementation virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; // inline data @@ -75,12 +75,12 @@ private: { bool s1, s0, c, z, ov1, ov0; - inline operator unsigned() const + operator unsigned() const { - return (s1 << 5) + (s0 << 4) + (c << 3) + (z << 2) + (ov1 << 1) + (ov0 << 0); + return (s1 << 5) | (s0 << 4) | (c << 3) | (z << 2) | (ov1 << 1) | (ov0 << 0); } - inline unsigned operator=(unsigned d) + unsigned operator=(unsigned d) { s1 = d & 0x20; s0 = d & 0x10; c = d & 0x08; z = d & 0x04; ov1 = d & 0x02; ov0 = d & 0x01; return d; @@ -91,14 +91,14 @@ private: { bool rqm, usf1, usf0, drs, dma, drc, soc, sic, ei, p1, p0; - inline operator unsigned() const + operator unsigned() const { - return (rqm << 15) + (usf1 << 14) + (usf0 << 13) + (drs << 12) - + (dma << 11) + (drc << 10) + (soc << 9) + (sic << 8) - + (ei << 7) + (p1 << 1) + (p0 << 0); + return (rqm << 15) | (usf1 << 14) | (usf0 << 13) | (drs << 12) + | (dma << 11) | (drc << 10) | (soc << 9) | (sic << 8) + | (ei << 7) | (p1 << 1) | (p0 << 0); } - inline unsigned operator=(unsigned d) + unsigned operator=(unsigned d) { rqm = d & 0x8000; usf1 = d & 0x4000; usf0 = d & 0x2000; drs = d & 0x1000; dma = d & 0x0800; drc = d & 0x0400; soc = d & 0x0200; sic = d & 0x0100; @@ -144,8 +144,9 @@ private: // 1 = next opcode is the first half of int firing 'NOP' // 2 = next opcode is the second half of int firing 'CALL 0100' int m_irq_firing; - address_space *m_program, *m_data; - memory_access_cache<2, -2, ENDIANNESS_BIG> *m_cache; + memory_access<14, 2, -2, ENDIANNESS_BIG>::cache m_cache; + memory_access<14, 2, -2, ENDIANNESS_BIG>::specific m_program; + memory_access<12, 1, -1, ENDIANNESS_BIG>::specific m_data; protected: devcb_read_line m_in_int_cb; @@ -174,8 +175,11 @@ public: // construction/destruction upd96050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - uint16_t dataram_r(uint16_t addr) { return dataRAM[addr]; } - void dataram_w(uint16_t addr, uint16_t data) { dataRAM[addr] = data; } + uint16_t dataram_r(uint16_t addr) { return dataRAM[addr & 0x07ff]; } + void dataram_w(uint16_t addr, uint16_t data, uint16_t mem_mask = uint16_t(~0)) + { + COMBINE_DATA(&dataRAM[addr & 0x07ff]); + } }; // device type definition |