added buttons according to schems, but doesn't seem to be doing much

This commit is contained in:
hap 2015-07-19 16:19:17 +02:00
parent a526e64c53
commit ee258a156b

View File

@ -35,9 +35,13 @@ public:
DECLARE_WRITE8_MEMBER(ram_w);
DECLARE_READ8_MEMBER(ram_r);
DECLARE_WRITE8_MEMBER(strobe_w);
void refresh_ram();
DECLARE_WRITE8_MEMBER(led_w);
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_WRITE8_MEMBER(strobe_w);
DECLARE_READ8_MEMBER(input_r);
TIMER_DEVICE_CALLBACK_MEMBER(t3_clock);
TIMER_DEVICE_CALLBACK_MEMBER(t3_off);
@ -124,6 +128,16 @@ READ8_MEMBER(tb303_state::ram_r)
return 0;
}
WRITE8_MEMBER(tb303_state::led_w)
{
}
WRITE8_MEMBER(tb303_state::switch_w)
{
// MCU H: input/led mux
m_inp_mux = data;
}
WRITE8_MEMBER(tb303_state::strobe_w)
{
// MCU I0: RAM _WE
@ -134,6 +148,19 @@ WRITE8_MEMBER(tb303_state::strobe_w)
// MCU I2: gate signal
}
READ8_MEMBER(tb303_state::input_r)
{
// MCU A,B: multiplexed inputs
// if input mux(port H) is 0, port A status buffer & gate is selected (via Q5 NAND)
if (offset == NEC_UCOM4_PORTA && m_inp_mux == 0)
{
// todo..
return m_inp_matrix[4]->read();
}
else
return read_inputs(4) >> (offset*4) & 0xf;
}
/***************************************************************************
@ -143,6 +170,55 @@ WRITE8_MEMBER(tb303_state::strobe_w)
***************************************************************************/
static INPUT_PORTS_START( tb303 )
PORT_START("IN.0") // H0 port A/B
PORT_CONFNAME( 0x03, 0x03, "Mode" )
PORT_CONFSETTING( 0x03, "Track Write" )
PORT_CONFSETTING( 0x02, "Track Play" )
PORT_CONFSETTING( 0x00, "Pattern Play" )
PORT_CONFSETTING( 0x01, "Pattern Write" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("DEL C#")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INS D#")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("1 C")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("2 D")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("3 E")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_NAME("4 F")
PORT_START("IN.1") // H1 port A/B
PORT_CONFNAME( 0x07, 0x00, "Track / Patt.Group" )
PORT_CONFSETTING( 0x00, "1 / I" )
PORT_CONFSETTING( 0x01, "2 / I" )
PORT_CONFSETTING( 0x02, "3 / II" )
PORT_CONFSETTING( 0x03, "4 / II" )
PORT_CONFSETTING( 0x04, "5 / III" )
PORT_CONFSETTING( 0x05, "6 / III" )
PORT_CONFSETTING( 0x06, "7 / IV" )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_NAME("5 G")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_NAME("6 A")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_NAME("7 B")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_NAME("8 C")
PORT_START("IN.2") // H2 port A/B
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Pattern Clear")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("Function")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Pitch Mode")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Time Mode")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("9 Step")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("0 3n")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("100 A")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("200 B")
PORT_START("IN.3") // H3 port B
PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("F#")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("G#")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("A#")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Back")
PORT_START("IN.4") // H=0 port A
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Run/Stop")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Tap")
PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
@ -174,15 +250,15 @@ static MACHINE_CONFIG_START( tb303, tb303_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", NEC_D650, TB303_T2_CLOCK_HZ)
//MCFG_UCOM4_READ_A_CB
//MCFG_UCOM4_READ_B_CB
MCFG_UCOM4_READ_A_CB(READ8(tb303_state, input_r))
MCFG_UCOM4_READ_B_CB(READ8(tb303_state, input_r))
MCFG_UCOM4_READ_C_CB(READ8(tb303_state, ram_r))
MCFG_UCOM4_WRITE_C_CB(WRITE8(tb303_state, ram_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(tb303_state, ram_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(tb303_state, ram_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(tb303_state, ram_w))
//MCFG_UCOM4_WRITE_G_CB
//MCFG_UCOM4_WRITE_H_CB
MCFG_UCOM4_WRITE_G_CB(WRITE8(tb303_state, led_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(tb303_state, switch_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(tb303_state, strobe_w))
MCFG_TIMER_DRIVER_ADD_PERIODIC("t3_clock", tb303_state, t3_clock, TB303_T3_CLOCK)