summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2014-04-06 08:48:33 +0000
committer smf- <smf-@users.noreply.github.com>2014-04-06 08:48:33 +0000
commit37c2d0587d5c27ab699dad1e58a722d5e043b40f (patch)
treecb4325b36a8e67b386efbc6e2e4b5635a04e1cb9 /src/emu
parent487efaf26f8c3912b7f6742993c94491165e9b20 (diff)
added RS232 loopback [smf]
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/bus/bus.mak1
-rw-r--r--src/emu/bus/rs232/loopback.c16
-rw-r--r--src/emu/bus/rs232/loopback.h25
-rw-r--r--src/emu/bus/rs232/rs232.c4
4 files changed, 45 insertions, 1 deletions
diff --git a/src/emu/bus/bus.mak b/src/emu/bus/bus.mak
index e95447ba6fc..70cefb05ddb 100644
--- a/src/emu/bus/bus.mak
+++ b/src/emu/bus/bus.mak
@@ -703,6 +703,7 @@ endif
ifneq ($(filter RS232,$(BUSES)),)
OBJDIRS += $(BUSOBJ)/rs232
BUSOBJS += $(BUSOBJ)/rs232/keyboard.o
+BUSOBJS += $(BUSOBJ)/rs232/loopback.o
BUSOBJS += $(BUSOBJ)/rs232/null_modem.o
BUSOBJS += $(BUSOBJ)/rs232/rs232.o
BUSOBJS += $(BUSOBJ)/rs232/ser_mouse.o
diff --git a/src/emu/bus/rs232/loopback.c b/src/emu/bus/rs232/loopback.c
new file mode 100644
index 00000000000..4cd97f8adb2
--- /dev/null
+++ b/src/emu/bus/rs232/loopback.c
@@ -0,0 +1,16 @@
+// license:MAME
+// copyright-holders:smf
+
+#include "loopback.h"
+
+const device_type RS232_LOOPBACK = &device_creator<rs232_loopback_device>;
+
+rs232_loopback_device::rs232_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, RS232_LOOPBACK, "RS232 Loopback", tag, owner, clock, "rs232_loopback", __FILE__),
+ device_rs232_port_interface(mconfig, *this)
+{
+}
+
+void rs232_loopback_device::device_start()
+{
+}
diff --git a/src/emu/bus/rs232/loopback.h b/src/emu/bus/rs232/loopback.h
new file mode 100644
index 00000000000..3459a7bf1c2
--- /dev/null
+++ b/src/emu/bus/rs232/loopback.h
@@ -0,0 +1,25 @@
+// license:MAME
+// copyright-holders:smf
+
+#ifndef RS232_LOOPBACK_H_
+#define RS232_LOOPBACK_H_
+
+#include "bus/rs232/rs232.h"
+
+class rs232_loopback_device : public device_t,
+ public device_rs232_port_interface
+{
+public:
+ rs232_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual WRITE_LINE_MEMBER( input_txd ) { output_rxd(state); }
+ virtual WRITE_LINE_MEMBER( input_rts ) { output_ri(state); output_cts(state); }
+ virtual WRITE_LINE_MEMBER( input_dtr ) { output_dsr(state); output_dcd(state); }
+
+protected:
+ virtual void device_start();
+};
+
+extern const device_type RS232_LOOPBACK;
+
+#endif
diff --git a/src/emu/bus/rs232/rs232.c b/src/emu/bus/rs232/rs232.c
index eeff291621a..74f5c371b22 100644
--- a/src/emu/bus/rs232/rs232.c
+++ b/src/emu/bus/rs232/rs232.c
@@ -96,10 +96,12 @@ device_rs232_port_interface::~device_rs232_port_interface()
{
}
+#include "loopback.h"
#include "null_modem.h"
#include "terminal.h"
SLOT_INTERFACE_START( default_rs232_devices )
- SLOT_INTERFACE("serial_terminal", SERIAL_TERMINAL)
+ SLOT_INTERFACE("loopback", SERIAL_LOOPBACK)
SLOT_INTERFACE("null_modem", NULL_MODEM)
+ SLOT_INTERFACE("serial_terminal", SERIAL_TERMINAL)
SLOT_INTERFACE_END