diff options
Diffstat (limited to 'src/devices/cpu/nec/v25.h')
-rw-r--r-- | src/devices/cpu/nec/v25.h | 71 |
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); |