> 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:])