branches/alto2/src/emu/cpu/alto2/a2curt.c
r26340 | r26341 | |
49 | 49 | { |
50 | 50 | m_dsp.csr = m_bus; |
51 | 51 | 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; |
52 | 55 | } |
53 | 56 | |
54 | 57 | /** |
r26340 | r26341 | |
58 | 61 | { |
59 | 62 | m_task_wakeup &= ~(1 << m_task); |
60 | 63 | 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; |
64 | 64 | } |
65 | 65 | |
66 | 66 | /** @brief initialize the cursor task F1 and F2 functions */ |
branches/alto2/src/emu/cpu/alto2/a2dwt.c
r26340 | r26341 | |
9 | 9 | *****************************************************************************/ |
10 | 10 | #include "alto2cpu.h" |
11 | 11 | |
| 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 | |
12 | 15 | /** |
13 | 16 | * @brief block the display word task |
14 | 17 | */ |
r26340 | r26341 | |
33 | 36 | LOG((LOG_DWT,2," DDR← BUS (%#o)\n", m_bus)); |
34 | 37 | m_dsp.fifo[m_dsp.fifo_wr] = m_bus; |
35 | 38 | 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)) |
37 | 41 | m_task_wakeup &= ~(1 << task_dwt); |
38 | 42 | LOG((LOG_DWT,2, " DWT push %04x into FIFO[%02o]%s\n", |
39 | 43 | m_bus, (m_dsp.fifo_wr - 1) & (ALTO2_DISPLAY_FIFO - 1), |
40 | | FIFO_STOPWAKE_0() == 0 ? " STOPWAKE" : "")); |
| 44 | FIFO_STOPWAKE(a38) ? " STOPWAKE" : "")); |
41 | 45 | } |
42 | 46 | |
43 | 47 | void alto2_cpu_device::init_dwt(int task) |