static READ8_HANDLER( supercon_port3_r ) { supercon_state *state = space->machine().driver_data<supercon_state>(); int i; UINT8 key_data=0; static const char *const status_lines[8] = { "STATUS_1", "STATUS_2", "STATUS_3", "STATUS_4", "STATUS_5", "STATUS_6", "STATUS_7", "STATUS_8" }; LOG(("Read from %04x \n",0x1E00)); /* remove last bit (only if it was not already set) */ if ( state->m_data_1F00 & LED_LINE_AH ) { if (state->m_last_LED_value != state->m_LED_AH) state->m_LED_AH=state->m_LED_AH & ~state->m_data_1E00; } else if ( state->m_data_1F00 & LED_LINE_ST) { if (state->m_last_LED_value != state->m_LED_ST) state->m_LED_ST=state->m_LED_ST & ~state->m_data_1E00; } else if ( state->m_data_1F00 & LED_LINE_18 ) { if (state->m_last_LED_value != state->m_LED_18) state->m_LED_18=state->m_LED_18 & ~state->m_data_1E00; } LOG(("LED_18 from %02x \n",state->m_LED_18)); LOG(("LED_AH from %02x \n",state->m_LED_AH)); LOG(("LED_ST from %02x \n",state->m_LED_ST)); if (state->m_led_update) /*No LED Update if Port 1C00,1D00 was read */ update_leds(state); state->m_remove_led_flag=TRUE; state->m_led_update=TRUE; state->m_LED_18=0; state->m_LED_AH=0; state->m_LED_ST=0; /* Start */ if (!state->m_emu_started) return 0xbf; else state->m_timer_update_irq->adjust( attotime::zero, 0, attotime::from_hz(598) ); //HACK adjust timer after start ??? /* Buttons */ i=get_first_bit(state->m_data_1E00); if (i==NOT_VALID) return 0xff; key_data=input_port_read(space->machine(), status_lines[i]); if (key_data != 0xc0) { LOG(("%s, key_data: %02x \n",status_lines[i],key_data)); /* Button: New Game -> initialize board */ if (i==0 && key_data==0x80) { set_board(state); set_pieces(state); state->m_emu_started=FALSE; } /* Button: Clear Board -> remove all pieces */ if (i==3 && key_data==0x80) clear_pieces(state); if (key_data != 0xff ) return key_data; } return 0xc0; }
void clear() { clear_pieces(); }