home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best Objectech Shareware Selections
/
UNTITLED.iso
/
boss
/
word
/
misc
/
001
/
beav.txt
< prev
Wrap
Text File
|
1991-03-14
|
70KB
|
2,442 lines
BEAV
Binary Editor And Viewer
Manual Copyright 1991
Version 1.20
March 13, 1991
By
Peter Reilley
19 Heritage Cir.
Hudson, N.H. 03051
pvr@wang.com
BEAV source and executable can be freely
distributed for non-commercial purposes.
BEAV User Manual
Table of Contents
1. Introduction
2. Overview
2.1 Terms and Definitions
2.2 The Screen Format
2.3 Display Modes
2.4 Commands
2.5 Buffers
2.6 Files
2.7 Key Binding
2.8 Configuration
3. Command Description
3.1 Help
3.2 Cursor Movement
3.3 Buffer Management
3.4 File Management
3.5 Window Management
3.6 Inserting and deleting
3.7 Search and Replace Commands
3.8 Exiting BEAV
3.9 Printing
3.10 Keyboard Macros
3.11 Key Binding
3.12 Special Functions
4. Alphabetical list of commands by name
5. Alphabetical list of commands by default key binding
6. Release notes
- 2 -
BEAV User Manual
1.0 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 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, or 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.
- 3 -
BEAV User Manual
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 by 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.
- 4 -
BEAV User Manual
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.
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, 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.
- 5 -
BEAV User Manual
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.
- 6 -
BEAV User Manual
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, ASCII, or EBCDIC.
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 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
bit 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".
There is another display format choice that affects the
16 or 32 bit formats. This is called shift. The shift can
be 0 or 1 for 16 bit modes, or 0, 1, 2, 3 for 32 bit modes.
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.
- 7 -
BEAV User Manual
2.4 Commands
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.
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.
- 8 -
BEAV User Manual
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.
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.
- 9 -
BEAV User Manual
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". 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. The second is the key sequence
that is bound to that function. The third is a number that
defines the key code. Then the beavrc file is read in only
the first and third columns are used.
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. Next display the current bindings in a
window using the help command (Esc ?). Now save that buffer
to a file with the file-write command (Ctl-X Ctl-W). You will
be prompted for a file name. This is a valid beavrc file.
You may want to edit the beavrc file to remove the commented
lines, 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 run 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.
- 10 -
BEAV User Manual
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.
- 11 -
BEAV User Manual
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 for the MSDOS version.
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.
- 12 -
BEAV User Manual
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
'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.
- 13 -
BEAV User Manual
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.
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.
- 14 -
BEAV User Manual
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 go to that window
and scroll the list.
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
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.
- 15 -
BEAV User Manual
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.
- 16 -
BEAV User Manual
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.
- 17 -
BEAV User Manual
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
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.
- 18 -
BEAV User Manual
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.
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 haves
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.
- 19 -
BEAV User Manual
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-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, 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.
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
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.
- 20 -
BEAV User Manual
The buffer is in effect shifted toward the beginning of
the buffer with 1, 2, or 3 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.
- 21 -
BEAV User Manual
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
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 might be faster to use this command on some
occasions.
Ctl-T unit-twiddle
The unit at the cursor is swapped with the previous unit.
- 22 -
BEAV User Manual
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
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.
- 23 -
BEAV User Manual
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.
Esc R search-back
This command is the same as the previous one except that
it searches backward.
- 24 -
BEAV User Manual
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.
- 25 -
BEAV User Manual
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 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 exit.
Ctl-X Ctl-E quit-save-all Sh-F9
All buffers are saved before exiting.
- 26 -
BEAV User Manual
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. The position
of the mark and cursor are rounded to include the entire
specified line unlike the other mark-to-cursor commands.
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.
- 27 -
BEAV User Manual
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 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'
- 28 -
BEAV User Manual
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 way to reliably get the <key code> number.
- 29 -
BEAV User Manual
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 loses its binding, this command allows the
unbound command to be used. A command can lose 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.
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.
- 30 -
BEAV User Manual
Esc Ctl-V show-version
The version and date of BEAV is displayed in the command
line.
Ctl-X C spawn-shell
A new shell is created. You can return to BEAV by
typing 'exit'.
Ctl-U repeat count
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.
- 31 -
BEAV User Manual
4. Alphabetical list of commands by name
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-hex Esc,Backspace 3.5
display-octal Esc,Ctl-O 3.5
display-swap-order Ctl-E 3.5
- 32 -
BEAV User Manual
display-words Esc,2 3.5
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
- 33 -
BEAV User Manual
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
move-window-up Ctl-X,Ctl-P 3.2
move-window-up Esc,Z 3.2
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
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-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
- 34 -
BEAV User Manual
5. Alphabetical list of commands by default key binding
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
- 35 -
BEAV User Manual
move-window-up Ctl-X,Ctl-P 3.2
file-read Ctl-X,Ctl-R 3.4
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
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
show-version Esc,Ctl-V 3.12
delete-forw-unit Esc,D 3.6
move-forw-unit Esc,F 3.2
move-to-buffer-split Esc,G 3.2
- 36 -
BEAV User Manual
bind-to-key Esc,K 3.11
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
- 37 -
BEAV User Manual
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.
- 38 -