summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/nec/v25.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/nec/v25.h')
-rw-r--r--src/devices/cpu/nec/v25.h71
1 files changed, 58 insertions, 13 deletions
diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index af7d5eb4d93..3f651337667 100644
--- a/src/devices/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
@@ -74,7 +74,7 @@ public:
protected:
// construction/destruction
- v25_common_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
+ v25_common_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_16bit, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
// device-level overrides
virtual void device_start() override;
@@ -105,17 +105,11 @@ protected:
private:
address_space_config m_program_config;
+ address_space_config m_data_config;
address_space_config m_io_config;
/* internal RAM and register banks */
- union internalram
- {
- uint16_t w[128];
- uint8_t b[256];
- };
-
- internalram m_ram;
- offs_t m_fetch_xor;
+ required_shared_ptr<uint16_t> m_internal_ram;
uint16_t m_ip;
@@ -146,10 +140,13 @@ private:
/* system control */
uint8_t m_RAMEN, m_TB, m_PCK; /* PRC register */
+ uint8_t m_RFM;
+ uint16_t m_WTC;
uint32_t m_IDB;
address_space *m_program;
std::function<u8 (offs_t address)> m_dr8;
+ address_space *m_data;
address_space *m_io;
int m_icount;
@@ -194,12 +191,60 @@ private:
void nec_bankswitch(unsigned bank_num);
void nec_trap();
void external_int();
+
+ void ida_sfr_map(address_map &map);
uint8_t read_irqcontrol(int /*INTSOURCES*/ source, uint8_t priority);
- uint8_t read_sfr(unsigned o);
- uint16_t read_sfr_word(unsigned o);
void write_irqcontrol(int /*INTSOURCES*/ source, uint8_t d);
- void write_sfr(unsigned o, uint8_t d);
- void write_sfr_word(unsigned o, uint16_t d);
+ uint8_t p0_r();
+ void p0_w(uint8_t d);
+ void pm0_w(uint8_t d);
+ void pmc0_w(uint8_t d);
+ uint8_t p1_r();
+ void p1_w(uint8_t d);
+ void pm1_w(uint8_t d);
+ void pmc1_w(uint8_t d);
+ uint8_t p2_r();
+ void p2_w(uint8_t d);
+ void pm2_w(uint8_t d);
+ void pmc2_w(uint8_t d);
+ uint8_t pt_r();
+ void pmt_w(uint8_t d);
+ uint8_t exic0_r();
+ void exic0_w(uint8_t d);
+ uint8_t exic1_r();
+ void exic1_w(uint8_t d);
+ uint8_t exic2_r();
+ void exic2_w(uint8_t d);
+ uint16_t tm0_r();
+ void tm0_w(uint16_t d);
+ uint16_t md0_r();
+ void md0_w(uint16_t d);
+ uint16_t tm1_r();
+ void tm1_w(uint16_t d);
+ uint16_t md1_r();
+ void md1_w(uint16_t d);
+ void tmc0_w(uint8_t d);
+ void tmc1_w(uint8_t d);
+ uint8_t tmic0_r();
+ void tmic0_w(uint8_t d);
+ uint8_t tmic1_r();
+ void tmic1_w(uint8_t d);
+ uint8_t tmic2_r();
+ void tmic2_w(uint8_t d);
+ uint8_t rfm_r();
+ void rfm_w(uint8_t d);
+ uint16_t wtc_r();
+ void wtc_w(offs_t a, uint16_t d, uint16_t m);
+ uint8_t flag_r();
+ void flag_w(uint8_t d);
+ uint8_t prc_r();
+ void prc_w(uint8_t d);
+ uint8_t tbic_r();
+ void tbic_w(uint8_t d);
+ uint8_t irqs_r();
+ uint8_t ispr_r();
+ uint8_t idb_r();
+ void idb_w(uint8_t d);
uint8_t v25_read_byte(unsigned a);
uint16_t v25_read_word(unsigned a);
void v25_write_byte(unsigned a, uint8_t d);