summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/m3745x.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/m3745x.h')
-rw-r--r--src/devices/cpu/m6502/m3745x.h39
1 files changed, 21 insertions, 18 deletions
diff --git a/src/devices/cpu/m6502/m3745x.h b/src/devices/cpu/m6502/m3745x.h
index b499019036b..9f7bc5acc93 100644
--- a/src/devices/cpu/m6502/m3745x.h
+++ b/src/devices/cpu/m6502/m3745x.h
@@ -33,9 +33,7 @@ public:
{
M3745X_INT1_LINE = INPUT_LINE_IRQ0,
M3745X_INT2_LINE,
- M3745X_INT3_LINE,
-
- M3745X_SET_OVERFLOW = M740_SET_OVERFLOW
+ M3745X_INT3_LINE
};
const address_space_config m_program_config;
@@ -44,16 +42,12 @@ public:
template<std::size_t Bit> auto write_p() { return m_write_p[Bit-3].bind(); }
template<std::size_t Bit> auto read_ad() { return m_read_ad[Bit].bind(); }
- devcb_read8 m_read_p[4];
- devcb_write8 m_write_p[4];
- devcb_read8 m_read_ad[8];
-
- DECLARE_READ8_MEMBER(ports_r);
- DECLARE_WRITE8_MEMBER(ports_w);
- DECLARE_READ8_MEMBER(adc_r);
- DECLARE_WRITE8_MEMBER(adc_w);
- DECLARE_READ8_MEMBER(intregs_r);
- DECLARE_WRITE8_MEMBER(intregs_w);
+ uint8_t ports_r(offs_t offset);
+ void ports_w(offs_t offset, uint8_t data);
+ uint8_t adc_r(offs_t offset);
+ void adc_w(offs_t offset, uint8_t data);
+ uint8_t intregs_r(offs_t offset);
+ void intregs_w(offs_t offset, uint8_t data);
bool are_port_bits_output(uint8_t port, uint8_t mask) { return ((m_ddrs[port] & mask) == mask) ? true : false; }
@@ -62,17 +56,26 @@ protected:
m3745x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void execute_set_input(int inputnum, int state) override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
virtual space_config_vector memory_space_config() const override;
+ // device_execute_interface overrides
+ virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 4 - 1) / 4; }
+ virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 4); }
+ virtual void execute_set_input(int inputnum, int state) override;
+
+ TIMER_CALLBACK_MEMBER(adc_complete);
+
void send_port(uint8_t offset, uint8_t data);
uint8_t read_port(uint8_t offset);
void recalc_irqs();
+ devcb_read8::array<4> m_read_p;
+ devcb_write8::array<4> m_write_p;
+ devcb_read8::array<8> m_read_ad;
+
uint8_t m_ports[6], m_ddrs[6];
uint8_t m_intreq1, m_intreq2, m_intctrl1, m_intctrl2;
uint8_t m_adctrl;
@@ -87,7 +90,7 @@ class m37450_device : public m3745x_device
public:
m37450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void m37450_map(address_map &map);
+ void m37450_map(address_map &map) ATTR_COLD;
protected:
m37450_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};