summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Justin Kerk <dopefishjustin@gmail.com>2017-01-14 00:23:47 -0800
committer Justin Kerk <dopefishjustin@gmail.com>2017-01-14 00:24:43 -0800
commit348afca60c1436bd451cfa013ecf0708a30aa356 (patch)
tree0e2388f738f4bb396131899ba214d3a6027b4515 /src
parent24f821bd592bbdd595aa91c951bf3a766e109380 (diff)
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]
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/tandy1t.cpp50
1 files changed, 41 insertions, 9 deletions
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp
index 77ba8099a61..3134de2432b 100644
--- a/src/mame/drivers/tandy1t.cpp
+++ b/src/mame/drivers/tandy1t.cpp
@@ -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)