summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/i8275.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/i8275.cpp')
-rw-r--r--src/devices/video/i8275.cpp38
1 files changed, 18 insertions, 20 deletions
diff --git a/src/devices/video/i8275.cpp b/src/devices/video/i8275.cpp
index cfce4ee084e..53d4bfa18d6 100644
--- a/src/devices/video/i8275.cpp
+++ b/src/devices/video/i8275.cpp
@@ -209,22 +209,22 @@ void i8275_device::vrtc_start()
//LOG("I8275 y %u x %u VRTC 1\n", y, x);
m_write_vrtc(1);
- if (m_status & ST_VE)
- {
- // reset field attributes
- m_field_attr = 0;
-
- m_buffer_idx = CHARACTERS_PER_ROW;
- m_dma_stop = false;
- m_end_of_screen = false;
-
- m_cursor_blink++;
- m_cursor_blink &= 0x1f;
-
- m_char_blink++;
- m_char_blink &= 0x3f;
- m_stored_attr = 0;
- }
+ // reset field attributes
+ m_field_attr = 0;
+
+ // Intel datasheets imply DMA requests begin only after a "Start Display" command is issued.
+ // WY-100, however, expects a BRDY cycle from the 8276 after the program first configures and stops the display.
+ // This suggests that DMA bursts proceed as normal in this case, but any characters sent will not be displayed.
+ m_buffer_idx = CHARACTERS_PER_ROW;
+ m_dma_stop = false;
+ m_end_of_screen = !(m_status & ST_VE);
+
+ m_cursor_blink++;
+ m_cursor_blink &= 0x1f;
+
+ m_char_blink++;
+ m_char_blink &= 0x3f;
+ m_stored_attr = 0;
}
@@ -285,7 +285,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
if (m_scanline == 0)
vrtc_end();
- if ((m_status & ST_VE) && lc == 0 && m_scanline < m_vrtc_scanline)
+ if (lc == 0 && m_scanline < m_vrtc_scanline)
{
if (!m_dma_stop && m_buffer_idx < CHARACTERS_PER_ROW)
{
@@ -320,7 +320,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
if (m_scanline == m_vrtc_scanline)
vrtc_start();
- if ((m_status & ST_VE) && m_scanline == m_vrtc_drq_scanline)
+ if (!m_dma_stop && m_scanline == m_vrtc_drq_scanline)
{
// swap line buffers
m_buffer_dma = !m_buffer_dma;
@@ -609,9 +609,7 @@ WRITE8_MEMBER( i8275_device::write )
m_param[m_param_idx] = data;
if (m_param_idx == REG_SCN4)
- {
recompute_parameters();
- }
m_param_idx++;
}