ti8* Re-implemented ipl disable, which was removed in 080dc67aba [smf]

This commit is contained in:
smf- 2018-02-22 13:23:26 +00:00
parent 5deafe11fb
commit d53fed6b1e
3 changed files with 47 additions and 3 deletions

View File

@ -361,8 +361,8 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(ti85_state::ti83p_asic_mem)
AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("membank1", address_map_bank_device, read8, write8)
AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("membank2", address_map_bank_device, read8, write8)
AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("membank3", address_map_bank_device, read8, write8)
AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("membank2", address_map_bank_device, write8) AM_READ(ti83p_membank2_r)
AM_RANGE(0x8000, 0xbfff) AM_DEVWRITE("membank3", address_map_bank_device, write8) AM_READ(ti83p_membank3_r)
AM_RANGE(0xc000, 0xffff) AM_DEVREADWRITE("membank4", address_map_bank_device, read8, write8)
ADDRESS_MAP_END

View File

@ -211,7 +211,8 @@ public:
DECLARE_WRITE8_MEMBER(ti83pse_ctimer3_loop_w);
DECLARE_READ8_MEMBER(ti83pse_ctimer3_count_r);
DECLARE_WRITE8_MEMBER(ti83pse_ctimer3_count_w);
DECLARE_READ8_MEMBER(ti83p_membank2_r);
DECLARE_READ8_MEMBER(ti83p_membank3_r);
void ti8x_update_bank(address_space &space, uint8_t bank, uint8_t *base, uint8_t page, bool is_ram);
void update_ti85_memory();

View File

@ -269,6 +269,49 @@ MACHINE_RESET_MEMBER(ti85_state,ti85)
m_PCR = 0xc0;
}
READ8_MEMBER(ti85_state::ti83p_membank2_r)
{
/// http://wikiti.brandonw.net/index.php?title=83Plus:State_of_the_calculator_at_boot
/// should only trigger when fetching opcodes
if (m_booting && !machine().side_effect_disabled())
{
m_booting = false;
if (m_model == TI83P)
{
update_ti83p_memory();
}
else
{
update_ti83pse_memory();
}
}
return m_membank2->read8(space, offset);
}
READ8_MEMBER(ti85_state::ti83p_membank3_r)
{
/// http://wikiti.brandonw.net/index.php?title=83Plus:State_of_the_calculator_at_boot
/// should only trigger when fetching opcodes
/// should be using port 6 instead of 4
if (m_booting && (m_ti83p_port4 & 1) && !machine().side_effect_disabled())
{
m_booting = false;
if (m_model == TI83P)
{
update_ti83p_memory();
}
else
{
update_ti83pse_memory();
}
}
return m_membank3->read8(space, offset);
}
MACHINE_RESET_MEMBER(ti85_state,ti83p)
{
m_PCR = 0x00;