summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mb86235/mb86235.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mb86235/mb86235.cpp')
-rw-r--r--src/devices/cpu/mb86235/mb86235.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp
index 8dd67ab83c5..44a1d596310 100644
--- a/src/devices/cpu/mb86235/mb86235.cpp
+++ b/src/devices/cpu/mb86235/mb86235.cpp
@@ -17,7 +17,7 @@
#include "mb86235fe.h"
-#define ENABLE_DRC 0
+#define ENABLE_DRC 0
#define CACHE_SIZE (1 * 1024 * 1024)
@@ -166,6 +166,7 @@ void mb86235_device::device_start()
state_add(MB86235_MB6, "MB6", m_core->mb[6]).formatstr("%08X");
state_add(MB86235_MB7, "MB7", m_core->mb[7]).formatstr("%08X");
state_add(STATE_GENPC, "GENPC", m_core->pc ).noshow();
+ state_add(STATE_GENPCBASE, "CURPC", m_core->pc).noshow();
m_icountptr = &m_core->icount;
@@ -242,7 +243,7 @@ void mb86235_device::fifoin_w(uint64_t data)
printf("FIFOIN push %08X%08X\n", (uint32_t)(data >> 32), (uint32_t)(data));
m_core->fifoin.data[m_core->fifoin.wpos] = data;
-
+
m_core->fifoin.wpos++;
m_core->fifoin.wpos &= FIFOIN_SIZE-1;
m_core->fifoin.num++;
@@ -261,7 +262,17 @@ bool mb86235_device::is_fifoin_full()
uint64_t mb86235_device::fifoout0_r()
{
#if ENABLE_DRC
- fatalerror("fifoout0_r");
+ if (m_core->fifoout0.num == 0)
+ {
+ fatalerror("fifoout0_r: reading from empty fifo");
+ }
+
+ uint64_t data = m_core->fifoout0.data[m_core->fifoout0.rpos];
+
+ m_core->fifoout0.rpos++;
+ m_core->fifoout0.rpos &= FIFOOUT0_SIZE - 1;
+ m_core->fifoout0.num--;
+ return data;
#else
return 0;
#endif
@@ -274,4 +285,4 @@ bool mb86235_device::is_fifoout0_empty()
#else
return false;
#endif
-} \ No newline at end of file
+}