summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Michael Zapf <Michael.Zapf@mizapf.de>2018-08-10 20:09:08 +0200
committer Michael Zapf <Michael.Zapf@mizapf.de>2018-08-10 20:10:39 +0200
commitcb44854da72b1b1cc0cefcdbea5a6d8c0e8ca612 (patch)
tree0b939daac33b6ca78a5e08fd732f21983482744f
parent87b396ebb69978638fe7012c1338d7a4f5c92293 (diff)
ti99_2: Fixed cassette loading by fixing a glitch of tms9995 reading the decrementer.
-rw-r--r--src/devices/cpu/tms9900/tms9995.cpp9
-rw-r--r--src/mame/drivers/ti99_2.cpp2
2 files changed, 7 insertions, 4 deletions
diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp
index 26d357a8e61..8458b2f656d 100644
--- a/src/devices/cpu/tms9900/tms9995.cpp
+++ b/src/devices/cpu/tms9900/tms9995.cpp
@@ -1795,12 +1795,13 @@ void tms9995_device::mem_read()
if ((m_address & 0xfffe)==0xfffa && !m_mp9537)
{
- LOGMASKED(LOG_DEC, "read decrementer\n");
+ LOGMASKED(LOG_DEC, "read dec=%04x\n", m_decrementer_value);
// Decrementer mapped into the address space
m_current_value = m_decrementer_value;
if (m_byteop)
{
- if ((m_address & 1)!=1) m_current_value <<= 8;
+ // When reading FFFB, return the lower byte
+ if ((m_address & 1)==1) m_current_value <<= 8;
m_current_value &= 0xff00;
}
pulse_clock(1);
@@ -1942,7 +1943,7 @@ void tms9995_device::mem_write()
{
m_starting_count_storage_register = m_decrementer_value = m_current_value;
}
- LOGMASKED(LOG_DEC, "Setting decrementer to %04x, PC=%04x\n", m_current_value, PC);
+ LOGMASKED(LOG_DEC, "Setting dec=%04x [PC=%04x]\n", m_current_value, PC);
pulse_clock(1);
return;
}
@@ -2234,9 +2235,9 @@ void tms9995_device::trigger_decrementer()
if (m_starting_count_storage_register>0) // null will turn off the decrementer
{
m_decrementer_value--;
+ LOGMASKED(LOG_DEC, "dec=%04x\n", m_decrementer_value);
if (m_decrementer_value==0)
{
- LOGMASKED(LOG_DEC, "decrementer reached 0\n");
m_decrementer_value = m_starting_count_storage_register;
if (m_flag[1]==true)
{
diff --git a/src/mame/drivers/ti99_2.cpp b/src/mame/drivers/ti99_2.cpp
index 7a24c4a3b8c..303fa2a6adb 100644
--- a/src/mame/drivers/ti99_2.cpp
+++ b/src/mame/drivers/ti99_2.cpp
@@ -339,6 +339,8 @@ WRITE8_MEMBER(ti99_2_state::intflag_write)
*/
READ8_MEMBER(ti99_2_state::mem_read)
{
+ if (m_maincpu->is_onchip(offset)) return m_maincpu->debug_read_onchip_memory(offset&0xff);
+
int page = offset >> 12;
if (page>=0 && page<4)