> On Sep 14, 2017, at 12:41 PM, Paul Koning via cctalk <cctalk@classiccmp.org> 
> wrote:
> 
> 
>> On Sep 14, 2017, at 12:27 PM, jim stephens via cctalk 
>> <cctalk@classiccmp.org> wrote:
>> 
>> 
>> 
>> On 9/14/2017 9:19 AM, Fred Cisin via cctalk wrote:
>>> You have some .dsk images of SSDD 96tpi for 11/73.
>> I have some also, and would love if there is a writeup of a known working 
>> procedure to use as a reference.
>> 
>> Having a list of programs and systems is great, but I'd also like to know a 
>> few formulas that absolutely worked for someone as a starting point.
>> 
>> We have copies of a VMS 4.3 floppy set on RX50's which we will image as 
>> well, and using something other than the DEC hardware will be useful.
> 
> It's easy on Linux.  PC 5.25 inch drives have settable format parameters.  
> The PC default is 9 sectors per track, but you can set it to 10 for RX50 
> compatibility.
> 
> At one point you'd do that with an entry in /etc/fdprm:
> 
> rx50                   800    10   1  80    0 0x23 0x01 0xDF     0x50
> 
> There's still a command line approach, I forgot the command name though.  You 
> can also do it under program control with the the FDSETPRM ioctl.  I have 
> some Python code (in my "FLX" utility for operating on RSTS file systems) 
> that does this.
> 
> One complication: if you have an image which has the blocks in logical order, 
> you need to shuffle them to account for the strange track numbering, 
> interleaving, and track to track sector skew.  Here's a program that will do 
> that.  (It operates on image files, not on the actual floppy drive.)

Ok, attachments get stripped.  Here it is.

#!/usr/bin/env python3

"""rx50.py

This is a simple program to convert between interleaved and non-interleaved
(logical block order) layouts for RX50 floppies or container files.

Invocation:
    rx50.py [-i] infile [-i] outfile

If the filename is preceded by -i, that file is/will be interleaved.  Infile
or outfile may be an actual floppy (in which case -i is in effect 
automatically).
While it is legal to specify -i twice, or not at all, this is rather 
uninteresting
because it merely makes an image copy of the container in a fairly inefficient
manner.
"""

from rstsio import disk
import sys

def main (args):
    a = iter (args)
    il = False
    ifn = next (a)
    if ifn == "-i":
        il = True
        ifn = next (a)
    idisk = disk.Disk (ifn, interleave = il)
    il = False
    ofn = next (a)
    if ofn == "-i":
        il = True
        ofn = next (a)
    odisk = disk.Disk.create (ofn, idisk.sz, interleave = il)
    odisk.setrwdisk (True)
    dcns = idisk.sz // idisk.dcs
    for i in range (dcns):
        ic = idisk.readclu (i)
        oc = odisk.newclu (i)
        oc[:] = ic
    odisk.flush ()
    idisk.close ()
    odisk.close ()

if __name__ == "__main__":
    main (sys.argv[1:])
    

Reply via email to