mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
rz1: Fix keyboard hookup, output lcd data to console
This commit is contained in:
parent
4fe45e51cc
commit
a652a4d686
@ -34,7 +34,8 @@ public:
|
||||
rz1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_keys(*this, "kc%u", 0), m_key_select(0)
|
||||
m_keys(*this, "kc%u", 0), m_key_select(0),
|
||||
m_port_b(0xff)
|
||||
{ }
|
||||
|
||||
void rz1(machine_config &config);
|
||||
@ -53,9 +54,14 @@ private:
|
||||
DECLARE_WRITE8_MEMBER(port_b_w);
|
||||
DECLARE_READ8_MEMBER(port_c_r);
|
||||
DECLARE_WRITE8_MEMBER(port_c_w);
|
||||
DECLARE_READ8_MEMBER(port_d_r);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(upd934g_c_w);
|
||||
DECLARE_WRITE8_MEMBER(upd934g_b_w);
|
||||
DECLARE_READ8_MEMBER(key_r);
|
||||
DECLARE_WRITE8_MEMBER(leds_w);
|
||||
|
||||
uint8_t m_key_select;
|
||||
uint8_t m_port_b;
|
||||
};
|
||||
|
||||
|
||||
@ -67,6 +73,11 @@ ADDRESS_MAP_START( rz1_state::map )
|
||||
// AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0)
|
||||
AM_RANGE(0x2000, 0x3fff) AM_RAM
|
||||
AM_RANGE(0x4000, 0x7fff) AM_ROM AM_REGION("program", 0)
|
||||
AM_RANGE(0x8000, 0x8fff) AM_WRITE(upd934g_c_w)
|
||||
AM_RANGE(0x9000, 0x9fff) AM_READWRITE(key_r, upd934g_b_w)
|
||||
AM_RANGE(0xa000, 0xbfff) AM_RAM // sample ram 1
|
||||
AM_RANGE(0xc000, 0xdfff) AM_RAM // sample ram 2
|
||||
AM_RANGE(0xe000, 0xe001) AM_WRITE(leds_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -76,70 +87,70 @@ ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( rz1 )
|
||||
PORT_START("kc0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("COWBELL")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLAPS")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("OPEN HH")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RIM")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TOM3")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TOM1")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TOM1") PORT_CODE(KEYCODE_F1)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TOM3") PORT_CODE(KEYCODE_F2)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RIM") PORT_CODE(KEYCODE_F3)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("OPEN HH") PORT_CODE(KEYCODE_F4)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CLAPS") PORT_CODE(KEYCODE_F5)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("COWBELL") PORT_CODE(KEYCODE_F6)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CRASH")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RIDE")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLOSED HH")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S D")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B D")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TOM2")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TOM2") PORT_CODE(KEYCODE_F7)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B D") PORT_CODE(KEYCODE_F8)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("S D") PORT_CODE(KEYCODE_F9)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CLOSED HH") PORT_CODE(KEYCODE_F10)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RIDE") PORT_CODE(KEYCODE_F11)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CRASH") PORT_CODE(KEYCODE_F12)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ACCENT")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MUTE")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SAMPLE 4")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SAMPLE 3")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SAMPLE 2")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SAMPLE 1")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SAMPLE 1") PORT_CODE(KEYCODE_1)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SAMPLE 2") PORT_CODE(KEYCODE_2)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SAMPLE 3") PORT_CODE(KEYCODE_3)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SAMPLE 4") PORT_CODE(KEYCODE_4)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MUTE") PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ACCENT") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RESET/COPY")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TEMPO \xe2\x96\xbd")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TEMPO \xe2\x96\xb3")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SAMPLING")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CONTINUE START")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("START/STOP")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("START/STOP") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CONTINUE START") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SAMPLING") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TEMPO \xe2\x96\xb3") PORT_CODE(KEYCODE_PLUS_PAD)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TEMPO \xe2\x96\xbd") PORT_CODE(KEYCODE_MINUS_PAD)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET/COPY") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI CLOCK")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI CH")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MT LOAD")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MT SAVE")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 (1/16)")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4 (1/12)")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3 (1/8)")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2 (1/6)")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 (1/4)")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0 (1/2)")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MT SAVE") PORT_CODE(KEYCODE_5)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MT LOAD") PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MIDI CH") PORT_CODE(KEYCODE_7)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MIDI CLOCK") PORT_CODE(KEYCODE_8)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xe2\x96\xbd (NO)")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xe2\x96\xb3 (YES)")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9 (1/96)")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8 (1/48)")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 (1/32)")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6 (1/24)")
|
||||
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 (1/2)") PORT_CODE(KEYCODE_0_PAD)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 (1/4)") PORT_CODE(KEYCODE_1_PAD)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 (1/6)") PORT_CODE(KEYCODE_2_PAD)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 (1/8)") PORT_CODE(KEYCODE_3_PAD)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4 (1/12)") PORT_CODE(KEYCODE_4_PAD)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5 (1/16)") PORT_CODE(KEYCODE_5_PAD)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("kc7")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 (1/24)") PORT_CODE(KEYCODE_6_PAD)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 (1/32)") PORT_CODE(KEYCODE_7_PAD)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 (1/48)") PORT_CODE(KEYCODE_8_PAD)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 (1/96)") PORT_CODE(KEYCODE_9_PAD)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xe2\x96\xb3 (YES)") PORT_CODE(KEYCODE_UP)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xe2\x96\xbd (NO)") PORT_CODE(KEYCODE_DOWN)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -147,15 +158,32 @@ INPUT_PORTS_END
|
||||
// MACHINE EMULATION
|
||||
//**************************************************************************
|
||||
|
||||
WRITE8_MEMBER( rz1_state::upd934g_c_w )
|
||||
{
|
||||
logerror("upd934g_c_w: %02x = %02x\n", offset >> 8, (data >> 2) & 0x0f);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( rz1_state::upd934g_b_w )
|
||||
{
|
||||
logerror("upd934g_b_w: %02x = %02x\n", offset >> 8, (data >> 2) & 0x0f);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( rz1_state::port_a_w )
|
||||
{
|
||||
logerror("port_a_w: %02x\n", data);
|
||||
m_key_select = data & 0x07;
|
||||
if (0)
|
||||
logerror("port_a_w: %02x\n", data);
|
||||
|
||||
m_key_select = data;
|
||||
|
||||
// output lcd data to console until it's hooked up properly
|
||||
if (m_port_b == 0x37 || m_port_b == 0x33)
|
||||
printf("%c", data);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( rz1_state::port_b_w )
|
||||
{
|
||||
logerror("port_b_w: %02x\n", data);
|
||||
m_port_b = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER( rz1_state::port_c_r )
|
||||
@ -168,9 +196,25 @@ WRITE8_MEMBER( rz1_state::port_c_w )
|
||||
logerror("port_c_w: %02x\n", data);
|
||||
}
|
||||
|
||||
READ8_MEMBER( rz1_state::port_d_r )
|
||||
READ8_MEMBER( rz1_state::key_r )
|
||||
{
|
||||
return m_keys[m_key_select]->read();
|
||||
uint8_t data = 0;
|
||||
|
||||
if (BIT(m_key_select, 0) == 0) data |= m_keys[0]->read();
|
||||
if (BIT(m_key_select, 1) == 0) data |= m_keys[1]->read();
|
||||
if (BIT(m_key_select, 2) == 0) data |= m_keys[2]->read();
|
||||
if (BIT(m_key_select, 3) == 0) data |= m_keys[3]->read();
|
||||
if (BIT(m_key_select, 4) == 0) data |= m_keys[4]->read();
|
||||
if (BIT(m_key_select, 5) == 0) data |= m_keys[5]->read();
|
||||
if (BIT(m_key_select, 6) == 0) data |= m_keys[6]->read();
|
||||
if (BIT(m_key_select, 7) == 0) data |= m_keys[7]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( rz1_state::leds_w )
|
||||
{
|
||||
logerror("leds_w: %02x\n", data);
|
||||
}
|
||||
|
||||
void rz1_state::machine_start()
|
||||
@ -195,7 +239,6 @@ MACHINE_CONFIG_START( rz1_state::rz1 )
|
||||
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(rz1_state, port_b_w))
|
||||
MCFG_UPD7810_PORTC_READ_CB(READ8(rz1_state, port_c_r))
|
||||
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(rz1_state, port_c_w))
|
||||
MCFG_UPD7810_PORTD_READ_CB(READ8(rz1_state, port_d_r))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user