casio/fp1100.cpp: hookup INTF0 for function keys

This commit is contained in:
angelosa 2024-07-15 11:03:10 +02:00
parent 2542724b51
commit 3722aca699

View File

@ -87,6 +87,7 @@ public:
{ }
void fp1100(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(fkey_hit_cb);
protected:
virtual void machine_start() override;
@ -313,6 +314,7 @@ d6,7 - not used
void fp1100_state::kbd_row_w(u8 data)
{
m_kbd_row = data;
// guess: expect keyboard in open state for leds
if (BIT(m_kbd_row, 5))
{
switch(m_kbd_row & 0xf)
@ -374,7 +376,7 @@ u8 fp1100_state::portb_r()
{
u8 data = m_keyboard[m_kbd_row & 15]->read();
LOG("%s: PortB:%X:%X\n",machine().describe_context(),m_kbd_row,data);
//m_subcpu->set_input_line(UPD7810_INTF0, BIT(data, 7) ? ASSERT_LINE : CLEAR_LINE);
if (BIT(m_kbd_row, 5))
return data;
@ -460,13 +462,23 @@ void fp1100_state::hsync_cb(int state)
}
}
// KI8 specifically connects to INT0 on hit
// TODO: stub, hangs by banging keys too fast
INPUT_CHANGED_MEMBER(fp1100_state::fkey_hit_cb)
{
if (!oldval && newval)
{
m_subcpu->set_input_line(UPD7810_INTF0, ASSERT_LINE);
}
}
static INPUT_PORTS_START( fp1100 )
PORT_START("KEY.0")
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("KEY.1")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_NAME("BREAK")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_NAME("BREAK") PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 1)
PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_NAME("\u30ab\u30ca (KANA)") // カナ
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_NAME("CAPS") PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
@ -475,7 +487,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("SHIFT") PORT_CHAR(UCHAR_SHIFT_1)
PORT_START("KEY.2")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("PF0")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("PF0") PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 2)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("ENTER") PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("KP*")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_NAME(u8"Z \u30c4 \u30c3") PORT_CHAR('Z') PORT_CHAR('z') // ツ ッ
@ -485,7 +497,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_NAME(u8"A \u30c1") PORT_CHAR('A') PORT_CHAR('a') // チ
PORT_START("KEY.3")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("PF1") PORT_CHAR(UCHAR_MAMEKEY(F1))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("PF1") PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 3)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA_PAD) PORT_NAME("KP,")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("KP/") PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_NAME(u8"X \u30b5") PORT_CHAR('X') PORT_CHAR('x')
@ -495,7 +507,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_NAME(u8"S \u30c8") PORT_CHAR('S') PORT_CHAR('s')
PORT_START("KEY.4")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("PF2") PORT_CHAR(UCHAR_MAMEKEY(F2))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("PF2") PORT_CHAR(UCHAR_MAMEKEY(F2)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 4)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("KP.") PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DEL") PORT_CHAR(UCHAR_MAMEKEY(DEL))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_NAME(u8"C \u30bd") PORT_CHAR('C') PORT_CHAR('c') // ソ
@ -505,7 +517,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_NAME(u8"D \u30b7") PORT_CHAR('D') PORT_CHAR('d') // シ
PORT_START("KEY.5")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("PF3") PORT_CHAR(UCHAR_MAMEKEY(F3))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("PF3") PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 5)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_000_PAD) PORT_NAME("KP000")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Right") PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_NAME(u8"V \u30d2") PORT_CHAR('V') PORT_CHAR('v') // ヒ
@ -515,7 +527,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_NAME(u8"F \u30cf") PORT_CHAR('F') PORT_CHAR('f') // ハ
PORT_START("KEY.6")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("PF4") PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("PF4") PORT_CHAR(UCHAR_MAMEKEY(F4)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 6)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Space") PORT_CHAR(' ')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("INS") PORT_CHAR(UCHAR_MAMEKEY(INSERT))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_NAME(u8"B \u30b3") PORT_CHAR('B') PORT_CHAR('b') // コ
@ -525,7 +537,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_NAME(u8"G \u30ad") PORT_CHAR('G') PORT_CHAR('g') // キ
PORT_START("KEY.7")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("PF5") PORT_CHAR(UCHAR_MAMEKEY(F5))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("PF5") PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 7)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("KP0") PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_NAME("Down") PORT_CHAR(UCHAR_MAMEKEY(DOWN))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_NAME(u8"N \u30df") PORT_CHAR('N') PORT_CHAR('n') // ミ
@ -535,7 +547,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_NAME(u8"H \u30af") PORT_CHAR('H') PORT_CHAR('h') // ク
PORT_START("KEY.8")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("PF6") PORT_CHAR(UCHAR_MAMEKEY(F6))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("PF6") PORT_CHAR(UCHAR_MAMEKEY(F6)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 8)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("KP2") PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_NAME("Up") PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_NAME(u8"M \u30e2") PORT_CHAR('M') PORT_CHAR('m') // モ
@ -545,7 +557,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_NAME(u8"J \u30de") PORT_CHAR('J') PORT_CHAR('j') // マ
PORT_START("KEY.9")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("PF7") PORT_CHAR(UCHAR_MAMEKEY(F7))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("PF7") PORT_CHAR(UCHAR_MAMEKEY(F7)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 9)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("KP1") PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("HOME CLS") PORT_CHAR(UCHAR_MAMEKEY(HOME))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_NAME(u8", < \u30cd \u3001") PORT_CHAR(',') PORT_CHAR('<') // ネ 、
@ -555,7 +567,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_NAME(u8"K \u30ce") PORT_CHAR('K') PORT_CHAR('k') //
PORT_START("KEY.10")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("PF8") PORT_CHAR(UCHAR_MAMEKEY(F8))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("PF8") PORT_CHAR(UCHAR_MAMEKEY(F8)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 10)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME(u8"] } \u30e0 \u300d") PORT_CHAR(']') PORT_CHAR('}') // ム 」
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("Left") PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_NAME(u8". > \u30eb \u3002") PORT_CHAR('.') PORT_CHAR('>') // ル 。
@ -565,7 +577,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_NAME(u8"L \u30ea") PORT_CHAR('L') PORT_CHAR('l') // リ
PORT_START("KEY.11")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("PF9") PORT_CHAR(UCHAR_MAMEKEY(F9))
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("PF9") PORT_CHAR(UCHAR_MAMEKEY(F9)) PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 11)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME(u8"[ { \u309c \u300c") PORT_CHAR('[') PORT_CHAR('{') // ゜ 「
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("BS") PORT_CHAR(8)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_NAME(u8"/ ? \u30e1 \u30fb") PORT_CHAR('/') PORT_CHAR('?') // メ ・
@ -575,7 +587,7 @@ static INPUT_PORTS_START( fp1100 )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_NAME(u8"; + \u30ec") PORT_CHAR(';') PORT_CHAR('+') // レ
PORT_START("KEY.12")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_NUMLOCK) PORT_NAME("STOP/CONT")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_NUMLOCK) PORT_NAME("STOP/CONT") PORT_CHANGED_MEMBER(DEVICE_SELF, fp1100_state, fkey_hit_cb, 12)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_NAME(u8"- = \u30db") PORT_CHAR('-') PORT_CHAR('=') // ホ
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2) PORT_NAME(u8"¥ | \u30fc") PORT_CHAR(U'¥') PORT_CHAR('|') // ー
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME(u8"@ ` \u309b") PORT_CHAR('@') PORT_CHAR('`') // ゛