mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
(mess) at: find a compromise between the at486 and 5170.
--- at486 floppies work again and 5170 bios 1 still boots, at586 still fails it's floppy tests
This commit is contained in:
parent
4d64202ef1
commit
8b76c4d345
@ -1402,8 +1402,8 @@ COMP ( 1987, atvga, ibm5170, 0, atvga, atvga, at_state, atvga,
|
||||
COMP ( 1988, at386, ibm5170, 0, at386, atvga, at_state, atvga, "<generic>", "PC/AT 386 (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
|
||||
COMP ( 1988, ct386sx, ibm5170, 0, ct386sx, atvga, at_state, atvga, "<generic>", "NEAT 386SX (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
|
||||
COMP ( 1990, at486, ibm5170, 0, at486, atvga, at_state, atvga, "<generic>", "PC/AT 486 (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
|
||||
COMP ( 1990, at586, ibm5170, 0, at586, atvga, driver_device, 0, "<generic>", "PC/AT 586 (PIIX4)", GAME_NOT_WORKING )
|
||||
COMP ( 1990, at586x3, ibm5170, 0, at586x3, atvga, driver_device, 0, "<generic>", "PC/AT 586 (PIIX3)", GAME_NOT_WORKING )
|
||||
COMP ( 1990, at586, ibm5170, 0, at586, atvga, at_state, at586, "<generic>", "PC/AT 586 (PIIX4)", GAME_NOT_WORKING )
|
||||
COMP ( 1990, at586x3, ibm5170, 0, at586x3, atvga, at_state, at586, "<generic>", "PC/AT 586 (PIIX3)", GAME_NOT_WORKING )
|
||||
COMP ( 1989, neat, ibm5170, 0, neat, atvga, at_state, atvga, "<generic>", "NEAT (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
|
||||
COMP ( 1993, ec1849, ibm5170, 0, ec1849, atcga, at_state, atcga, "<unknown>", "EC-1849", GAME_NOT_WORKING )
|
||||
COMP ( 1993, megapc, ibm5170, 0, megapc, atvga, at_state, atvga, "Amstrad plc", "MegaPC", GAME_NOT_WORKING )
|
||||
|
@ -156,12 +156,22 @@ public:
|
||||
|
||||
DECLARE_DRIVER_INIT(atcga);
|
||||
DECLARE_DRIVER_INIT(atvga);
|
||||
DECLARE_DRIVER_INIT(at586);
|
||||
DECLARE_MACHINE_START(at);
|
||||
DECLARE_MACHINE_RESET(at);
|
||||
void pc_set_dma_channel(int channel, int state);
|
||||
IRQ_CALLBACK_MEMBER(at_irq_callback);
|
||||
void init_at_common();
|
||||
UINT32 at_286_a20(bool state);
|
||||
|
||||
enum {
|
||||
TYPE_286,
|
||||
TYPE_386,
|
||||
TYPE_486,
|
||||
TYPE_586
|
||||
};
|
||||
|
||||
int m_type;
|
||||
};
|
||||
|
||||
|
||||
|
@ -271,7 +271,10 @@ READ8_MEMBER( at_state::at_portb_r )
|
||||
/* 0x10 is the dram refresh line bit. The 5170 (bios 1) and 5162 test the cpu clock against it in post. */
|
||||
if ( --m_poll_delay < 0 )
|
||||
{
|
||||
m_poll_delay = m_at_offset1 ? 3 : 2;
|
||||
if(m_type == TYPE_286)
|
||||
m_poll_delay = m_at_offset1 ? 3 : 2;
|
||||
else
|
||||
m_poll_delay = 3;
|
||||
m_at_offset1 ^= 0x10;
|
||||
}
|
||||
data = (data & ~0x10) | ( m_at_offset1 & 0x10 );
|
||||
@ -304,6 +307,13 @@ void at_state::init_at_common()
|
||||
{
|
||||
address_space& space = m_maincpu->space(AS_PROGRAM);
|
||||
|
||||
if(!strncmp(m_maincpu->shortname(), "i386", 4))
|
||||
m_type = TYPE_386;
|
||||
else if(!strncmp(m_maincpu->shortname(), "i486", 4))
|
||||
m_type = TYPE_486;
|
||||
else
|
||||
m_type = TYPE_286;
|
||||
|
||||
/* MESS managed RAM */
|
||||
membank("bank10")->set_base(m_ram->pointer());
|
||||
|
||||
@ -315,7 +325,10 @@ void at_state::init_at_common()
|
||||
membank("bank1")->set_base(m_ram->pointer() + 0xa0000);
|
||||
}
|
||||
|
||||
m_at_offset1 = 0;
|
||||
if(m_type == TYPE_286)
|
||||
m_at_offset1 = 0;
|
||||
else
|
||||
m_at_offset1 = 0xff;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(at_state,atcga)
|
||||
@ -328,6 +341,12 @@ DRIVER_INIT_MEMBER(at_state,atvga)
|
||||
init_at_common();
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(at_state,at586)
|
||||
{
|
||||
m_type = TYPE_586;
|
||||
m_at_offset1 = 0xff;
|
||||
}
|
||||
|
||||
IRQ_CALLBACK_MEMBER(at_state::at_irq_callback)
|
||||
{
|
||||
return m_pic8259_master->inta_r();
|
||||
@ -340,7 +359,10 @@ MACHINE_START_MEMBER(at_state,at)
|
||||
|
||||
MACHINE_RESET_MEMBER(at_state,at)
|
||||
{
|
||||
m_poll_delay = 3;
|
||||
if(m_type == TYPE_286)
|
||||
m_poll_delay = 3;
|
||||
else
|
||||
m_poll_delay = 4;
|
||||
m_at_spkrdata = 0;
|
||||
m_at_speaker_input = 0;
|
||||
m_dma_channel = -1;
|
||||
|
@ -198,6 +198,7 @@ stereo_fx_device::stereo_fx_device(const machine_config &mconfig, const char *ta
|
||||
void stereo_fx_device::device_start()
|
||||
{
|
||||
ym3812_device *ym3812 = subdevice<ym3812_device>("ym3812");
|
||||
set_isa_device();
|
||||
|
||||
m_isa->install_device(0x0200, 0x0207, 0, 0, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy")));
|
||||
m_isa->install_device(0x0226, 0x0227, 0, 0, read8_delegate(FUNC(stereo_fx_device::invalid_r), this), write8_delegate(FUNC(stereo_fx_device::dsp_reset_w), this));
|
||||
|
Loading…
Reference in New Issue
Block a user