diff options
Diffstat (limited to 'src/mess')
-rw-r--r-- | src/mess/drivers/at.c | 93 | ||||
-rw-r--r-- | src/mess/includes/at.h | 3 | ||||
-rw-r--r-- | src/mess/machine/at.c | 4 |
3 files changed, 87 insertions, 13 deletions
diff --git a/src/mess/drivers/at.c b/src/mess/drivers/at.c index 57f1abfb29c..2af5a1bfc06 100644 --- a/src/mess/drivers/at.c +++ b/src/mess/drivers/at.c @@ -58,6 +58,16 @@ static ADDRESS_MAP_START( at586_map, AS_PROGRAM, 32, at586_state ) AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000) ADDRESS_MAP_END +static ADDRESS_MAP_START( ficpio_map, AS_PROGRAM, 32, at_state ) + AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") + AM_RANGE(0x000a0000, 0x000bffff) AM_NOP + AM_RANGE(0x000c0000, 0x000c7fff) AM_NOP + AM_RANGE(0x000c8000, 0x000cffff) AM_NOP + AM_RANGE(0x000d0000, 0x000effff) AM_RAM + AM_RANGE(0x000f0000, 0x000fffff) AM_RAM + AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000) +ADDRESS_MAP_END READ8_MEMBER( at_state::at_dma8237_2_r ) @@ -196,6 +206,25 @@ static ADDRESS_MAP_START( at586_io, AS_IO, 32, at586_state ) AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write) ADDRESS_MAP_END +static ADDRESS_MAP_START( ficpio_io, AS_IO, 32, at_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff) + AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0xffffffff) + AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff) + AM_RANGE(0x0060, 0x0063) AM_READWRITE8(at_keybc_r, at_keybc_w, 0xffff) + AM_RANGE(0x0064, 0x0067) AM_DEVREADWRITE8("keybc", at_keyboard_controller_device, status_r, command_w, 0xffff) + AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("rtc", mc146818_device, read, write , 0xffffffff) + AM_RANGE(0x0080, 0x009f) AM_READWRITE8(at_page8_r, at_page8_w, 0xffffffff) + AM_RANGE(0x00a0, 0x00a7) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0xffffffff) + AM_RANGE(0x00a8, 0x00af) AM_DEVREADWRITE8("chipset", vt82c496_device, read, write, 0xffffffff) + AM_RANGE(0x00c0, 0x00df) AM_READWRITE8(at_dma8237_2_r, at_dma8237_2_w, 0xffffffff) + AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0) + AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0) + AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1) + AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1) + AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write) +ADDRESS_MAP_END + DRIVER_INIT_MEMBER(megapc_state, megapc) { UINT8* ROM = memregion("bios")->base(); @@ -677,6 +706,7 @@ static SLOT_INTERFACE_START( pci_devices ) SLOT_INTERFACE_INTERNAL("i82439tx", I82439TX) SLOT_INTERFACE_INTERNAL("i82371ab", I82371AB) SLOT_INTERFACE_INTERNAL("i82371sb", I82371SB) + SLOT_INTERFACE_INTERNAL("vt82c505", VT82C505) SLOT_INTERFACE_END @@ -863,6 +893,47 @@ static MACHINE_CONFIG_START( megapcpla, at_state ) MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") MACHINE_CONFIG_END +static MACHINE_CONFIG_START( ficpio2, at_state ) + MCFG_CPU_ADD("maincpu", I486, 25000000) + MCFG_CPU_PROGRAM_MAP(ficpio_map) + MCFG_CPU_IO_MAP(ficpio_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb) + + MCFG_FRAGMENT_ADD(at_motherboard) + + MCFG_DEVICE_REMOVE("rtc") + MCFG_DS12885_ADD("rtc") + MCFG_MC146818_IRQ_HANDLER(WRITELINE(at_state, at_mc146818_irq)) + MCFG_MC146818_CENTURY_INDEX(0x32) + + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("4M") + MCFG_RAM_EXTRA_OPTIONS("1M,2M,8M,16M,32M,64M,128M") + + // on board devices + MCFG_ISA16_SLOT_ADD("isabus","board1", pc_isa16_cards, "fdcsmc", true) + MCFG_ISA16_SLOT_ADD("isabus","board2", pc_isa16_cards, "comat", true) + MCFG_ISA16_SLOT_ADD("isabus","board3", pc_isa16_cards, "lpt", true) + + MCFG_IDE_CONTROLLER_32_ADD("ide", ata_devices, "hdd", NULL, true) + MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir6_w)) + MCFG_IDE_CONTROLLER_32_ADD("ide2", ata_devices, "cdrom", NULL, true) + MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir7_w)) + + MCFG_PCI_BUS_ADD("pcibus", 0) + MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "vt82c505", true) + MCFG_ISA16_SLOT_ADD("isabus","isa1", pc_isa16_cards, "svga_et4k", false) + MCFG_ISA16_SLOT_ADD("isabus","isa2", pc_isa16_cards, NULL, false) + MCFG_ISA16_SLOT_ADD("isabus","isa3", pc_isa16_cards, NULL, false) + MCFG_ISA16_SLOT_ADD("isabus","isa4", pc_isa16_cards, NULL, false) + MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) + + MCFG_VT82C496_ADD("chipset") + MCFG_VT82C496_CPU("maincpu") + MCFG_VT82C496_REGION("isa") + + MCFG_FRAGMENT_ADD( at_softlists ) +MACHINE_CONFIG_END #if 0 // ibm at @@ -1355,17 +1426,17 @@ ROM_END // FIC 486-PIO-2 (4 ISA, 4 PCI) -// VIA VT82C505 + VT82C496G + VT82C406MV, NS311/312 or NS332 I/O +// VIA VT82C505 (ISA/VL to PCI bridge) + VT82C496G (system chipset) + VT82C406MV (keyboard controller, RTC, CMOS), NS311/312 or NS332 I/O ROM_START( ficpio2 ) - ROM_REGION(0x1000000, "maincpu", 0) - ROM_SYSTEM_BIOS(0, "ficpio2c7", "FIC 486-PIO-2 1.15C701") /* pnp, i/o core: NS 332 */ - ROMX_LOAD("115c701.awd", 0x0e0000, 0x20000, CRC(b0dd7975) SHA1(bfde13b0fbd141bc945d37d92faca9f4f59b716d), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "ficpio2b7", "FIC 486-PIO-2 1.15B701") /* pnp, i/o core: NS 311/312 */ - ROMX_LOAD("115b701.awd", 0x0e0000, 0x20000, CRC(ac24abad) SHA1(01174d84ed32fb1d95cd632d09f773acb8666c83), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(2, "ficpio2c1", "FIC 486-PIO-2 1.15C101") /* non-pnp, i/o core: NS 332 */ - ROMX_LOAD("115c101.awd", 0x0e0000, 0x20000, CRC(5fadde88) SHA1(eff79692c1ecf34b6ea3f02409d14ce1f5c51bf9), ROM_BIOS(3)) - ROM_SYSTEM_BIOS(3, "ficpio2b1", "FIC 486-PIO-2 1.15B101") /* non-pnp, i/o core: NS 311/312 */ - ROMX_LOAD("115b101.awd", 0x0e0000, 0x20000, CRC(ff69617d) SHA1(ecbfc7315dcf6bd3e5b59e3ae9258759f64fe7a0), ROM_BIOS(4)) + ROM_REGION(0x40000, "isa", 0) + ROM_SYSTEM_BIOS(0, "ficpio2c7", "FIC 486-PIO-2 1.15C701") /* pnp, i/o core: NS 332, doesn't boot, requires cache emulation? */ + ROMX_LOAD("115c701.awd", 0x020000, 0x20000, CRC(b0dd7975) SHA1(bfde13b0fbd141bc945d37d92faca9f4f59b716d), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "ficpio2b7", "FIC 486-PIO-2 1.15B701") /* pnp, i/o core: NS 311/312, doesn't boot, requires cache emulation? */ + ROMX_LOAD("115b701.awd", 0x020000, 0x20000, CRC(ac24abad) SHA1(01174d84ed32fb1d95cd632d09f773acb8666c83), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(2, "ficpio2c1", "FIC 486-PIO-2 1.15C101") /* non-pnp, i/o core: NS 332, working */ + ROMX_LOAD("115c101.awd", 0x020000, 0x20000, CRC(5fadde88) SHA1(eff79692c1ecf34b6ea3f02409d14ce1f5c51bf9), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(3, "ficpio2b1", "FIC 486-PIO-2 1.15B101") /* non-pnp, i/o core: NS 311/312, working */ + ROMX_LOAD("115b101.awd", 0x020000, 0x20000, CRC(ff69617d) SHA1(ecbfc7315dcf6bd3e5b59e3ae9258759f64fe7a0), ROM_BIOS(4)) ROM_END @@ -1631,7 +1702,7 @@ COMP ( 1993, apxena1, ibm5170, 0, at486, atvga, at_state, atvga, COMP ( 1993, apxenp2, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN PC (P2 Motherboard)", MACHINE_NOT_WORKING ) COMP ( 1990, c386sx16, ibm5170, 0, at386sx, atvga, at_state, atvga, "Commodore Business Machines", "Commodore 386SX-16", MACHINE_NOT_WORKING ) COMP ( 1988, cmdpc30, ibm5170, 0, ibm5162, atcga, at_state, atcga, "Commodore Business Machines", "PC 30 III", MACHINE_NOT_WORKING ) -COMP ( 1995, ficpio2, ibm5170, 0, at486, atvga, at_state, atvga, "FIC", "486-PIO-2", MACHINE_NOT_WORKING ) +COMP ( 1995, ficpio2, ibm5170, 0, ficpio2, atvga, at_state, atvga, "FIC", "486-PIO-2", MACHINE_NOT_WORKING ) COMP ( 1997, ficvt503, ibm5170, 0, at586, atvga, driver_device, 0, "FIC", "VT-503", MACHINE_NOT_WORKING ) COMP ( 1985, k286i, ibm5170, 0, k286i, atcga, at_state, atcga, "Kaypro", "286i", MACHINE_NOT_WORKING ) COMP ( 1991, t2000sx, ibm5170, 0, at386sx, atvga, at_state, atvga, "Toshiba", "T2000SX", MACHINE_NOT_WORKING ) diff --git a/src/mess/includes/at.h b/src/mess/includes/at.h index b9de9916133..a36be1b668b 100644 --- a/src/mess/includes/at.h +++ b/src/mess/includes/at.h @@ -18,10 +18,13 @@ #include "machine/ins8250.h" #include "machine/mc146818.h" +#include "machine/ds128x.h" #include "machine/pic8259.h" #include "bus/lpci/i82371ab.h" #include "bus/lpci/i82371sb.h" #include "bus/lpci/i82439tx.h" +#include "bus/lpci/vt82c505.h" +#include "machine/vt82c496.h" #include "machine/cs8221.h" #include "machine/pit8253.h" #include "machine/wd7600.h" diff --git a/src/mess/machine/at.c b/src/mess/machine/at.c index 3263f00a4da..afede1354c0 100644 --- a/src/mess/machine/at.c +++ b/src/mess/machine/at.c @@ -274,10 +274,10 @@ void at_state::init_at_common() if (m_ram->size() > 0x0a0000) { - offs_t ram_limit = 0x100000 + m_ram->size() - 0x0a0000; + offs_t ram_limit = 0x100000 + m_ram->size() - 0x100000; space.install_read_bank(0x100000, ram_limit - 1, "bank1"); space.install_write_bank(0x100000, ram_limit - 1, "bank1"); - membank("bank1")->set_base(m_ram->pointer() + 0xa0000); + membank("bank1")->set_base(m_ram->pointer() + 0x100000); } } |