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); } } }
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); } } }