mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
macpdm: Add vblank irq
This commit is contained in:
parent
5c124e2e87
commit
e097edd6ab
@ -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);
|
||||
}
|
||||
|
@ -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<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_ioport m_monitor_config;
|
||||
devcb_write_line m_screen_vblank;
|
||||
|
||||
const uint64_t *m_vram;
|
||||
uint32_t m_vram_offset;
|
||||
|
@ -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 )
|
||||
|
Loading…
Reference in New Issue
Block a user