summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/com52c50.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/com52c50.h')
-rw-r--r--src/devices/machine/com52c50.h89
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