From a652a4d686a703abdeafa6a959e550bca9119456 Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Wed, 14 Mar 2018 18:49:26 +0100 Subject: rz1: Fix keyboard hookup, output lcd data to console --- src/mame/drivers/rz1.cpp | 157 ++++++++++++++++++++++++++++++----------------- 1 file changed, 100 insertions(+), 57 deletions(-) diff --git a/src/mame/drivers/rz1.cpp b/src/mame/drivers/rz1.cpp index dfd605dabde..ba5e00a6dbe 100644 --- a/src/mame/drivers/rz1.cpp +++ b/src/mame/drivers/rz1.cpp @@ -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 ) +{ + 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 ) { - return m_keys[m_key_select]->read(); + 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 -- cgit v1.2.3