On 11/18/2005 at 6:35 AM Brad Parker wrote:
Ah. I'd love to see the schematics - are they on
the web?
No, I did those on pencil and paper. Brutally simple, actually--mostly
receivers and drivers, with latches for holding data and status. Most of
the smarts are in software. With the PCI version, I got wise and moved the
line interface to a separate card so I don't have to redo that part of the
job as my design evolves.
What's the maximum block size?
My design goal is 1MB blocks. That should cover all eventualities.
If you don't mind discussing it, I'd be
interesting to know why you want
such big blocks - are the tapes 'preexisting' and you just want to read
them, or do you want to create tapes with huge blocks? (if so, why?)
The tapes are preexisting--I don't know exactly how long the blocks are
(for the obvious reason that I can't read them without data loss) but the
block size seems to be in the area of 256K or so. Ideally, I'd like to
make copies as well as read them.
Also, what's the aggregate data rate in
bytes/second? I assume you want
to 'stream' so the drives don't rock back and forth.
The data rate is about 1.1MB/sec from what I've been able to determine.
I'd like a bunch of headroom. I'd tried a 16-bit ISA interface (16 bits at
a toss) using PIO, but even with interrupts disabled, I was still losing a
byte now and then, which leads me to suspect that I'm running on the edge.
Peformance on varies wildly between host machines with older Pentiums
generally doing better than 486, Celeron or P3/P4 systems. The code's
32-bit running under a DOS extender (not Windoze).
The ideal solution would be a double-buffered bus-mastering DMA setup.
But I'm getting a little weary of fighting the PC bus battle. If I moved
the whole setup out of the PC box, using a small processor board with a
small hard disk and interfacing via USB or TCP/IP, I'd have a permanent
solution that should work with any host machine. Even with today's
smallest hard disks, I could hold the contents of many tapes on one.
At least that's the way I'm leaning.
Cheers,
Chuck