trunk/src/emu/machine/mc6854.c
r26712 | r26713 | |
214 | 214 | else |
215 | 215 | { |
216 | 216 | memset(&m_out_irq_cb, 0, sizeof(m_out_irq_cb)); |
217 | | memset(&m_in_rxd_cb, 0, sizeof(m_in_rxd_cb)); |
218 | 217 | memset(&m_out_txd_cb, 0, sizeof(m_out_txd_cb)); |
219 | 218 | memset(&m_out_rts_cb, 0, sizeof(m_out_rts_cb)); |
220 | 219 | memset(&m_out_dtr_cb, 0, sizeof(m_out_dtr_cb)); |
r26712 | r26713 | |
228 | 227 | void mc6854_device::device_start() |
229 | 228 | { |
230 | 229 | m_out_irq_func.resolve(m_out_irq_cb, *this); |
231 | | m_in_rxd_func.resolve(m_in_rxd_cb, *this); |
232 | 230 | m_out_txd_func.resolve(m_out_txd_cb, *this); |
233 | 231 | m_out_rts_func.resolve(m_out_rts_cb, *this); |
234 | 232 | m_out_dtr_func.resolve(m_out_dtr_cb, *this); |
trunk/src/emu/machine/mc6854.h
r26712 | r26713 | |
24 | 24 | devcb_write_line m_out_irq_cb; /* interrupt request */ |
25 | 25 | |
26 | 26 | /* low-level, bit-based interface */ |
27 | | devcb_read_line m_in_rxd_cb; /* receive bit */ |
28 | 27 | devcb_write_line m_out_txd_cb; /* transmit bit */ |
29 | 28 | |
30 | 29 | /* high-level, frame-based interface */ |
r26712 | r26713 | |
70 | 69 | private: |
71 | 70 | // internal state |
72 | 71 | devcb_resolved_write_line m_out_irq_func; |
73 | | devcb_resolved_read_line m_in_rxd_func; |
74 | 72 | devcb_resolved_write_line m_out_txd_func; |
75 | 73 | devcb_resolved_write_line m_out_rts_func; |
76 | 74 | devcb_resolved_write_line m_out_dtr_func; |
trunk/src/emu/bus/econet/econet.c
r26712 | r26713 | |
298 | 298 | |
299 | 299 | |
300 | 300 | //------------------------------------------------- |
301 | | // clk_r - |
302 | | //------------------------------------------------- |
303 | | |
304 | | READ_LINE_MEMBER( econet_device::clk_r ) |
305 | | { |
306 | | return get_signal(CLK); |
307 | | } |
308 | | |
309 | | |
310 | | //------------------------------------------------- |
311 | | // data_r - |
312 | | //------------------------------------------------- |
313 | | |
314 | | READ_LINE_MEMBER( econet_device::data_r ) |
315 | | { |
316 | | return get_signal(DATA); |
317 | | } |
318 | | |
319 | | |
320 | | //------------------------------------------------- |
321 | 301 | // clk_w - |
322 | 302 | //------------------------------------------------- |
323 | 303 | |
r26712 | r26713 | |
361 | 341 | // SLOT_INTERFACE( econet_devices ) |
362 | 342 | //------------------------------------------------- |
363 | 343 | |
| 344 | // slot devices |
| 345 | #include "e01.h" |
| 346 | |
364 | 347 | SLOT_INTERFACE_START( econet_devices ) |
365 | 348 | SLOT_INTERFACE("e01", E01) |
366 | 349 | SLOT_INTERFACE("e01s", E01S) |
trunk/src/emu/bus/econet/econet.h
r26712 | r26713 | |
72 | 72 | |
73 | 73 | void add_device(device_t *target, int address); |
74 | 74 | |
75 | | // reads for both host and peripherals |
76 | | DECLARE_READ_LINE_MEMBER( clk_r ); |
77 | | DECLARE_READ_LINE_MEMBER( data_r ); |
78 | | |
79 | 75 | // writes for host (driver_device) |
80 | 76 | DECLARE_WRITE_LINE_MEMBER( clk_w ); |
81 | 77 | DECLARE_WRITE_LINE_MEMBER( data_w ); |
r26712 | r26713 | |
159 | 155 | device_econet_interface *next() const { return m_next; } |
160 | 156 | device_econet_interface *m_next; |
161 | 157 | |
162 | | // optional operation overrides |
163 | 158 | virtual void econet_clk(int state) = 0; |
164 | | virtual void econet_data(int state) { }; |
| 159 | virtual void econet_data(int state) = 0; |
165 | 160 | |
166 | 161 | econet_device *m_econet; |
167 | 162 | UINT8 m_address; |
r26712 | r26713 | |
173 | 168 | extern const device_type ECONET_SLOT; |
174 | 169 | |
175 | 170 | |
176 | | // slot devices |
177 | | #include "e01.h" |
178 | | |
179 | 171 | SLOT_INTERFACE_EXTERN( econet_devices ); |
180 | 172 | |
181 | 173 | |
trunk/src/emu/bus/econet/e01.c
r26712 | r26713 | |
154 | 154 | update_interrupts(); |
155 | 155 | } |
156 | 156 | |
157 | | READ_LINE_MEMBER( e01_device::econet_data_r ) |
158 | | { |
159 | | return m_econet->data_r(); |
160 | | } |
161 | | |
162 | 157 | WRITE_LINE_MEMBER( e01_device::econet_data_w ) |
163 | 158 | { |
164 | 159 | m_econet->data_w(this, state); |
r26712 | r26713 | |
167 | 162 | static const mc6854_interface adlc_intf = |
168 | 163 | { |
169 | 164 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, adlc_irq_w), |
170 | | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, econet_data_r), |
171 | 165 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, econet_data_w), |
172 | 166 | NULL, |
173 | 167 | DEVCB_NULL, |
r26712 | r26713 | |
767 | 761 | // econet_clk_w - |
768 | 762 | //------------------------------------------------- |
769 | 763 | |
| 764 | void e01_device::econet_data(int state) |
| 765 | { |
| 766 | m_adlc->set_rx(state); |
| 767 | } |
| 768 | |
| 769 | |
| 770 | //------------------------------------------------- |
| 771 | // econet_clk_w - |
| 772 | //------------------------------------------------- |
| 773 | |
770 | 774 | void e01_device::econet_clk(int state) |
771 | 775 | { |
772 | 776 | m_adlc->rxc_w(state); |
trunk/src/emu/bus/econet/e01.h
r26712 | r26713 | |
58 | 58 | DECLARE_WRITE8_MEMBER( rtc_data_w ); |
59 | 59 | DECLARE_WRITE_LINE_MEMBER( rtc_irq_w ); |
60 | 60 | DECLARE_WRITE_LINE_MEMBER( adlc_irq_w ); |
61 | | DECLARE_READ_LINE_MEMBER( econet_data_r ); |
62 | 61 | DECLARE_WRITE_LINE_MEMBER( econet_data_w ); |
63 | 62 | DECLARE_WRITE_LINE_MEMBER( via_irq_w ); |
64 | 63 | DECLARE_WRITE_LINE_MEMBER( clk_en_w ); |
r26712 | r26713 | |
81 | 80 | virtual ioport_constructor device_input_ports() const; |
82 | 81 | |
83 | 82 | // device_econet_interface overrides |
| 83 | virtual void econet_data(int state); |
84 | 84 | virtual void econet_clk(int state); |
85 | 85 | |
86 | 86 | required_device<m65c02_device> m_maincpu; |
trunk/src/mess/drivers/bbc.c
r26712 | r26713 | |
598 | 598 | static const mc6854_interface adlc_intf = |
599 | 599 | { |
600 | 600 | DEVCB_NULL, |
601 | | DEVCB_DEVICE_LINE_MEMBER(ECONET_TAG, econet_device, data_r), |
602 | 601 | DEVCB_DEVICE_LINE_MEMBER(ECONET_TAG, econet_device, data_w), |
603 | 602 | NULL, |
604 | 603 | DEVCB_NULL, |
r26712 | r26713 | |
623 | 622 | static ECONET_INTERFACE( econet_intf ) |
624 | 623 | { |
625 | 624 | DEVCB_DRIVER_LINE_MEMBER(bbc_state, econet_clk_w), |
626 | | DEVCB_NULL |
| 625 | DEVCB_DEVICE_LINE_MEMBER("mc6854", mc6854_device, set_rx) |
627 | 626 | }; |
628 | 627 | |
629 | 628 | static MACHINE_CONFIG_FRAGMENT( bbc_cartslot ) |