diff options
Diffstat (limited to 'src/devices/bus/ti8x/graphlinkhle.cpp')
-rw-r--r-- | src/devices/bus/ti8x/graphlinkhle.cpp | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/src/devices/bus/ti8x/graphlinkhle.cpp b/src/devices/bus/ti8x/graphlinkhle.cpp index ecdec035b06..fd01966d7bd 100644 --- a/src/devices/bus/ti8x/graphlinkhle.cpp +++ b/src/devices/bus/ti8x/graphlinkhle.cpp @@ -4,11 +4,47 @@ #include "emu.h" #include "graphlinkhle.h" +#include "bus/rs232/rs232.h" -DEFINE_DEVICE_TYPE_NS(TI8X_GRAPH_LINK_HLE, bus::ti8x, graph_link_hle_device, "ti8x_glinkhle", "TI-Graph Link (grey, HLE)") +#include "diserial.h" +#include <memory> + + +namespace { + +class graph_link_hle_device + : public device_t + , public device_ti8x_link_port_byte_interface + , public device_serial_interface +{ +public: + graph_link_hle_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + +protected: + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + + virtual void byte_collision() override; + virtual void byte_send_timeout() override; + virtual void byte_receive_timeout() override; + virtual void byte_sent() override; + virtual void byte_received(u8 data) override; + + virtual void rcv_complete() override; + virtual void tra_callback() override; + virtual void tra_complete() override; + +private: + static constexpr unsigned BUFLEN = 1U << 16; + + required_device<rs232_port_device> m_serial_port; + std::unique_ptr<u8 []> m_buffer; + unsigned m_head, m_tail; + bool m_empty, m_ready; +}; -namespace bus { namespace ti8x { graph_link_hle_device::graph_link_hle_device( machine_config const &mconfig, @@ -142,4 +178,7 @@ void graph_link_hle_device::tra_complete() accept_byte(); } -} } // namespace bus::ti8x +} // anonymous namespace + + +DEFINE_DEVICE_TYPE_PRIVATE(TI8X_GRAPH_LINK_HLE, device_ti8x_link_port_interface, graph_link_hle_device, "ti8x_glinkhle", "TI-Graph Link (grey, HLE)") |