mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
90 lines
2.6 KiB
C++
90 lines
2.6 KiB
C++
// 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
|