diff --git a/src/devices/sound/ad1848.cpp b/src/devices/sound/ad1848.cpp index e3489c653c2..33e2df9ecac 100644 --- a/src/devices/sound/ad1848.cpp +++ b/src/devices/sound/ad1848.cpp @@ -40,6 +40,16 @@ void ad1848_device::device_start() m_timer = timer_alloc(0, nullptr); m_irq_cb.resolve_safe(); m_drq_cb.resolve_safe(); + save_item(NAME(m_regs.idx)); + save_item(NAME(m_addr)); + save_item(NAME(m_stat)); + save_item(NAME(m_sam_cnt)); + save_item(NAME(m_samples)); + save_item(NAME(m_count)); + save_item(NAME(m_play)); + save_item(NAME(m_mce)); + save_item(NAME(m_trd)); + save_item(NAME(m_irq)); } void ad1848_device::device_reset() @@ -50,6 +60,7 @@ void ad1848_device::device_reset() m_sam_cnt = 0; m_samples = 0; m_play = false; + m_irq = false; } READ8_MEMBER(ad1848_device::read) @@ -61,7 +72,7 @@ READ8_MEMBER(ad1848_device::read) case 1: return m_regs.idx[m_addr]; case 2: - return m_stat; + return m_stat | (m_irq ? 1 : 0); case 3: break; // capture } @@ -105,6 +116,7 @@ WRITE8_MEMBER(ad1848_device::write) break; case 2: m_irq_cb(CLEAR_LINE); + m_irq = false; if(m_regs.iface & 1) m_play = true; break; @@ -183,6 +195,7 @@ void ad1848_device::device_timer(emu_timer &timer, device_timer_id id, int param if(m_trd) m_play = false; m_irq_cb(ASSERT_LINE); + m_irq = true; } m_count = (m_regs.ubase << 8) | m_regs.lbase; } diff --git a/src/devices/sound/ad1848.h b/src/devices/sound/ad1848.h index 2c064f4eb68..f0c881c891c 100644 --- a/src/devices/sound/ad1848.h +++ b/src/devices/sound/ad1848.h @@ -53,7 +53,7 @@ private: uint16_t m_count; uint32_t m_samples; uint8_t m_sam_cnt; - bool m_play, m_mce, m_trd; + bool m_play, m_mce, m_trd, m_irq; devcb_write_line m_irq_cb; devcb_write_line m_drq_cb; required_device m_ldac; diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp index f4378c366f5..da54b1f3f1a 100644 --- a/src/mame/drivers/mtouchxl.cpp +++ b/src/mame/drivers/mtouchxl.cpp @@ -168,7 +168,7 @@ static MACHINE_CONFIG_START( at486, mtxl_state ) // on board devices MCFG_ISA16_SLOT_ADD("mb:isabus","board1", pc_isa16_cards, "ide", true) MCFG_SLOT_OPTION_MACHINE_CONFIG("ide", cdrom) - MCFG_ISA16_SLOT_ADD("mb:isabus","isa1", pc_isa16_cards, "vga", true) + MCFG_ISA16_SLOT_ADD("mb:isabus","isa1", pc_isa16_cards, "svga_dm", true) // original is a gd-5440 MCFG_DEVICE_ADD("ns16550", NS16550, XTAL_1_8432MHz) MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("microtouch", microtouch_device, rx)) @@ -179,6 +179,9 @@ static MACHINE_CONFIG_START( at486, mtxl_state ) MCFG_AD1848_IRQ_CALLBACK(DEVWRITELINE("mb:pic8259_master", pic8259_device, ir5_w)) MCFG_AD1848_DRQ_CALLBACK(DEVWRITELINE("mb:dma8237_1", am9517a_device, dreq1_w)) + MCFG_DEVICE_MODIFY("mb:dma8237_1") + MCFG_I8237_OUT_IOW_1_CB(DEVWRITE8("^cs4231", ad1848_device, dack_w)) + // remove the keyboard controller and use the HLE one which allow keys to be unmapped MCFG_DEVICE_REMOVE("mb:keybc"); MCFG_DEVICE_REMOVE("mb:pc_kbdc");