On Mon, Dec 23, 2013 at 11:22 AM, Peter Corlett <abuse at cabal.org.uk> wrote:
On Fri, Dec 20, 2013 at 12:05:34PM -0500, Ethan Dicks
wrote:
[...] I naturally wondered what it would take to
adapt the Zorro Bus (or the
86-pin SOTS bus on the A1000, really) to the Unibus so I could use an RL11 on
it. We had all the necessary components for a simple Amiga-Unibus adapter,
but the Amiga doesn't have a DMA controller, [...]
That's because it didn't need one.
I disagree. I used to make 68000-based serial cards in the 80s and 90s
(COMBOARD). The board had a host interface that implemented Unibus,
Qbus or VAXBI (3 different cards, naturally, but largely the same internally).
This board did not have an on-board DMA engine, so a software loop read
its RAM and transferred the words to the right addresses on its own bus
to initiate DMA cycles in the host. The tightest loop we could manage
(a couple of 68000 instructions) got us about 200KB/sec transfer rates,
far below what the host bus could manage (usually over 1MB/sec).
It was common in the 68000 days to put the DMA engines on the
peripherals, largely because they were expensive and not every
peripheral needed one (serial ports, for example). This is the opposite
of what IBM did with the PC where *every* PC had a multi-channel
DMA engine that any peripheral could use (floppy, hard disk, sound
card...)
Zorro I was little more than the CPU lines
being exposed on an edge connector. So you could tri-state the CPU and then
access memory directly without needing to jump through the hoops of a DMA
controller.
Your hardware effectively *is* the CPU for the duration, and there was at least
one CPU accelerator that exploited this ability, and didn't need one to void
the warranty by cracking open the case and pulling out the 68000 like some
accelerators.
While I don't disagree with the model you've described when building hardware
from scratch, that doesn't help attaching an
existing Unibus peripheral (RL11
disk controller) to the Zorro bus. *Some* bit of
hardware has to implement the
Unibus NPR mechanism or the RL11 can't do its job, and in the 68000 world,
we call that a DMA controller, whether it's a Motorola chip (MC68440 or
MC68450) or a wad of TTL. *That* is what always slowed my intentions
down to a crawl.
My first several SCSI interfaces for the Amiga were PIO and could only
transfer a couple hundred Kbytes/sec. I knew how they worked from my
time writing embedded 68000 code with transfer loops and was not
surprised at their speed.
-ethan