On Fri, 2003-12-05 at 14:28, Jules Richardson wrote:
Construct an
electrical interface of the simplest possible hardware to
get the job done (electrical interface, buss termination as required,
etc) and do the whole job in C or even Perl.
I agree, with the only caveat being that the computer required doesn't
have to be something costing a large amount of money.
As you point out, it can be a case-of-beer's-worth of computer, for many
simulated devices.
The only coding effort is to talk to the custom
homebrew interface that
handles ST506 or whatever flavour of drive you're needing to emulate.
I take it ST506 has analog data for a controller-side separator; this
makes it harder, but as others point out, it could be 'tricked' or
probably simulated with an 8-bit flash converter, and/or use Duell's
idea for an analog sector recorder!
Disk size being what it is today, you could probably record each
"sector" as AtoD'd analog data in a userland program.
(My LGP-21's rotating memory probably contains interesting data, so I'm
probably going to copy the tracks (32 physical) to disk with an opamp on
the head windings driving a sound card, and post-process the NRZ data
later. I'll likely take multiple copies of each track for safety.)
The hardware interface is the problem; in the case of
ST506 it sounds
non-trivial and that's even assuming that once built the data stream
could be decoded and generated by the software (as I get the impression
that said data stream can change widely depending on what controller was
used to format the hard drive that you're emulating)
I'm guessing that for slow interfaces, SASI or maybe ST506, you could
make a semi-generic hardware interface that had a dozen latched output
bits, some input bits, an 8-bit DAC and ADC, and with only enough
hardware drivers to talk to it, do the rest of the simulator in
software.
DMA-speed interfaces like SMD would require hardware buffering, and
delays could generate timing issues in the controller. But I bet a lot
of machines could use a slow interface.