summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/machine/ins8250.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/machine/ins8250.h')
-rw-r--r--trunk/src/emu/machine/ins8250.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/trunk/src/emu/machine/ins8250.h b/trunk/src/emu/machine/ins8250.h
new file mode 100644
index 00000000000..ef00e544573
--- /dev/null
+++ b/trunk/src/emu/machine/ins8250.h
@@ -0,0 +1,83 @@
+/**********************************************************************
+
+ 8250 UART interface and emulation
+
+**********************************************************************/
+
+#ifndef __INS8250_H_
+#define __INS8250_H_
+
+#include "devlegcy.h"
+
+DECLARE_LEGACY_DEVICE(INS8250, ins8250);
+DECLARE_LEGACY_DEVICE(INS8250A, ins8250a);
+DECLARE_LEGACY_DEVICE(NS16450, ns16450);
+DECLARE_LEGACY_DEVICE(NS16550, ns16550);
+DECLARE_LEGACY_DEVICE(NS16550A, ns16550a);
+DECLARE_LEGACY_DEVICE(PC16550D, pc16550d);
+
+#define UART8250_HANDSHAKE_OUT_DTR 0x01
+#define UART8250_HANDSHAKE_OUT_RTS 0x02
+
+#define UART8250_HANDSHAKE_IN_DSR 0x020
+#define UART8250_HANDSHAKE_IN_CTS 0x010
+#define UART8250_INPUTS_RING_INDICATOR 0x0040
+#define UART8250_INPUTS_DATA_CARRIER_DETECT 0x0080
+
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+typedef void (*ins8250_transmit_func)(device_t *device, int data);
+typedef void (*ins8250_handshake_out_func)(device_t *device, int data);
+typedef void (*ins8250_refresh_connect_func)(device_t *device);
+
+#define INS8250_TRANSMIT(name) void name(device_t *device, int data)
+#define INS8250_HANDSHAKE_OUT(name) void name(device_t *device, int data)
+#define INS8250_REFRESH_CONNECT(name) void name(device_t *device)
+
+typedef struct
+{
+ long clockin;
+ devcb_write_line out_intr_cb;
+
+ ins8250_transmit_func transmit;
+ ins8250_handshake_out_func handshake_out;
+
+ // refresh object connected to this port
+ ins8250_refresh_connect_func refresh_connected;
+} ins8250_interface;
+
+
+/***************************************************************************
+ DEVICE CONFIGURATION MACROS
+***************************************************************************/
+
+#define MCFG_INS8250_ADD(_tag, _intrf) \
+ MCFG_DEVICE_ADD(_tag, INS8250, 0) \
+ MCFG_DEVICE_CONFIG(_intrf)
+
+
+#define MCFG_NS16450_ADD(_tag, _intrf) \
+ MCFG_DEVICE_ADD(_tag, NS16450, 0) \
+ MCFG_DEVICE_CONFIG(_intrf)
+
+
+#define MCFG_NS16550_ADD(_tag, _intrf) \
+ MCFG_DEVICE_ADD(_tag, NS16550, 0) \
+ MCFG_DEVICE_CONFIG(_intrf)
+
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+void ins8250_receive(device_t *device, int data);
+void ins8250_handshake_in(device_t *device, int new_msr);
+
+READ8_DEVICE_HANDLER( ins8250_r );
+WRITE8_DEVICE_HANDLER( ins8250_w );
+
+
+#endif /* __INS8250_H_ */