예제 #1
0
파일: ieee488.c 프로젝트: antervud/MAMEHub
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);
}
예제 #2
0
파일: amigacd.c 프로젝트: poliva/mame-rr
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;
	}
}