//WRITE_LINE_MEMBER(write_line) // discrete_device public void discrete_device_write_line_DS_SOUND7_INP(int state) { discrete_device device = (discrete_device)subdevice("discrete"); device.write_line(DS_SOUND7_INP, state); }
static int dss_lfsr_function(discrete_device dev, int myfunc, int in0, int in1, int bitmask) { int retval; in0 &= bitmask; in1 &= bitmask; switch (myfunc) { case DISC_LFSR_XOR: retval = in0 ^ in1; break; case DISC_LFSR_OR: retval = in0 | in1; break; case DISC_LFSR_AND: retval = in0 & in1; break; case DISC_LFSR_XNOR: retval = in0 ^ in1; retval = retval ^ bitmask; /* Invert output */ break; case DISC_LFSR_NOR: retval = in0 | in1; retval = retval ^ bitmask; /* Invert output */ break; case DISC_LFSR_NAND: retval = in0 & in1; retval = retval ^ bitmask; /* Invert output */ break; case DISC_LFSR_IN0: retval = in0; break; case DISC_LFSR_IN1: retval = in1; break; case DISC_LFSR_NOT_IN0: retval = in0 ^ bitmask; break; case DISC_LFSR_NOT_IN1: retval = in1 ^ bitmask; break; case DISC_LFSR_REPLACE: retval = in0 & ~in1; retval = retval | in1; break; case DISC_LFSR_XOR_INV_IN0: retval = in0 ^ bitmask; /* invert in0 */ retval = retval ^ in1; /* xor in1 */ break; case DISC_LFSR_XOR_INV_IN1: retval = in1 ^ bitmask; /* invert in1 */ retval = retval ^ in0; /* xor in0 */ break; default: dev.discrete_log("dss_lfsr_function - Invalid function type passed"); retval = 0; break; } return retval; }