trunk/src/mess/machine/s100.c
| r22959 | r22960 | |
| 87 | 87 | memset(&m_out_rdy_cb, 0, sizeof(m_out_rdy_cb)); |
| 88 | 88 | memset(&m_out_hold_cb, 0, sizeof(m_out_hold_cb)); |
| 89 | 89 | memset(&m_out_error_cb, 0, sizeof(m_out_error_cb)); |
| 90 | | memset(&m_out_terminal_cb, 0, sizeof(m_out_terminal_cb)); |
| 91 | 90 | } |
| 92 | 91 | } |
| 93 | 92 | |
| r22959 | r22960 | |
| 131 | 130 | m_out_rdy_func.resolve(m_out_rdy_cb, *this); |
| 132 | 131 | m_out_hold_func.resolve(m_out_hold_cb, *this); |
| 133 | 132 | m_out_error_func.resolve(m_out_error_cb, *this); |
| 134 | | m_out_terminal_func.resolve(m_out_terminal_cb, *this); |
| 135 | 133 | } |
| 136 | 134 | |
| 137 | 135 | |
| r22959 | r22960 | |
| 246 | 244 | WRITE_LINE_MEMBER( s100_device::error_w ) { m_out_error_func(state); } |
| 247 | 245 | |
| 248 | 246 | |
| 249 | | //------------------------------------------------- |
| 250 | | // terminal_receive_w - receive character |
| 251 | | //------------------------------------------------- |
| 252 | 247 | |
| 253 | | WRITE8_MEMBER( s100_device::terminal_receive_w ) |
| 254 | | { |
| 255 | | device_s100_card_interface *entry = m_device_list.first(); |
| 256 | | |
| 257 | | while (entry) |
| 258 | | { |
| 259 | | if (entry->s100_has_terminal()) |
| 260 | | { |
| 261 | | entry->s100_terminal_w(data); |
| 262 | | break; |
| 263 | | } |
| 264 | | entry = entry->next(); |
| 265 | | } |
| 266 | | } |
| 267 | | |
| 268 | | |
| 269 | | //------------------------------------------------- |
| 270 | | // terminal_transmit_w - transmit character |
| 271 | | //------------------------------------------------- |
| 272 | | |
| 273 | | WRITE8_MEMBER( s100_device::terminal_transmit_w ) |
| 274 | | { |
| 275 | | terminal_transmit_w(data); |
| 276 | | } |
| 277 | | |
| 278 | | void s100_device::terminal_transmit_w(UINT8 data) |
| 279 | | { |
| 280 | | m_out_terminal_func(0, data); |
| 281 | | } |
| 282 | | |
| 283 | | |
| 284 | | |
| 285 | 248 | //************************************************************************** |
| 286 | 249 | // DEVICE S100 CARD INTERFACE |
| 287 | 250 | //************************************************************************** |
trunk/src/mess/machine/s100_wunderbus.c
| r22959 | r22960 | |
| 19 | 19 | #define INS8250_1_TAG "6d" |
| 20 | 20 | #define INS8250_2_TAG "5d" |
| 21 | 21 | #define INS8250_3_TAG "4d" |
| 22 | #define RS232_A_TAG "rs232a" |
| 23 | #define RS232_B_TAG "rs232b" |
| 24 | #define RS232_C_TAG "rs232c" |
| 22 | 25 | #define UPD1990C_TAG "12a" |
| 23 | 26 | |
| 24 | 27 | |
| r22959 | r22960 | |
| 58 | 61 | //------------------------------------------------- |
| 59 | 62 | // ins8250_interface ace1_intf |
| 60 | 63 | //------------------------------------------------- |
| 61 | | /* |
| 62 | | static INS8250_TRANSMIT( ace1_transmit ) |
| 63 | | { |
| 64 | | s100_wunderbus_device *wunderbus = downcast<s100_wunderbus_device *>(device->owner()); |
| 65 | 64 | |
| 66 | | wunderbus->m_bus->terminal_transmit_w(data); |
| 67 | | } |
| 68 | | */ |
| 69 | | //------------------------------------------------- |
| 70 | | // s100_terminal_w - terminal write |
| 71 | | //------------------------------------------------- |
| 72 | | |
| 73 | | void s100_wunderbus_device::s100_terminal_w(UINT8 data) |
| 74 | | { |
| 75 | | // ins8250_receive(m_ace1, data); |
| 76 | | } |
| 77 | | |
| 78 | 65 | static ins8250_interface ace1_intf = |
| 79 | 66 | { |
| 80 | | DEVCB_NULL, |
| 81 | | DEVCB_NULL, |
| 67 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), |
| 68 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), |
| 69 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), |
| 82 | 70 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w), |
| 83 | 71 | DEVCB_NULL, |
| 84 | | DEVCB_NULL, |
| 85 | 72 | DEVCB_NULL |
| 86 | 73 | }; |
| 87 | 74 | |
| r22959 | r22960 | |
| 92 | 79 | |
| 93 | 80 | static ins8250_interface ace2_intf = |
| 94 | 81 | { |
| 95 | | DEVCB_NULL, |
| 96 | | DEVCB_NULL, |
| 82 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), |
| 83 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), |
| 84 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), |
| 97 | 85 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w), |
| 98 | 86 | DEVCB_NULL, |
| 99 | | DEVCB_NULL, |
| 100 | 87 | DEVCB_NULL |
| 101 | 88 | }; |
| 102 | 89 | |
| r22959 | r22960 | |
| 107 | 94 | |
| 108 | 95 | static ins8250_interface ace3_intf = |
| 109 | 96 | { |
| 110 | | DEVCB_NULL, |
| 111 | | DEVCB_NULL, |
| 97 | DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, serial_port_device, tx), |
| 98 | DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, dtr_w), |
| 99 | DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, rts_w), |
| 112 | 100 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w), |
| 113 | 101 | DEVCB_NULL, |
| 114 | | DEVCB_NULL, |
| 115 | 102 | DEVCB_NULL |
| 116 | 103 | }; |
| 117 | 104 | |
| 118 | 105 | |
| 119 | 106 | //------------------------------------------------- |
| 107 | // rs232_port_interface rs232a_intf |
| 108 | //------------------------------------------------- |
| 109 | |
| 110 | static DEVICE_INPUT_DEFAULTS_START( terminal ) |
| 111 | DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600 |
| 112 | DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1 |
| 113 | DEVICE_INPUT_DEFAULTS_END |
| 114 | |
| 115 | static const rs232_port_interface rs232a_intf = |
| 116 | { |
| 117 | DEVCB_DEVICE_LINE_MEMBER(INS8250_1_TAG, ins8250_uart_device, rx_w), |
| 118 | DEVCB_DEVICE_LINE_MEMBER(INS8250_1_TAG, ins8250_uart_device, dcd_w), |
| 119 | DEVCB_DEVICE_LINE_MEMBER(INS8250_1_TAG, ins8250_uart_device, dsr_w), |
| 120 | DEVCB_DEVICE_LINE_MEMBER(INS8250_1_TAG, ins8250_uart_device, ri_w), |
| 121 | DEVCB_DEVICE_LINE_MEMBER(INS8250_1_TAG, ins8250_uart_device, cts_w) |
| 122 | }; |
| 123 | |
| 124 | |
| 125 | //------------------------------------------------- |
| 126 | // rs232_port_interface rs232b_intf |
| 127 | //------------------------------------------------- |
| 128 | |
| 129 | static const rs232_port_interface rs232b_intf = |
| 130 | { |
| 131 | DEVCB_DEVICE_LINE_MEMBER(INS8250_2_TAG, ins8250_uart_device, rx_w), |
| 132 | DEVCB_DEVICE_LINE_MEMBER(INS8250_2_TAG, ins8250_uart_device, dcd_w), |
| 133 | DEVCB_DEVICE_LINE_MEMBER(INS8250_2_TAG, ins8250_uart_device, dsr_w), |
| 134 | DEVCB_DEVICE_LINE_MEMBER(INS8250_2_TAG, ins8250_uart_device, ri_w), |
| 135 | DEVCB_DEVICE_LINE_MEMBER(INS8250_2_TAG, ins8250_uart_device, cts_w) |
| 136 | }; |
| 137 | |
| 138 | |
| 139 | //------------------------------------------------- |
| 140 | // rs232_port_interface rs232c_intf |
| 141 | //------------------------------------------------- |
| 142 | |
| 143 | static const rs232_port_interface rs232c_intf = |
| 144 | { |
| 145 | DEVCB_DEVICE_LINE_MEMBER(INS8250_3_TAG, ins8250_uart_device, rx_w), |
| 146 | DEVCB_DEVICE_LINE_MEMBER(INS8250_3_TAG, ins8250_uart_device, dcd_w), |
| 147 | DEVCB_DEVICE_LINE_MEMBER(INS8250_3_TAG, ins8250_uart_device, dsr_w), |
| 148 | DEVCB_DEVICE_LINE_MEMBER(INS8250_3_TAG, ins8250_uart_device, ri_w), |
| 149 | DEVCB_DEVICE_LINE_MEMBER(INS8250_3_TAG, ins8250_uart_device, cts_w) |
| 150 | }; |
| 151 | |
| 152 | |
| 153 | //------------------------------------------------- |
| 120 | 154 | // UPD1990A_INTERFACE( rtc_intf ) |
| 121 | 155 | //------------------------------------------------- |
| 122 | 156 | |
| r22959 | r22960 | |
| 145 | 179 | MCFG_INS8250_ADD(INS8250_1_TAG, ace1_intf, XTAL_18_432MHz/10) |
| 146 | 180 | MCFG_INS8250_ADD(INS8250_2_TAG, ace2_intf, XTAL_18_432MHz/10) |
| 147 | 181 | MCFG_INS8250_ADD(INS8250_3_TAG, ace3_intf, XTAL_18_432MHz/10) |
| 182 | MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal", terminal) |
| 183 | MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL, NULL) |
| 184 | MCFG_RS232_PORT_ADD(RS232_C_TAG, rs232c_intf, default_rs232_devices, NULL, NULL) |
| 148 | 185 | MCFG_UPD1990A_ADD(UPD1990C_TAG, XTAL_32_768kHz, rtc_intf) |
| 149 | 186 | MACHINE_CONFIG_END |
| 150 | 187 | |