On 6/1/2017 12:12 PM, Ethan Dicks wrote:
On Thu, Jun 1, 2017 at 7:59 AM, Jay Jaeger via cctalk
<cctalk at classiccmp.org> wrote:
I can. I use a DR11 parallel port on an 11/24 to
transfer the files.
Interesting. I'd like to see how you tackled that (I can imagine
wanting a couple of layers of integrity-checking, for one).
It uses a simple 8 but parallel bus-like fully interlocked protocol,
byte by byte. The send side raises a data available bit, the receiver
grabs it, then raises an acknowledge. The sender then drops the
available, and then waits until the receiver drops the acknowledge.
The cable is less than 6 feet, and isn't even using properly twisted
pairs.
Transfers are 512 byte blocks (one can always pad the last block with
something), and each block starts with a "sync" byte, which prevents
losing (or adding) an entire byte - the protocol will lock up - there is
no recovery. And I have never needed any. I have yet to see a transfer
fail once it gets started. Sometimes one does need to restart one end
or the other to get it going - I never bothered to look real hard at why
that happens.
One can check the integrity of the entire image however one chooses. I
use a simple 16 bit CRC (sum -r), and wrote a MACRO program under RT-11
that will do the same for a file or a device. Here again, I have never
had a bad checksum. It just works.
Note that while transferring FROM a device that supports bad blocks
(e.g., RL01) is the same as any other device (with or without the bad
block table), one needs to be careful about transferring TO such a
device to make sure that one does not overwrite the factory bad block table.
Used to do it
to a PC with an old serial port, but now I can do it with an Arduino and connect it to a
PC via Ethernet
Well the above was an error on my part. I should have written "old
*parallel* port.
Neat. Any write-up of this or shared code to keep
from re-inventing the wheel?
I could do something about writing it up, I suppose, but it really is
pretty straight-forward.
A couple of PDP-11 MACRO programs, running under RT-11.
(The PC parallel port code was done in DeSmet C, originally on a
Netronics 8088 based true IBM PC "clone", now running under Windows 95,
and does not work with modern parallel ports, rendering it kind of useless.)
A couple of Arduino programs (I hate the term "sketches") that talk the
PDP-11.
A couple of perl programs that talk to the Arduino (which uses an
Ethernet shield).
And NONE of the code is up to snuff, by my standards. In just about
every case, I have had a short term goal to accomplish, and stopped once
that was working well enough. Things like:
- The PDP-11 halts before RT-11 can send out a full error message (it
really should loop on an error).
- Errors don't provide any data about what the program didn't like
- No time spent cleaning up code (in fact, this weekend I spotted a
coding error on the Arduino program that reads from the PDP-11, that
fortunately doesn't seem to have had any really bad effects).
- etc.
Jay
I was going to do a bunch of imaging with a basic machine and
vtserver, but this sounds much, much faster. I have piles of 8"
floppies, RK05 packs and RL02 packs to copy off. Not doing it at
1KB/sec is always an option.
I played with VTServer as well. This is indeed much faster than a
serial port - and the Arduino version is a bit faster than the old PC
version. I have used it for all of the media you mention, and for RX02
floppies and RK07 packs as well, though these days I normally transfer
floppy images to the PC using a Catweasel bit cell board.
-ethan