Previous 199869 Revisions Next

r26341 Thursday 21st November, 2013 at 18:21:41 UTC by Jürgen Buchmüller
Fix DWT a38 STOPWAKE test
[/branches/alto2/src/emu/cpu/alto2]a2curt.c a2dwt.c

branches/alto2/src/emu/cpu/alto2/a2curt.c
r26340r26341
4949{
5050   m_dsp.csr = m_bus;
5151   LOG((LOG_CURT, m_dsp.csr ? 2 : 9,"   CSR← BUS (%#o)\n", m_dsp.csr));
52   int x = 01777 - m_dsp.xpreg;
53   m_dsp.curdata = m_dsp.csr << (16 - (x & 15));
54   m_dsp.curword = x / 16;
5255}
5356
5457/**
r26340r26341
5861{
5962   m_task_wakeup &= ~(1 << m_task);
6063   m_dsp.curt_wakeup = false;
61   int x = 01777 - m_dsp.xpreg;
62   m_dsp.curdata = m_dsp.csr << (16 - (x & 15));
63   m_dsp.curword = x / 16;
6464}
6565
6666/** @brief initialize the cursor task F1 and F2 functions */
branches/alto2/src/emu/cpu/alto2/a2dwt.c
r26340r26341
99 *****************************************************************************/
1010#include "alto2cpu.h"
1111
12//! PROM a38 bit O1 is STOPWAKE' (stop DWT if bit is zero)
13#define FIFO_STOPWAKE(a38) (0 == (a38 & disp_a38_STOPWAKE) ? true : false)
14
1215/**
1316 * @brief block the display word task
1417 */
r26340r26341
3336   LOG((LOG_DWT,2,"   DDR← BUS (%#o)\n", m_bus));
3437   m_dsp.fifo[m_dsp.fifo_wr] = m_bus;
3538   m_dsp.fifo_wr = (m_dsp.fifo_wr + 1) % ALTO2_DISPLAY_FIFO;
36   if (FIFO_STOPWAKE_0() == 0)
39   UINT8 a38 = m_disp_a38[m_dsp.fifo_rd * 16 + m_dsp.fifo_wr];
40   if (FIFO_STOPWAKE(a38))
3741      m_task_wakeup &= ~(1 << task_dwt);
3842   LOG((LOG_DWT,2, "   DWT push %04x into FIFO[%02o]%s\n",
3943      m_bus, (m_dsp.fifo_wr - 1) & (ALTO2_DISPLAY_FIFO - 1),
40      FIFO_STOPWAKE_0() == 0 ? " STOPWAKE" : ""));
44      FIFO_STOPWAKE(a38) ? " STOPWAKE" : ""));
4145}
4246
4347void alto2_cpu_device::init_dwt(int task)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team