diff options
Diffstat (limited to 'src/devices/machine/am79c90.h')
-rw-r--r-- | src/devices/machine/am79c90.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/devices/machine/am79c90.h b/src/devices/machine/am79c90.h index 258c5f27506..25d7078615e 100644 --- a/src/devices/machine/am79c90.h +++ b/src/devices/machine/am79c90.h @@ -6,7 +6,7 @@ #pragma once -#include "hashing.h" +#include "dinetwork.h" class am7990_device_base : public device_t, public device_network_interface { @@ -15,8 +15,8 @@ public: auto dma_in() { return m_dma_in_cb.bind(); } auto dma_out() { return m_dma_out_cb.bind(); } - DECLARE_READ16_MEMBER(regs_r); - DECLARE_WRITE16_MEMBER(regs_w); + u16 regs_r(address_space &space, offs_t offset); + void regs_w(offs_t offset, u16 data); void reset_w(int state) { if (!state) device_reset(); } @@ -24,8 +24,8 @@ protected: am7990_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock = 0); // device_t overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; // device_network_interface overrides virtual int recv_start_cb(u8 *buf, int length) override; @@ -34,9 +34,10 @@ protected: // device helpers void initialize(); - void update_interrupts(); + void interrupt(s32 param); + void update_interrupts(attotime const delay = attotime::zero); int receive(u8 *buf, int length); - TIMER_CALLBACK_MEMBER(transmit_poll); + void transmit_poll(s32 param); void transmit(); bool address_filter(u8 *buf); @@ -163,6 +164,7 @@ private: u8 m_tx_ring_pos; u16 m_tx_md[4]; + emu_timer *m_interrupt; emu_timer *m_transmit_poll; int m_intr_out_state; bool m_idon; |