void c64_ieee488_device::c64_cd_w(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2) { if (!io2) { tpi6525_w(m_tpi, space, offset & 0x07, data); } m_exp->cd_w(space, offset, data, sphi2, ba, roml, romh, io1, io2); }
static WRITE16_HANDLER( amiga_dmac_w ) { offset &= 0xff; switch( offset ) { case 0x21: /* control write */ { LOG(( "DMAC: PC=%08x - CNTR Write(%04x)\n", cpu_get_pc(&space->device()), data )); dmac_data.cntr = data; check_interrupts(space->machine()); } break; case 0x40: /* wtc hi */ { LOG(( "DMAC: PC=%08x - WTC HI Write - data = %04x\n", cpu_get_pc(&space->device()), data )); dmac_data.wtc &= 0x0000ffff; dmac_data.wtc |= ((UINT32)data) << 16; } break; case 0x41: /* wtc lo */ { LOG(( "DMAC: PC=%08x - WTC LO Write - data = %04x\n", cpu_get_pc(&space->device()), data )); dmac_data.wtc &= 0xffff0000; dmac_data.wtc |= data; } break; case 0x42: /* acr hi */ { LOG(( "DMAC: PC=%08x - ACR HI Write - data = %04x\n", cpu_get_pc(&space->device()), data )); dmac_data.acr &= 0x0000ffff; dmac_data.acr |= ((UINT32)data) << 16; } break; case 0x43: /* acr lo */ { LOG(( "DMAC: PC=%08x - ACR LO Write - data = %04x\n", cpu_get_pc(&space->device()), data )); dmac_data.acr &= 0xffff0000; dmac_data.acr |= data; } break; case 0x47: /* dawr */ { LOG(( "DMAC: PC=%08x - DAWR Write - data = %04x\n", cpu_get_pc(&space->device()), data )); dmac_data.dawr = data; } break; case 0x48: /* wd33c93 SCSI expansion */ case 0x49: { LOG(( "DMAC: PC=%08x - WD33C93 Write(%d) - data = %04x\n", cpu_get_pc(&space->device()), offset & 1, data )); /* Not available without SCSI expansion */ } break; case 0x50: { LOG(( "DMAC: PC=%08x - CDROM CMD Write - data = %04x\n", cpu_get_pc(&space->device()), data )); matsucd_command_w(space->machine(), data ); } break; case 0x58: /* TPI6525 */ case 0x59: case 0x5A: case 0x5B: case 0x5C: case 0x5D: case 0x5E: case 0x5F: case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: { device_t *tpi = space->machine().device("tpi6525"); LOG(( "DMAC: PC=%08x - TPI6525 Write(%d) - data = %04x\n", cpu_get_pc(&space->device()), (offset - 0x58), data )); tpi6525_w(tpi, offset - 0x58, data); } break; case 0x70: /* DMA start strobe */ { LOG(( "DMAC: PC=%08x - DMA Start Strobe\n", cpu_get_pc(&space->device()) )); dmac_data.dma_timer->adjust(attotime::from_msec( CD_SECTOR_TIME )); } break; case 0x71: /* DMA stop strobe */ { LOG(( "DMAC: PC=%08x - DMA Stop Strobe\n", cpu_get_pc(&space->device()) )); dmac_data.dma_timer->reset( ); } break; case 0x72: /* Clear IRQ strobe */ { LOG(( "DMAC: PC=%08x - IRQ Clear Strobe\n", cpu_get_pc(&space->device()) )); dmac_data.istr &= ~ISTR_INT_P; } break; case 0x74: /* Flush Strobe */ { LOG(( "DMAC: PC=%08x - Flush Strobe\n", cpu_get_pc(&space->device()) )); dmac_data.istr |= ISTR_FE_FLG; } break; default: logerror( "DMAC-WRITE: PC=%08x, offset = %02x, data = %04x\n", cpu_get_pc(&space->device()), offset, data ); break; } }