mirror of
https://github.com/holub/mame
synced 2025-06-16 01:09:09 +03:00
kr03: define native keyboard layout (partially fixes MT05818)
This commit is contained in:
parent
27a3154549
commit
614507ce14
@ -202,6 +202,117 @@ INPUT_PORTS_START( radio86 )
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rus/Lat") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT)
|
||||
INPUT_PORTS_END
|
||||
|
||||
// layout from http://retropc.org/Elektronika_KR-02_s_67.html
|
||||
|
||||
INPUT_PORTS_START( kr03 )
|
||||
PORT_START("LINE0")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR(0xA4)
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
|
||||
PORT_START("LINE1")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) // xxx
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('J')
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']')
|
||||
|
||||
PORT_START("LINE2")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
1ORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL)
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K')
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N')
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('G')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
|
||||
|
||||
PORT_START("LINE3")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rus") PORT_CODE(KEYCODE_LALT)
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('R')
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('@')
|
||||
|
||||
PORT_START("LINE4")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lat") PORT_CODE(KEYCODE_RALT)
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('S')
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M')
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Back") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
|
||||
PORT_START("LINE5")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('>') PORT_CHAR('.')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
|
||||
|
||||
PORT_START("LINE6")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) // xxx
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED) // _
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('H')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
|
||||
|
||||
PORT_START("LINE7")
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Str")
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PS (LF)")
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') // xxx
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(':') PORT_CHAR('*')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
|
||||
PORT_START("LINE8")
|
||||
PORT_BIT(0x00, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( ms7007 )
|
||||
PORT_START("LINE0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(' ') PORT_CHAR('0')
|
||||
@ -396,6 +507,17 @@ MACHINE_CONFIG_START(radio86_state::radio86)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(radio86_state::kr03)
|
||||
radio86(config);
|
||||
/* basic machine hardware */
|
||||
|
||||
MCFG_DEVICE_MODIFY("ppi8255_1")
|
||||
MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, radio86_state, radio86_8255_porta_w2))
|
||||
MCFG_I8255_IN_PORTB_CB(READ8(*this, radio86_state, kr03_8255_portb_r2))
|
||||
MCFG_I8255_IN_PORTC_CB(READ8(*this, radio86_state, radio86_8255_portc_r2))
|
||||
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, radio86_state, radio86_8255_portc_w2))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(radio86_state::radio16)
|
||||
radio86(config);
|
||||
/* basic machine hardware */
|
||||
@ -569,7 +691,7 @@ ROM_END
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1986, radio86, 0, 0, radio86, radio86, radio86_state, init_radio86, "<unknown>", "Radio-86RK", 0 )
|
||||
COMP( 1986, radio16, radio86, 0, radio16, radio86, radio86_state, init_radio86, "<unknown>", "Radio-86RK (16K RAM)", 0 )
|
||||
COMP( 1986, kr03, radio86, 0, radio86, radio86, radio86_state, init_radio86, "Elektronika", "KR-03", 0 )
|
||||
COMP( 1986, kr03, radio86, 0, kr03, kr03, radio86_state, init_radio86, "Elektronika", "KR-03", 0 )
|
||||
COMP( 1986, radio4k, radio86, 0, radio86, radio86, radio86_state, init_radio86, "<unknown>", "Radio-86RK (4K ROM)", 0 )
|
||||
COMP( 1986, radiorom, radio86, 0, radiorom, radio86, radio86_state, init_radio86, "<unknown>", "Radio-86RK (ROM-Disk)", 0 )
|
||||
COMP( 1986, radioram, radio86, 0, radioram, radio86, radio86_state, init_radioram, "<unknown>", "Radio-86RK (ROM/RAM Disk)", 0 )
|
||||
|
@ -36,23 +36,8 @@ public:
|
||||
m_ppi8255_2(*this, "ppi8255_2"),
|
||||
m_region_maincpu(*this, "maincpu"),
|
||||
m_bank1(*this, "bank1"),
|
||||
m_io_line0(*this, "LINE0"),
|
||||
m_io_line1(*this, "LINE1"),
|
||||
m_io_line2(*this, "LINE2"),
|
||||
m_io_line3(*this, "LINE3"),
|
||||
m_io_line4(*this, "LINE4"),
|
||||
m_io_line5(*this, "LINE5"),
|
||||
m_io_line6(*this, "LINE6"),
|
||||
m_io_line7(*this, "LINE7"),
|
||||
m_io_line8(*this, "LINE8"),
|
||||
m_io_cline0(*this, "CLINE0"),
|
||||
m_io_cline1(*this, "CLINE1"),
|
||||
m_io_cline2(*this, "CLINE2"),
|
||||
m_io_cline3(*this, "CLINE3"),
|
||||
m_io_cline4(*this, "CLINE4"),
|
||||
m_io_cline5(*this, "CLINE5"),
|
||||
m_io_cline6(*this, "CLINE6"),
|
||||
m_io_cline7(*this, "CLINE7"),
|
||||
m_io_line(*this, "LINE%u", 0),
|
||||
m_io_cline(*this, "CLINE%u", 0),
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
virtual void video_start() override;
|
||||
@ -78,6 +63,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(radio86_8255_porta_w2);
|
||||
DECLARE_WRITE8_MEMBER(radio86_8255_portc_w2);
|
||||
DECLARE_READ8_MEMBER(rk7007_8255_portc_r);
|
||||
DECLARE_READ8_MEMBER(kr03_8255_portb_r2);
|
||||
DECLARE_WRITE_LINE_MEMBER(hrq_w);
|
||||
DECLARE_READ8_MEMBER(radio86rom_romdisk_porta_r);
|
||||
DECLARE_READ8_MEMBER(radio86ram_romdisk_porta_r);
|
||||
@ -97,6 +83,7 @@ public:
|
||||
void radio86(machine_config &config);
|
||||
void radio16(machine_config &config);
|
||||
void radioram(machine_config &config);
|
||||
void kr03(machine_config &config);
|
||||
void impuls03_mem(address_map &map);
|
||||
void mikron2_mem(address_map &map);
|
||||
void radio86_16_mem(address_map &map);
|
||||
@ -113,23 +100,8 @@ protected:
|
||||
optional_device<i8255_device> m_ppi8255_2;
|
||||
required_memory_region m_region_maincpu;
|
||||
required_memory_bank m_bank1;
|
||||
required_ioport m_io_line0;
|
||||
required_ioport m_io_line1;
|
||||
required_ioport m_io_line2;
|
||||
required_ioport m_io_line3;
|
||||
required_ioport m_io_line4;
|
||||
required_ioport m_io_line5;
|
||||
required_ioport m_io_line6;
|
||||
required_ioport m_io_line7;
|
||||
required_ioport m_io_line8;
|
||||
optional_ioport m_io_cline0;
|
||||
optional_ioport m_io_cline1;
|
||||
optional_ioport m_io_cline2;
|
||||
optional_ioport m_io_cline3;
|
||||
optional_ioport m_io_cline4;
|
||||
optional_ioport m_io_cline5;
|
||||
optional_ioport m_io_cline6;
|
||||
optional_ioport m_io_cline7;
|
||||
required_ioport_array<9> m_io_line;
|
||||
optional_ioport_array<8> m_io_cline;
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
void radio86_init_keyboard();
|
||||
|
@ -39,24 +39,41 @@ void radio86_state::init_radioram()
|
||||
m_radio_ram_disk = std::make_unique<uint8_t[]>(0x20000);
|
||||
memset(m_radio_ram_disk.get(),0,0x20000);
|
||||
}
|
||||
|
||||
READ8_MEMBER(radio86_state::radio86_8255_portb_r2)
|
||||
{
|
||||
uint8_t key = 0xff;
|
||||
if ((m_keyboard_mask & 0x01)!=0) { key &= m_io_line0->read(); }
|
||||
if ((m_keyboard_mask & 0x02)!=0) { key &= m_io_line1->read(); }
|
||||
if ((m_keyboard_mask & 0x04)!=0) { key &= m_io_line2->read(); }
|
||||
if ((m_keyboard_mask & 0x08)!=0) { key &= m_io_line3->read(); }
|
||||
if ((m_keyboard_mask & 0x10)!=0) { key &= m_io_line4->read(); }
|
||||
if ((m_keyboard_mask & 0x20)!=0) { key &= m_io_line5->read(); }
|
||||
if ((m_keyboard_mask & 0x40)!=0) { key &= m_io_line6->read(); }
|
||||
if ((m_keyboard_mask & 0x80)!=0) { key &= m_io_line7->read(); }
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if (BIT(m_keyboard_mask, i)) {
|
||||
key &= m_io_line[i]->read();
|
||||
}
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
READ8_MEMBER(radio86_state::kr03_8255_portb_r2)
|
||||
{
|
||||
uint8_t key = 0xff;
|
||||
uint16_t data;
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if (BIT(m_keyboard_mask, i))
|
||||
{
|
||||
data = m_io_line[i]->read();
|
||||
if (!BIT(data, 8)) data &= ~3;
|
||||
if (!BIT(data, 9)) data &= ~5;
|
||||
if (!BIT(data, 10)) data &= ~7;
|
||||
key &= data;
|
||||
}
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
READ8_MEMBER(radio86_state::radio86_8255_portc_r2)
|
||||
{
|
||||
double level = m_cassette->input();
|
||||
uint8_t dat = m_io_line8->read();
|
||||
uint8_t dat = m_io_line[8]->read();
|
||||
if (level < 0) {
|
||||
dat ^= m_tape_value;
|
||||
}
|
||||
@ -78,14 +95,12 @@ READ8_MEMBER(radio86_state::rk7007_8255_portc_r)
|
||||
{
|
||||
double level = m_cassette->input();
|
||||
uint8_t key = 0xff;
|
||||
if ((m_keyboard_mask & 0x01)!=0) { key &= m_io_cline0->read(); }
|
||||
if ((m_keyboard_mask & 0x02)!=0) { key &= m_io_cline1->read(); }
|
||||
if ((m_keyboard_mask & 0x04)!=0) { key &= m_io_cline2->read(); }
|
||||
if ((m_keyboard_mask & 0x08)!=0) { key &= m_io_cline3->read(); }
|
||||
if ((m_keyboard_mask & 0x10)!=0) { key &= m_io_cline4->read(); }
|
||||
if ((m_keyboard_mask & 0x20)!=0) { key &= m_io_cline5->read(); }
|
||||
if ((m_keyboard_mask & 0x40)!=0) { key &= m_io_cline6->read(); }
|
||||
if ((m_keyboard_mask & 0x80)!=0) { key &= m_io_cline7->read(); }
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if ((m_keyboard_mask & (1 << i))!=0) {
|
||||
key &= m_io_cline[i]->read();
|
||||
}
|
||||
}
|
||||
key &= 0xe0;
|
||||
if (level < 0) {
|
||||
key ^= m_tape_value;
|
||||
|
Loading…
Reference in New Issue
Block a user