コード例 #1
0
ファイル: ieee488.c プロジェクト: antervud/MAMEHub
UINT8 c64_ieee488_device::c64_cd_r(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2)
{
	data = m_exp->cd_r(space, offset, data, sphi2, ba, roml, romh, io1, io2);

	if (!roml && m_roml_sel)
	{
		data = m_roml[offset & 0xfff];
	}
	else if (!io2)
	{
		data = tpi6525_r(m_tpi, space, offset & 0x07);
	}

	return data;
}
コード例 #2
0
ファイル: amigacd.c プロジェクト: poliva/mame-rr
static READ16_HANDLER( amiga_dmac_r )
{
	offset &= 0xff;

	switch( offset )
	{
		case 0x20:
		{
			UINT8	v = dmac_data.istr;
			LOG(( "DMAC: PC=%08x - ISTR Read(%04x)\n", cpu_get_pc(&space->device()), dmac_data.istr ));

			dmac_data.istr &= ~0x0f;
			return v;
		}
		break;

		case 0x21:
		{
			LOG(( "DMAC: PC=%08x - CNTR Read(%04x)\n", cpu_get_pc(&space->device()), dmac_data.cntr ));
			return dmac_data.cntr;
		}
		break;

		case 0x40:	/* wtc hi */
		{
			LOG(( "DMAC: PC=%08x - WTC HI Read\n", cpu_get_pc(&space->device()) ));
			return (dmac_data.wtc >> 16);
		}
		break;

		case 0x41:	/* wtc lo */
		{
			LOG(( "DMAC: PC=%08x - WTC LO Read\n", cpu_get_pc(&space->device()) ));
			return dmac_data.wtc;
		}
		break;

		case 0x42:	/* acr hi */
		{
			LOG(( "DMAC: PC=%08x - ACR HI Read\n", cpu_get_pc(&space->device()) ));
			return (dmac_data.acr >> 16);
		}
		break;

		case 0x43:	/* acr lo */
		{
			LOG(( "DMAC: PC=%08x - ACR LO Read\n", cpu_get_pc(&space->device()) ));
			return dmac_data.acr;
		}
		break;

		case 0x48:	/* wd33c93 SCSI expansion */
		case 0x49:
		{
			LOG(( "DMAC: PC=%08x - WD33C93 Read(%d)\n", cpu_get_pc(&space->device()), offset & 1 ));
			return 0x00;	/* Not available without SCSI expansion */
		}
		break;

		case 0x50:
		{
			LOG(( "DMAC: PC=%08x - CDROM RESP Read\n", cpu_get_pc(&space->device()) ));
			return matsucd_response_r(space->machine());
		}
		break;

		case 0x51:	/* XT IO */
		case 0x52:
		case 0x53:
		{
			LOG(( "DMAC: PC=%08x - XT IO Read(%d)\n", cpu_get_pc(&space->device()), (offset & 3)-1 ));
			return 0xff;
		}
		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 Read(%d)\n", cpu_get_pc(&space->device()), (offset - 0x58) ));
			return tpi6525_r(tpi, offset - 0x58);
		}
		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-READ: PC=%08x, offset = %02x\n", cpu_get_pc(&space->device()), offset );
		break;
	}

	return 0;
}