Friday, April 14, 2017

RSX utility to convert RT11 dump file to virtual disk

  Recently, someone asked me if I could read some Fortran files off of an old 8 inch floppy diskette for them. I have a couple of old DEC PDT-11/150 systems here, that have 8 inch single density drives on them, so, figuring anything's possible,  I said I'll give it a try. It turned out that they were from a DEC system (good), and were single density (even better). But, they were from an RSX-11 system, in Files-11 ODS-1 format. Not so good - my PDT-11/150s run DEC's RT-11 operating system -  a completely different animal when it comes to disk formats. Reading the files off of it by a few simple commands was pretty much right out.

  But, it occurred to me that I had need of a way to read all of my old RT-11 floppies and save them somewhere, because floppy diskettes ain't diamonds (they're not forever) - so writing a utility  to read this fellow's diskette would be of use to me. Besides, I'll use any excuse to write a MACRO-11 program.

  My PDT-11's don't have DECNET on them (I hear DECnet-RT is rare, and very doubtful it would fit on a diskette based system). I've had nothing but bad luck trying to get Kermit to reliably transfer files from them. They don't have  ethernet, only serial ports, so anything ethernet based wasn't going to play.

  I decided, what the hell, I'll do a screen capture of the output of a DUMP command and then translate it back into a virtual disk file that I could read with a SIMH RSX system, and from there transfer them via TCP/IP to a PC, from whence I can mail them to the guy who needed them. 

  Weeks went by and I finally completed DCN (Diskette CoNvert). DCN will take as input a screen capture of the output of an RT-11 DUMP/TERMINAL command from an RX01 or RX02 diskette, and reassemble it into a DSK file that SIMH can digest. It sounded simple, but was complicated by DEC's interleave and skew of the tracks and sectors, and the fact that DEC doesn't use track 0 on RX01s and RX02s. Anyway, it got done.

  To use DCN, copy DCN.MAC to an RSX system. Assemble and link it.

>MAC DCN=DCN
>TKB
DCN=DCN
/
TASK=...DCN
//

Install it and type DCN
>INS DCN
> DCN
DCN>

or just run it

> RUN DCN
>DCN>

  Obtain a dump file of a diskette on an RT-11 system by screen capturing the output of a DUMP command

.DUMP/TERMINAL DX0:

  Enter a command, with the input file as the dump from the RT-11 system, and the DSK filename as the output spec.

DCN>outfile.dsk=infile.dmp

  .DMP is the default extension for input files, and .DSK is the default for output files, so

DCN>outfile=infile 

would work just as well.

  DCN supports two switches - /DD stands for double density, and indicates that the dump file came from an RX02.

DCN>outfile/DD=infile

or

DCN>oufile=infile/DD

either way, doesn't matter This won't change an RX01 dump into an RX02 dump - it just alerts DCN how to size the sectors and the output file.

  The other switch is /VE - it causes DCN to print the version number and then exit

DCN>/VE
Version V01A02
>. 

  OK I agree, it's damned unlikely anyone else will ever need this program - but, it's a pretty good example of how to write an RSX FCS file IO utility that uses CSI switches, so there should be some value in that...