diff options
Diffstat (limited to 'src/devices/cpu/m6502/r65c19.h')
-rw-r--r-- | src/devices/cpu/m6502/r65c19.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/devices/cpu/m6502/r65c19.h b/src/devices/cpu/m6502/r65c19.h index a300d4a332a..5b43f49ae68 100644 --- a/src/devices/cpu/m6502/r65c19.h +++ b/src/devices/cpu/m6502/r65c19.h @@ -34,6 +34,11 @@ protected: void c19_init(); + u8 cir_r(); + void cir_w(u8 data); + u8 page1_seg_r(offs_t offset); + void page1_seg_w(offs_t offset, u8 data); + private: void do_add(u8 v); u16 do_accumulate(u16 v, u16 w); @@ -83,8 +88,63 @@ private: u16 m_w; u16 m_i; + + optional_shared_ptr<u8> m_page1_ram; + u8 m_cir; +}; + +class c39_device : public r65c19_device +{ +protected: + c39_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor internal_map); + + virtual space_config_vector memory_space_config() const override; + + virtual void device_start() override; + virtual void device_reset() override; + + u8 pbs_r(); + void pbs_w(u8 data); + u8 bsr_r(offs_t offset); + void bsr_w(offs_t offset, u8 data); + u8 expansion_r(offs_t offset); + void expansion_w(offs_t offset, u8 data); + + void internal_map(address_map &map); + +private: + class mi_banked : public memory_interface { + public: + virtual u8 read(u16 adr) override; + virtual u8 read_sync(u16 adr) override; + virtual u8 read_arg(u16 adr) override; + virtual void write(u16 adr, u8 val) override; + + u8 exp_read(u16 adr); + u8 exp_read_cached(u16 adr); + void exp_write(u16 adr, u8 val); + u8 es4_read(u16 adr); + void es4_write(u16 adr, u8 val); + + address_space *exp; + memory_access_cache<0, 0, ENDIANNESS_LITTLE> *escache; + address_space *es4; + + u8 bsr[8]; + u8 pbs; + }; + + address_space_config m_exp_config; + address_space_config m_es4_config; +}; + +class l2800_device : public c39_device +{ +public: + l2800_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; DECLARE_DEVICE_TYPE(R65C19, r65c19_device) +DECLARE_DEVICE_TYPE(L2800, l2800_device) #endif // MAME_CPU_M6502_R65C19_H |