RX(4)                  OpenBSD Programmer's Manual (VAX)                 RX(4)

NAME
     rx - DEC RX02 floppy disk interface

SYNOPSIS
     rx* at mscpbus? drive?

DESCRIPTION
     The rx device provides access to a DEC RX02 floppy disk unit with M8256
     interface module (RX211 configuration).  The RX02 uses 8-inch, single-
     sided, soft-sectored floppy disks (with pre-formatted industry-standard
     headers) in either single or double density.

     Floppy disks handled by the RX02 contain 77 tracks, each with 26 sectors
     (for a total of 2,002 sectors).  The sector size is 128 bytes for single
     density, 256 bytes for double density.  Single density disks are compati-
     ble with the RX01 floppy disk unit and with IBM 3740 Series Diskette 1
     systems.

     In addition to normal (`block' and `raw') I/O, the driver supports for-
     matting of disks for either density and the ability to invoke a 2 for 1
     interleaved sector mapping compatible with the DEC operating system
     RT-11.

     The minor device number is interpreted as follows:

           Bit       Description
           0         Sector interleaving  (1 disables interleaving)
           1         Logical sector 1 is on track 1 (0 no, 1 yes)
           2         Not used, reserved
           Other     Drive number

     The two drives in a single RX02 unit are treated as two disks attached to
     a single controller.  Thus, if there are two RX02's on a system, the
     drives on the first RX02 are ``rx0'' and ``rx1'', while the drives on the
     second are ``rx2'' and ``rx3''.

     When the device is opened, the density of the disk currently in the drive
     is automatically determined. If there is no floppy in the device, open
     will fail.

     The interleaving parameters are represented in raw device names by the
     letters `a' through `d'. Thus, unit 0, drive 0 is called by one of the
     following names:

           Mapping          Device name      Starting track
           interleaved      /dev/rrx0a       0
           direct           /dev/rrx0b       0
           interleaved      /dev/rrx0c       1
           direct           /dev/rrx0d       1

     The mapping used on the `c' device is compatible with the DEC operating
     system RT-11. The `b' device accesses the sectors of the disk in strictly
     sequential order.  The `a' device is the most efficient for disk-to-disk
     copying.  This mapping is always used by the block device.

     I/O requests must start on a sector boundary, involve an integral number
     of complete sectors, and not go off the end of the disk.

NOTES
     Even though the storage capacity on a floppy disk is quite small, it is
     possible to make filesystems on double density disks.  For example, the
     command

           % mkfs /dev/rx0 1001 13 1 4096 512 32 0 4

     makes a file system on the double density disk in rx0 with 436 kbytes
     available for file storage.  Using tar(1) gives a more efficient utiliza-
     tion of the available space for file storage.  Single density diskettes
     do not provide sufficient storage capacity to hold file systems.

     A number of ioctl(2) calls apply to the rx devices, and have the form

           #include <vaxuba/rxreg.h>
           ioctl(fildes, code, arg)
           int *arg;

     The applicable codes are:

     RXIOC_FORMAT   Format the diskette. The density to use is specified by
                    the arg argument, zero gives single density while non-zero
                    gives double density.

     RXIOC_GETDENS  Return the density of the diskette (zero or non-zero as
                    above).

     RXIOC_WDDMK    On the next write, include a deleted data address mark in
                    the header of the first sector.

     RXIOC_RDDMK    Return non-zero if the last sector read contained a
                    deleted data address mark in its header, otherwise return
                    0.

FILES
     /dev/rx?
     /dev/rrx?[a-d]

DIAGNOSTICS
     rx%d: hard error, trk %d psec %d cs=%b, db=%b, err=%x, %x, %x, %x.  An
     unrecoverable error was encountered.  The track and physical sector num-
     bers, the device registers and the extended error status are displayed.

     rx%d: state %d (reset).  The driver entered a bogus state.  This should
     not happen.

ERRORS
     The following errors may be returned by the driver:

     [ENODEV]  Drive not ready; usually because no disk is in the drive or the
               drive door is open.

     [ENXIO]   Nonexistent drive (on open); offset is too large or not on a
               sector boundary or byte count is not a multiple of the sector
               size (on read or write); or bad (undefined) ioctl code.

     [EIO]     A physical error other than ``not ready'', probably bad media
               or unknown format.

     [EBUSY]   Drive has been opened for exclusive access.

     [EBADF]   No write access (on format), or wrong density; the latter can
               only happen if the disk is changed without closing the device
               (i.e., calling close(2)).

SEE ALSO
     tar(1), arff(8), mkfs(8), newfs(8), rxformat(8)

HISTORY
     The rx driver appeared in 4.2BSD.

BUGS
     A floppy may not be formatted if the header info on sector 1, track 0 has
     been damaged.  Hence, it is not possible to format completely degaussed
     disks or disks with other formats than the two known by the hardware.

     If the drive subsystem is powered down when the machine is booted, the
     controller won't interrupt.

OpenBSD 2.9                     March 27, 1991                               3
