summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/at.c
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2013-07-25 20:23:52 +0000
committer cracyc <cracyc@users.noreply.github.com>2013-07-25 20:23:52 +0000
commit86aee88e0cb45668e8376098ee47cac4b60d4bed (patch)
tree391cd27093cb528a094521dd2d47e4d6c36a1737 /src/mess/drivers/at.c
parent86d79931482f764e9e10d651921803f40bc07c22 (diff)
(mess) at: preliminary PS/1 support [Carl]
-- Probably stalled until the kbc supports mice.
Diffstat (limited to 'src/mess/drivers/at.c')
-rw-r--r--src/mess/drivers/at.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/mess/drivers/at.c b/src/mess/drivers/at.c
index cdaed40a06e..104f36dafce 100644
--- a/src/mess/drivers/at.c
+++ b/src/mess/drivers/at.c
@@ -23,6 +23,13 @@ static ADDRESS_MAP_START( at16_map, AS_PROGRAM, 16, at_state )
AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("maincpu", 0x0f0000)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( ps1_286_map, AS_PROGRAM, 16, at_state )
+ AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10")
+ AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffff)
+ AM_RANGE(0x0c0000, 0x0fffff) AM_ROM
+ AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("maincpu", 0x0f0000)
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( at386_map, AS_PROGRAM, 32, at_state )
AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
AM_RANGE(0x000a0000, 0x000bffff) AM_NOP
@@ -99,6 +106,37 @@ static ADDRESS_MAP_START( at16_io, AS_IO, 16, at_state )
AM_RANGE(0x00c0, 0x00df) AM_READWRITE8(at_dma8237_2_r, at_dma8237_2_w, 0xffff)
ADDRESS_MAP_END
+READ16_MEMBER( at_state::ps1_unk_r )
+{
+ return m_ps1_reg[offset];
+}
+
+WRITE16_MEMBER( at_state::ps1_unk_w )
+{
+ if((offset == 0) && (data == 0x60))
+ data = 0x68;
+
+ m_ps1_reg[offset] = (m_ps1_reg[offset] & ~mem_mask) | (data & mem_mask);
+}
+
+READ8_MEMBER( at_state::ps1_kbdc_r )
+{
+ int old_delay = m_poll_delay;
+ UINT8 ret = at_keybc_r(space, offset, mem_mask);
+ if(old_delay == 0)
+ m_poll_delay = 8;
+ return ret;
+}
+
+static ADDRESS_MAP_START(ps1_286_io, AS_IO, 16, at_state )
+ AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffff)
+ AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffff)
+ AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE8(ps1_kbdc_r, at_keybc_w, 0xffff)
+ AM_RANGE(0x0102, 0x0105) AM_READWRITE(ps1_unk_r, ps1_unk_w)
+ AM_IMPORT_FROM( at16_io )
+ADDRESS_MAP_END
+
READ16_MEMBER( at_state::neat_chipset_r )
{
if (ACCESSING_BITS_0_7)
@@ -350,6 +388,29 @@ static MACHINE_CONFIG_DERIVED( ec1849, ibm5170 )
MCFG_CPU_CLOCK(12000000)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( ibmps1, at_state )
+ MCFG_CPU_ADD("maincpu", I80286, XTAL_10MHz)
+ MCFG_CPU_PROGRAM_MAP(ps1_286_map)
+ MCFG_CPU_IO_MAP(ps1_286_io)
+ MCFG_80286_A20(at_state, at_286_a20)
+ MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown))
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ MCFG_FRAGMENT_ADD( pcvideo_vga )
+
+ MCFG_FRAGMENT_ADD( at_motherboard )
+ MCFG_ISA16_BUS_ADD("isabus", ":maincpu", isabus_intf)
+ MCFG_ISA16_SLOT_ADD("isabus","isa1", pc_isa16_cards, "fdc", false)
+ MCFG_ISA16_SLOT_ADD("isabus","isa2", pc_isa16_cards, "comat", false)
+ MCFG_ISA16_SLOT_ADD("isabus","isa3", pc_isa16_cards, "ide", false)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("1664K")
+ MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,15M")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( ibm5162, at_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", I80286, 6000000 /*6000000*/)
@@ -883,6 +944,12 @@ ROM_START( i8580111 )
ROM_LOAD16_BYTE( "15f6639.bin", 0xe0001, 0x10000, CRC(82cf0f7d) SHA1(13bb39225757b89749af70e881af0228673dbe0c))
ROM_END
+ROM_START( ibmps1es )
+ ROM_REGION(0x1000000, "maincpu", 0)
+ ROM_LOAD16_BYTE( "ibm_1057757_24-05-90.bin", 0xc0000, 0x20000, CRC(c8f81ea4) SHA1(925ed0e98f9f2997cb86554ef384bcfaf2a4ecbe))
+ ROM_LOAD16_BYTE( "ibm_1057757_29-15-90.bin", 0xc0001, 0x20000, CRC(c2dd6b5c) SHA1(f6b5785002dd628b6b1fb3bb101e076299eba3b6))
+ROM_END
+
ROM_START( at )
ROM_REGION(0x1000000,"maincpu", 0)
ROM_SYSTEM_BIOS(0, "ami211", "AMI 21.1") /*(Motherboard Manufacturer: Dataexpert Corp. Motherboard) (Neat 286 Bios, 82c21x Chipset ) (BIOS release date:: 09-04-1990)*/
@@ -1339,6 +1406,7 @@ COMP ( 198?, i8550061, ibm5170, 0, at386, atvga, at_state, atvga,
COMP ( 1989, i8555081, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-081 (Model 55SX)", GAME_NOT_WORKING )
COMP ( 198?, i8580071, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8580-071 (Model 80)", GAME_NOT_WORKING )
COMP ( 198?, i8580111, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8580-111 (Model 80)", GAME_NOT_WORKING )
+COMP ( 1989, ibmps1es, ibm5170, 0, ibmps1, atvga, at_state, atvga, "International Business Machines", "IBM PS/1 (Spanish)", GAME_NOT_WORKING )
COMP ( 1987, at, ibm5170, 0, ibm5162, atcga, at_state, atcga, "<generic>", "PC/AT (CGA, MF2 Keyboard)", GAME_NOT_WORKING )
COMP ( 1987, atvga, ibm5170, 0, atvga, atvga, at_state, atvga, "<generic>", "PC/AT (VGA, MF2 Keyboard)" , GAME_NOT_WORKING )
COMP ( 1988, at386, ibm5170, 0, at386, atvga, at_state, atvga, "<generic>", "PC/AT 386 (VGA, MF2 Keyboard)", GAME_NOT_WORKING )