mirror of
https://github.com/holub/mame
synced 2025-05-17 19:24:59 +03:00
Fix for ROM paging on both the Dragon 64 and Dragon Alpha, which restores the Dragon Alpha to working condition [Phill Harvey-Smith]
This commit is contained in:
parent
1d40fe6824
commit
99c1df0d51
@ -260,7 +260,7 @@ ROM_START(tanodr64)
|
||||
ROM_END
|
||||
|
||||
ROM_START(dgnalpha)
|
||||
ROM_REGION(0xC000,"maincpu",1)
|
||||
ROM_REGION(0x10000,"maincpu",0)
|
||||
ROM_LOAD("alpha_bt.rom", 0x2000, 0x2000, CRC(c3dab585) SHA1(4a5851aa66eb426e9bb0bba196f1e02d48156068))
|
||||
ROM_LOAD("alpha_ba.rom", 0x8000, 0x4000, CRC(84f68bf9) SHA1(1983b4fb398e3dd9668d424c666c5a0b3f1e2b69))
|
||||
ROM_END
|
||||
|
@ -288,13 +288,13 @@ void sam6883_device::update_memory(void)
|
||||
|
||||
if (setup_rom)
|
||||
{
|
||||
m_space_8000.point(&m_banks[1], 0x0000);
|
||||
m_space_A000.point(&m_banks[2], 0x0000);
|
||||
m_space_C000.point(&m_banks[3], 0x0000);
|
||||
m_space_8000.point(&m_banks[1], m_banks[1].m_memory_offset);
|
||||
m_space_A000.point(&m_banks[2], m_banks[2].m_memory_offset);
|
||||
m_space_C000.point(&m_banks[3], m_banks[3].m_memory_offset);
|
||||
}
|
||||
|
||||
// update $FFE0-$FFFF
|
||||
m_space_FFE0.point(&m_banks[2], 0x1FE0);
|
||||
m_space_FFE0.point(&m_banks[2], m_banks[2].m_memory_offset + 0x1FE0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -220,11 +220,14 @@ WRITE8_MEMBER( dragon_alpha_state::ff20_write )
|
||||
|
||||
WRITE8_MEMBER( dragon_alpha_state::pia2_pa_w )
|
||||
{
|
||||
UINT8 ddr = ~m_pia_2->port_b_z_mask();
|
||||
|
||||
/* If bit 2 of the pia2 ddra is 1 then this pin is an output so use it */
|
||||
/* to control the paging of the boot and basic roms */
|
||||
/* Otherwise it set as an input, with an internal pull-up so it should */
|
||||
/* always be high (enabling boot rom) */
|
||||
/* PIA FIXME if (pia_get_ddr_a(2) & 0x04) */
|
||||
if(ddr & 0x04)
|
||||
{
|
||||
page_rom(data & 0x04 ? true : false); /* bit 2 controls boot or basic rom */
|
||||
}
|
||||
|
@ -124,6 +124,7 @@ void dragon64_state::pia1_pb_changed(void)
|
||||
if (ddr & 0x04)
|
||||
{
|
||||
page_rom(m_pia_1->b_output() & 0x04 ? true : false);
|
||||
logerror("pia1_pb_changed\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,7 +146,6 @@ void dragon64_state::page_rom(bool romswitch)
|
||||
offs_t offset = romswitch
|
||||
? 0x0000 // This is the 32k mode basic(64)/boot rom(alpha)
|
||||
: 0x8000; // This is the 64k mode basic(64)/basic rom(alpha)
|
||||
m_sam->set_bank_offset(1, offset);
|
||||
m_sam->set_bank_offset(2, offset);
|
||||
m_sam->set_bank_offset(3, offset);
|
||||
m_sam->set_bank_offset(1, offset); // 0x8000-0x9FFF
|
||||
m_sam->set_bank_offset(2, offset); // 0xA000-0xBFFF
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user