GNU Info

Info Node: (fdutils.info)fdrawcmd

(fdutils.info)fdrawcmd


Next: floppycontrol Prev: fdmount Up: Commands
Enter node , (file) or (file)node

fdrawcmd
========

     `fdrawcmd' [`drive='DRIVE] [`rate='RATE]
     [`length='LENGTH] [`repeat='REPEAT]
     [`cylinder='PHYSICAL-CYL] COMMAND [PARAMTERS ...] [MODE]

   `fdrawcmd' is used to send raw commands to the floppy disk
controller, after having selected a given drive. You must have write
permission to the selected drive.

   When writing to a disk, data is read from stdin; when reading, data
is printed to stdout.  Diagnostic messages, return values from the
controller, and the value of the disk change line after the command are
printed to stderr.

Options
-------

   All numbers may be given in octal (0211), decimal (137), or
hexadecimal (0x89).

`drive=DRIVE'
     Selects the drive.  The default is drive 0 (`/dev/fd0').

`rate=RATE'
     Selects the data transfer rate. Use 0 for high density disks, 1 for
     double density 5 1/4 disks (or 2 Mbps tapes, if the appropriate
     rate table is selected), and 2 for double density 3 1/2 disks.

`length=LENGTH'
     Describes the length of the transferred data for commands reading
     from and writing to the disk.  The default is to continue until
     end of file.

`repeat=COUNT'
     Repeat the command COUNT times.  This only works correctly for
     commands which don't do any data transfer.

`cylinder=COUNT'
     Seek to the given cylinder before executing the command

`COMMAND'
     The name of the command to send.  COMMAND may be a spelled out
     name (like `read' or `write'), or a number representing the
     commands floppy disk controller opcode.  A named command has
     already a mode associated with it, whereas for a number the mode
     parameter should be described using the `mode' option.

`PARAMETERS'
     The parameters for the command (optional, not all commands need
     parameters).

`MODE'
     Various flags or'ed together describing the properties of the
     command.

Commands
--------

   The description of the various floppy commands given in this manpage
is very sketchy. For more details get the 82078 spec sheet which can be
found at:
     http://www-techdoc.intel.com/docs/periph/fd_contr/datasheets/

   Look for the chapter `COMMAND SET/DESCRIPTIONS'.  Older FDCs only
support a subset of the commands described therein, but the syntax for
the commands that do exist is the same.

Commands available on all FDCs
..............................

`read DRVSEL CYL HEAD SECT SZCOD SPT RW-GAP SZCOD2'
     Reads LENGTH bytes of data from the disk.  DRVSEL is the drive
     selector. Bit 0 and 1 describe the drive, and bit 2 describes the
     head.  The remaining parameters give the cylinder, head (yes,
     again), sector, size of the sector (128 * 2 ^ SZCOD), sectors per
     track (`spt', this is used to switch to the second head when the
     first side has been read), and size of the read-write gap. SZCOD2
     should be 0xff.  `read' returns ST0 ST1 ST2 and CYL HEAD SECT
     SZCOD of the next sector to be read; see
     `/usr/include/linux/fdreg.h' .

     N.B. Certain newer floppy disk controllers are buggy, and do not
     correctly recognize the end of transfer when operating in virtual
     DMA mode.  For these, you need to set `spt' to the id of the last
     sector to be read (for example, if you intend to read sectors 2,
     3, 4, set `spt' to 4, even if the disk has more sectors), and set
     the `no-mt' flag.

`write DRVSEL CYL HEAD SECT SZCOD SPT RW-GAP SZCOD2'
     Analogous to `read'.

`sense DRVSEL'
     Returns the third status byte (ST3)

`recalibrate DRVSEL'
     Recalibrates the drive and returns ST0 ST1.

`seek DRVSEL CYL'
     Moves the head to CYL and returns ST0 ST1.

`specify DRVSEL SPEC1 SPEC2'
     Specify various parameters to the drive.

`format DRVSEL SZCOD SECT-PER-TRACK FMT-GAP FMT-FILL'
     Formats the cylinder. The new sectors are filled with FMT-FILL.
     The header information comes from the input, which is made up of
     CYL HEAD SECT SZCOD quadruples. The SZCOD parameter from the
     command line is used to describe the actual size of the sectors,
     and the SZCOD from the input is used to write into the header.
     However, the first write to these sectors will use the header
     information, and might overwrite the following sectors if the
     SZCOD parameter from the command line was too small.

