예제 #1
0
파일: sharc.c 프로젝트: shangma/mame0112
static void iop_write_latency_effect(void)
{
	UINT32 data = iop_latency_data;

	switch (iop_latency_reg)
	{
		case 0x1c:
		{
			if (data & 0x1)
			{
				sharc_dma_exec(6);
			}
			break;
		}

		case 0x1d:
		{
			if (data & 0x1)
			{
				sharc_dma_exec(7);
			}
			break;
		}

		default:	fatalerror("SHARC: iop_write_latency_effect: unknown IOP register %02X", iop_latency_reg);
	}
}
예제 #2
0
static void iop_latency_op(void)
{
	UINT32 data = iop_latency_data;

	switch (iop_latency_reg)
	{
		case 0x1c:
		{
			sharc.dma[6].control = data;
			if (data & 0x1) {
				sharc_dma_exec(6);
			}
			break;
		}

		case 0x1d:
		{
			sharc.dma[7].control = data;
			if (data & 0x1) {
				sharc_dma_exec(7);
			}
			break;
		}

		default:	fatalerror("SHARC: add_iop_latency_op: unknown IOP register %02X", iop_latency_reg);
	}
}
예제 #3
0
파일: sharc.c 프로젝트: shangma/mame0112
static void sharc_reset(void)
{
	memset(sharc.internal_ram, 0, 2 * 0x10000 * sizeof(UINT16));

	switch(sharc.boot_mode)
	{
		case BOOT_MODE_EPROM:
		{
			sharc.dma[6].int_index		= 0x20000;
			sharc.dma[6].int_modifier	= 1;
			sharc.dma[6].int_count		= 0x100;
			sharc.dma[6].ext_index		= 0x400000;
			sharc.dma[6].ext_modifier	= 1;
			sharc.dma[6].ext_count		= 0x600;
			sharc.dma[6].control		= 0x2a1;

			sharc_dma_exec(6);
			dma_op(dmaop_src, dmaop_dst, dmaop_src_modifier, dmaop_dst_modifier,
				   dmaop_src_count, dmaop_dst_count, dmaop_pmode);
			dmaop_cycles = 0;

			break;
		}

		case BOOT_MODE_HOST:
			break;

		default:
			fatalerror("SHARC: Unimplemented boot mode %d", sharc.boot_mode);
	}

	sharc.pc = 0x20004;
	sharc.daddr = sharc.pc + 1;
	sharc.faddr = sharc.daddr + 1;
	sharc.nfaddr = sharc.faddr+1;

	sharc.idle = 0;
	sharc.stky = 0x5400000;

	interrupt_active = 0;
}