diff --git a/src/emu/bus/pc_kbd/iskr1030.c b/src/emu/bus/pc_kbd/iskr1030.c index a4c2026cdce..ecee5639129 100644 --- a/src/emu/bus/pc_kbd/iskr1030.c +++ b/src/emu/bus/pc_kbd/iskr1030.c @@ -42,7 +42,6 @@ const device_type PC_KBD_ISKR_1030 = &device_creator; 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)); diff --git a/src/emu/bus/pc_kbd/iskr1030.h b/src/emu/bus/pc_kbd/iskr1030.h index 37ae7953662..40957295b52 100644 --- a/src/emu/bus/pc_kbd/iskr1030.h +++ b/src/emu/bus/pc_kbd/iskr1030.h @@ -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;