summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/6850acia.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/machine/6850acia.h')
-rw-r--r--src/emu/machine/6850acia.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/emu/machine/6850acia.h b/src/emu/machine/6850acia.h
new file mode 100644
index 00000000000..9a8e1756f48
--- /dev/null
+++ b/src/emu/machine/6850acia.h
@@ -0,0 +1,90 @@
+#ifndef ACIA6850_H
+#define ACIA6850_H
+
+#define MAX_ACIA 4
+
+#define ACIA6850_STATUS_RDRF 0x01
+#define ACIA6850_STATUS_TDRE 0x02
+#define ACIA6850_STATUS_DCD 0x04
+#define ACIA6850_STATUS_CTS 0x08
+#define ACIA6850_STATUS_FE 0x10
+#define ACIA6850_STATUS_OVRN 0x20
+#define ACIA6850_STATUS_PE 0x40
+#define ACIA6850_STATUS_IRQ 0x80
+
+struct acia6850_interface
+{
+ int tx_clock;
+ int rx_clock;
+
+ UINT8 *rx_pin;
+ UINT8 *tx_pin;
+ UINT8 *cts_pin;
+ UINT8 *rts_pin;
+ UINT8 *dcd_pin;
+
+ void (*int_callback)(int state);
+};
+
+void acia6850_config(int which, const struct acia6850_interface *intf);
+
+WRITE8_HANDLER( acia6850_0_ctrl_w );
+WRITE8_HANDLER( acia6850_1_ctrl_w );
+WRITE8_HANDLER( acia6850_2_ctrl_w );
+WRITE8_HANDLER( acia6850_3_ctrl_w );
+
+WRITE8_HANDLER( acia6850_0_data_w );
+WRITE8_HANDLER( acia6850_1_data_w );
+WRITE8_HANDLER( acia6850_2_data_w );
+WRITE8_HANDLER( acia6850_3_data_w );
+
+READ8_HANDLER( acia6850_0_stat_r );
+READ8_HANDLER( acia6850_1_stat_r );
+READ8_HANDLER( acia6850_2_stat_r );
+READ8_HANDLER( acia6850_3_stat_r );
+
+READ8_HANDLER( acia6850_0_data_r );
+READ8_HANDLER( acia6850_1_data_r );
+READ8_HANDLER( acia6850_2_data_r );
+READ8_HANDLER( acia6850_3_data_r );
+
+READ16_HANDLER( acia6850_0_stat_lsb_r );
+READ16_HANDLER( acia6850_1_stat_lsb_r );
+READ16_HANDLER( acia6850_2_stat_lsb_r );
+READ16_HANDLER( acia6850_3_stat_lsb_r );
+
+READ16_HANDLER( acia6850_0_stat_msb_r );
+READ16_HANDLER( acia6850_1_stat_msb_r );
+READ16_HANDLER( acia6850_2_stat_msb_r );
+READ16_HANDLER( acia6850_3_stat_msb_r );
+
+READ16_HANDLER( acia6850_0_data_lsb_r );
+READ16_HANDLER( acia6850_1_data_lsb_r );
+READ16_HANDLER( acia6850_2_data_lsb_r );
+READ16_HANDLER( acia6850_3_data_lsb_r );
+
+READ16_HANDLER( acia6850_0_data_msb_r );
+READ16_HANDLER( acia6850_1_data_msb_r );
+READ16_HANDLER( acia6850_2_data_msb_r );
+READ16_HANDLER( acia6850_3_data_msb_r );
+
+WRITE16_HANDLER( acia6850_0_ctrl_msb_w );
+WRITE16_HANDLER( acia6850_1_ctrl_msb_w );
+WRITE16_HANDLER( acia6850_2_ctrl_msb_w );
+WRITE16_HANDLER( acia6850_3_ctrl_msb_w );
+
+WRITE16_HANDLER( acia6850_0_ctrl_lsb_w );
+WRITE16_HANDLER( acia6850_1_ctrl_lsb_w );
+WRITE16_HANDLER( acia6850_2_ctrl_lsb_w );
+WRITE16_HANDLER( acia6850_3_ctrl_lsb_w );
+
+WRITE16_HANDLER( acia6850_0_data_msb_w );
+WRITE16_HANDLER( acia6850_1_data_msb_w );
+WRITE16_HANDLER( acia6850_2_data_msb_w );
+WRITE16_HANDLER( acia6850_3_data_msb_w );
+
+WRITE16_HANDLER( acia6850_0_data_lsb_w );
+WRITE16_HANDLER( acia6850_1_data_lsb_w );
+WRITE16_HANDLER( acia6850_2_data_lsb_w );
+WRITE16_HANDLER( acia6850_3_data_lsb_w );
+#endif