at: let's do it like this instead (nw)

This commit is contained in:
cracyc 2015-09-29 10:09:23 -05:00
parent 5748282850
commit 5e0e2e07b7
3 changed files with 15 additions and 9 deletions

View File

@ -243,7 +243,7 @@ DRIVER_INIT_MEMBER(at_state, megapcpla)
{
UINT8* ROM = memregion("maincpu")->base();
init_at_common();
init_at_common(0xa0000);
ROM[0xf3c2a] = 0x45; // hack to fix keyboard. To be removed when the keyboard controller from the MegaPC is dumped
ROM[0xfaf37] = 0x45;
@ -1702,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, ficpio2, atvga, at_state, atvga, "FIC", "486-PIO-2", MACHINE_NOT_WORKING )
COMP ( 1995, ficpio2, ibm5170, 0, ficpio2, atvga, at_state, atpci, "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 )

View File

@ -161,10 +161,11 @@ public:
DECLARE_DRIVER_INIT(atcga);
DECLARE_DRIVER_INIT(atvga);
DECLARE_DRIVER_INIT(megapcpla);
DECLARE_DRIVER_INIT(atpci);
DECLARE_MACHINE_START(at);
DECLARE_MACHINE_RESET(at);
void pc_set_dma_channel(int channel, int state);
void init_at_common();
void init_at_common(int xmsbase);
UINT32 at_286_a20(bool state);
};

View File

@ -265,30 +265,35 @@ READ8_MEMBER( at_state::ps2_portb_r )
*
**********************************************************/
void at_state::init_at_common()
void at_state::init_at_common(int xmsbase)
{
address_space& space = m_maincpu->space(AS_PROGRAM);
/* MESS managed RAM */
membank("bank10")->set_base(m_ram->pointer());
if (m_ram->size() > 0x100000)
if (m_ram->size() > xmsbase)
{
offs_t ram_limit = 0x100000 + m_ram->size() - 0x100000;
offs_t ram_limit = 0x100000 + m_ram->size() - xmsbase;
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() + 0x100000);
membank("bank1")->set_base(m_ram->pointer() + xmsbase);
}
}
DRIVER_INIT_MEMBER(at_state,atcga)
{
init_at_common();
init_at_common(0xa0000);
}
DRIVER_INIT_MEMBER(at_state,atvga)
{
init_at_common();
init_at_common(0xa0000);
}
DRIVER_INIT_MEMBER(at_state,atpci)
{
init_at_common(0x100000);
}
DRIVER_INIT_MEMBER(at586_state,at586)