[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Microsoft Softcard and IIgs



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.

Matt