1 ASCII
The ASCII command is used to display the contents of the current
buffer (plus following blocks, if specified) in ASCII.  Non-printing
characters are shown as periods.  There are 64 characters/line.
Output is aligned on quadword boundaries.

Format:

   A(SCII)  [begin][,count]

      [begin] is the first byte to dump.  It can be in the range of 0-511.

      [count] is the byte count.  If [begin+count] exceeds 512, subsequent
              blocks are dumped until [count] is exceeded.  The user is
              positioned at the final block read.

      If [begin] and [count] are omitted, the current buffer is dumped in
      its entirety.

      If only [begin] is specified, a single byte is displayed.
1 ADD
The ADD command is used to add one or more signed numbers (longwords)
and display the result in decimal and hex.  The numbers can be given
in hex, decimal, or octal.  Decimal output is normally signed unless
the SET NOSIGN command has been given.

Format:

   AD(D)  number1[,number2,...,numbern]

      [number] can optionally have a leading + or - sign and can
               have one of the following formats:

               nnnnnnnnn - Decimal

               0nnnnnnnnnn - Octal

               Hnnnnnnnn - Hex
1 CHANGE
The CHANGE command is used to alter the contents of the current buffer.  (This
does not alter the file unless the WRITE command is used with the changed 
buffer).  If the change-string would overflow the buffer, nothing is changed.

   C(HANGE)  begin,change-string

      [begin] is the first byte to change, in the range 0-511.

      [change-string] can have one of the following formats:

         nnnnn - Unsigned hex string of numbers.  These are placed in
                 the buffer in the order given, right-justified to the
                 nearest byte.  Any number of leading zeroes and up to
                 8 significant digits may be used.
         +nnnn
         -nnnn - Signed decimal.  Can be byte, word, or longword.  Context
                 is determined by the size of the number, including leading    
                 zeroes.  Stored in normal (reversed) format.

         "xxx" - Character string.  Single or double quotes are permitted.
1 CUT
The CUT command copies the current buffer into the paste buffer.  This is
a secondary buffer which can be recopied into the current buffer at any
time via the PASTE command or compared with it via the DIFFERENCES command.

Format:

   CU(T)
1 DIFFERENCES
This command compares all or part of the current buffer with the
corresponding part of the paste buffer.  If differences are found,
the contents of the current buffer are printed (in hex) with the
contents of the paste buffer directly below.  Up to 32 sequential
bytes are displayed per line.  Matching paste buffer bytes on the
second line are displayed as periods.  Output is longword-aligned.

Format:

   D(IFFERENCES)  [begin][,count]

      [begin] is the first byte to compare.  It defaults to 0.

      [count] is the number of bytes to compare.  It defaults to 1.

      If neither parameter is given, both buffers are compared in
      their entirety.  In no case may [begin+count] exceed 512.
1 DATE
The DATE command displays one or more sequential quadwords in the
current buffer in system date format.  Only date values which exist
entirely within the current buffer can be displayed.

Format:

   DA(TE)  begin[,count]

      [begin] is the first byte of the first quadword.  It must be
              specified.

      [count] is the number of quadwords to dump.  It defaults to 1.
1 EXIT
The EXIT command terminates VFE.

Format:

   E(XIT)
1 FILE
This command requests the name of the next file to edit, or displays
the name and block number of the current file.

Format:

   F(ILE)  [?]

If given without the question mark, VFE will respond with:

   File name?

The file name can then be entered.  At this point the previous file is
closed and the new file is opened for edit.  The user is positioned at
virtual block 1 of the new file and its contents are read into the
current buffer.

If a question mark follows the FILE command, the expanded name string of
the file being edited and the current block number will be displayed.
A new file name will not be requested.
1 GET
This command reads a block of the file into the current buffer and
positions the user at that block.  If the block selected is outside
the limits of the current file, the user will be left positioned
at the same block and the current buffer will remain unaffected.

Format:

   G(ET)  block

      [block] is specified in unsigned decimal numeric.
1 HEX
The HEX command is used to display the contents of the current buffer
(plus following blocks, if specified) in hexadecimal.  There are 32
bytes/line.  Display output is aligned on longword boundaries.
Bytes are dumped in the order in which they occur in the file,
from left to right.

