void melps4_cpu_device::write_d_pin(int bit, int state) { // clear all port D pins if (bit == MELPS4_PORTD_CLR) { m_port_d = 0; m_write_d(bit, 0, 0xffff); } // set/reset one port D pin else { bit &= 0xf; m_port_d = ((m_port_d & (~(1 << bit))) | (state << bit)) & m_d_mask; m_write_d(bit, m_port_d, 0xffff); } }
void ucom4_cpu_device::output_w(int index, UINT8 data) { index &= 0xf; data &= 0xf; switch (index) { case NEC_UCOM4_PORTC: m_write_c(index, data, 0xff); break; case NEC_UCOM4_PORTD: m_write_d(index, data, 0xff); break; case NEC_UCOM4_PORTE: m_write_e(index, data, 0xff); break; case NEC_UCOM4_PORTF: m_write_f(index, data, 0xff); break; case NEC_UCOM4_PORTG: m_write_g(index, data, 0xff); break; case NEC_UCOM4_PORTH: m_write_h(index, data, 0xff); break; case NEC_UCOM4_PORTI: m_write_i(index, data & 7, 0xff); break; default: logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data & 0xf, m_prev_pc); break; } m_port_out[index] = data; }