(MESS) clcd.c fixed irq hookup. [smf]

This commit is contained in:
smf- 2014-04-15 18:26:03 +00:00
parent b5610b50b1
commit 53fcf1e684

View File

@ -43,6 +43,9 @@ public:
m_lcd_scrolly(0),
m_lcd_mode(0),
m_lcd_size(0),
m_irq_via0(0),
m_irq_via1(0),
m_irq_acia(0),
m_mmu_mode(MMU_MODE_KERN),
m_mmu_saved_mode(MMU_MODE_KERN),
m_mmu_offset1(0),
@ -72,6 +75,8 @@ public:
m_mmu_mode = MMU_MODE_TEST;
update_mmu_mode(MMU_MODE_KERN);
update_irq();
save_item(NAME(m_lcd_scrollx));
save_item(NAME(m_lcd_scrolly));
save_item(NAME(m_lcd_mode));
@ -197,6 +202,29 @@ public:
LCD_SIZE_CHRW = 4
};
void update_irq()
{
m_maincpu->irq_line(m_irq_via0 | m_irq_via1 | m_irq_acia);
}
WRITE_LINE_MEMBER(write_irq_via0)
{
m_irq_via0 = state;
update_irq();
}
WRITE_LINE_MEMBER(write_irq_via1)
{
m_irq_via1 = state;
update_irq();
}
WRITE_LINE_MEMBER(write_irq_acia)
{
m_irq_acia = state;
update_irq();
}
void update_mmu_mode(int new_mode)
{
if (m_mmu_mode != new_mode)
@ -526,7 +554,7 @@ public:
void nvram_init(nvram_device &nvram, void *data, size_t size);
private:
required_device<cpu_device> m_maincpu;
required_device<m65c02_device> m_maincpu;
required_device<mos6551_device> m_acia;
required_device<via6522_device> m_via0;
required_device<msm58321_device> m_rtc;
@ -542,6 +570,9 @@ private:
int m_lcd_scrolly;
int m_lcd_mode;
int m_lcd_size;
int m_irq_via0;
int m_irq_via1;
int m_irq_acia;
int m_mmu_mode;
int m_mmu_saved_mode;
UINT8 m_mmu_offset1;
@ -714,18 +745,18 @@ static MACHINE_CONFIG_START(clcd, clcd_state)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(clcd_state, via0_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(clcd_state, via0_pb_w))
MCFG_VIA6522_CB1_HANDLER(WRITELINE(clcd_state, via0_cb1_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, irq_line))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(clcd_state, write_irq_via0))
MCFG_DEVICE_ADD("via1", VIA6522, 2000000)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(clcd_state, via1_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(clcd_state, via1_pb_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, nmi_line))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(clcd_state, write_irq_via1))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe)) MCFG_DEVCB_XOR(1)
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w))
MCFG_DEVICE_ADD("acia", MOS6551, 2000000)
MCFG_MOS6551_XTAL(XTAL_1_8432MHz)
MCFG_MOS6551_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, nmi_line))
MCFG_MOS6551_IRQ_HANDLER(WRITELINE(clcd_state, write_irq_acia))
MCFG_MOS6551_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
MCFG_MOS6551_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
MCFG_MOS6551_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr))