Man Linux: Main Page and Category List

Name

       fdrawcmd - send raw commands to the floppy disk controller

Note

       This  manpage  has  been automatically generated from fdutils’s texinfo
       documentation.  However, this process is only approximative,  and  some
       items,  such as crossreferences, footnotes and indices are lost in this
       translation  process.   Indeed,  these  items   have   no   appropriate
       representation  in  the  manpage  format.   Moreover,  only  the  items
       specific  to  each  command  have  been  translated,  and  the  general
       information  about  fdutils  has  been  dropped in the manpage version.
       Thus I strongly advise you to use the original texinfo doc.

       *      To generate a printable copy  from  the  texinfo  doc,  run  the
              following commands:

                     ./configure; make dvi; dvips fdutils.dvi

       *      To generate a html copy,  run:

                     ./configure; make html

              A       premade       html       can      be      found      at:
              ‘http://www.tux.org/pub/knaff/fdutils’

       *      To generate an info copy (browsable  using  emacs’  info  mode),
              run:

                     ./configure; make info

       The  texinfo doc looks most pretty when printed or as html.  Indeed, in
       the info version certain examples are difficult  to  read  due  to  the
       quoting conventions used in info.

Description

          fdrawcmd [drive=drive] [rate=rate]
          [length=length] [repeat=repeat]
          [cylinder=physical-cyl] command [parameters ...] [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.

See Also

       Fdutils’ texinfo doc