diff options
author | 2018-08-10 20:09:08 +0200 | |
---|---|---|
committer | 2018-08-10 20:10:39 +0200 | |
commit | cb44854da72b1b1cc0cefcdbea5a6d8c0e8ca612 (patch) | |
tree | 0b939daac33b6ca78a5e08fd732f21983482744f /src/devices/cpu | |
parent | 87b396ebb69978638fe7012c1338d7a4f5c92293 (diff) |
ti99_2: Fixed cassette loading by fixing a glitch of tms9995 reading the decrementer.
Diffstat (limited to 'src/devices/cpu')
-rw-r--r-- | src/devices/cpu/tms9900/tms9995.cpp | 9 |
1 files changed, 5 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) { |