On 05/22/2013 12:31 PM, Chuck Guzis wrote:
On 05/22/2013 04:28 AM, Vince Mulhollon wrote:
There are hardware issues also relating to your
selection of FDC. The
general consensus and experience of the N8VEM CP/M board builders is
that
programmed IO with a 8 MHz and up Z80 and a modern 1.44 MHz floppy and a
9266 FDC works perfectly. I assembled a system this winter and that
worked
perfectly. Obtaining 8+ MHz chips for modern Z80 designs is non trivial
and involves lots of ebay and searching.
But back to the question originally posted--can one use a 1770/1772
FDC to do 500Kbps 3.5" floppy data transfer. Note that the 1770/1772
and, for that matter, the slightly different WD1773 are specifically
labeled by the manufacturer as "$.25 disk controllers." In other
words, the manufacturer has specified them for 250 Kbps operation--and
indeed, the datasheet timings revolve around that assumption.
That and it just will not run that fast.
Further, note that these are 28-pin DIP packages, which is remarkable
when you start counting up the number of pins required for the
function. Indeed, none of these has a side-select pin; the 1770/1772
lacks a DRIVE READY/ pin (performing the function internally, but does
have a motor control output); the 1773 drops the motor-control line
and replaces it with a multiplexed DRIVE READY/ENABLE PRECOMPENSATION
pin. Neither has any drive-select logic. These are single-supply FDCs
and are able to drive the inputs to a 5.25" floppy drive without any
additional buffering. It's easy to see why Atari and others used the
chips--they're a self-contained solution in a low-pin-count package.
I've got one on an ISA prototype board that I assembled some years
back and, for what it is, it's definitely a remarkable product for its
time.
They are. I have a few and the AMPROLB+ uses the 1770/1772 and the
1770 no matter what you
do will not run fast enough to do the data rate and its not a CPU issue.
I believe that there's a -4 stepping of the 1772
that some have
managed to get working on the Atari ST to do 500Kbps data transfer. A
4MHz Z80 should be more than fast enough. I've never been able to get
a 1770 to operate at that speed.
I've heard same but in that era WD was often a bit optimistic with their
specs and getting fast parts.
However Like I said the 1770 parts I've seen just don't!
If you need a 1770 like controller it's a home grown board with a 1793
and 8229(or similar) plus TTL to get
the interface and still present the right stuff to the pins on the CPU side.
Regarding slower processors (e.g. 2MHz 8080), I think
Don Tarbell's
original design using the WD1771 (FM only) was a good approach--insert
wait states rather than have the CPU poll for data. The bottom of the
transfer loop is a conditional jump that tests for termination by the
FDC--no counting of data bytes transferred is necessary. For the
time, it was a great solution.
I have an Altair 8800BT with one and its good save for NO DRAM allowed.
Several designs did that. I also did that with the 765 early on to get
to 500kbs (8"DD and later 3.5")
using a 8085 at 3mhz and it works very well. One trick added was to or
the DRQ and INT lines as the
765 does timeout on its own if read/write fails (assuming it gets enough
pseudo index pulses).
The original poster asked if a cache could be used to
improve the data
transfer picture. Perhaps not a cache, but a FIFO might be the
simplest approach to accomplish this; I haven't examined the question
in detail.
Cache is not a complete solution, a simple DMA (upcounter, sequencer,
and some ram) to a local pool of
ram then an IO port to read it out when ready. I have done this, a
simple state machine, select logic for
read, write and address counter plus logic to detect DMA complete
(sectorsize). This is the way the early
hard disk guys (teltek, and others) did it as MFM at 1byte/microsecond
was way to fast for any cpu then
(ok, 8x300 or bit slice could).
In this day and age a moderately fast micro can easily do it all and the
ram needed to buffer a cylinder
as well plus provide a 17xx interface to the host.
Allison