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