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