<div dir="ltr">I wonder if it would be worth putting together something like the <a href="http://www.kryoflux.com/?page=kf_features">Kryoflux</a> for tape drives (the Kryoflux a device that connects directly to the floppy drive instead of through a floppy controller, and records the timings of the magnetic transitions at a low level, so that they can be used to extract data, or duplicate a floppy, in almost any format).<div><br></div><div>// Christian</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 7 June 2015 at 03:47, Bob Supnik <span dir="ltr"><<a href="mailto:bob@supnik.org" target="_blank">bob@supnik.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yeah, PDP-7 (and earlier) DECtapes are different. They use different checksum algorithms, for one thing, and some early PDP-4 and -7 DECtape controllers used four-word headers instead of five. The checksum is probably key; only five "four word header" DECtape controllers escaped the factory.<br>
<br>
/* Checksum routine */<br>
<br>
int32 dt_csum (UNIT *uptr, int32 blk)<br>
{<br>
int32 *fbuf = (int32 *) uptr->filebuf;<br>
int32 ba = blk * DTU_BSIZE (uptr);<br>
int32 i, csum, wrd;<br>
<br>
#if defined (TC02)                                      /* TC02/TC15 */<br>
csum = 077;                                             /* init csum */<br>
for (i = 0; i < DTU_BSIZE (uptr); i++) {                /* loop thru buf */<br>
    wrd = fbuf[ba + i] ^ DMASK;                         /* get ~word */<br>
    csum = csum ^ (wrd >> 12) ^ (wrd >> 6) ^ wrd;<br>
    }<br>
return (csum & 077);<br>
#else                                                   /* Type 550 */<br>
csum = 0777777;<br>
for (i = 0; i < DTU_BSIZE (uptr); i++) {                /* loop thru buf */<br>
    wrd = fbuf[ba + i];                                 /* get word */<br>
    csum = csum + wrd;                                  /* 1's comp add */<br>
    if (csum > DMASK)<br>
        csum = (csum + 1) & DMASK;<br>
    }<br>
return (csum ^ DMASK);                                  /* 1's comp res */<br>
#endif<br>
}<br>
<br>
This is documented in the 18b PDP DECtape controller, based on sources I have for PDP-7 DECtape code from the late 60s; but for some reason, I never published a paper on it.<br>
<br>
This is one reason why recovering DECsys required reading the DECtape on the last working PDP-7 in the world.<br>
<br>
/Bob<br>
_______________________________________________<br>
Simh mailing list<br>
<a href="mailto:Simh@trailing-edge.com" target="_blank">Simh@trailing-edge.com</a><br>
<a href="http://mailman.trailing-edge.com/mailman/listinfo/simh" target="_blank">http://mailman.trailing-edge.com/mailman/listinfo/simh</a></blockquote></div><br></div>