trunk/src/mess/machine/upd71071.c
| r19117 | r19118 | |
| 108 | 108 | int transfer_size[4]; |
| 109 | 109 | int base; |
| 110 | 110 | const upd71071_intf* intf; |
| 111 | devcb_resolved_write_line m_out_hreq_func; |
| 112 | devcb_resolved_write_line m_out_eop_func; |
| 113 | devcb_resolved_write_line m_out_dack_func[4]; |
| 114 | int m_hreq; |
| 115 | int m_eop; |
| 111 | 116 | }; |
| 112 | 117 | |
| 113 | 118 | INLINE upd71071_t *get_safe_token(device_t *device) |
| r19117 | r19118 | |
| 242 | 247 | int x; |
| 243 | 248 | |
| 244 | 249 | dmac->intf = (const upd71071_intf*)device->static_config(); |
| 250 | dmac->m_out_hreq_func.resolve(dmac->intf->m_out_hreq_cb, *device); |
| 251 | dmac->m_out_eop_func.resolve(dmac->intf->m_out_eop_cb, *device); |
| 245 | 252 | for(x=0;x<4;x++) |
| 246 | 253 | { |
| 247 | 254 | dmac->timer[x] = device->machine().scheduler().timer_alloc(FUNC(dma_transfer_timer), (void*)device); |
| 255 | dmac->m_out_dack_func[x].resolve(dmac->intf->m_out_dack_cb[x], *device); |
| 248 | 256 | } |
| 249 | 257 | dmac->selected_channel = 0; |
| 250 | 258 | } |
| r19117 | r19118 | |
| 447 | 455 | } |
| 448 | 456 | |
| 449 | 457 | |
| 458 | void set_hreq( device_t *device, int state) |
| 459 | { |
| 460 | upd71071_t* dmac = get_safe_token(device); |
| 461 | |
| 462 | if (dmac->m_hreq != state) |
| 463 | { |
| 464 | dmac->m_out_hreq_func(state); |
| 465 | |
| 466 | dmac->m_hreq = state; |
| 467 | } |
| 468 | } |
| 469 | |
| 470 | void set_eop( device_t *device, int state) |
| 471 | { |
| 472 | upd71071_t* dmac = get_safe_token(device); |
| 473 | |
| 474 | if (dmac->m_eop != state) |
| 475 | { |
| 476 | dmac->m_out_eop_func(state); |
| 477 | |
| 478 | dmac->m_eop = state; |
| 479 | } |
| 480 | } |
trunk/src/mess/machine/upd71071.h
| r19117 | r19118 | |
| 7 | 7 | { |
| 8 | 8 | const char* cputag; |
| 9 | 9 | int clock; |
| 10 | devcb_write_line m_out_hreq_cb; |
| 11 | devcb_write_line m_out_eop_cb; |
| 10 | 12 | UINT16 (*dma_read[4])(running_machine &machine); |
| 11 | 13 | void (*dma_write[4])(running_machine &machine, UINT16 data); |
| 14 | devcb_write_line m_out_dack_cb[4]; |
| 12 | 15 | }; |
| 13 | 16 | |
| 14 | 17 | int upd71071_dmarq(device_t* device,int state,int channel); |
| r19117 | r19118 | |
| 40 | 43 | DECLARE_READ8_DEVICE_HANDLER(upd71071_r); |
| 41 | 44 | DECLARE_WRITE8_DEVICE_HANDLER(upd71071_w); |
| 42 | 45 | |
| 46 | void set_hreq( device_t *device, int state); |
| 47 | void set_eop( device_t *device, int state); |
| 48 | |
| 49 | |
| 43 | 50 | #endif /*UPD71071_H_*/ |
trunk/src/mess/drivers/pc88va.c
| r19117 | r19118 | |
| 1728 | 1728 | { |
| 1729 | 1729 | "maincpu", |
| 1730 | 1730 | 8000000, |
| 1731 | DEVCB_NULL, |
| 1732 | DEVCB_NULL, |
| 1731 | 1733 | { 0, 0, m_fdc_dma_r, 0 }, |
| 1732 | | { 0, 0, m_fdc_dma_w, 0 } |
| 1734 | { 0, 0, m_fdc_dma_w, 0 }, |
| 1735 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
| 1733 | 1736 | }; |
| 1734 | 1737 | |
| 1735 | 1738 | FLOPPY_FORMATS_MEMBER( pc88va_state::floppy_formats ) |
trunk/src/mess/drivers/fmtowns.c
| r19117 | r19118 | |
| 2603 | 2603 | { |
| 2604 | 2604 | "maincpu", |
| 2605 | 2605 | 4000000, |
| 2606 | DEVCB_NULL, |
| 2607 | DEVCB_NULL, |
| 2606 | 2608 | { towns_fdc_dma_r, towns_scsi_dma_r, 0, towns_cdrom_dma_r }, |
| 2607 | | { towns_fdc_dma_w, towns_scsi_dma_w, 0, 0 } |
| 2609 | { towns_fdc_dma_w, towns_scsi_dma_w, 0, 0 }, |
| 2610 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
| 2608 | 2611 | }; |
| 2609 | 2612 | |
| 2610 | 2613 | static const ym3438_interface ym3438_intf = |