Johnny Billquist wrote:
Paul Koning
<Paul_Koning at Dell.com> wrote:
Don> The 'even/odd-skew-by-6'
algorithm mentioned in a previous email
Don> is what I found works for XXDP. It is probably the DEC
Don> 'standard' for RX01/02 drivers.
I would assume that is the case. I found it in a RSTS driver, and
the that that two very different systems share a mapping function
suggests it's a DEC standard. (DEC certainly tended to standardize
this sort of thing company-wide.)
Yeah. I can report that RSX do the same skewing/interleaving as well.
And to make the point even clearer to the original poster: this is not
something simh is aware of, or involved in. This is a mapping
algorithm done by the PDP-11 in software (in the driver). So it
definitely applies in this case.
Just to round out the discussion, the identical concept is part of the code
in RT-11, specifically DX.MAC and DY.MAC, which are the RX01
and RX02 device drivers, respectively.
While I never had a reason to look closely at the DXX.SYS device driver,
I did modify the DYX.SYS or RX02 device driver. The interleaving is
primarily required to allow time for the hardware to transfer the silo to
the user buffer and then initiate the next read. Otherwise, it would be
possible to read only one sector per revolution of the floppy media.
However, there is an 18 bit hardware address limitation for the DEC
RX02 drive in addition to other RX02 compatible drives such as the
DSD (Data System Design) models. This means that the DEC version
of the DYX.SYS device driver is able to support user buffers only up
the 1/4 MegaByte of physical memory. Up to V04.00 of RT-11, this
was sufficient. Starting with V05.00 of RT-11, the full 4 MegaBytes of
physical memory was supported by RT-11 and a user buffer in an area
of physical memory beyond 1/4 MegaByte could not use the DEC device
driver for the RX02. On the other hand, DYX.SYS can be modified to
include a bounce buffer which can be used to hold the contents of the
hardware silo for the very short period of time required, although the
speed of the PDP-11/23 is not fast enough to support the bounce buffer
by a simple transfer of the silo to the bounce buffer followed by a copy
of the bounce buffer to the user buffer at an address above 1/4 MegaByte
of physical memory. I found this out when it became obvious (after a
successful test with the PDP-11/73) when the transfer rate slowed by
an unacceptable degree. The simple solution was to initiate the next
read into the silo immediately after the contents of the silo were
transferred
to the bounce buffer and then copy the bounce buffer to the user buffer.
That change in the order allowed the PDP-11/23 to keep up with the
transfer using the standard interleave.
I doubt that anyone uses the RX02 very much under RT-11 on real
hardware, but the code is available if anyone has a user program which
uses extended memory above 1/4 MegaByte and employs the RX02
DYX.SYS device driver. Note that the bounce buffer and the extra
code are both in lower memory since I never used it enough to make it
worth my while to take advantage of extended memory below the 1/4
MegaByte area.
I have not tested the code under either SIMH or E11, but it should
work there just as well.
Just a bit of information about using the RX02 DYX.SYS device
driver under RT-11.
Jerome Fine