keirf/greaseweazle

How can I get gw to honor rpm= in diskdefs when writing?

jgeorge44 opened this issue · 2 comments

This is more a question than an issue, perhaps, unless the issue is that it's not supported.

I am archiving a large number of 2.4MB 5.25" diskettes for an IBM 3174 controller.

The disk format is this (in diskdefs format):

disk ibm.3174.ed
    cyls = 80
    heads = 2
    tracks 0 ibm.mfm
        secs = 15
        bps = 512
        rpm = 360
    end
    tracks * ibm.mfm
        secs = 30
        bps = 512
        rpm = 180
    end
end

RPM in the drive is changed by toggling GPIO2 via the --dd command. I can read a diskette in 3 separate operations:
gw read --dd h --tracks=c=0 track00.0.raw
then
gw read --dd l --tracks=c=1-79 track00.0.raw
then
gw convert --format ibm.3174.ed track00.0.raw diskimage.img

I can write a diskette directly from the .img file in two steps:
gw write --format ibm.3174.ed --dd h --tracks=c=0 diskimage.img
gw write --format ibm.3174.ed --dd l --tracks=c=1-79 diskimage.img

Is there any way to do this in a single command? With rpm= specified in the diskdefs, is there some way i can tell gw to toggle IO2 for that RPM change and do this all in a single command?

I've read about 300 of these diskettes using a script that calls those 3 commands to read a diskette and then process an image, but i need to write back out about 100 more and i can script it in two commands just fine, but it seems to me like all the information is there for gw to be able to do it in one pass, I just don't know how to make it do so.

Is that supported?

Thanks,
Joe

You can't do it in a single command; gw's assumption is that a drive is fixed speed. Is the drive capable of reading/writing the ED tracks at 360rpm, or reading/writing the DD tracks at 180rpm? The reason for the speed change will be to present DD rate for all tracks at the controller. The drive may not care.

Either way this is probably a wontfix: As you have found you can easily enough script your way around it.