RetroBrew Computers Forum
Discussion forum for the RetroBrew Computers community.

Home » RBC Forums » General Discussion » ECB-DMA (Wolfgang Kabatzge's ECB-DMA)
Re: ECB-DMA [message #6782 is a reply to message #6780] Sat, 16 November 2019 05:23 Go to previous messageGo to previous message
etchedpixels is currently offline  etchedpixels
Messages: 333
Registered: October 2015
Senior Member
Take a look at Marten's Z80DMA for RC2014. It's a much simpler bus so rather easier to understand IMHO.

IEI/IEO was always a problem with backplanes. S100 systems generally don't use it - S100 after all has its own set of vectored interrupts. Cromemco systems did but they use flying leads for it so that you can chain interrupts neatly without having to worry about exact slot orders and magic jumpers in unused slots. The 16x50 on the board doesn't support IEI/IEO anyway so you can't really use Z80 IM2 properly. What you can do though is to use the spare modem pins on the 16x50 as an interrupt controller as it will let you generate interrupts on modem line changes. That (plus a 10Hz clock board) is how I run Fuzix on SBCv2.

S100 also solved the DMA access problems its own unique way and supports priority bus mastering so is a whole chunk of extra logic you probably wouldn't want to copy.

The Z80DMA isn't actually much use for bank to bank copying unless you've got a better MMU design. On a Zeta v2 style MMU you can map any pair of 16K banks and DMA between them. On the SBCv2 you'd need to have some kind of separate DMA bank select logic and latches - like the Altos 5 did. CP/M 3 bank to bank copying is not usually much of a win anyway. It gets you a slightly bigger TPA but at a measurable performance hit over not having XMOVE and ending up with a 512 byte buffer per CF drive (drive in CP/M sense) in the common.

CP/M 2.2 it's hard to use the Z80DMA effectively. CP/M 3 for I/O you can at least do larger I/O directly using the DMA (in particular the CCP loading applications which is one of the most obvious 'feels fast' points) but not really use it for buffering, for MP/M it fits much better as MP/M expects your driver transfer code to be in common space and you switch bank to the target, do the I/O then switch back. That plus the fact you know about multi-block I/O fits the DMA better.

For floppy the biggest use IMHO is that you can leave interrupts on during transfers even on 1.44/2.88MB media and you'll not drop anything. Very useful in MP/M.

I'm wary of just blindly going to a raw CF adapter. The number of incompatibilities and timing issues with that is proving inconveniently large in other projects.
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Parallel Printer Port driver for Z80
Next Topic: Using Multi-Core Processors to build a in-circuit replacement/enhancement for vintage CPUs


Current Time: Sat Oct 25 19:37:24 PDT 2025

Total time taken to generate the page: 0.01365 seconds