tandy1t: Distinguish between models using the 90-key Tandy keyboard layout and the standard 101-key "Enhanced" AT layout. Unmap the Hold key on the 90-key layout by default to avoid freezing the emulated system when using Scroll Lock to switch UI modes. [Justin Kerk]

This commit is contained in:
Justin Kerk 2017-01-14 00:23:47 -08:00
parent 24f821bd59
commit 348afca60c

View File

@ -434,7 +434,7 @@ WRITE8_MEMBER( tandy1000_state::tandy1000_bank_w )
}
}
static INPUT_PORTS_START( tandy1t )
static INPUT_PORTS_START( t1000_common )
PORT_START("IN0") /* IN0 */
PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("pcvideo_t1000:screen")
@ -468,7 +468,11 @@ static INPUT_PORTS_START( tandy1t )
PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
PORT_BIT( 0x02, 0x02, IPT_UNUSED ) /* no turbo switch */
PORT_BIT( 0x01, 0x01, IPT_UNUSED )
INPUT_PORTS_END
/* 90-key Tandy Keyboard layout, used on earlier models
later models use the Tandy Enhanced Keyboard with a standard 101-key Enhanced AT layout */
static INPUT_PORTS_START( t1000_keyboard )
PORT_INCLUDE(pc_keyboard)
PORT_MODIFY("pc_keyboard_2")
@ -480,6 +484,8 @@ static INPUT_PORTS_START( tandy1t )
PORT_MODIFY("pc_keyboard_4")
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("NumLock") PORT_CODE(KEYCODE_NUMLOCK) PORT_TOGGLE /* Num Lock 45 C5 */
/* Hold corresponds to Scroll Lock, but pauses the system when pressed - leaving unmapped by default to avoid conflicting with the UI Toggle key */
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Hold") /* 46 C6 */
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 7 \\") PORT_CODE(KEYCODE_7_PAD) /* Keypad 7 47 C7 */
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 8 ~") PORT_CODE(KEYCODE_8_PAD) /* Keypad 8 48 C8 */
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 9 (PgUp)") PORT_CODE(KEYCODE_9_PAD) /* Keypad 9 (PgUp) 49 C9 */
@ -503,6 +509,16 @@ static INPUT_PORTS_START( tandy1t )
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) /* F12 5a Da */
INPUT_PORTS_END
static INPUT_PORTS_START( t1000_90key )
PORT_INCLUDE(t1000_common)
PORT_INCLUDE(t1000_keyboard)
INPUT_PORTS_END
static INPUT_PORTS_START( t1000_101key )
PORT_INCLUDE(t1000_common)
PORT_INCLUDE(at_keyboard)
INPUT_PORTS_END
static ADDRESS_MAP_START(tandy1000_map, AS_PROGRAM, 8, tandy1000_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_t1000:vram", address_map_bank_device, amap8)
@ -616,7 +632,6 @@ static MACHINE_CONFIG_FRAGMENT(tandy1000_common)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa_com", pc_isa8_cards, "com", true)
MCFG_PC_JOY_ADD("pc_joy")
MCFG_PC_KEYB_ADD("pc_keyboard", DEVWRITELINE("mb:pic8259", pic8259_device, ir1_w))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
@ -626,6 +641,14 @@ static MACHINE_CONFIG_FRAGMENT(tandy1000_common)
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc_list","ibm5150")
MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT(tandy1000_90key)
MCFG_PC_KEYB_ADD("pc_keyboard", DEVWRITELINE("mb:pic8259", pic8259_device, ir1_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT(tandy1000_101key)
MCFG_AT_KEYB_ADD("pc_keyboard", 1, DEVWRITELINE("mb:pic8259", pic8259_device, ir1_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( t1000hx, tandy1000_state )
MCFG_CPU_ADD("maincpu", I8088, 8000000)
MCFG_CPU_PROGRAM_MAP(tandy1000_map)
@ -634,6 +657,8 @@ static MACHINE_CONFIG_START( t1000hx, tandy1000_state )
MCFG_FRAGMENT_ADD(tandy1000_common)
MCFG_FRAGMENT_ADD(tandy1000_90key)
// plus cards are isa with a nonstandard conntector
MCFG_ISA8_SLOT_ADD("mb:isa", "plus1", pc_isa8_cards, nullptr, false)
MCFG_DEVICE_MODIFY(RAM_TAG)
@ -662,6 +687,8 @@ static MACHINE_CONFIG_START( t1000rl, tandy1000_state )
MCFG_FRAGMENT_ADD(tandy1000_common)
MCFG_FRAGMENT_ADD(tandy1000_101key)
MCFG_DEVICE_ADD("biosbank", ADDRESS_MAP_BANK, 0)
MCFG_DEVICE_PROGRAM_MAP(biosbank_map)
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
@ -692,6 +719,8 @@ static MACHINE_CONFIG_START( t1000tl, tandy1000_state )
MCFG_FRAGMENT_ADD(tandy1000_common)
MCFG_FRAGMENT_ADD(tandy1000_101key)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", pc_isa8_cards, nullptr, false)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", pc_isa8_cards, nullptr, false)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa3", pc_isa8_cards, nullptr, false)
@ -702,6 +731,9 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( t1000tx, t1000tl )
MCFG_CPU_MODIFY( "maincpu" )
MCFG_CPU_IO_MAP(tandy1000tx_io)
MCFG_DEVICE_REMOVE("pc_keyboard")
MCFG_FRAGMENT_ADD(tandy1000_90key)
MACHINE_CONFIG_END
#ifdef UNUSED_DEFINITION
@ -868,11 +900,11 @@ ROM_START( t1000tl2 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
// tandy 1000
COMP( 1987, t1000hx, ibm5150, 0, t1000hx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 HX", 0)
COMP( 1987, t1000sx, ibm5150, 0, t1000sx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SX", 0)
COMP( 1987, t1000tx, ibm5150, 0, t1000tx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TX", 0)
COMP( 1989, t1000rl, ibm5150, 0, t1000rl, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 RL", 0)
COMP( 1989, t1000tl2, ibm5150, 0, t1000tl, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TL/2", 0)
COMP( 1988, t1000sl2, ibm5150, 0, t1000sl2, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SL/2", 0)
COMP( 1987, t1000hx, ibm5150, 0, t1000hx, t1000_90key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 HX", 0)
COMP( 1987, t1000sx, ibm5150, 0, t1000sx, t1000_90key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SX", 0)
COMP( 1987, t1000tx, ibm5150, 0, t1000tx, t1000_90key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TX", 0)
COMP( 1989, t1000rl, ibm5150, 0, t1000rl, t1000_101key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 RL", 0)
COMP( 1989, t1000tl2, ibm5150, 0, t1000tl, t1000_101key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TL/2", 0)
COMP( 1988, t1000sl2, ibm5150, 0, t1000sl2, t1000_101key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SL/2", 0)