On Mar 14, 6:58 pm, "Michael J. Mahon" <mjma...@aol.com> wrote:
mdj wrote:
On Mar 13, 4:55 am, "Michael J. Mahon" <mjma...@aol.com> wrote:
Add an accelerator to the host and sky's the limit. You cannot use an
accelerator with a DMA device. Applicard works with any accelerator on
any version of the A2.
For me, this is a huge advantage. It's too bad that most accelerators
were not implemented with DMA compatibility (though I know it would have
complicated them).
For Zip Chips, it always struck me as odd, since the cache writes
through via a buffer. The DMA setup time should have been adequate to
dump the write buffer. All it needed to do then was flag the cache as
dirty.
I think the problem is that DMA is the only case of something besides
the processor writing to memory.
This means that if DMA can be ignored, the cache logic only has to
pay attention to addresses generated by the processor, not addresses
that appear on the bus. Since the processor is synchronous with the
cache logic, this side is easy. Snooping bus addresses would have
been a completely new address datapath running between the two clock
domains.
Since prior to the introduction of the High-Speed SCSI card, the
penetration of DMA into the Apple II world was extremely low, it
was an understandable decision to forego DMA compatibility to
achieve a significant simplification.
Yeah... That's why I thought a 'dumb' method like detect DMA and flag
cache dirty might work, but it now occurs to me that syncronising the
cpu 'pause' (which I board might do by deasserting RDY before
asserting DMA) is nigh on impossible across two clock domains :-(
Then there's the problem that DMA is not directly signaled to the
pins of the 6502 socket... ;-)
Right. I had thought a timer that is reset by the PH0 clock could be
used to detect DMA, but it does seem like it's a lot more complicated
that I first thought.
The good news is, in ProDOS 8 it doesn't matter much. Since all I/O is
done a block at a time, there's enough handshaking slowing things down
between block requests that an accelerated II gets close to the same
performance without DMA active, at least for the modest I/O requests
that happen in Apple II programs.