diff options
Diffstat (limited to 'src/devices/machine/com52c50.h')
-rw-r--r-- | src/devices/machine/com52c50.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/devices/machine/com52c50.h b/src/devices/machine/com52c50.h new file mode 100644 index 00000000000..085a3e0808a --- /dev/null +++ b/src/devices/machine/com52c50.h @@ -0,0 +1,89 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/*************************************************************************** + + Standard Microsystems Corp. COM52C50 Twinax Interface Circuit (TIC) + +**************************************************************************** + _____ _____ + D2 1 |* \__/ | 28 Vcc + D3 2 | | 27 D1 + /WR 3 | | 26 D0 + /TXEN 4 | | 25 /CS + /DTX 5 | | 24 /RD + TX 6 | | 23 A0 + TX DMA 7 | | 22 A1 + RX 8 | COM52C50 | 21 A2 + D4 9 | | 20 /INT1 + D5 10 | | 19 /INT2 + /RESET 11 | | 18 RX DMA + XTAL2 12 | | 17 CLKOUT + XTAL1 13 | | 16 D7 + GND 14 |______________| 15 D6 + +***************************************************************************/ + +#ifndef MAME_MACHINE_COM52C50_H +#define MAME_MACHINE_COM52C50_H + +#pragma once + + +// ======================> com52c50_device + +class com52c50_device : public device_t +{ +public: + // device type constructor + com52c50_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + // callback configuration + auto int1_callback() { return m_int1_callback.bind(); } + auto int2_callback() { return m_int2_callback.bind(); } + auto rx_dma_callback() { return m_rx_dma_callback.bind(); } + auto tx_dma_callback() { return m_tx_dma_callback.bind(); } + + // bus interface + u8 rx_buffer_r(); + void tx_buffer_w(u8 data); + void tx_buffer_eom_w(u8 data); + void zero_fill_w(u8 data); + void int_mask_w(u8 data); + void address_select_w(u8 data); + u8 present_address_r(); + void present_address_w(u8 data); + u8 int_status_r(); + u8 rx_status_r(); + u8 tx_status_r(); + void control_w(u8 data); + void mode_w(u8 data); + void map(address_map &map); + +protected: + // device-level overrides + virtual void device_resolve_objects() override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + // device callbacks + devcb_write_line m_int1_callback; + devcb_write_line m_int2_callback; + devcb_write_line m_rx_dma_callback; + devcb_write_line m_tx_dma_callback; + + // internal state + u8 m_int_mask; + u8 m_int_status; + u8 m_zero_fill; + u8 m_present_address; + u8 m_rx_status; + u8 m_tx_status; + u8 m_control; + u8 m_mode; +}; + +// device type declaration +DECLARE_DEVICE_TYPE(COM52C50, com52c50_device) + +#endif // MAME_MACHINE_COM52C50_H |