Exemple #1
0
static void fm7_alu_function_and(fm7_state *state, UINT32 offset)
{
	int x;
	UINT8 dat;
	int page = 0;
	UINT8 mask;

	if(state->m_alu.command & 0x40)
		fm7_alu_function_compare(state, offset);

	if(offset >= 0xc000)
	{
		page = 1;
		offset += state->m_video.vram_offset2;
	}
	else
		offset += state->m_video.vram_offset;

	for(x=0;x<3;x++) // cycle through banks
	{
		if(!(state->m_alu.bank_disable & (1 << x)))
		{
			if(state->m_alu.lcolour & (1 << x))
				dat = 0xff;
			else
				dat = 0;

			mask = (state->m_video_ram[(offset & 0x3fff) + (x * 0x4000) + (page * 0xc000)]);
			dat &= mask;

			mask &= state->m_alu.mask;
			dat &= ~state->m_alu.mask;
			dat |= mask;

			fm7_alu_mask_write(state, offset,x,dat);
		}
	}
}
Exemple #2
0
void fm7_state::fm7_alu_function_pset(UINT32 offset)
{
	// PSET - simply sets the pixels to the selected logical colour
	int x;
	UINT8 dat;
	int page = 0;
	UINT8 mask;

	if(m_alu.command & 0x40)
		fm7_alu_function_compare(offset);

	if(offset >= 0xc000)
	{
		page = 1;
		offset += m_video.vram_offset2;
	}
	else
		offset += m_video.vram_offset;

	for(x=0;x<3;x++) // cycle through banks
	{
		if(!(m_alu.bank_disable & (1 << x)))
		{
			if(m_alu.lcolour & (1 << x))
				dat = 0xff;
			else
				dat = 0;

			mask = (m_video_ram[(offset & 0x3fff) + (x * 0x4000) + (page * 0xc000)]) & m_alu.mask;
			dat &= ~m_alu.mask;
			dat |= mask;

			fm7_alu_mask_write(offset,x,dat);
		}
	}
}