> On Sep 14, 2017, at 12:41 PM, Paul Koning via cctalk <[email protected]>
> wrote:
>
>
>> On Sep 14, 2017, at 12:27 PM, jim stephens via cctalk
>> <[email protected]> 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:])