diff options
author | 2013-07-25 20:23:52 +0000 | |
---|---|---|
committer | 2013-07-25 20:23:52 +0000 | |
commit | 86aee88e0cb45668e8376098ee47cac4b60d4bed (patch) | |
tree | 391cd27093cb528a094521dd2d47e4d6c36a1737 /src/mess/drivers/at.c | |
parent | 86d79931482f764e9e10d651921803f40bc07c22 (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.c | 68 |
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 ) |