Format:

   H(EX)  [begin][,count]

      [begin] is the first byte to dump.  It can be in the range of 0-511.

      [count] is the byte count.  If [begin+count] exceeds 512, subsequent
              blocks are dumped until [count] is exceeded.  The user is
              positioned at the final block read.

      If [begin] and [count] are omitted, the current buffer is dumped in
      its entirety.

      If only [begin] is specified, a single byte is displayed.
1 IBYTE
This command is used to display the contents of the current buffer
(plus following blocks, if specified) in integer byte format.  Values
are signed unless the SET NOSIGN command has been given.  There are 16
bytes/line.  Output is nonaligned (starts at the first address given).

Format:

   I(BYTE)  [begin][,count]

      [begin] is the first byte to dump.  It can be in the range of 0-511.

      [count] is the byte count.  If [begin+count] exceeds 512, subsequent
              blocks are dumped until [count] is exceeded.  The user is
              positioned at the final block read.

      If [begin] and [count] are omitted, the current buffer is dumped in
      its entirety.

      If only [begin] is specified, a single byte is displayed.
1 IWORD
This command is used to display the contents of the current buffer
(plus following blocks, if specified) in integer word format.  Values
are signed unless the SET NOSIGN command has been given.  There are 8
words/line.  Words are displayed in normal (reverse) order - the first
byte of each 2-byte word pair is assumed to be least significant.

Format:

   IW(ORD)  [begin][,count]

      [begin] is the first word to dump.  It can be in the range of 0-511.

      [count] is the word count.  If sufficiently large, subsequent blocks
              are dumped.  Words which span blocks are printed normally.
              The user is positioned at the last block read.

      If [begin] and [count] are omitted, the current buffer is dumped in
      its entirety.

      If only [begin] is specified, a single word is displayed.
1 ILONG
This command is used to display the contents of the current buffer (plus
following blocks, if specified) in integer longword format.  Values are
signed unless the SET NOSIGN command has been given.  There are 4 long-
words/line.  Longwords are displayed in normal (reverse) order - the
first byte of each 4-byte longword is assumed to be least significant.

Format:

   IL(ONG)  [begin][,count]

      [begin] is the first longword to dump.  It can be between 0-511.

      [count] is the longword count.  If sufficiently large, subsequent
              blocks are dumped.  Longwords which span blocks are printed
              normally.  The user is positioned at the last block read.

      If [begin] and [count] are omitted, the current buffer is dumped in
      its entirety.

      If only [begin] is specified, a single longword is displayed.
1 LOCATE
This command is used to find the next occurrence of a target string
or number within the file being edited.

Format:

   L(OCATE)  [target]

      [target] is the target string or number.  If not specified, the
               previous target is used.  The following formats are allowed:

         nnnnn - Unsigned hex string of numbers.  These are searched for
                 in the order given, right-justified to the nearest byte.
                 Any number of leading zeroes and up to 8 significant
                 digits may be used.
         +nnnn
         -nnnn - Signed decimal.  Can be byte, word, or longword.  Context
                 is determined by the size of the number, including leading    
                 zeroes.  Searched for in normal (l.s. to m.s.) format.

         "xxx" - Character string.  Single or double quotes are permitted.
                 String locate operations are case sensitive.
1 LAST
This command positions the user at the highest allocated block of the file.
Due to minimum extent granularity, this may be higher than the last block
currently storing user data.  As a result, its contents may be meaningless -
this should not be taken as a sign of file corruption.

Format:

   LA(ST)
1 NEXT
This command positions the user to a block with a relative offset to the
current block.  Contents of the requested block are read into the current
buffer.

Format:

   N(EXT)  [offset]

      [offset] is a decimal numeric with optional + or - sign.  If omitted,
               the number one (1) is assumed, which will position to the
               block immediately following the current block.
1 PASTE
The PASTE command writes the paste buffer to the current buffer.  File
positioning is not affected, and if a WRITE command is issued before
another block is read from the file, the positioned block within the
file will be overwritten.  Judicious use of the CUT and PASTE commands can
be used to transfer whole blocks within a single file or group of files.
EXTREME CAUTION is advised for users of this command!

Format:

   P(ASTE)
