












                                         THE


                                        BEAV




                              Binary Editor And Viewer






                                Manual Copyright 1992
                                    Version 1.40
                                    April 2, 1993



                                         By
                                    Peter Reilley
                                 19 Heritage Circle
                                 Hudson, N.H. 03051
                                  pvr@wiis.wang.com







                      BEAV source and executable can be freely
                      distributed for non-commercial purposes.



                                BEAV User Manual                  2



          1 Introduction                                    3
               1.1  Quick Start                             4
          2.Overview                                        5
               2.1  Terms and Definitions                   5
               2.2  The Screen Format                       5
               2.3  Display Modes                           6
               2.4  Commands                                7
               2.5  Buffers                                 8
               2.6  Files                                   9
               2.7  Key Binding                             9
               2.8  Configuration                           10
               2.9  International Language Support          10
          3.Command Description                             11
               3.1  Help                                    11
               3.2  Cursor Movement                         11
               3.3  Buffer Management                       13
               3.4  File Management                         15
               3.5  Window Management                       16
               3.6  Inserting and deleting                  18
               3.7  Search and Replace Commands             20
               3.8  Exiting BEAV                            21
               3.9  Printing                                22
               3.10 Keyboard Macros                         22
               3.11 Key Binding                             22
               3.12 Special Functions                       24
          4.Alphabetical list of commands by name           27
          5.Alphabetical list of commands by key binding    30
          6.Release notes                                   33
          7.Source Availability                             37



                                BEAV User Manual                  3




          1    Introduction

               BEAV is an editor that brings the features of a powerful
          full screen editor to the editing of binary files.   It is the
          only editor that I know of that does that.

                When you need to edit a non-text file you generally have
          two choices; a text editor or a file zap type editor.   Each
          choice has significant disadvantages.

                Text editors expect the file to be formatted in a certain
          way.   At a minimum they expect that all lines be terminated by a
          carriage return or line feed and be limited in length.   There is
          no line length limit with BEAV.   Most text editors get confused
          by bytes that are outside of the normal range (20 to 7E HEX).
          In BEAV no special characters such as carriage return or line
          feed affect the display aside from producing their numeric value.
          BEAV can edit any file no matter the format.

                The other choice is to use a file zap type editor which can
          edit a binary file without difficulty.  These editors are often
          very limited in their features and capabilities.   Most file zap
          programs can edit a file only in HEX or ASCII.   They generally
          operate on a sector basis and because of this they cannot insert
          or delete data in the middle of the file.

                All these limits are eliminated in BEAV.   You can edit a
          file in HEX, ASCII, EBCDIC, OCTAL, DECIMAL, and BINARY.   You can
          display but not edit data in FLOAT mode.   You can search or
          search and replace in any of these modes.   Data can be displayed
          in BYTE, WORD, or DOUBLE WORD formats.   While displaying WORDS
          or DOUBLE WORDS the data can be displayed in INTEL's or
          MOTOROLA's byte swap format.   Data of any length can be inserted
          at any point in the file.   The source of this data can be the
          keyboard, another buffer, of a file.   Any data that is being
          displayed can be sent to a printer in the displayed format.
          Files that are bigger than memory can be handled.

                Some users may recognize the similarity to the EMACS text
          editor that was written by Richard Stallman at MIT.   This is not
          a coincidence.   I attempted to keep as much of the user
          interface and functionality as possible given the very different
          tasks of EMACS and BEAV.



                                BEAV User Manual                  4




           1.1 Quick Start

               This is a brief description of the minimal set of commands
          that are necessary to start using BEAV effectively.

                The file-visit command, Ctl-X Ctl-V, can be used to read a
          file in for editing.   The file can also be read in from the
          command line; beav <edit_file>.

                These commands can be used to navigate around the window.
                     move-back-char      Ctl-B     moves left
                     move-back-line      Ctl-P     moves up
                     move-forw-char      Ctl-F     moves right
                     move-forw-line      Ctl-N     moves down

                The move-to-byte command, Ctl-X G, will prompt you for a
          byte position to move to.

                These commands will insert a zero byte at the cursor
          position or delete the byte at that position.
                     insert-unit         Ctl-X I
                     delete-forw-unit    Esc D

                The file-save command, Ctl-X Ctl-S, will save the data to
          the file if a change has been made.

                The help command, Esc ?, will display a list of all
          commands and their current key bindings.

                The abort-cmd command, Ctl-G, will abort any command that
          is in operation.

                The quit-no-save command, Ctl-X Ctl-C, will exit BEAV.   If
          there is any data that has not been saved you will be warned.



                                BEAV User Manual                  5


          2.   Overview



           2.1 Terms and Definitions

                Throughout this manual certain terms will be used to
          describe the operation and structure of BEAV.

                The data that BEAV is editing is held in a buffer that is
          structured as a byte stream.   There are many commands that
          affect the way that this byte stream is displayed on to the
          screen.   Whatever display mode is chosen the data in the buffer
          is not effected, only the presentation.

                One such choice is to display the data as bytes, words, or
          double words.   That is; 8 bit values, 16 bit values, or 32 bit
          values.   Whatever choice is made the value of the selected size
          will be displayed.   These values are referred to as units in
          this manual.   Thus the 'delete-forw-unit' command deletes the
          unit under the cursor.   If 32 bit units are being displayed then
          4 bytes will be deleted.

                Many commands in BEAV start by pressing the 'ESCAPE' key.
          When this manual refers to a command that requires that the
          'ESCAPE' key be pressed it will be abbreviated with 'Esc'.
          Another frequently used key stroke to start commands is 'CONTROL
          X'.   This in done by pressing the 'CONTROL' key then pressing
          the 'X' key at the same time.   In this manual this will be
          abbreviated by 'Ctl-X'.   Many commands contain other control
          characters and these will be abbreviates similarly.   Thus the
          'insert-unit' command will be listed as 'Ctl-X I'.   This will be
          entered be pressing the CONTROL key and while holding it hitting
          the 'X' key, release the CONTROL key then hit the 'I' key.



           2.2 The Screen Format
             BEAV presents information to the user in a number of areas.
          The first is the window.   There will be at least one window
          displayed on the screen at all times.   The window consists of
          two areas.   The first is the display area.   This is where the
          data that is in the buffer is displayed.   Most of the time the
          cursor will be in this area, as this is where most editing is
          done.  Each line in the display area will start with a number
          that indicates the offset into the buffer for this line of data.
          At the bottom of the display area for each window is the status
          line.

               The status line presents the user with a number of specific
          pieces of information.   The first is the program name which is
          "BEAV".   Next there are some flags indicating the status of this
          particular buffer.



                                BEAV User Manual                  6


               The first flag indicates if the buffer has been damaged by a
          memory allocation failure.   If there is a '?' then the buffer is
          bad, otherwise there will be a space.   Bad buffers are set to
          read only.

               The next flag indicates if the buffer has been changed and
          will need to be written out if the changes are to be saved.
          This flag is a '*' if the buffer has been changed, otherwise
          there will be a space.

               The next flag indicates insert/overstrike mode; 'I' for
          insert, 'O' for overstrike.  This is only meaningful in ascii or
          ebcdic mode.

               Then the buffer name followed by the file name.   A window
          can be in read only, read/write, or read/write with size lock.
          These  will be displayed as [RO], [RW], or [WL] respectively.
          If auto-update is enabled then [AU] will be displayed.

               Next the cursor position in bytes and the character position
          within the unit.   The next piece of information gives the format
          that the data is being displayed in; HEX, OCTAL, DECIMAL, FLOAT,
          BINARY, ASCII, EBCDIC.   If a data mode is selected then the size
          in bytes (1, 2, 4) is displayed.  If the data is being  displayed
          in Intel mode then the swapped flag is displayed, 'S'.   Lastly
          the byte shift is displayed; 0 only for 8 bit data, 0 or 1 for 16
          bit data, or 0, 1, 2 or 3 for 32 bit data.

               There can be multiple windows on the screen at the same time
          but each window will have a status line at the bottom.

               The very bottom line on the screen is the prompt line.
          This is where you enter data that BEAV requests.   If you want to
          edit a new file you would type 'Ctl-X Ctl-V', BEAV would respond
          with "Visit file:" on the prompt line.   The cursor would be
          positioned after the prompt.   You would then enter the name of
          the file that you wished to edit.

               If you entered the command by mistake, you can abort the
          operation by typing a 'Ctl-G'.   'Control G' is a universal abort
          command and can be used anywhere.   If you want to perform a
          search you will enter the search string on this line.   When you
          have entered the information that BEAV has requested hit 'Return'
          and the cursor will return to it's original position in the
          window display area.   The prompt line is also where error
          messages are displayed.


           2.3 Display Modes

                The data in the buffer can be displayed in a number of
          formats.   First there is the display mode.   This can be either;
          HEXADECIMAL, DECIMAL, OCTAL, BINARY, FLOAT, ASCII, or EBCDIC.



                                BEAV User Manual                  7


                If ASCII or EBCDIC mode is chosen then each byte in the
          buffer will be converted to it's ASCII or EBCDIC character and
          displayed.   Bytes that are outside of the standard character set
          will be displayed as a dot.   Each line will be 64 characters
          long.   The byte value for "carriage return" and "line feed" will
          be displayed as a dot as will any other non-printable characters.

                Within HEXADECIMAL, DECIMAL, OCTAL, or BINARY format the
          data can be displayed in 8, 16 or 32 bit values.   If 16 or 32 it
          values are displayed the user can choose to view these values in
          either the Intel format or the Motorola format.   If Intel format
          is chosen then the first byte in each unit is the least
          significant byte when the value is calculated.   Thus in hex 32
          bit mode a byte string of "32 7A 9F 10" would be displayed as
          "109F7A32".   If Motorola format is chosen this value would be
          displayed as "327A9F10".

                The FLOAT mode displays the data in floating point
          representation.   This is somewhat machine dependent so a given
          hex number may produce different floating point numbers on
          different machines.   Generally, not all combinations of bits are
          legal floating point numbers.   The display representation will
          depend on how printf was implemented.   It is conceivable that
          BEAV will crash if the printf function is not robust.

                There is another display format choice that affects the 16,
          32 or 64 bit formats.   This is called shift.   The shift can be
          0 or 1 for 16 bit modes, 0, 1, 2, or 3 for 32 bit modes, or
          between 0 - 7 for floating point mode.   Shift moves the zero
          point reference for the buffer up by the selected value.   The
          default is zero shift.   If a buffer is displaying the following
          32 bit hex data;

                     "12345678 2F4792AF 673DFEA1 88551199"

          with the shift at 0.   Changing shift to 1 will produce;

                     "3456782F 4792AF67 3DFEA188 55119955"

          The data has been slid down toward the beginning of the buffer by
          one byte.   This has not changed the data in the buffer at all,
          it has only affected the way that the data is presented on the
          screen.   This is useful when looking at WORD or DOUBLE WORD data
          that is not aligned on two or four byte boundaries.

                When BEAV is first started or a new window is opened the
          default format is HEXADECIMAL BYTES.



           2.4 Commands



                                BEAV User Manual                  8


                Commands are the means that the user controls the operation
          of BEAV.   A command can be given by using one of two methods.
          The first is to use the key binding.

               A command can have one or more associated key bindings.   It
          can also have no key binding.   There are a set of default key
          bindings that BEAV comes configured with.   The current set of
          key bindings can be seen by using the 'help' command.   The
          'help' command is 'Esc ?' or Function Key 1 'F1' on the IBM PC.
          The help buffer can be scrolled by using the up and down arrow
          keys.   A printed copy may be obtained by going to the bottom of
          the help buffer using the 'move-to-end' command ('Esc >' or the
          'End' key).   Then issue the 'print-mark-to-cursor' command ('Esc
          P' or 'Ctl-Print') and enter 'PRN' or a file name when prompted
          with "Print to:".   This will output the entire help buffer to a
          printer connected to the parallel interface or the specified
          file.

               The second method of issuing a command is to use the
          'extended-command' command (Esc X).   You are prompted for a
          command name that you want to execute.   This method is useful
          for executing commands that have no key binding.   Commands that
          can take a long time to complete can be stopped by pressing Ctl-
          G.



           2.5 Buffers

                Buffers are the in memory storage for all data editing and
          viewing.   Each buffer has a name that appears in the mode line.
          Buffers generally have a file name that is associated with them.
          The file name also appears in the mode line.   The buffer name
          and the file name are independent but the buffer name defaults to
          the file name.

                The buffer name is used to refer to a specific buffer.
          The 'change-buffer' ('Ctl-X B') command will prompt you for a
          buffer name.   After you enter a buffer name that buffer will be
          displayed in the current window.   If there is no such buffer,
          one will be created and displayed (it will be empty).

                When BEAV is run with a file name as a command line
          parameter, the file is read into a new buffer.  The buffer name
          will be made the same as the file name.   The file name is only
          used when the buffer is saved.   If the file name is changed
          using the 'buffer-set-file-name' ('Ctl-X Ctl-F') command then
          when the buffer is saved it will be saved to the new file.

                Buffers are dynamically allocated.   They grow or shrink as
          the size of the data they contain changes.   The buffer size can
          be frozen using the 'buffer-size-lock' ('Ctl-X Ctl-L') command.
          This prevents inserting or deleting data from the buffer but data
          can be modified.



                                BEAV User Manual                  9



                Buffers continue to exist even if they are not being
          displayed.   Buffers are saved in a linked list that can be
          stepped through using the 'change-to-next-buffer' ('Esc +') or
          'change-to-prev-buffer' ('Esc -') commands.   If the 'change-to-
          next-buffer' command is given then the next buffer in the list is
          displayed in the current window.



           2.6 Files

                Files are the means of storing data on disk.   Files or
          segments of files can be loaded into BEAV for editing or viewing.
          The file on the disk has not been changed until BEAV does a save
          to that file.   When a save to a file is performed the original
          file contents in saved in a ".bak" file.



           2.7 Key Binding

                All commands in BEAV have a command name and a default key
          binding.   The bindings may be changed to suit personal
          preference by using the 'bind-to-key' ('Esc K') command.   The
          current binding of a key sequence can be displayed by using the
          'binding-for-key' ('Ctl-X ?') command.

                Key bindings can be loaded automatically from a file named
          ".beavrc" under UNIX or "beavrc" under MSDOS.   I will refer to
          this file as the beavrc file in this document.   This file must
          be in a directory specified by the PATH environment variable.
          When BEAV is started this file is read and the bindings are
          loaded.   This file is a simple text file and can be edited to
          make changes.

                The beavrc file contains three columns.   The first is the
          function name to be bound or "extended-command" for commands to
          be executed.

                For functions to be bound, the second column is the key
          sequence that is bound to that function.   The third is a number
          that defines the key code.   The second column is not actually
          used, but is for informational purposes only.

                For commands to be executed, the second column is the
          command name.   The third column is optional and is the number to
          be passed to that command.   For example; to set the number of
          screen rows to 10 hex (16 decimal); the first column would
          contain "extended-command", the second column would contain
          "screen-rows", and the third would contain "10" to set 16 decimal
          screen rows.



                                BEAV User Manual                  10


                The simplest way to create a valid beavrc file is to first
          bind the key codes to the desired functions using the 'bind-to-
          key' command (Esc K).   Next display the current bindings in a
          window using the 'help' command (Esc ?).   Then save that buffer
          to a file with the 'file-write' command (Ctl-X Ctl-W).   You will
          be prompted for a file name.   The file written is a valid beavrc
          file.   You may want to edit the beavrc file to remove the
          commented lines, ie, those beginning with #, to make it load
          faster.

                On UNIX systems there can be multiple .beavrc files, one
          for each terminal type.   This is accomplished by appending the
          TERM variable to .beavrc.   Thus if you use both a vt100 and a
          wyse60 terminal, you could have a .beavrc.wy60 and a
          .beavrc.vt100 bindings file.   When your TERM variable is
          TERM=wy60 then the .beavrc.wy60 bindings file will be used.   If
          there is no .beavrc.wy60 file then the .beavrc file will be used.



           2.8 Configuration

                When the MSDOS version of BEAV runs it detects whether the
          system is an IBM PC or a clone.   If a PC is detected then a set
          of key bindings that use the 10 function keys and the relevant
          keypad keys are loaded.   If the system is not recognized then
          only the standard bindings are loaded.

                If a PC is detected the screen is managed by making BIOS
          level calls that enhance performance.   Otherwise, the screen is
          controlled by making ANSI compatible calls to the operating
          system.   This is much slower but is not sensitive to hardware
          configuration.   This requires that non-standard MSDOS systems
          support ANSI display controls.   The following ANSI escape
          sequences are used;

                Position cursor          ESC [ <row> ; <column> H

                Erase to end of line     ESC [ 0 K

                Erase to end of page     ESC [ 0 J

                Normal video             ESC [ 0 m

                Reverse video            ESC [ 7 m

                On unix systems the termcap library is used.   This
          requires that the TERM environment variable be set correctly.


           2.9 International Language Support

                The text strings in BEAV that are language dependent are
          contained in a seperate file.   The text file for the English



                                BEAV User Manual                  11


          language is names "english.c".   Other language files might be
          named "french.c" or "spanish.c".   To change the language of
          BEAV, rename the desired language file to "language.c".   This is
          the file that will be compiled and linked into BEAV.



          3.   Command Description

                This section describes all BEAV commands as to their
          function and any side effects that they may have.   The first
          line of each description of a command will begin with the default
          key binding then the command name and follows with the key
          binding for a PC.



           3.1 Help

                This command returns information that will aid in the use
          of BEAV.

                Esc ?          help                     F1

                A new window is opened by splitting the current window then
          all current key bindings are displayed.   This buffer is larger
          than can be shown at one time and must be scrolled up and down to
          see all entries.    All commands that do not alter data can be
          used to move around and search the help buffer.   To leave the
          help buffer use the 'window-delete' command ('Ctl-X 0').

                Lines that begin with the comment character (#) are
          commands that have the default bindings.   Lines without the
          comment character have been bound by the user or by processing a
          beavrc file.   The comment character helps in creating a beavrc
          file by identifying only those bindings that have changed.



           3.2 Cursor Movement

                There are a number of commands that move the cursor around
          the current window.   If the cursor bumps the top or the bottom
          of the window the position of the window will be adjusted so as
          to keep the cursor within the bounds.   When the window is moved
          in response to cursor movements it is moved by about one third of
          the window size.   This improves performance by reducing the
          number of window moves.

                Ctl-P     move-back-line      North (up arrow)
                Ctl-N     move-forw-line      South (down arrow)

                These commands move the cursor up one line or down one
          line.   If the cursor is on the top line in the buffer and a



                                BEAV User Manual                  12


          'move-back-line' command is given the cursor will jump to the
          beginning of the first unit in the buffer.   If the cursor is on
          the last line of the buffer and a 'move-forw-line' is given the
          cursor will move to the last unit in the buffer.

                Ctl-F     move-forw-char     East (right arrow)
                Ctl-B     Move-back-char     West (left arrow)

                These commands move the cursor forward or backward in the
          current line.   If the cursor is at the first character in the
          first unit of the line and the 'move-back-char' command is given
          then the cursor will wrap to the last character of the previous
          line.   If the cursor is at the last character of the last unit
          in the current line then it will wrap to the first character of
          the next line.

                Esc F          move-forw-unit     Ctl-East
                Esc B          move-back-unit     Ctl-West

                These commands are similar to the above set but they move
          the cursor by units rather than characters.   The command 'move-
          forw-unit' will position the cursor to the first character of the
          next unit.   The command 'move-back-unit' will move the cursor to
          the first character of the previous unit.

                Ctl-V          move-forw-page     PageUp
                Esc V          move-back-page     PageDown

                These commands move the move the data in the window by the
          number of lines in the window less one.   The cursor will stay in
          the same position relative to the window as the data is moved.

                Esc <          move-to-beginning  Home
                Esc >          move-to-end        End

                Move the cursor to the beginning or the end of the buffer.

                Ctl-X G        move-to-byte       F9

                Prompt for a byte offset, then go to that position in the
          current buffer.

                Ctl-X Ctl-N    move-window-down   Ctl-Z
                Ctl-X Ctl-P    move-window-up     Esc Z

                Move the buffer in the window up or down by one line.
          This does not effect the cursor until it hits the top or bottom
          of the window.

                Esc .          mark-set           F2

                Set the mark position to the current cursor position.   The
          mark position is remembered even for nonactive windows and
          buffers.



                                BEAV User Manual                  13



                Ctl-X Ctl-X    swap-cursor-and-mark

                The position of the cursor and the position of the mark are
          swapped.

                Esc L          window-link

                This command causes all windows that are displaying the
          contents of the current buffer to have the same cursor position.
          Thus if one window is scrolled then all other windows that
          display that buffer are scrolled so as to keep the cursor in the
          window.

                Ctl-X =        show-position

                The current position of the cursor and the mark are
          displayed.   The buffer size, file size and file name are also
          shown.



           3.3 Buffer Management

                Buffers store all data that is being edited.   The only
          limit to the number of buffers is the size of available memory.
          If a file is loaded into a buffer and there is insufficient
          memory to hold the entire file, then it will be loaded until
          memory is exhausted.   The buffer will then be set to read only
          mode.

                Ctl-X Ctl-B    buffers-display    Ctl-F1

                A new window is opened and a list of all buffers in BEAV is
          displayed.   The list contains the buffer name, the file name (if
          it exists), the buffer size, and a state flag.   If the list is
          too large for the window, you can scroll the list.   If you
          position the cursor on a line describing a buffer and give the
          set-mark (Esc .) command you will be prompted to; Go to, Kill, or
          Save that buffer.

                Ctl-X B        change-buffer      Ctl-F2

                This command prompts you for a buffer name.   If you enter
          the name of an existing buffer, that buffer will be displayed in
          the current window.   If the name does not match an existing
          buffer, a new buffer will be created and displayed.   This buffer
          will be empty and will have no file name.

                Esc +          change-to-next-buffer    Ctl-F4
                Esc -          change-to-prev-buffer    Ctl-F5



                                BEAV User Manual                  14


                The next or the previous buffer in the buffer list is
          displayed in the current window.   This does not effect buffers
          that are displayed in other windows.

                Esc G          move-to-buffer-split

                Prompt for a buffer name.   Then split the current window
          and display that buffer, creating it if necessary.

                Esc Ctl-N      buffer-set-name    Esc Ctl-N

                The current buffer name is changed to the name that you
          enter.   This does not effect the file name.

                Ctl-X Ctl-F    buffer-set-file-name     Ctl-F7

                The file name of the current buffer is changed to the name
          that you enter.   This does not affect the buffer name.

                Ctl-X K        kill-buffer        Ctl-F3

                This command prompts you for a buffer name.   This buffer
          is then deleted.   If the buffer is currently being displayed you
          are prompted for conformation.   If the buffer has been changed
          you are again prompted for conformation.

                Ctl-X Ctl-L    buffer-size-lock

                The buffer size is prevented from being changed.   Data can
          be edited but only by changing the existing data.   If a buffer
          is copied into a size-locked buffer the operation well be
          successful but will overwrite existing data.   This command
          toggles between locked and unlocked.

                Esc Y          yank-buffer        Ctl-F6

                Data from one buffer is inserted into the current buffer at
          the cursor position.   You are prompted for the name of the
          buffer to copy from.

                Esc O          save-mark-to-cursor

                Prompt for a buffer name.   Create a new buffer with that
          name and write the data from the mark to the cursor into that
          buffer.

                Esc Ctl-W      show-save-buf

                Displays the contents of the save buffer in a new window.
          The save buffer cannot be edited.   This command can be used to
          see the data that the yank (Ctl-Y) command will insert into the
          current buffer.



                                BEAV User Manual                  15


           3.4 File Management

                These commands control BEAV's access to files.   Files are
          loaded into buffers or are written from buffers.   Commands that
          prompt for a file name also accept range parameters.   Range
          parameters are always given in the numeric base of the current
          window.   Thus if you are displaying data in decimal format then
          the range parameters must be entered in decimal.

                The size of a file read or write can be limited by
          specifying a range.   The range parameter specifies the offset
          into the file, not the buffer.   Range parameters can be
          specified in these forms;

                <file name> <start address>

                <file name> <start address> <end address>

                <file name> <start address> +<length>

                The first form causes the read or write to begin from the
          <start address> value until the end of the buffer on write or the
          end of the file on read.

                The second form reads or writes from <start address> until
          <end address> non-inclusive.

                The third form reads or writes from <start address> for
          <length> bytes.

                Thus, if the command 'file-read' is given and you enter at
          the prompt;   main.obj 1000 +100.   If the current display mode
          is hex, the file "main.obj" will be read from hex byte address
          1000 to 10FF into the buffer.

                Ctl-X Ctl-R    file-read          Sh-F2

                Prompt for a file name and read that file into the current
          buffer.   This overwrites the current contents of the buffer.
          The buffer name is not changed but the buffer file name is set to
          the new file name.

                Ctl-X Ctl-S    file-save          Sh-F3

                Write the current buffer out to the file if it has been
          changed.   If the buffer has not been changed then do nothing.

                Ctl-X V        file-view

                Prompt for a file name and read file into a new buffer and
          display in current window.   Set to read-only mode.

                Ctl-X Ctl-V    file-visit         Sh-F4



                                BEAV User Manual                  16


                Prompt for a file name.   If the buffer already exists then
          display it in the current window.   Otherwise, read file into a
          new buffer and display in current window.   If there is no such
          file then create it.

                Esc U          file-visit-split

                Same as above but split current window and display new
          buffer.   This displays the new buffer as well as the old buffer.

                Ctl-X Ctl-W    file-write         Sh-F5

                Prompt for a file name, then write the current buffer to
          that file.

                Ctl-X Tab      insert-file        Sh-F8

                Prompt for a file name and insert that file into the
          current buffer at the cursor position.

                Ctl-X Return   save-all-buffers   Sh-F6

                Write all buffers that have been changed to their
          respective files.



           3.5 Window Management

                BEAV presents information to the user in one or more
          windows.   Each window is a view into a buffer where the data is
          actually stored.   The window controls how this data is formatted
          for display to the user.   Data can be displayed as HEX bytes,
          OCTAL bytes, ASCII characters, plus many others.   The display
          format is associated with the window.   Thus if a new buffer is
          displayed in the current window that new data will be displayed
          in the current windows format.

                The only limit to the number of windows is the screen size.
          A window can be no smaller than two lines.   This along with the
          mode line associated with each window limits to eight the number
          of windows on an IBM PC 25 line screen.

                Any window can view any buffer including having many
          windows on the same buffer.   For example, two windows can
          display the same buffer but present the data in two different
          modes.   One window could display HEX bytes and the other could
          display ASCII characters.

                Ctl-P       change-window-back    Ctl-PageUp
                Ctl-N       change-window-forw    Ctl-PageDown

                These commands move the cursor to the next or previous
          window on the screen, making it the current window.



                                BEAV User Manual                  17



                Ctl-X Z        window-enlarge
                Ctl-X Ctl-Z    window-shrink

                Enlarge or shrink the current window size by one line.

                Esc !          window-reposition

                Move window position so that the cursor is centered in the
          window.   The cursor position in the buffer does not change.

                Ctl-X 2        window-split

                Split the current window into equal parts.   Both halves
          have the same display mode and view the save buffer.

                Ctl-X 1        window-single

                Expand the current window to fill the entire display, all
          other windows are removed.   Make the current window the only
          window displayed.   This has no effect on the underlying buffers
          except that they may not be displayed any more.

                Ctl-X 0        window-delete

                Delete the current window and expand the upper window to
          fill the space.   This has no effect on the underlying buffer
          except that it may not be displayed any more.

                Esc Ctl-A      display-ascii
                Esc Ctl-E      display-ebcdic
                Esc Ctl-F      display-float
                Esc Ctl-H      display-hex
                Esc Ctl-O      display-octal
                Esc Ctl-D      display-decimal
                Esc Ctl-B      display-binary

                These commands set the window display mode.   Text buffers
          can be displayed as ASCII or EBCDIC characters.   Buffers that
          are not human readable can also be displayed in hexadecimal,
          octal, decimal, float, or binary format.

                Esc 1          display-bytes
                Esc 2          display-words
                Esc 4          display-double-words

                As a further option on the non-text display modes, data can
          be displayed as 8, 16, or 32 bit values.   Floating point numbers
          are assumed to be 64 bit values.

                Ctl-E          display-swap-order

                When data is displayed as words or double words the order
          of significance can be changed.   In Intel microprocessors the



                                BEAV User Manual                  18


          least significant byte of a word is stored at the lowest address.
          Thus if the word 5892 (HEX) were stored at memory address 10,
          then 92 (HEX) would be stored at address 10 and 58 (HEX) would be
          stored at address 11.   In Motorola microprocessors the reverse
          is true.
                This command toggles between the Intel and Motorola schemes
          of assembling bytes into words and double words.   This command
          has no effect on byte display or on the text display modes.   The
          data in the buffer is not changed.

                Ctl-A          display-byte-shift

                This command changes the offset from the beginning of the
          buffer used to assemble words and double words.   The default
          shift is 0.   For example, a double word at address 10 is made up
          of the bytes at address 10, 11, 12, and 13.   With a shift of 1
          that double word would be made of bytes 11, 12, 13, and 14.
          With a shift of 2 then bytes 12, 13, 14, and 15 would be used.
          The maximum shift in word display mode is one and the maximum
          shift in double word mode is three.

                The buffer is in effect shifted toward the beginning of the
          buffer with 1, 2, or up to 7 bytes becoming not visible.   These
          bytes are not lost, they become visible when the shift is set to
          zero.   This command cycles through all possible shift values.
          There is no effect in any byte display mode or any text display
          mode.



           3.6 Inserting and deleting

                These commands are the core of BEAV.   These commands allow
          the buffer to be edited in a similar fashion to a text editor.
          BEAV has an insert mode much the same as text editors but it only
          works when displaying data in one of the text modes, either ASCII
          or EBCDIC.   In other modes it doesn't make any sense to insert
          characters as they are typed when there is more than one
          characters per unit.   In the data modes there is a command that
          inserts a unit of zeros into the buffer.   Similarly the delete
          commands always delete a unit rather than a character.   In a
          text mode the delete commands work as in a text editor because a
          unit is a character.

                Ctl-X I        insert-unit

                Insert a zero at the cursor position.   The rest of the
          data moves down one place.   Thus, if double words are being
          displayed, four bytes are inserted before the cursor position.
          These bytes are initialized to zero.   This command works in all
          display modes.

                Ctl-X Ctl-A    insert-toggle      Insert



                                BEAV User Manual                  19


                In either of the two text modes this command toggles
          between insert mode and overwrite mode.    In insert mode each
          character that is typed is inserted in front of the cursor and
          the rest of the buffer is moved down.   In overwrite mode the
          typed characters replace the character that is at the cursor.
          This command has no effect in a non-text display mode.

                Ctl-Q          insert-literally   Esc Q

                This command sets a special temporary mode where the next
          typed character is inserted in the buffer no matter what the
          character is.   This allows control codes to be inserted in the
          buffer when in a text display mode.   Alternatively the same byte
          could be inserted into the buffer by using one of the data
          display modes.   It night be faster to use this command on some
          occasions.

                Ctl-T          unit-twiddle

                The unit at the cursor is swapped with the previous unit.

                Rubout         delete-back-char   Backspace

                This command deletes the character before the cursor and
          pulls the rest of the buffer back.   The cursor remains on the
          same character as it moves back.   It only works in the text and
          byte display modes.

                Ctl-D          delete-forw-char   Delete

                The character at the cursor is deleted and the buffer is
          pulled back.   The cursor remains at the same position.   It only
          works in the text and byte display modes.

                Esc Rubout     delete-back-unit   Esc Ctl-K

                This command deletes the unit before the cursor and pulls
          the rest of the buffer back.   The cursor remains on the same
          unit as it moves back.

                Esc D          delete-forw-unit

                The unit at the cursor is deleted and the buffer is pulled
          back.   The cursor remains at the same position.

                Esc W          copy-mark-to-cursor      F7

                The area in the buffer from the mark to the current cursor
          position is copied into the kill buffer.   If the mark is not set
          before this command is given an error is reported.

                Ctl-W          delete-mark-to-cursor    F8



                                BEAV User Manual                  20


                The area in the buffer from the mark to the current cursor
          position is deleted and placed into the kill buffer.   If the
          mark is not set before this command is given an error is
          reported.

                Ctl-Y          yank               F6

                The contents of the kill buffer is inserted into the buffer
          at the cursor position.   The kill buffer itself is not changed.


           3.7 Search and Replace Commands

                BEAV has very powerful search and replace commands.   The
          search and replace string can be entered in any of the display
          modes.   The search and replace strings can each be up to 256
          bytes long.   The display mode can be changed at any time while
          entering the string.   Wild cards can be placed down to the bit
          level on both the search and replace strings.   The wild card
          character, '?', will match any value that it is compared with.

                When a wild card is placed in the replace string it leaves
          the destination data unchanged at that position.   Thus, if the
          destination contains the ASCII string '41 42 43 44' and the
          replace string contains '66 67 ?? 69' the result would be '66 67
          43 69'.

                Wild cards can be placed in any position that makes sense.
          If you want to use wild cards in an ASCII string then you must
          switch to another mode to enter them.   You can then switch back
          to ASCII mode.   In this case a '?' will appear in the position
          where the wild card has been placed but it appears exactly the
          same as a standard question mark.   In fact if you type a '?'
          over the wild card there will be no apparent change.   However,
          the character will no longer be a wild card but a standard
          question mark.   To see the true wild cards you must use a data
          display mode.   In fact if the wild card has been set on the bit
          level then you must go to binary display mode to see its actual
          position.

                The commands to change the display mode in search and
          replace are the same as for the window display mode.   The search
          and replace strings can be scrolled back an forth and the cursor
          moved using the same commands as for the window.   While
          performing a replace command you can switch between the search
          string and replace string by using the 'move-back-page' or 'move-
          forw-page' commands.

                Esc S          search-forw        F3

                Prompts for a search string then searches from the current
          cursor position for the first match.   The cursor is positioned
          at the first unit of the match.



                                BEAV User Manual                  21


                Esc R          search-back

                This command is the same as the previous one except that it
          searches backward.

                Esc T          search-again       F4

                This command repeats the previous search command, forward
          or backward.   The cursor is first moved one byte in the
          appropriate direction before the search is repeated.

                Esc %          replace            F5

                Prompt for search string.   After entering the search
          string hit return and you will be prompted for the replace
          string.   After entering the replace string hit return.   BEAV
          will then search for the first match with the search string.   If
          a match is found you will be prompted with '(R)eplace, (S)kip,
          (A)ll, (O)ne, (Q)uit'

                If you type a 'R' the replace will be done at this location
          and the search will continue.   If you type a 'S' the replace
          will not be done and search will continue.   If you type an 'A'
          the replace will be done and will be done at all future matches
          without pausing for conformation.   If you type an 'O' the
          replace will be done at this location and the search will stop.
          If you type a 'Q' then the search will be terminated.

                Ctl-R          recall-srch-string

                If you enter search or replace previously used strings can
          be recalled with this command.



           3.8 Exiting BEAV

                While using BEAV individual buffers may be saved to disk
          during the editing session.   When quitting BEAV you must save
          all buffers or delete all buffers.   There are two commands that
          do this.

                Ctl-C          quit-no-save       Sh-F10

                If there are any unsaved buffers you will be prompted for
          conformation before proceeding.   All buffers will be deleted
          then you will return to DOS.

                Ctl-X Ctl-E    quit-save-all      Sh-F9

                All buffers are saved before exiting to DOS.



                                BEAV User Manual                  22


           3.9 Printing

                The data that is being displayed in BEAV can be printed or
          sent to a file in the same format as displayed.   If the current
          window is displaying octal words and a print command is given the
          format of the print will be in the format of the window; that is,
          octal words.

                Esc P          print-mark-to-cursor     Ctl-Print

                To use this command you must set the mark and the cursor to
          define the region that you want printed.   If the mark is not set
          it as assumed to be at the first unit.   After you enter the
          command you will be prompted with 'Print to:'.   You can enter a
          file name or a device name to send the print image to.   If you
          enter 'PRN' most systems will print a hard copy.

                This is useful for getting a print out of the current key
          bindings.   To do this give the 'help' command 'F1'.   Go to the
          bottom of the help window using the 'move-to-end' command 'End',
          the mark will be assumed to be at the beginning of the buffer.
          Issue the 'print-mark-to-cursor' command.   Enter 'PRN' at the
          prompt.   This should print the complete help buffer and will
          reflect any changes that you have made to the key bindings.



           3.10     Keyboard Macros

                BEAV has the capability of recording key strokes as they
          are entered and playing them back later.   This is useful for
          repeating multi-keystroke operations.

                Ctl-X (        macro-start

                Start recording key strokes.   There is no effect on the
          operation of the key strokes.   Any previous recorded key strokes
          are cleared.

                Ctl-X )        macro-end

                Stop recording key strokes.   The key strokes are available
          for play back.

                Ctl-X E        macro-execute

                Play back the recorded key strokes.   The key strokes that
          were recorded are played back as if they were typed at the
          keyboard.



           3.11     Key Binding



                                BEAV User Manual                  23


                BEAV provides a user configurable interface.   The
          interface is controlled by a set of key bindings.   This relates
          the command that will be executed when a particular key stroke is
          entered.   There are a set of default key bindings as described
          in this manual.   These can be changed to reflect your
          preferences.   When a change is made it is reflected in the help
          screen.

                Ctl-X ?        binding-for-key    Sh-F1

                This command will tell you what function a certain key
          sequence is bound to.   When this command is given you will be
          prompted for a key stroke or key stroke sequence.   BEAV will
          report back with the function name.

                Esc K          bind-to-key

                First you will prompted for a function name.   Enter the
          name of the function that you wish to create a new binding for.
          Function names are the names listed in this manual that are of
          the form of 'move-forw-unit' or 'display-hex'.   After you enter
          the name hit return.   You will be prompted for a key.   This can
          be in the form of a single standard key such as 'Z'.   Standard
          key sequences can be entered such as 'Ctl-X Z'
          or 'Esc Z'.   Special keys can be entered such as 'F1' (function
          key 1) or 'Page Down'.   It is probably a good idea to not use
          keys that are needed for editing.   If you bound 'Z' to a
          function then you would not be able to enter it as a keystroke
          when using ASCII display mode.   You could still enter it using
          the 'insert-literally' command or doing it in one of the data
          display modes but this would be more cumbersome.

                Ctl-X L        bindings-load

                You are prompted for a file name that contains the key
          binding that you wish to set.   This file is read in and the
          appropriate bindings are set.   The text in the binding file
          should be of the form;

          <key name>           <function name>    <key code>

                For example;

          Ctl-X Ctl-P          move-back-char     0550
          F1                   move-forw-char     04bb
          Ctl-A                move-forw-unit     0141
          Esc Ctl-T            move-back-unit     0354

                The easiest way of producing a valid key binding file is to
          set the desired bindings in BEAV.   Next issue the 'help' command
          (ESC ?), then write the buffer out with the file-write command
          (Ctl-X Ctl-W).   The file created will be a valid format for
          loading and can be edited as desired.   It is the only reliable
          way to get the <key code> number.



                                BEAV User Manual                  24





           3.12     Special Functions

                These are the commands that do not logically fit under one
          of the previous headings

                Ctl-G          abort-cmd          F10

                This command aborts the current command.   It can even
          abort a partially entered command.   Thus, if you have typed an
          'Esc' as that start of a command you can type Ctl-G to return to
          the normal command entry mode.

                Esc A          auto-save

                BEAV can be set to automatically save the current buffer
          after a specified number of buffer editing commands are given.
          This command first prompts for the number of operations before
          the save is made.   If a zero is entered at the prompt, this
          feature is disabled.   The default condition of this command is
          disabled.

                Esc C          compare

                This is a powerful feature of BEAV.   The contents of two
          windows are compared byte for byte from the current cursor
          position in each window.   There must be exactly two windows to
          use this command.   These windows can be displaying the same or
          different buffers.   When a difference is found the cursor in
          each window is moved to that position and both windows are moved
          accordingly.   The display mode does not affect the operation of
          this command except in restricting the cursor position to whole
          units.

                Esc X          extended-command

                If any command looses its binding, this command allows the
          unbound command to be used.   A command can loose its binding
          because the binding was assigned to another command.   When this
          command is given you will be prompted for a command name.   Enter
          the command name that you wish to execute, it will be executed as
          if you had typed its key binding.

                Esc Ctl-P      n-way-combine

                The contents of other windows can be copied sequentially
          into the current window.   This is useful in combining odd-even
          proms into an executable image file.   To use this command create
          an empty window with a buffer file name of an empty or
          nonexistent file.   Read into additional windows the files that
          you want to combine.   While in the empty target window, issue
          the n-way-combine command.   The data in the other windows will



                                BEAV User Manual                  25


          be read into the current window.   The next window lower on the
          screen will be read first, then the one below that, etc.

                For example; if you had two files, promlow.bin and
          promhi.bin that you wanted to combine into a file called
          prom.bin.   First issue the file-visit command (Ctl-X Ctl-V),
          enter prom.bin at the prompt.   This file should be empty of non-
          existent.   Next read promlow.bin into a new window with the
          file-visit-split command (Esc U), enter promlow.bin at the
          prompt.   Open another window for promhi.bin with the same
          command.   Go to the window containing prom.bin (empty).   Issue
          the n-way-combine command.   BEAV will copy the first byte from
          the window immediately below the prom.bin window and deposit it
          in the destination window buffer as well as advance the dot
          position in both windows.   It will advance to the next lower
          window and copy a byte from there into the destination window and
          advance the dot in both windows.   This process will continue
          until one of the source buffers is exhausted, or the user
          terminates the command.

                The user must take care that the source buffers are in the
          correct order.   They are read starting at the window immediately
          below the current window.   If the target window is at the bottom
          of the screen then it wraps to the top.   In this way any order
          can be used and changed at will.

                Esc Ctl-S      n-way-split

                This command is the mirror image of the n-way-combine.
          The data in the current window is distributed among the rest of
          the window buffers displayed.   The current window buffer must be
          the only window buffer that contains data.   If there are two
          other empty window buffers then the data will be divided two
          ways.   If there are five then the data will be divided five ways

                Ctl-L          refresh-screen

                The screen is reprinted from BEAV's internal buffer.   This
          is useful if the display is messed up due to transmission errors.
          On a PC this is unlikely to happen.

                Esc Ctl-V      show-version

                The version and date of BEAV is displayed in the command
          line.

                Ctl-X C        spawn-shell

                A new MSDOS command shell is created.   You can return to
          BEAV by typing 'exit'.

                Ctl-U          repeat count



                                BEAV User Manual                  26


                This command prompts for a number to be entered.   This
          causes the next command given to be repeated by that number of
          times.   This command cannot have it's binding changed and cannot
          be issued using the 'extended-command' function.

                Esc Ctl-R      screen-rows

                The number of rows that beav will use to paint the screen
          can be set with this command.   This command can be given any
          time, the displayed windows will be adjusted or killed as needed.



                                BEAV User Manual                  27


          4.   Alphabetical list of commands by name

          Command                        Key Binding       Manual Section
          -------                        -----------       --------------
          abort-cmd                      Ctl-G             3.12
          abort-cmd                      Ctl-X Ctl-G       3.12
          abort-cmd                      Esc Ctl-G         3.12
          abort-cmd                      F10               3.12
          auto-save                      Esc A             3.12
          bind-to-key                    Esc K             3.11
          binding-for-key                Ctl-X ?           3.11
          binding-for-key                Sh-F1             3.11
          bindings-load                  Ctl-X L           3.11
          buffer-set-file-name           Ctl-F7            3.3
          buffer-set-file-name           Ctl-X Ctl-F       3.3
          buffer-set-file-name           Sh-F7             3.3
          buffer-set-name                Esc Ctl-N         3.3
          buffer-size-lock               Ctl-X Ctl-L       3.3
          buffers-display                Ctl-F1            3.3
          buffers-display                Ctl-X Ctl-B       3.3
          change-buffer                  Ctl-F2            3.3
          change-buffer                  Ctl-X B           3.3
          change-to-next-buffer          Ctl-F4            3.3
          change-to-next-buffer          Esc +             3.3
          change-to-prev-buffer          Ctl-F5            3.3
          change-to-prev-buffer          Esc -             3.3
          change-window-back             Ctl-PageUp        3.5
          change-window-back             Ctl-X P           3.5
          change-window-forw             Ctl-PageDown      3.5
          change-window-forw             Ctl-X N           3.5
          compare                        Esc C             3.12
          copy-mark-to-cursor            Esc W             3.6
          copy-mark-to-cursor            F7                3.6
          delete-back-char               Backspace         3.6
          delete-back-char               Rubout            3.6
          delete-back-unit               Esc Ctl-K         3.6
          delete-back-unit               Esc Rubout        3.6
          delete-forw-char               Ctl-D             3.6
          delete-forw-char               Delete            3.6
          delete-forw-unit               Esc D             3.6
          delete-mark-to-cursor          Ctl-W             3.6
          delete-mark-to-cursor          F8                3.6
          display-ascii                  Esc Ctl-A         3.5
          display-binary                 Esc Ctl-B         3.5
          display-byte-shift             Ctl-A             3.5
          display-bytes                  Esc 1             3.5
          display-decimal                Esc Ctl-D         3.5
          display-double-words           Esc 4             3.5
          display-ebcdic                 Esc Ctl-E         3.5
          display-float                  Esc Ctl-F         3.5
          display-hex                    Esc Backspace     3.5
          display-octal                  Esc Ctl-O         3.5
          display-swap-order             Ctl-E             3.5
          display-words                  Esc 2             3.5



                                BEAV User Manual                  28


          extended-command               Esc X             3.12
          file-read                      Ctl-X Ctl-R       3.4
          file-read                      Sh-F2             3.4
          file-save                      Ctl-X Ctl-S       3.4
          file-save                      Sh-F3             3.4
          file-view                      Ctl-X V           3.4
          file-visit                     Ctl-X Ctl-V       3.4
          file-visit                     Sh-F4             3.4
          file-visit-split               Esc U             3.4
          file-write                     Ctl-X Ctl-W       3.4
          file-write                     Sh-F5             3.4
          help                           Esc ?             3.1
          help                           F1                3.1
          insert-file                    Ctl-F8            3.4
          insert-file                    Ctl-X Tab         3.4
          insert-file                    Sh-F8             3.4
          insert-literally               Ctl-Q             3.6
          insert-literally               Esc Q             3.6
          insert-toggle                  Ctl-X Ctl-A       3.6
          insert-toggle                  Insert            3.6
          insert-unit                    Ctl-X I           3.6
          kill-buffer                    Ctl-F3            3.3
          kill-buffer                    Ctl-X K           3.3
          macro-end                      Ctl-X )           3.10
          macro-execute                  Ctl-X E           3.10
          macro-start                    Ctl-X (           3.10
          mark-set                       Esc .             3.2
          mark-set                       F2                3.2
          move-back-char                 Ctl-B             3.2
          move-back-char                 West              3.2
          move-back-line                 Ctl-P             3.2
          move-back-line                 North             3.2
          move-back-page                 Esc V             3.2
          move-back-page                 PageDown          3.2
          move-back-unit                 Ctl-West          3.2
          move-back-unit                 Esc B             3.2
          move-forw-char                 Ctl-F             3.2
          move-forw-char                 East              3.2
          move-forw-line                 Ctl-N             3.2
          move-forw-line                 South             3.2
          move-forw-page                 Ctl-V             3.2
          move-forw-page                 PageUp            3.2
          move-forw-unit                 Ctl-East          3.2
          move-forw-unit                 Esc F             3.2
          move-forw-unit                 Sh-Tab            3.2
          move-to-beginning              Esc <             3.2
          move-to-beginning              Home              3.2
          move-to-buffer-split           Esc G             3.2
          move-to-byte                   Ctl-X G           3.2
          move-to-byte                   F9                3.2
          move-to-end                    End               3.2
          move-to-end                    Esc >             3.2
          move-window-down               Ctl-X Ctl-N       3.2
          move-window-down               Ctl-Z             3.2



                                BEAV User Manual                  29


          move-window-up                 Ctl-X Ctl-P       3.2
          move-window-up                 Esc Z             3.2
          n-way-combine                  Esc Ctl-P         3.12
          n-way-split                    Esc Ctl-S         3.12
          print-mark-to-cursor           Ctl-Print         3.9
          print-mark-to-cursor           Esc P             3.9
          quit-no-save                   Ctl-C             3.8
          quit-no-save                   Ctl-F10           3.8
          quit-no-save                   Ctl-X Ctl-C       3.8
          quit-no-save                   Sh-F10            3.8
          quit-save-all                  Ctl-F9            3.8
          quit-save-all                  Ctl-X Ctl-E       3.8
          quit-save-all                  Sh-F9             3.8
          recall-srch-string             Ctl-R             3.7
          refresh-screen                 Ctl-L             3.12
          replace                        Esc %             3.7
          replace                        F5                3.7
          save-all-buffers               Ctl-X Return      3.4
          save-all-buffers               Sh-F6             3.4
          save-mark-to-cursor            Esc O             3.3
          screen-rows                    Esc Ctl-R         3.12
          search-again                   Esc T             3.7
          search-again                   F4                3.7
          search-back                    Esc R             3.7
          search-forw                    Esc S             3.7
          search-forw                    F3                3.7
          show-position                  Ctl-X =           3.2
          show-save-buf                  Esc Ctl-W         3.3
          show-version                   Esc Ctl-V         3.12
          spawn-shell                    Ctl-X C           3.12
          swap-cursor-and-mark           Ctl-X Ctl-X       3.2
          unit-twiddle                   Ctl-T             3.6
          window-delete                  Ctl-X 0           3.5
          window-enlarge                 Ctl-X Z           3.5
          window-link                    Esc L             3.2
          window-reposition              Esc !             3.5
          window-shrink                  Ctl-X Ctl-Z       3.5
          window-single                  Ctl-X 1           3.5
          window-split                   Ctl-X 2           3.5
          yank                           Ctl-Y             3.6
          yank                           F6                3.6
          yank-buffer                    Ctl-F6            3.3
          yank-buffer                    Esc Y             3.3



                                BEAV User Manual                  30


          5.   Alphabetical list of commands by key binding

          Command                        Key Binding       Manual Section
          -------                        -----------       --------------
          delete-back-char               Backspace         3.6
          display-byte-shift             Ctl-A             3.5
          move-back-char                 Ctl-B             3.2
          quit-no-save                   Ctl-C             3.8
          delete-forw-char               Ctl-D             3.6
          display-swap-order             Ctl-E             3.5
          move-forw-unit                 Ctl-East          3.2
          move-forw-char                 Ctl-F             3.2
          buffers-display                Ctl-F1            3.3
          quit-no-save                   Ctl-F10           3.8
          change-buffer                  Ctl-F2            3.3
          kill-buffer                    Ctl-F3            3.3
          change-to-next-buffer          Ctl-F4            3.3
          change-to-prev-buffer          Ctl-F5            3.3
          yank-buffer                    Ctl-F6            3.3
          buffer-set-file-name           Ctl-F7            3.3
          insert-file                    Ctl-F8            3.4
          quit-save-all                  Ctl-F9            3.8
          abort-cmd                      Ctl-G             3.12
          refresh-screen                 Ctl-L             3.12
          move-forw-line                 Ctl-N             3.2
          move-back-line                 Ctl-P             3.2
          change-window-forw             Ctl-PageDown      3.5
          change-window-back             Ctl-PageUp        3.5
          print-mark-to-cursor           Ctl-Print         3.9
          insert-literally               Ctl-Q             3.6
          recall-srch-string             Ctl-R             3.7
          unit-twiddle                   Ctl-T             3.6
          move-forw-page                 Ctl-V             3.2
          delete-mark-to-cursor          Ctl-W             3.6
          move-back-unit                 Ctl-West          3.2
          macro-start                    Ctl-X (           3.10
          macro-end                      Ctl-X )           3.10
          window-delete                  Ctl-X 0           3.5
          window-single                  Ctl-X 1           3.5
          window-split                   Ctl-X 2           3.5
          show-position                  Ctl-X =           3.2
          binding-for-key                Ctl-X ?           3.11
          change-buffer                  Ctl-X B           3.3
          spawn-shell                    Ctl-X C           3.12
          insert-toggle                  Ctl-X Ctl-A       3.6
          buffers-display                Ctl-X Ctl-B       3.3
          quit-no-save                   Ctl-X Ctl-C       3.8
          quit-save-all                  Ctl-X Ctl-E       3.8
          buffer-set-file-name           Ctl-X Ctl-F       3.3
          abort-cmd                      Ctl-X Ctl-G       3.12
          buffer-size-lock               Ctl-X Ctl-L       3.3
          move-window-down               Ctl-X Ctl-N       3.2
          move-window-up                 Ctl-X Ctl-P       3.2
          file-read                      Ctl-X Ctl-R       3.4



                                BEAV User Manual                  31


          file-save                      Ctl-X Ctl-S       3.4
          file-visit                     Ctl-X Ctl-V       3.4
          file-write                     Ctl-X Ctl-W       3.4
          swap-cursor-and-mark           Ctl-X Ctl_X       3.2
          window-shrink                  Ctl-X Ctl-Z       3.5
          macro-execute                  Ctl-X E           3.10
          move-to-byte                   Ctl-X G           3.2
          insert-unit                    Ctl-X I           3.6
          kill-buffer                    Ctl-X K           3.3
          bindings-load                  Ctl-X L           3.11
          change-window-forw             Ctl-X N           3.5
          change-window-back             Ctl-X P           3.5
          save-all-buffers               Ctl-X Return      3.4
          insert-file                    Ctl-X Tab         3.4
          file-view                      Ctl-X V           3.4
          window-enlarge                 Ctl-X Z           3.5
          yank                           Ctl-Y             3.6
          move-window-down               Ctl-Z             3.2
          delete-forw-char               Delete            3.6
          move-forw-char                 East              3.2
          move-to-end                    End               3.2
          window-reposition              Esc !             3.5
          replace                        Esc %             3.7
          change-to-next-buffer          Esc +             3.3
          change-to-prev-buffer          Esc -             3.3
          mark-set                       Esc .             3.2
          display-bytes                  Esc 1             3.5
          display-words                  Esc 2             3.5
          display-double-words           Esc 4             3.5
          move-to-beginning              Esc <             3.2
          move-to-end                    Esc >             3.2
          help                           Esc ?             3.1
          auto-save                      Esc A             3.12
          move-back-unit                 Esc B             3.2
          display-hex                    Esc Backspace     3.5
          Compare                        Esc C             3.12
          display-ascii                  Esc Ctl-A         3.5
          display-binary                 Esc Ctl-B         3.5
          display-decimal                Esc Ctl-D         3.5
          display-ebcdic                 Esc Ctl-E         3.5
          display-float                  Esc Ctl-F         3.5
          abort-cmd                      Esc Ctl-G         3.12
          delete-back-unit               Esc Ctl-K         3.6
          buffer-set-name                Esc Ctl-N         3.3
          display-octal                  Esc Ctl-O         3.5
          n-way-combine                  Esc Ctl-P         3.12
          screen-rows                    Esc Ctl-R         3.12
          n-way-split                    Esc Ctl-S         3.12
          show-version                   Esc Ctl-V         3.12
          show-save-buf                  Esc Ctl-W         3.3
          delete-forw-unit               Esc D             3.6
          move-forw-unit                 Esc F             3.2
          move-to-buffer-split           Esc G             3.2
          bind-to-key                    Esc K             3.11



                                BEAV User Manual                  32


          window-link                    Esc L             3.2
          save-mark-to-cursor            Esc O             3.3
          print-mark-to-cursor           Esc P             3.9
          insert-literally               Esc Q             3.6
          search-back                    Esc R             3.7
          delete-back-unit               Esc Rubout        3.6
          search-forw                    Esc S             3.7
          search-again                   Esc T             3.7
          file-visit-split               Esc U             3.4
          move-back-page                 Esc V             3.2
          copy-mark-to-cursor            Esc W             3.6
          extended-command               Esc X             3.12
          yank-buffer                    Esc Y             3.3
          move-window-up                 Esc Z             3.2
          help                           F1                3.1
          abort-cmd                      F10               3.12
          mark-set                       F2                3.2
          search-forw                    F3                3.7
          search-again                   F4                3.7
          replace                        F5                3.7
          yank                           F6                3.6
          copy-mark-to-cursor            F7                3.6
          delete-mark-to-cursor          F8                3.6
          move-to-byte                   F9                3.2
          move-to-beginning              Home              3.2
          insert-toggle                  Insert            3.6
          move-back-line                 North             3.2
          move-back-page                 PageDown          3.2
          move-forw-page                 PageUp            3.2
          delete-back-char               Rubout            3.6
          binding-for-key                Sh-F1             3.11
          quit-no-save                   Sh-F10            3.8
          file-read                      Sh-F2             3.4
          file-save                      Sh-F3             3.4
          file-visit                     Sh-F4             3.4
          file-write                     Sh-F5             3.4
          save-all-buffers               Sh-F6             3.4
          buffer-set-file-name           Sh-F7             3.3
          insert-file                    Sh-F8             3.4
          quit-save-all                  Sh-F9             3.8
          move-forw-unit                 Sh-Tab            3.2
          move-forw-line                 South             3.2
          move-back-char                 West              3.2



                                BEAV User Manual                  33


          6.   Release notes


                Version 1.20 (3/10/91) of BEAV contains the following fixes
          and enhancements;

          *           Under unix files are created with read/write
                permissions.

          *           Fixed the bug in the terminal I/O routine that caused
                BEAV to spin rather than give up control when waiting for a
                character.

          *           Added the ANSI #define that was missing for MSDOS.

          *           Changed the D16 #define to a unsigned short.

          *           Called ttclose on error exit.

          *           Check and limit ncol and nrow to the actual screen
                array size.

          *           Add the ability to load key bindings from a file
                automatically under MSDOS and unix.

          *           Add delete current window command.

          *           Support VT100 type function keys.


                Version 1.30 (7/1/91) of BEAV contains the following fixes
          and enhancements;

          *           Under MSDOS and 16 bit UNIX systems the kill or copy
                region could not be over 64K bytes.   This limit has been
                eliminated.

          *           The save buffer can be made visible with the Esc Ctl-
                W command.   The save buffer is not editable.

          *           All memory allocation errors now pause and ask for
                conformation before continuing.   In previous releases only
                an error message was printed.   Since an allocation error
                generally means data loss, I have forced the user to
                respond.   Memory allocation errors are not otherwise fatal
                to BEAV, they are probably fatal to the user's data.   The
                decision is left to the user with the appropriate warning.

          *           Two commands have been added to aid in working with
                PROM files; n-way-split (Esc Ctl-S) and n-way-combine (Esc
                Ctl-P).

          *



                                BEAV User Manual                  34


                The speed of the delete-mark-to-cursor (Ctl-W) command has
                been greatly improved.

          *           All commands that can potentially take a lot of time
                can be stopped by pressing Ctl-G.


                Version 1.31 (11/2/91) of BEAV contains the following
          fixes;

          *           A serious bug that causes a crash on systems that
                trapped the use of dereferenced pointers has been fixed.

          *           BEAV now names the backup file properly under unix.
                Previously; if a dot file (.<filename>) was edited, the
                backup file was given a garbage name.   Now, a backup file
                simply has ".bak" appended to the file name.

          *           You can use the buffers-display (Ctl-X, Ctl-B)
                command to; go to, kill, or save a buffer.

          *           A compile flag for DEC ULTRA was created and a
                makeable is included in this release (makefile.utx).

          *           When a large region was deleted the offset value was
                displayed wrong, this is now fixed.

          *           A bug in the parse_f_name that trashed a variable is
                now fixed.

          *           Regions of never used code have been deleted.

          *           Under UNIX the file permissions are maintained
                correctly when the file is saved.

          *           A number of un-niceties that lint reported have been
                fixed.


                Version 1.32 (11/8/91) of BEAV contains the following
          enhancements;

          *           BEAV will now compile and run on the Amiga computer.


                Version 1.33 (8/9/92) of BEAV contains the following
          enhancements;

          *           A new command, "screen-rows", allows you to change
                the number of rows that BEAV will use on the CRT.   The
                command can be issued anytime, the windows will be adjusted
                or killed as necessary.



                                BEAV User Manual                  35


          *           Floating point numbers can be displayed using the
                "display-float" command.   This will set the current window
                to floating point display, but the window cannot be edited.

          *           The "beavrc" file processing has been enhanced to
                allow most commands to be executed from the rc file when
                BEAV loads.

          *           The default key binding for the "n-way-combine" has
                been changed to Esc Ctl P.   This frees up the old binding
                Esc Ctl F to be used for the "display-float" command which
                is more in line with the other display mode commands.

          *           The replace command would fail to find all
                occurrences of a search pattern if the pattern fell on the
                boundary of certain internal data structures.   This is
                fixed.

          *           The memory used to handle screen images is now
                allocated at load time rather than statically allocated.
                This will allow systems with any screen size to be fully
                used.   This depends on the variable "nrow" being properly
                set by whatever termcap description you have configured.
                The default for "nrow" is the #define "NROW" as set in the
                def.h file, generally 24.   The columns remain fixed at 80.

          *           Under Unix, BEAV will use the full screen rows as
                reported by the ioctl inquiry of the tty device.
                Previously, the bottom line was not used.

          *           Under MSDOS, BEAV will use the full screen rows as
                reported by the int 10 function 1b call.

          *           Not new to this release, but important for foreign
                language users.   All English text in BEAV is contained in
                the file "text.c".   It should be relatively easy to
                translate and recompile.   If someone wants to send me a
                translated version of "text.c", I will include it in my
                next release.


          *         The prompt line is now erased properly.

               Version 1.40 (2/20/93) of BEAV contains the following
          enhancements;

          *          Support for different languages.   All English text
                strings are contained in a separate file.   I would like
                to get translations to other languages.   I will then
                include them in future releases.

          *          A bug has been fixed in the search command.   If the
                backspace key was hit while entering the search string,
                some error messages were displayed.



                                BEAV User Manual                  36



          *          A bug has been fixed in the search command.   If the
                backspace key was hit while entering the search string,
                someerror messages were displayed.

          *          Another bug has been fixed in the search command.
                While entering a search pattern if you went back and
                inserted characters in the search pattern the cursor would
                advance one position too far.

          *          BEAV will compile under OS/2.   There is a makefile
                called makefile.os2.   The OS/2 support is thanks to Kai
                Uwe Rommel (rommel@jonas.gold.sub.org)

          7.   Source Availability

                BEAV source and executable is maintained at WSMR-
          SIMTEL20.ARMY.MIL in PD1:<MSDOS.FILUTL>BEAV140.ZIP.   The source
          and manual is available in PD1:<MSDOS.FILUTL>BEAV140S.ZIP.

                If anyone does not have access to usenet, I will mail a
          copy of the source on floppy for $20.00 copying charge.   The
          floppies can be in MSDOS file format or UNIX tar format.   I can
          also supply either QIC-24, QIC-120, QIC-150, or 9 track reel to
          reel tape.   The price for the tape will include the cost of the
          media.