`readid DRVSEL'
     reads the first sector header that comes and returns ST0 ST1 ST2
     and CYL HEAD SECT SZCOD  of the encountered header.

Commands available on 82072 and later
.....................................

`dumpregs'
     Prints the contents of the FDCs registers, if supported.

Commands available on 82072A and later
......................................

`configure CONF1 CONF2 CONF3'
     Configures FIFO operation.

Commands available on 82077 and later
.....................................

`version'
     Echoes 0x90 if the FDC is more recent than 82072A, and 0x80
     otherwise

`perpendicular RATE'
     Sets the perpendicular mode.  Use 0 for normal, 2 for 500kb/s
     perpendicular, and 3 for 1 Mb/s perpendicular.

`seek-out DRVSEL N'
     does a relative seek of N cylinders towards cylinder 0.

`seek-in  DRVSEL N'
     does a relative seek of N cylinders away from cylinder 0.

Commands available on 82077AA and later
.......................................

`lock'
     Locks the FIFO configuration, so that it survives a FDC software
     reset.

`unlock'
     Unlock the FIFO configuration

Commands available on 82078
...........................

`partid'
     echoes a byte describing the type of the FDC in the 3 high bits,
     and the stepping in the three low bits.

`powerdown POWERCONF'
     configures automatic power down of the FDC. The old configuration
     is echoed

`option ISO'
     enables/disables ISO formats. Odd values of ISO enable these
     formats, whereas even values disable them. ISO formats don't have
     index headers, and thus allow to fit slightly more data on a disk.

`save'
     prints out 16 internal registers of the FDC.

`restore R1 R2 R3 ... R16'
     restores the 16 internal registers of the FDC.

`format_n_write DRVSEL SZCOD SECT-PER-TRACK FMT-GAP FMT-FILL'
     formats the cylinder and writes initial data to it. The input data
     is made up of a sequence of headers (4 bytes) and data: HEADER1
     DATA1 HEADER2 DATA2 ... HEADERN DATAN

`drivespec DSPEC1 DSPEC2 ... SPECN TERMINATOR'
     chooses rate tables for various drives. Each dspec byte describes
     one drive. Bits 0 and 1 say which drive is described. Bits 2 and 3
     describe the rate table. Only tables 0 and 2 are interesting. Both
     tables only differ in the meaning og rate 1. For table 0 (the
     default) rate 0 is 300 kb/s (used for 5 1/4 DD disks), whereas for
     table 1 it is 2 Mbps (used for fast floppy tape drives). Bit 4 is
     the precompensation table select bit. It should be set to 0. Bit
     5-7 should be zero as well. The TERMINATOR byte ends the
     `drivespec' command. It is either 0xc0 or 0x80. If it is 0xc0, no
     result phase follows; if it is 0x80, the current data rate table
     configuration for the four drives is echoed.

Modes
-----

   The mode option is only needed when you describe the command as a
numerical value. Some mode names are also valid command names. They are
considered as command name if the command name has not yet been given,
and as mode name otherwise.

   If you give a command name followed by explicit modes, both the
implicit flags of the command name, and the explicit modes are or'ed
together.

   If on the other hand you give a command name preceded by explicit
modes, only the explicit modes are or'ed together.

`read'
     Read data from disk using DMA.

`write'
     Write data to the disk.

`intr'
     Wait for an interrupt.

`spin'
     wait for the disk to spin up

`disk'
     Aborts the operation if no disk is in the drive. This only works
     if you also chose a physical cylinder to seek to.

`no-motor'
     Don't switch on the drive motor while issuing the command

`no-motor-after'
     Switch off the motor immediately after the command returns.

`fm'
     Uses the FM version of the `read', `readid', `write' and `format'
     commands.

`no-mt'
     Do not use MT (multitrack) mode for the `read', `readid' and
     `write' commands. This is needed on certain broken FDC's which
     don't recognize end of transfer when running in `nodma' mode. In
     order to use these safely, set `no-mt', and chose the id of the
     last sector to be read as `sect-per-track'.

   `fdrawcmd' opens the device node with the `NDELAY' flag. This means
that the driver should not try to autodetect the disk type (it might
not be formatted), and that it should not reset the FDC. If a reset was
needed, the command simply fails. If that happens, execute
`floppycontrol --resetnow 0' , and try again.


automatically generated by info2www version 1.2.2.9