1 RECORD
The RECORD command is used to display one or more records of a sequential
file in ASCII.  Nonprinting characters are printed as periods.  The
file can be either fixed, variable, or VFC formatted.

Format:

   R(ECORD)  begin[,count]

      [begin] for fixed length records is the byte offset within the current
              buffer of the first record to be printed.  For variable/VFC
              records, it is the address of the record length word for that
              record.  Since all records begin on a word boundary, if [begin]
              is odd, it will be rounded up.

      [count] is the count of records to be printed.  If [count] and/or the
              record lengths are sufficiently large, more than one block may
              be displayed.  When processing is completed, the user is 
              positioned at the last block read.  If not specified, [count]
              defaults to one (1).
1 ROTATE
This command exchanges the contents of the current and paste buffers.  It
can be used to examine the contents of the paste buffer, since all display
commands work with the current buffer.  A second ROTATE will restore both
buffers, provided the file position has not changed (which would overwrite
the current buffer).  When used with the WRITE command, ROTATE is as
potentially dangerous as PASTE, so caution is advised!

Format:

   RO(TATE)
1 SET
This command is used to set/clear various modes and indicators.
2 DISPLAY
This command is used to enable or disable local printing at the terminal.
The standard mode is DISPLAY.  If logging is enabled (see SET LOG) and
the SET NODISPLAY command has been given, only command solicitation and
single-line output (such as error messages) is displayed at the terminal.
Other output, such as dumps of many blocks of data, is written only to
the log file.

Format:

   S(ET)  [NO]DISPLAY
2 LOG
This command is used to enable or disable logging of VFE output to a user
file.  All output and input is written to the file.  The log file is
closed when another SET LOG command is given or when VFE terminates.

Formats:

   S(ET)  LOG[=filename]
   S(ET)  NOLOG

      [filename] is any legitimate VAX file descriptor.  Device and
                 directory are optional.  If this parameter is omitted
                 entirely, the file VFE.LOG is created in the current
                 default directory.  A new version is created each time
                 the SET LOG command is used.
2 SIGN
This command is used to enable or disable signed decimal output with
the ADD, IBYTE, IWORD, and ILONG commands.  The default mode is
SET SIGN.

Format:

   S(ET)  [NO]SIGN
1 TOP
This command positions the user at the top of the file (virtual block 1).
The contents of virtual block 1 are read into the current buffer.

Format:

   T(OP)
1 WRITE
This command writes the current buffer to the file block at which the
user is positioned.  The current buffer will always contain the contents
of the positioned block except when the CHANGE, PASTE, or ROTATE commands
have been used and no repositioning has occurred.  See HELP BUFFERS for
more information.

Format:

   W(RITE)
1 buffers
VFE operates with two block-size buffers.

   The CURRENT buffer is filled with the contents of the current block
   whenever a file is initially opened for edit or whenever repositioning
   within the current file occurs.  Commands which always cause positioning
   changes are FILE, GET, LAST, NEXT, and TOP.  Commands which can cause
   positioning changes if multiple blocks are processed are ASCII, HEX,
   IBYTE, IWORD, ILONG, LOCATE, and RECORD.  Contents of the current buffer
   can be modified with the use of the CHANGE, PASTE, or ROTATE commands,
   and these modifications remain until the next position change.

   The PASTE buffer is user-controlled.  It can be altered by the CUT and
   ROTATE commands.  Unlike the current buffer, the paste buffer remains
   unaltered when repositioning occurs or when a new file is edited.  The
   paste buffer has two primary uses:  First, to allow two blocks to be
   compared with the DIFFERENCES command, and second, to permit blocks to
   be transferred within a file or between files.
1 positioning
The following sequences are abbreviated formats of the GET and NEXT
commands.  They are useful for fast block positioning.  Note that a
positioning command will always cause the contents of the positioned
block to be read into the current buffer.

   <CR>       advances one block.  Same as NEXT 1.
   +          advances one block.  Same as NEXT 1.
   -          backs up one block.  Same as NEXT -1.
   [number]   positions to the block specified.  Same as GET [number].
   +[number]  advances [number] blocks.  Same as NEXT [number].
   -[number]  backs up [number] blocks.  Same as NEXT -[number].

      In all cases above, [number] represents a decimal numeric.
