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 ) |