diff options
Diffstat (limited to 'src/devices/cpu/nec/v5x.h')
-rw-r--r-- | src/devices/cpu/nec/v5x.h | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/src/devices/cpu/nec/v5x.h b/src/devices/cpu/nec/v5x.h index 9bae50be204..d30ce9b6296 100644 --- a/src/devices/cpu/nec/v5x.h +++ b/src/devices/cpu/nec/v5x.h @@ -17,9 +17,10 @@ class device_v5x_interface : public device_interface { public: // TCU - template <unsigned Timer> void set_clk(double clk) { device().subdevice<pit8253_device>("tcu")->set_clk<Timer>(clk); } - template <unsigned Timer> void set_clk(const XTAL &xtal) { device().subdevice<pit8253_device>("tcu")->set_clk<Timer>(xtal.dvalue()); } + void set_tclk(double clk) { m_tclk = clk; } + void set_tclk(const XTAL &xtal) { set_tclk(xtal.dvalue()); } template <unsigned Timer> auto out_handler() { return device().subdevice<pit8253_device>("tcu")->out_handler<Timer>(); } + DECLARE_WRITE_LINE_MEMBER(tclk_w); // DMAU auto out_hreq_cb() { return device().subdevice<v5x_dmau_device>("dmau")->out_hreq_callback(); } @@ -50,6 +51,7 @@ protected: virtual void interface_post_start() override; virtual void interface_pre_reset() override; virtual void interface_post_load() override; + virtual void interface_clock_changed() override; void v5x_set_input(int inputnum, int state); void v5x_add_mconfig(machine_config &config); @@ -77,29 +79,31 @@ protected: virtual u8 temp_io_byte_r(offs_t offset) = 0; virtual void temp_io_byte_w(offs_t offset, u8 data) = 0; - DECLARE_WRITE8_MEMBER(BSEL_w) {} - DECLARE_WRITE8_MEMBER(BADR_w) {} - DECLARE_WRITE8_MEMBER(BRC_w) {} - DECLARE_WRITE8_MEMBER(WMB0_w) {} - DECLARE_WRITE8_MEMBER(WCY1_w) {} - DECLARE_WRITE8_MEMBER(WCY0_w) {} - DECLARE_WRITE8_MEMBER(WAC_w) {} - DECLARE_WRITE8_MEMBER(TCKS_w) {} - DECLARE_WRITE8_MEMBER(SBCR_w) {} - DECLARE_WRITE8_MEMBER(RFC_w) {} - DECLARE_WRITE8_MEMBER(WMB1_w) {} - DECLARE_WRITE8_MEMBER(WCY2_w) {} - DECLARE_WRITE8_MEMBER(WCY3_w) {} - DECLARE_WRITE8_MEMBER(WCY4_w) {} - DECLARE_WRITE8_MEMBER(SULA_w); - DECLARE_WRITE8_MEMBER(TULA_w); - DECLARE_WRITE8_MEMBER(IULA_w); - DECLARE_WRITE8_MEMBER(DULA_w); - DECLARE_WRITE8_MEMBER(OPHA_w); - DECLARE_WRITE8_MEMBER(OPSEL_w); - DECLARE_READ8_MEMBER(get_pic_ack) { return 0; } + void BSEL_w(u8 data) {} + void BADR_w(u8 data) {} + void BRC_w(u8 data) {} + void WMB0_w(u8 data) {} + void WCY1_w(u8 data) {} + void WCY0_w(u8 data) {} + void WAC_w(u8 data) {} + void TCKS_w(u8 data); + void SBCR_w(u8 data) {} + void RFC_w(u8 data) {} + void WMB1_w(u8 data) {} + void WCY2_w(u8 data) {} + void WCY3_w(u8 data) {} + void WCY4_w(u8 data) {} + void SULA_w(u8 data); + void TULA_w(u8 data); + void IULA_w(u8 data); + void DULA_w(u8 data); + void OPHA_w(u8 data); + void OPSEL_w(u8 data); + u8 get_pic_ack() { return 0; } DECLARE_WRITE_LINE_MEMBER(internal_irq_w); + void tcu_clock_update(); + required_device<pit8253_device> m_tcu; required_device<v5x_dmau_device> m_dmau; required_device<v5x_icu_device> m_icu; @@ -108,6 +112,8 @@ protected: address_space_config m_internal_io_config; address_space *m_internal_io; + double m_tclk; + enum opsel_mask { OPSEL_DS = 0x01, // dmau enabled @@ -123,6 +129,7 @@ protected: u8 m_IULA; u8 m_DULA; u8 m_OPHA; + u8 m_TCKS; }; class v50_base_device : public nec_common_device, public device_v5x_interface @@ -133,7 +140,7 @@ public: DECLARE_WRITE_LINE_MEMBER(tctl2_w) { m_tcu->write_gate2(state); } protected: - v50_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, bool is_16bit, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type); + v50_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, bool is_16bit, u8 prefetch_size, u8 prefetch_cycles, u32 chip_type); // device-specific overrides virtual void device_add_mconfig(machine_config &config) override; @@ -141,6 +148,8 @@ protected: virtual void device_reset() override; // device_execute_interface overrides + virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks / 2); } + virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 2); } virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides @@ -156,7 +165,7 @@ protected: void internal_port_map(address_map &map); - DECLARE_WRITE8_MEMBER(OPCN_w); + void OPCN_w(u8 data); private: u8 m_OPCN; @@ -224,7 +233,7 @@ protected: void internal_port_map(address_map &map); virtual void install_peripheral_io() override; - DECLARE_WRITE8_MEMBER(SCTL_w); + void SCTL_w(u8 data); private: u8 m_SCTL; |