mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
upd71071: disable channel at tc (nw)
fmtowns: rerevise brandish cp (nw)
This commit is contained in:
parent
74ba02e0d1
commit
9512e9be9b
@ -515,8 +515,8 @@ Zurukamashi Ver 2.0 Nikkonren Kikaku
|
||||
<publisher>日本ファルコム (Nihon Falcom)</publisher>
|
||||
<info name="release" value="199112xx" />
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<dataarea name="flop" size="1284608">
|
||||
<rom name="brandish (disk 1).d88" size="1284608" crc="1e661a20" sha1="faa4ae3dad5012cdef1803b9f29e3f2710eea519" offset="0" status="baddump" />
|
||||
<dataarea name="flop" size="1283840">
|
||||
<rom name="brandish (disk 1).d88" size="1283840" crc="1e8181ed" sha1="237d354338d44e199a2f89f15157bafb5c1b31fa" offset="0" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
<part name="flop2" interface="floppy_3_5">
|
||||
|
@ -35,6 +35,7 @@
|
||||
But the FM-Towns definitely uses reg 7 as bits 24-31.
|
||||
The documentation on the V53A manual doesn't show these bits either, maybe it's
|
||||
an external connection on the FMT? might be worth checking overflow behavior etc.
|
||||
The Towns manual confirms the top 8 bits are external to the DMAC and there's no carry into them.
|
||||
|
||||
0x08:
|
||||
0x09: Device Control register (16-bit)
|
||||
@ -195,6 +196,11 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
|
||||
m_reg.address_current[channel] = m_reg.address_base[channel];
|
||||
m_reg.count_current[channel] = m_reg.count_base[channel];
|
||||
}
|
||||
else
|
||||
{
|
||||
m_timer[channel]->adjust(attotime::never);
|
||||
m_reg.mask |= (0x01 << channel); // END or TC
|
||||
}
|
||||
// TODO: send terminal count
|
||||
set_eop(ASSERT_LINE);
|
||||
m_reg.status |= (0x01 << channel); // END or TC
|
||||
@ -234,6 +240,11 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
|
||||
m_reg.address_current[channel] = m_reg.address_base[channel];
|
||||
m_reg.count_current[channel] = m_reg.count_base[channel];
|
||||
}
|
||||
else
|
||||
{
|
||||
m_timer[channel]->adjust(attotime::never);
|
||||
m_reg.mask |= (0x01 << channel); // END or TC
|
||||
}
|
||||
// TODO: send terminal count
|
||||
set_eop(ASSERT_LINE);
|
||||
m_reg.status |= (0x01 << channel); // END or TC
|
||||
@ -295,6 +306,7 @@ int upd71071_device::dmarq(int state, int channel)
|
||||
{
|
||||
m_dmarq[channel] = 0; // clear DMARQ line
|
||||
m_reg.status &= ~(0x10 << channel);
|
||||
m_timer[channel]->adjust(attotime::never);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user