From e097edd6ab8a5de2c83bdb92abb53b55c4bbd61f Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Wed, 24 Mar 2021 14:03:20 +0100 Subject: macpdm: Add vblank irq --- src/devices/machine/mv_sonora.cpp | 5 ++++- src/devices/machine/mv_sonora.h | 4 ++-- src/mame/drivers/macpdm.cpp | 13 +++++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/devices/machine/mv_sonora.cpp b/src/devices/machine/mv_sonora.cpp index 97d8585dbed..2e6e571b238 100644 --- a/src/devices/machine/mv_sonora.cpp +++ b/src/devices/machine/mv_sonora.cpp @@ -24,12 +24,14 @@ mac_video_sonora_device::mac_video_sonora_device(const machine_config &mconfig, device_t(mconfig, MAC_VIDEO_SONORA, tag, owner, clock), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_monitor_config(*this, "monitor") + m_monitor_config(*this, "monitor"), + m_screen_vblank(*this) { } void mac_video_sonora_device::device_start() { + m_screen_vblank.resolve_safe(); m_vram = nullptr; save_item(NAME(m_vram_offset)); @@ -56,6 +58,7 @@ void mac_video_sonora_device::device_add_mconfig(machine_config &config) // dot clock, htotal, hstart, hend, vtotal, vstart, vend m_screen->set_raw(31334400, 896, 0, 640, 525, 0, 480); m_screen->set_screen_update(FUNC(mac_video_sonora_device::screen_update)); + m_screen->screen_vblank().set([this](int state) { m_screen_vblank(state && (m_modeline_id != -1)); }); PALETTE(config, m_palette).set_entries(256); } diff --git a/src/devices/machine/mv_sonora.h b/src/devices/machine/mv_sonora.h index 8037a461c08..1128fb24bc3 100644 --- a/src/devices/machine/mv_sonora.h +++ b/src/devices/machine/mv_sonora.h @@ -27,8 +27,7 @@ public: DECLARE_READ_LINE_MEMBER(vblank) const { return m_screen->vblank(); } DECLARE_READ_LINE_MEMBER(hblank) const { return m_screen->hblank(); } - auto screen_vblank() { return m_screen->screen_vblank(); } - auto scanline() { return m_screen->scanline(); } + auto screen_vblank() { return m_screen_vblank.bind(); } void set_vram_base(const uint64_t *vram) { m_vram = vram; } void set_vram_offset(uint32_t offset) { m_vram_offset = offset; } @@ -54,6 +53,7 @@ private: required_device m_screen; required_device m_palette; required_ioport m_monitor_config; + devcb_write_line m_screen_vblank; const uint64_t *m_vram; uint32_t m_vram_offset; diff --git a/src/mame/drivers/macpdm.cpp b/src/mame/drivers/macpdm.cpp index 7ae58ec1593..b5ed5191876 100644 --- a/src/mame/drivers/macpdm.cpp +++ b/src/mame/drivers/macpdm.cpp @@ -291,7 +291,7 @@ void macpdm_state::driver_reset() m_via2_ier = 0x00; m_via2_ifr = 0x00; m_via2_sier = 0x00; - m_via2_sifr = 0x07; + m_via2_sifr = 0x7f; m_irq_control = 0; @@ -374,11 +374,11 @@ void macpdm_state::via2_irq_main_set(uint8_t mask, int state) void macpdm_state::via2_irq_slot_set(uint8_t mask, int state) { - if(((m_via2_sifr & mask) != 0) == state) + if(((m_via2_sifr & mask) == 0) == state) return; m_via2_sifr ^= mask; - via2_irq_main_set(0x02, (m_via2_sifr & m_via2_sier) != 0); + via2_irq_main_set(0x02, ((~m_via2_sifr) & m_via2_sier) != 0); } @@ -460,7 +460,7 @@ void macpdm_state::via2_ier_w(uint8_t data) logerror("via2 ier %s %s %s %s\n", m_via2_ier & 0x20 ? "fdc" : "-", - m_via2_ier & 0x20 ? "sound" : "-", + m_via2_ier & 0x10 ? "sound" : "-", m_via2_ier & 0x08 ? "scsi" : "-", m_via2_ier & 0x02 ? "slot" : "-", m_via2_ier & 0x01 ? "scsidrq" : "-"); @@ -491,7 +491,7 @@ void macpdm_state::via2_sier_w(uint8_t data) m_via2_sier & 0x10 ? "slot1" : "-", m_via2_sier & 0x08 ? "slot0" : "-"); - via2_irq_main_set(0x02, (m_via2_sifr & m_via2_sier) != 0); + via2_irq_main_set(0x02, ((~m_via2_sifr) & m_via2_sier) != 0); } uint8_t macpdm_state::via2_sifr_r() @@ -999,6 +999,7 @@ void macpdm_state::macpdm(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &macpdm_state::pdm_map); MAC_VIDEO_SONORA(config, m_video); + m_video->screen_vblank().set(FUNC(macpdm_state::vblank_irq)); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -1075,4 +1076,4 @@ ROM_START( pmac6100 ) ROM_END -COMP( 1994, pmac6100, 0, 0, macpdm, macpdm, macpdm_state, driver_init, "Apple Computer", "Power Macintosh 6100/60", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +COMP( 1994, pmac6100, 0, 0, macpdm, macpdm, macpdm_state, driver_init, "Apple Computer", "Power Macintosh 6100/60", MACHINE_NOT_WORKING ) -- cgit v1.2.3