Imaging RX02 disks for simh (was: Re: MU-BASIC V2 and RT-11 V03B distribution disks.)

Don North north at
Sun Mar 6 16:06:09 CST 2016

On 3/6/2016 8:56 AM, Brian Walenz wrote:
> How the heck do you copy an RX02 disk for use in simh?
> I've been trying to transfer RX02 images between simh and a real PDP11
> (that has only two RX02's, console, and ethernet).  So far, I've only
> attempted sending an RX02 image from the PDP to simh, but simh fails to
> read it: "?DIR-F-Invalid directory".  Even after adding 13*512 bytes to the
> start for the missing track, I still get invalid directory.
> My process is to COPY/DEVICE/FILES DY1:/START:0/END:330 DY0:BLOCK1.DAT,
> then FTP that off the PDP, delete the file, and do the remaining two thirds
> of the disk.  Once all are transferred, "cat *DAT > floppy.dsk".
> I can transfer RX50 images using the same recipe, though I haven't tried
> sending an RX50 image created on simh back to the PDP.
> For what it's worth, I'm having the same problem with Alan Baldwin's TCP/IP
> disk images from  simh can't read the
> individual DSK images, but could read the *.PKG with the disks inside, and
> from that, I could (RT-11) MOUNT each disk to a logical device.
> b

 From the SIMH pdp11 RX driver (pdp11_rx.c) the disk size is computed as follows,
and the byte offset into the file is computed by CALC_DA(trk,sec) given the PHYSICAL
track (0..76) and sector (1..26) addresses used in accessing the controller.

So the SIMH disk image should be 77*26*128 = 256,256 bytes for an RX01 format.
RX02 format is same number of tracks and sectors, but has 256 byte sectors.

So if you image an RX disk using logical operating system 512B blocks there are
494 of them (76*26*128/512 = 494) numbered 0..493. Track 0 is skipped in the
filesystem (block 0 is at track=1 sector=1) for legacy compatibility reasons 
(with IBM).

However, since the SIMH file is in physical track/sector order, if you read the 
disk image
using logical device blocks, you have to know how the driver interleaves logical 
onto physical track/sectors, as you must de-interleave to build the SIMH file.

Or else you must run a program on the PDP-11 side that reads the RX drive as 
tracks and sectors, not using file system access commands.

It's not pretty, but if you think about it enough it is the only way for SIMH to 
simulate the
RX/RY devices and be operating system agnostic.


 From PDP11/pdp11_rx.c:

#define RX_NUMTR        77      /* tracks/disk */
#define RX_NUMSC        26      /* sectors/track */
#define RX_NUMBY        128     /* bytes/sector */
#define RX_SIZE         (RX_NUMTR * RX_NUMSC * RX_NUMBY) /* bytes/disk */

#define CALC_DA(t,s) (((t) * RX_NUMSC) + ((s) - 1)) * RX_NUMBY

More information about the cctech mailing list