On Dec 7, 14:11, Jules Richardson wrote:
Forgive me as I'm half asleep today (the top half
I think,
unfortunately
containing my brain...)
A few points on this...
a) I'm only personally interested in ST506 type drives as that's all
I
have; others will be worrying about other
technologies. Is there a
case
where the data stream coming off the drive on a read
(or going to the
drive on a write) might be something other "r/w a single sector"? I'm
just wondering about this sampling idea - it sounds plausible if the
only commands available are to read or write a single sector (plus
the
usual seek etc.) but are other commands available
where the data
stream
to/from the drive might be different if say, multiple
sectors can be
read/written in one command? At that point the sampling idea falls on
its ass if bolting together several emulated sectors doesn't give the
same data as it would for a real drive.
b) In the case of ST506, I'm taking it that the controller always
provides the clock signal for reads and writes - otherwise,
presumably,
there'd be no need for this oversampling of the
raw bit stream idea.
It
could be just sampled at the speed of the drive.
I'm sure Tony will comment further, but his idea has the merit of not
being restricted to single sectors; in fact it doesn't need to know
*anything* about the data it's handling. It can start sampling when
the interface is set to write and the relevant drive is selected, and
stop when it isn't. Similarly it can replay the data stream when
requested. There's nothing magical about a sector, it's just a stream
of interspersed data and clock bits -- headers and all. However, it
does need to be oversampled so you can get the timing right.
An ST506 interface is very similar to a floppy interface, only 10 or 12
times faster.
The way you read a sector from an ST506 interface is to "listen" to the
data strema until you see the header for the sector you want, then
start capturing the data. The way you write is to listen, and when you
see the end of the preceeding sector, you wait (for the inter-sector
gap time) then turn on the write signal and write a sync pattern, a
header, more sync, the data+checksum, then turn the write signal off.
Actually, IIRC you only rewrite the data, unless you're doing a
low-level format.
So Tony's idea could handle everything including an LLF, for any format
and any encoding scheme you like.
c) Something that works "with most ST506
drives" is, IMHO, not good
enough. If a drive works with the ST506 controller with which it was
formatted, it should work with the emulator. Finding that it doesn't
work emulating XYZ's drive 6 months down the line because said drive
is
within spec but our emulator doesn't quite like
the drive spec
doesn't
seem good enough. I don't know about other classic
drive technologies
(all my old systems are ST506 or SCSI), so somebody can argue that
case
seperately :-)
Shouldn't be a problem, if you're sampling. It would be if you need to
understand what the format etc is.
d) Tony's point about being able to understand all
of the system duly
noted - only problem I see there there being the various combinations
of
hardware options that would likely be useful to
people. People would
find emulation of drives other than ST506 types useful I'm sure. Then
on
the 'modern' side of the interface, there are
various options - IDE,
SCSI, Ethernet, Token Ring and who knows what else. Ultimately at
least,
it seems like using off the shelf components and
software to drive
the
modern side of things - and provide flexibility of
operation - will
outweigh the desire to know intimately the entire system.
You'll have a job to get a parallel port or any other standard
interface to work fast enough to talk to the ST506 side. On the
storage side, you could use anything you like -- make the software in
the emulation system modular, and storage is just storage -- whether
it's SCSI, ATA/IDE, network filestore, flash, whatever.
--
Pete Peter Turnbull
Network Manager
University of York