summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ti8x/graphlinkhle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ti8x/graphlinkhle.cpp')
-rw-r--r--src/devices/bus/ti8x/graphlinkhle.cpp45
1 files changed, 42 insertions, 3 deletions
diff --git a/src/devices/bus/ti8x/graphlinkhle.cpp b/src/devices/bus/ti8x/graphlinkhle.cpp
index b41d67ca50b..6322f2b422d 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(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;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ 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::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)")