Merge pull request #301 from shattered/_2a0b92b

pc_kbd/iskr1030: WIP snapshot
This commit is contained in:
Miodrag Milanović 2015-09-01 09:04:25 +02:00
commit c4a6be0016
2 changed files with 220 additions and 162 deletions

View File

@ -42,7 +42,6 @@ const device_type PC_KBD_ISKR_1030 = &device_creator<iskr_1030_keyboard_device>;
ROM_START( iskr_1030_keyboard )
ROM_REGION( 0x800, I8048_TAG, 0 )
// XXX add P/N etc
ROM_LOAD( "i1030.bin", 0x000, 0x800, CRC(7cac9c4b) SHA1(03959d3350e012ebfe61cee9c062b6c1fdd8766e) )
ROM_END
@ -62,10 +61,9 @@ const rom_entry *iskr_1030_keyboard_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( iskr_1030_keyboard_io, AS_IO, 8, iskr_1030_keyboard_device )
AM_RANGE(0x00, 0xFF) AM_RAM
AM_RANGE(0x00, 0xFF) AM_READWRITE(ram_r, ram_w)
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w)
// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r)
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
ADDRESS_MAP_END
@ -75,8 +73,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( iskr_1030_keyboard )
// XXX check
MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20.7)))
MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_5MHz)
MCFG_CPU_IO_MAP(iskr_1030_keyboard_io)
MACHINE_CONFIG_END
@ -98,164 +95,148 @@ machine_config_constructor iskr_1030_keyboard_device::device_mconfig_additions()
INPUT_PORTS_START( iskr_1030_keyboard )
PORT_START("MD00")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB) PORT_CHAR(UCHAR_MAMEKEY(TAB))
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?59?") // 0x59 = Inf
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD01")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 7 Home") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD02")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RCONTROL) // 0x5a = R/L (R)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8 " UTF8_UP) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD03")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) // 0x5b = Rus
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 9 PgUp") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD04")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4 " UTF8_LEFT) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD05")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD06")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6 " UTF8_RIGHT) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD07")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1 End") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD08")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?2a?")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2 " UTF8_DOWN) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD09")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?5c?") // 0x5c = YO
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3 PgDn") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD10")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0 Ins") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD11")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?36?")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad . Del") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD12")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?3a?")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // 0x55
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD13")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) // 0x56
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD14")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PRTSCR)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11)) // 0x57 = Lat
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_NUMLOCK) PORT_CHAR(UCHAR_MAMEKEY(NUMLOCK))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD15")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // 0x54
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RALT) // 0x58 = R/L (L)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Scroll Lock Break") PORT_CODE(KEYCODE_SCRLOCK) PORT_CHAR(UCHAR_MAMEKEY(SCRLOCK))
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD16")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD17")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD18")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD19")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD20")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD21")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD22")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_START("MD23")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
INPUT_PORTS_END
@ -298,6 +279,14 @@ iskr_1030_keyboard_device::iskr_1030_keyboard_device(const machine_config &mconf
m_md13(*this, "MD13"),
m_md14(*this, "MD14"),
m_md15(*this, "MD15"),
m_md16(*this, "MD16"),
m_md17(*this, "MD17"),
m_md18(*this, "MD18"),
m_md19(*this, "MD19"),
m_md20(*this, "MD20"),
m_md21(*this, "MD21"),
m_md22(*this, "MD22"),
m_md23(*this, "MD23"),
m_p1(0),
m_p2(0),
m_q(0)
@ -313,7 +302,10 @@ void iskr_1030_keyboard_device::device_start()
{
set_pc_kbdc_device();
// state saving
m_ram.resize(0x100);
save_item(NAME(m_ram));
save_item(NAME(m_bus));
save_item(NAME(m_p1));
save_item(NAME(m_p2));
save_item(NAME(m_q));
@ -351,30 +343,84 @@ WRITE_LINE_MEMBER( iskr_1030_keyboard_device::data_write )
//-------------------------------------------------
// t0_r - XXX ENT0 CLK
//-------------------------------------------------
READ8_MEMBER( iskr_1030_keyboard_device::t0_r )
{
return 0;
// return clock_signal();
}
//-------------------------------------------------
// t1_r - OK
// t1_r -
//-------------------------------------------------
READ8_MEMBER( iskr_1030_keyboard_device::t1_r )
{
UINT8 data = data_signal();
UINT8 bias = m_p1 & 15;
DBG_LOG(2,0,( "%s: t1_r %d\n", tag(), data));
if (!BIT(m_p1, 7)) {
DBG_LOG(2,0,( "%s: t1_r (l) %d\n", tag(), data));
return data;
}
if (bias) {
DBG_LOG(2,0,( "%s: t1_r (b) %d\n", tag(), bias));
return 1;
}
data = 0;
switch (m_bus >> 2)
{
case 0<<1: data = m_md00->read(); break;
case 1<<1: data = m_md01->read(); break;
case 2<<1: data = m_md02->read(); break;
case 3<<1: data = m_md03->read(); break;
case 4<<1: data = m_md04->read(); break;
case 5<<1: data = m_md05->read(); break;
case 6<<1: data = m_md06->read(); break;
case 7<<1: data = m_md07->read(); break;
case 8<<1: data = m_md08->read(); break;
case 9<<1: data = m_md09->read(); break;
case 10<<1: data = m_md10->read(); break;
case 11<<1: data = m_md11->read(); break;
case (0<<1)+1: data = m_md12->read(); break;
case (1<<1)+1: data = m_md13->read(); break;
case (2<<1)+1: data = m_md14->read(); break;
case (3<<1)+1: data = m_md15->read(); break;
case (4<<1)+1: data = m_md16->read(); break;
case (5<<1)+1: data = m_md17->read(); break;
case (6<<1)+1: data = m_md18->read(); break;
case (7<<1)+1: data = m_md19->read(); break;
case (8<<1)+1: data = m_md20->read(); break;
case (9<<1)+1: data = m_md21->read(); break;
case (10<<1)+1: data = m_md22->read(); break;
case (11<<1)+1: data = m_md23->read(); break;
}
data = BIT(data, m_bus&3);
DBG_LOG(2,0,( "%s: t1_r (k r%d c%d) %d\n", tag(), m_bus&3, m_bus>>2, data));
return data;
}
//-------------------------------------------------
// ram_w -
//-------------------------------------------------
WRITE8_MEMBER( iskr_1030_keyboard_device::ram_w )
{
DBG_LOG(2,0,( "%s: ram_w[%02x] <- %02x\n", tag(), offset, data));
m_bus = offset;
m_ram[offset] = data;
}
//-------------------------------------------------
// ram_r -
//-------------------------------------------------
READ8_MEMBER( iskr_1030_keyboard_device::ram_r )
{
DBG_LOG(2,0,( "%s: ram_r[%02x] = %02x\n", tag(), offset, m_ram[offset]));
return m_ram[offset];
}
//-------------------------------------------------
// p1_r -
//-------------------------------------------------
@ -382,7 +428,6 @@ READ8_MEMBER( iskr_1030_keyboard_device::t1_r )
READ8_MEMBER( iskr_1030_keyboard_device::p1_r )
{
/*
bit description
0 -REQ IN
@ -393,7 +438,6 @@ READ8_MEMBER( iskr_1030_keyboard_device::p1_r )
5
6
7
*/
UINT8 data = 0;
@ -413,18 +457,18 @@ WRITE8_MEMBER( iskr_1030_keyboard_device::p2_w )
/*
bit description
0
1
2
3
4
5 LED XXX
6 LED XXX
7 LED XXX
0 ...
1 ...
2 ...
3 (not connected)
4 SPEAKER
5 LED RUS/LAT
6 LED NLK
7 LED CLK
*/
DBG_LOG(1,0,( "%s: p2_w %02x\n", tag(), data));
m_p1 = data;
m_p2 = data;
}
@ -442,11 +486,14 @@ WRITE8_MEMBER( iskr_1030_keyboard_device::p1_w )
2 XXX
3 XXX
4 CLOCK out
5 DATA out (inverted!)
5 DATA out
6 XXX
7 XXX
7 POLL GATE
*/
DBG_LOG(1,0,( "%s: p1_w %02x (clk %d data %d)\n", tag(), data, BIT(data, 4), BIT(data, 5)));
m_p1 = data;
DBG_LOG(1,0,( "%s: p1_w %02x (c %d d %d bias %d)\n", tag(), data, BIT(data, 4), BIT(data, 5), data&15));
m_pc_kbdc->data_write_from_kb(BIT(data, 5));
m_pc_kbdc->clock_write_from_kb(BIT(data, 4));

View File

@ -36,10 +36,11 @@ public:
virtual machine_config_constructor device_mconfig_additions() const;
virtual ioport_constructor device_input_ports() const;
DECLARE_READ8_MEMBER( ram_r );
DECLARE_WRITE8_MEMBER( ram_w );
DECLARE_READ8_MEMBER( p1_r );
DECLARE_WRITE8_MEMBER( p1_w );
DECLARE_WRITE8_MEMBER( p2_w );
DECLARE_READ8_MEMBER( t0_r );
DECLARE_READ8_MEMBER( t1_r );
protected:
@ -69,7 +70,17 @@ private:
required_ioport m_md13;
required_ioport m_md14;
required_ioport m_md15;
required_ioport m_md16;
required_ioport m_md17;
required_ioport m_md18;
required_ioport m_md19;
required_ioport m_md20;
required_ioport m_md21;
required_ioport m_md22;
required_ioport m_md23;
dynamic_buffer m_ram;
UINT8 m_bus;
UINT8 m_p1;
UINT8 m_p2;
int m_q;