diff options
Diffstat (limited to 'src/mame/drivers/rainbow.cpp')
-rw-r--r-- | src/mame/drivers/rainbow.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index ea97e065bbe..5753d38c033 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -534,7 +534,7 @@ public: } DECLARE_READ8_MEMBER(read_video_ram_r); - DECLARE_WRITE_LINE_MEMBER(clear_video_interrupt); + DECLARE_WRITE_LINE_MEMBER(video_interrupt); DECLARE_READ8_MEMBER(diagnostic_r); DECLARE_WRITE8_MEMBER(diagnostic_w); @@ -609,7 +609,6 @@ public: DECLARE_READ8_MEMBER(GDC_EXTRA_REGISTER_r); uint32_t screen_update_rainbow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); IRQ_CALLBACK_MEMBER(irq_callback); DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock); @@ -2626,12 +2625,14 @@ WRITE_LINE_MEMBER(rainbow_state::GDC_vblank_irq) } // 7220 vblank IRQ -INTERRUPT_GEN_MEMBER(rainbow_state::vblank_irq) +WRITE_LINE_MEMBER(rainbow_state::video_interrupt) { - raise_8088_irq(IRQ_8088_VBL); - m_crtc->notify_vblank(true); + if (state == ASSERT_LINE) + raise_8088_irq(IRQ_8088_VBL); + else + lower_8088_irq(IRQ_8088_VBL); - if (m_POWER_GOOD && m_crtc->MHFU(MHFU_IS_ENABLED)) // If enabled... + if (state == ASSERT_LINE && m_POWER_GOOD && m_crtc->MHFU(MHFU_IS_ENABLED)) // If enabled... { if (m_crtc->MHFU(MHFU_VALUE) > 10) // + more than (10 * 16.666) msecs gone (108 ms would be by the book) { @@ -2644,12 +2645,6 @@ INTERRUPT_GEN_MEMBER(rainbow_state::vblank_irq) } } -WRITE_LINE_MEMBER(rainbow_state::clear_video_interrupt) -{ - lower_8088_irq(IRQ_8088_VBL); - m_crtc->notify_vblank(false); -} - // Reflects bits from 'diagnostic_w' (1:1), except test jumpers READ8_MEMBER(rainbow_state::diagnostic_r) // 8088 (port 0A READ). Fig.4-29 + table 4-15 { @@ -3194,7 +3189,6 @@ MCFG_CPU_IO_MAP(rainbow8088_io) MCFG_CPU_ADD("subcpu", Z80, XTAL(24'073'400) / 6) MCFG_CPU_PROGRAM_MAP(rainbowz80_mem) MCFG_CPU_IO_MAP(rainbowz80_io) -MCFG_CPU_VBLANK_INT_DRIVER("screen", rainbow_state, vblank_irq) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -3209,7 +3203,7 @@ MCFG_DEVICE_ADD("vt100_video", RAINBOW_VIDEO, XTAL(24'073'400)) MCFG_VT_SET_SCREEN("screen") MCFG_VT_CHARGEN("chargen") MCFG_VT_VIDEO_RAM_CALLBACK(READ8(rainbow_state, read_video_ram_r)) -MCFG_VT_VIDEO_CLEAR_VIDEO_INTERRUPT_CALLBACK(WRITELINE(rainbow_state, clear_video_interrupt)) +MCFG_VT_VIDEO_VERT_FREQ_INTR_CALLBACK(WRITELINE(rainbow_state, video_interrupt)) // *************************** COLOR GRAPHICS (OPTION) ************************************** // While the OSC frequency is confirmed, the divider is not (refresh rate is ~60 Hz with 32). |