void cococart_slot_device::set_line(const char *line_name, coco_cartridge_line &line, cococart_line_value value) { if ((line.value != value) || (value == COCOCART_LINE_VALUE_Q)) { line.value = value; if (LOG_LINE) logerror("[%s]: set_line(): %s <= %s\n", machine().describe_context(), line_name, line_value_string(value)); /* engage in a bit of gymnastics for this odious 'Q' value */ switch(line.value) { case COCOCART_LINE_VALUE_CLEAR: line.line = 0x00; line.q_count = 0; break; case COCOCART_LINE_VALUE_ASSERT: line.line = 0x01; line.q_count = 0; break; case COCOCART_LINE_VALUE_Q: line.line = line.line ? 0x00 : 0x01; if (line.q_count++ < 4) set_line_timer(line, value); break; } /* invoke the callback, if present */ if (!line.callback.isnull()) line.callback(line.line); } }
void cococart_slot_device::twiddle_line_if_q(coco_cartridge_line &line) { if (line.value == COCOCART_LINE_VALUE_Q) { line.q_count = 0; set_line_timer(line, COCOCART_LINE_VALUE_Q); } }
static void twiddle_line_if_q(device_t *device, coco_cartridge_line *line) { if (line->value == COCOCART_LINE_VALUE_Q) { line->q_count = 0; set_line_timer(device, line, COCOCART_LINE_VALUE_Q); } }
void cococart_slot_device::twiddle_line_if_q(coco_cartridge_line &line) { if (line.value == line_value::Q) { line.q_count = 0; set_line_timer(line, line_value::Q); } }
void cococart_slot_device::cart_set_line(cococart_line line, cococart_line_value value) { switch (line) { case COCOCART_LINE_CART: set_line_timer(m_cart_line, value); break; case COCOCART_LINE_NMI: set_line_timer(m_nmi_line, value); break; case COCOCART_LINE_HALT: set_line_timer(m_halt_line, value); break; case COCOCART_LINE_SOUND_ENABLE: // do nothing for now break; } }
void coco_cartridge_set_line(device_t *device, cococart_line line, cococart_line_value value) { switch (line) { case COCOCART_LINE_CART: set_line_timer(device, &get_token(device)->cart_line, value); break; case COCOCART_LINE_NMI: set_line_timer(device, &get_token(device)->nmi_line, value); break; case COCOCART_LINE_HALT: set_line_timer(device, &get_token(device)->halt_line, value); break; case COCOCART_LINE_SOUND_ENABLE: /* do nothing for now */ break; } }
void cococart_slot_device::set_line_value(cococart_slot_device::line which, cococart_slot_device::line_value value) { switch (which) { case cococart_slot_device::line::CART: set_line_timer(m_cart_line, value); break; case cococart_slot_device::line::NMI: set_line_timer(m_nmi_line, value); break; case cococart_slot_device::line::HALT: set_line_timer(m_halt_line, value); break; case cococart_slot_device::line::SOUND_ENABLE: if (m_cart) m_cart->set_sound_enable(value != cococart_slot_device::line_value::CLEAR); break; } }