void mb87078_device::data_w( int data, int dsel ) { if (m_reset_comp == 0) return; if (dsel == 0) /* gd0 - gd5 */ { m_latch[0][m_channel_latch] = data & 0x3f; } else /* dcs1, dsc2, en, c0, c32, X */ { m_channel_latch = data & 3; m_latch[1][m_channel_latch] = data & 0x1f; //always zero bit 5 } gain_recalc(); }
void MB87078_data_w(int which, int data, int dsel) { struct MB87078 *c = chip + which; if (c->reset_comp==0) return; if (dsel==0) { /*gd0-gd5*/ c->latch[0+c->channel_latch] = data & 0x3f; } else { /*dcs1,dsc2,en,c0,c32,X*/ c->channel_latch = data & 3; c->latch[4+c->channel_latch] = data & 0x1f; //always zero bit 5 } gain_recalc(which); }
void MB87078_reset_comp_w(int which, int level) { struct MB87078 *c = chip + which; c->reset_comp = level; /*this seems to be true, according to the datasheets*/ if (level==0) { c->latch[0] = 0x3f; c->latch[1] = 0x3f; c->latch[2] = 0x3f; c->latch[3] = 0x3f; c->latch[4] = 0x0 | 0x4; c->latch[5] = 0x1 | 0x4; c->latch[6] = 0x2 | 0x4; c->latch[7] = 0x3 | 0x4; } gain_recalc(which); }
void mb87078_device::reset_comp_w( int level ) { m_reset_comp = level; /*this seems to be true, according to the datasheets*/ if (level == 0) { m_latch[0][0] = 0x3f; m_latch[0][1] = 0x3f; m_latch[0][2] = 0x3f; m_latch[0][3] = 0x3f; m_latch[1][0] = 0x0 | 0x4; m_latch[1][1] = 0x1 | 0x4; m_latch[1][2] = 0x2 | 0x4; m_latch[1][3] = 0x3 | 0x4; } gain_recalc(); }