diff options
author | Olivier Galibert <galibert@pobox.com> | 2016-12-10 12:19:24 +0100 |
---|---|---|
committer | Olivier Galibert <galibert@pobox.com> | 2016-12-10 12:20:06 +0100 |
commit | ab27807d72adf1d43b846dc5dd09d4aff9860a83 (patch) | |
tree | b5ff8681d52f8437b6ae3e9e3ecd657eeab37f63 /src/devices/cpu/tms32025/tms32025.h | |
parent | 3bee09d53481889759785779d71882089659f9fe (diff) |
tms32025: Use the standard memory interfaces [O. Galibert]
Diffstat (limited to 'src/devices/cpu/tms32025/tms32025.h')
-rw-r--r-- | src/devices/cpu/tms32025/tms32025.h | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h index bd752d5885e..61acec97dc5 100644 --- a/src/devices/cpu/tms32025/tms32025.h +++ b/src/devices/cpu/tms32025/tms32025.h @@ -82,7 +82,7 @@ class tms32025_device : public cpu_device public: // construction/destruction tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor map); // static configuration helpers template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); } @@ -92,6 +92,19 @@ public: template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); } template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); } + DECLARE_READ16_MEMBER( drr_r); + DECLARE_WRITE16_MEMBER(drr_w); + DECLARE_READ16_MEMBER( dxr_r); + DECLARE_WRITE16_MEMBER(dxr_w); + DECLARE_READ16_MEMBER( tim_r); + DECLARE_WRITE16_MEMBER(tim_w); + DECLARE_READ16_MEMBER( prd_r); + DECLARE_WRITE16_MEMBER(prd_w); + DECLARE_READ16_MEMBER( imr_r); + DECLARE_WRITE16_MEMBER(imr_w); + DECLARE_READ16_MEMBER( greg_r); + DECLARE_WRITE16_MEMBER(greg_w); + protected: // device-level overrides virtual void device_start() override; @@ -106,13 +119,8 @@ protected: // device_memory_interface overrides virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); } - virtual bool memory_read(address_spacenum spacenum, offs_t offset, int size, uint64_t &value) override; - virtual bool memory_write(address_spacenum spacenum, offs_t offset, int size, uint64_t value) override; - virtual bool memory_readop(offs_t offset, int size, uint64_t &value) override; // device_state_interface overrides - virtual void state_import(const device_state_entry &entry) override; - 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 @@ -120,11 +128,22 @@ protected: virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; -private: + void common_reset(); + address_space_config m_program_config; address_space_config m_data_config; address_space_config m_io_config; + required_shared_ptr<uint16_t> m_b0; + required_shared_ptr<uint16_t> m_b1; + required_shared_ptr<uint16_t> m_b2; + optional_shared_ptr<uint16_t> m_b3; + + address_space *m_program; + direct_read_data *m_direct; + address_space *m_data; + address_space *m_io; + typedef void ( tms32025_device::*opcode_func ) (); struct tms32025_opcode { @@ -156,9 +175,8 @@ private: uint16_t m_AR[8]; uint16_t m_STACK[8]; PAIR m_ALU; -protected: - uint16_t m_intRAM[0x800]; -private: + uint16_t m_drr, m_dxr, m_tim, m_prd, m_imr, m_greg; + uint8_t m_timerover; /********************** Status data ****************************/ @@ -176,18 +194,6 @@ private: int m_mHackIgnoreARP; /* special handling for lst, lst1 instructions */ int m_waiting_for_serial_frame; - address_space *m_program; - direct_read_data *m_direct; - address_space *m_data; - address_space *m_io; - - uint16_t *m_pgmmap[0x200]; -protected: - uint16_t *m_datamap[0x200]; - -private: - uint32_t m_debugger_temp; - inline void CLR0(uint16_t flag); inline void SET0(uint16_t flag); inline void CLR1(uint16_t flag); @@ -250,9 +256,9 @@ private: void call(); void cmpl(); void cmpr(); - void cnfd(); - void cnfp(); - void conf(); + virtual void cnfd(); + virtual void cnfp(); + virtual void conf(); void dint(); void dmov(); void eint(); @@ -380,6 +386,9 @@ public: protected: virtual void device_reset() override; + virtual void cnfd() override; + virtual void cnfp() override; + virtual void conf() override; }; |