home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume26
/
beav
/
part01
next >
Wrap
Text File
|
1991-11-21
|
56KB
|
1,720 lines
Newsgroups: comp.sources.misc
From: pvr@wang.com (Peter Reilley)
Subject: v26i037: beav - Binary file editor and viewer, v1.32, Part01/09
Message-ID: <csm-v26i037=beav.165530@sparky.IMD.Sterling.COM>
X-Md4-Signature: 68708604e3d80104b5208e2185082316
Date: Thu, 21 Nov 1991 23:00:38 GMT
Approved: kent@sparky.imd.sterling.com
Submitted-by: pvr@wang.com (Peter Reilley)
Posting-number: Volume 26, Issue 37
Archive-name: beav/part01
Environment: UNIX, AIX, MS-DOS, AMIGA
Supersedes: beav: Volume 22, Issue 10-18
This release 1.32 of BEAV (Binary Editor And Viewer), a full featured
binary file editor. Just about any operation that you could want to do
to a binary file is possible with BEAV. You can insert or delete in
the middle of a file thereby changing it's size. You can display and
edit data in hex, octal, decimal, binary, ascii, or ebcdic formats.
You can display data in byte, word, or long word formats in either
Intel or Motorola byte ordering. You can send the formatted display
mode to a file or printer.
Version 1.32 (8/08/91) of beav contains the following
fixes and enhancements;
* 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-niceities that lint reported have been
fixed.
* BEAV will now compile and run on the Amiga computer.
BEAV is based on the source for emacs for display and keyboard handling
functions. The binary file handling and display formats are special
to BEAV. There is a full manual included in this release. There
are makefiles for unix, xenix 286, amiga, and MSC 5.1 under DOS. The old
Wang PC is supported. This has been tested on 286 and 386 PC's under SCO
UNIX and XENIX and AIX on a RS6000. There are a number of makefiles
included; select the appropriate one and rename it to makefile.
I am willing to maintain BEAV and will entertain suggestions for
modifications and/or bug fixes. I can be reached at;
pvr@wang.com
or at;
Peter Reilley
19 Heritage Cir.
Hudson, N.H. 03051
------
#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# Contents: basic.c beav132b.txt
# Wrapped by kent@sparky on Thu Nov 21 16:46:59 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo ' "shar: End of archive 1 (of 9)."'
if test -f 'basic.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'basic.c'\"
else
echo shar: Extracting \"'basic.c'\" \(11657 characters\)
sed "s/^X//" >'basic.c' <<'END_OF_FILE'
X/*
X* Basic cursor motion commands.
X* The routines in this file are the basic
X* command functions for moving the cursor around on
X* the screen, setting mark, and swapping dot with
X* mark. Only moves between lines, which might make the
X* current buffer framing bad, are hard.
X*/
X
X#include "def.h"
X
Xbool move_ptr ();
Xbool forwchar ();
Xbool wind_on_dot ();
Xbool backline ();
X
Xextern char MSG_mark_set[];
Xextern char MSG_no_mark[];
Xextern char MSG_go_b_n[];
Xextern char MSG_bad_num[];
X#if RUNCHK
Xextern char ERR_bas_1[];
X#endif
Xextern char MSG_lX[];
Xextern char MSG_lO[];
Xextern char MSG_lD[];
X
X
Xextern bool rplc_mode;
X
X/* pvr
X* Move cursor backwards. Do the
X* right thing if the count is less than
X* 0. Error if you try to move back from
X* the beginning of the buffer.
X*/
Xbool backchar (f, n, k)
Xregister int n;
X{
X if (n < 0)
X return (forwchar (f, -n, KRANDOM));
X
X while (n--)
X {
X if (curwp -> w_unit_offset == 0)
X {
X if (!move_ptr (curwp, -(long)R_B_PER_U(curwp),
X TRUE, TRUE, TRUE))
X return (FALSE);
X
X /* step to previous unit */
X curwp -> w_unit_offset = R_CHR_PER_U(curwp) - 1;
X
X /* if before first line in window then move window */
X wind_on_dot (curwp);
X }
X else
X curwp -> w_unit_offset--;
X }
X curwp -> w_flag |= WFMODE; /* update mode line */
X return (TRUE);
X}
X
X/* pvr
X* Move cursor forwards. Do the
X* right thing if the count is less than
X* 0. Error if you try to move forward
X* from the end of the buffer.
X*/
Xbool forwchar (f, n, k)
Xregister int n;
X{
X if (n < 0)
X return (backchar (f, -n, KRANDOM));
X
X curwp -> w_flag |= WFMODE; /* update mode line */
X while (n--)
X {
X if (curwp -> w_unit_offset >= (R_CHR_PER_U(curwp) - 1))
X {
X /* move to the mext unit */
X curwp -> w_unit_offset = 0;
X
X if (!move_ptr (curwp, (long)R_B_PER_U(curwp),
X TRUE, TRUE, TRUE))
X {
X /* I am at the the end of the buffer */
X return (FALSE);
X }
X
X /* if after the last line in window then move window */
X wind_on_dot (curwp);
X }
X else if/* if at last byte of buffer then do not step */
X (DOT_POS(curwp) < BUF_SIZE(curwp))
X curwp -> w_unit_offset++;/* step within unit */
X }
X return (TRUE);
X}
X
X/* pvr
X* This function moves the specified pointer by the ammount specified
X* in 'len'. Move the dot pointer is 'dot' is true, else move
X* the window pointer. Do the fix up if 'fix' is TRUE.
X* This is a relative move if 'rel' is TRUE, else it is an
X* absolute move.
X*/
X
Xbool move_ptr (wp, len, dot, fix, rel)
XWINDOW *wp;
Xlong len;
Xbool dot, fix, rel;
X{
X A32 cur_pos, dest_pos, fix_val, last_pos;
X long rel_pos;
X A32 last_fixed_pos, align;
X LINE **line;
X int *l_off;
X char shift;
X bool no_limit;
X
X no_limit = TRUE;
X if (dot)
X { /* move dot position */
X l_off = (int *)&wp -> w_doto;
X line = &wp -> w_dotp;
X align = R_SIZE(wp); /* bytes -1 in a unit */
X }
X else
X { /* move window position */
X l_off = (int *)&wp -> w_loff;
X line = &wp -> w_linep;
X align = R_ALIGN(wp) - 1; /* interval of bytes to align window */
X }
X
X /* get the current position in the buffer */
X cur_pos = (*line) -> l_file_offset + *l_off;
X
X if (rel)
X {
X rel_pos = len;
X dest_pos = len + cur_pos; /* destination position */
X }
X else
X {
X rel_pos = len - cur_pos; /* relative move amount */
X dest_pos = len; /* destination position */
X }
X if (fix)
X {
X shift = wp -> w_disp_shift;
X
X /* limit at begining */
X if ((long)dest_pos < (long)shift)
X {
X rel_pos = shift - cur_pos;
X no_limit = FALSE;
X }
X else
X {
X /* calculate fixed up destination position */
X fix_val = dest_pos &= ~align;
X fix_val += shift;
X
X /* calculate the last position in the buffer */
X last_pos = BUF_SIZE(wp);
X if (last_pos < (last_fixed_pos = (last_pos & ~align) + shift))
X last_pos = last_fixed_pos - align - 1;
X
X /* if we are going to limit at the end of the buffer */
X if (last_pos < fix_val)
X {
X fix_val = last_pos;
X no_limit = FALSE;
X }
X rel_pos = fix_val - cur_pos;
X }
X }
X while (TRUE)
X {
X if (rel_pos < 0) /* move backward through buffer */
X {
X /* current line? */
X if (*l_off + rel_pos >= 0)
X {
X *l_off += (short) rel_pos;
X return (no_limit);
X }
X /* are we at the first line */
X if ((*line) -> l_bp -> l_size != 0)
X { /* no, so step back */
X rel_pos += *l_off;
X (*line) = (*line) -> l_bp;/* move back one line */
X *l_off = (*line) -> l_used;
X }
X else
X { /* yes, limit at the begining */
X *l_off = 0;
X return (FALSE);
X }
X }
X else /* move forward through buffer */
X {
X /* is in current line? */
X if (((A32)(*l_off) + rel_pos) < ((A32)((*line) -> l_used)))
X {
X *l_off += (short) rel_pos;
X return (no_limit);
X }
X if ((*line) -> l_fp -> l_size != 0)
X {
X rel_pos -= (*line) -> l_used - *l_off;
X *l_off = 0;
X (*line) = (*line) -> l_fp;/* move forward one line */
X }
X else
X {
X *l_off = (*line) -> l_used;/* at last line so limit it */
X return (FALSE);
X }
X }
X }
X return (TRUE);
X}
X
X/* pvr
X* Move the window so that the dot is within it's
X* area. Return TRUE if window was moved.
X*/
X
Xbool wind_on_dot (wp)
X
XWINDOW * wp;
X{
X long diff, incr;
X A32 d_offs, w_start, bytes, align;
X
X /* number of bytes in a row */
X bytes = R_BYTES(wp);
X /* number of bytes to align on */
X align = R_ALIGN(wp);
X /* offset of window from start of the buffer */
X w_start = WIND_POS(wp);
X /* offset of dot from start of the buffer */
X d_offs = DOT_POS(wp);
X /* calculate the amount to move that is 1/3 of the window */
X incr = bytes * wp -> w_ntrows / 3;
X /* if dot is before first line in window */
X if ((diff = (d_offs - w_start)) < 0)/* diff used later */
X {
X move_ptr (wp, diff - incr, FALSE, TRUE, TRUE);
X wp -> w_flag |= WFHARD;
X return (TRUE);
X }
X /* if dot is after the last line in window */
X if (0 < (diff -= (wp -> w_ntrows * bytes - 1)))
X {
X if (align != 1)
X diff = (diff & ~(align - 1)) + align;
X move_ptr (wp, diff + incr, FALSE, TRUE, TRUE);
X wp -> w_flag |= WFHARD;
X return (TRUE);
X }
X /* is window aligned? */
X if (w_start != ((w_start & ~(align - 1)) + wp -> w_disp_shift))
X { /* if no then move into alignment */
X move_ptr (wp, 0L, FALSE, TRUE, TRUE);
X wp -> w_flag |= WFHARD;
X return (TRUE);
X }
X return (FALSE);
X}
X
X/* pvr
X* Go to the beginning of the
X* buffer. Setting WFHARD is conservative,
X* but almost always the case.
X*/
Xbool gotobob ()
X{
X move_ptr (curwp, 0L, TRUE, TRUE, FALSE); /* move dot */
X move_ptr (curwp, 0L, FALSE, TRUE, FALSE); /* move window */
X curwp -> w_unit_offset = 0;
X curwp -> w_flag |= WFHARD;
X return (TRUE);
X}
X
X
X/* pvr
X* Go to the end of the buffer.
X* Setting WFHARD is conservative, but
X* almost always the case.
X* Dot is one byte past the end of the buffer.
X*/
Xbool gotoeob ()
X{
X move_ptr (curwp, BUF_SIZE(curwp), TRUE, TRUE, FALSE); /* move dot */
X curwp -> w_unit_offset = 0;
X wind_on_dot (curwp);
X return (TRUE);
X}
X
X
X/* pvr
X* Move forward by full lines.
X* If the number of lines to move is less
X* than zero, call the backward line function to
X* actually do it. The last command controls how
X* the goal column is set.
X*/
Xbool forwline (f, n, k)
X{
X if (n < 0)
X return (backline (f, -n, KRANDOM));
X
X if (rplc_mode)
X {
X next_pat ();
X }
X else
X {
X /* move dot */
X if (!move_ptr (curwp, (long)R_BYTES(curwp) * n,
X TRUE, TRUE, TRUE))
X curwp -> w_unit_offset = 0;
X wind_on_dot (curwp);
X curwp -> w_flag |= WFMODE; /* update mode line */
X }
X return (TRUE);
X}
X
X
X/* pvr
X* This function is like "forwline", but
X* goes backwards. The scheme is exactly the same.
X* Check for arguments that are less than zero and
X* call your alternate. Figure out the new line and
X* call "movedot" to perform the motion.
X*/
Xbool backline (f, n, k)
X{
X if (n < 0)
X return (forwline (f, -n, KRANDOM));
X
X if (rplc_mode)
X {
X next_pat ();
X }
X else
X {
X if (!move_ptr (curwp, -((long)(R_BYTES(curwp) * n)),
X TRUE, TRUE, TRUE))
X curwp -> w_unit_offset = 0;
X
X /* is dot before the top of window? */
X wind_on_dot (curwp);
X curwp -> w_flag |= WFMODE; /* update mode line */
X }
X return (TRUE);
X}
X
X/* pvr
X* Scroll forward by a specified number
X* of lines, or by a full page if no argument.
X* (KRW) Added cursor (dot) weighting to force cursor
X* to same position on new page.
X*/
Xbool forwpage (f, n, k)
Xregister int n;
X{
X long mov_lines;
X
X if (rplc_mode)
X next_pat ();
X else
X {
X if (curwp -> w_ntrows <= 2)
X mov_lines = 2;
X else
X mov_lines = curwp -> w_ntrows - 2;
X
X /* check if last line is already displayed */
X if (WIND_POS(curwp) + (R_BYTES(curwp) * curwp -> w_ntrows) <
X curwp -> w_bufp -> b_linep -> l_bp -> l_file_offset +
X curwp -> w_bufp -> b_linep -> l_bp -> l_used)
X {
X move_ptr (curwp, (long)(R_BYTES(curwp) * mov_lines),
X FALSE, TRUE, TRUE);
X }
X /* move dot by same amount */
X if (!move_ptr (curwp, (long)(R_BYTES(curwp) * mov_lines),
X TRUE, TRUE, TRUE))
X curwp -> w_unit_offset = 0;
X
X curwp -> w_flag |= WFHARD;
X }
X return (TRUE);
X}
X
X
X/* pvr
X* This command is like "forwpage",
X* but it goes backwards.
X*/
Xbool backpage (f, n, k)
Xregister int n;
X{
X long mov_lines;
X
X if (rplc_mode)
X next_pat ();
X else
X {
X if (curwp -> w_ntrows <= 2)
X mov_lines = 2;
X else
X mov_lines = curwp -> w_ntrows - 2;
X
X /* move window */
X move_ptr (curwp, -(long)(R_BYTES(curwp) * mov_lines),
X FALSE, TRUE, TRUE);
X /* move dot by same amount */
X if (!move_ptr (curwp, -(long)(R_BYTES(curwp) * mov_lines),
X TRUE, TRUE, TRUE))
X curwp -> w_unit_offset = 0;
X
X curwp -> w_flag |= WFHARD;
X }
X return (TRUE);
X}
X
X
X/*
X* Set the mark in the current window
X* to the value of dot. A message is written to
X* the echo line unless we are running in a keyboard
X* macro, when it would be silly.
X*/
Xbool setmark ()
X{
X
X if (curbp == blistp) /* jam - hack to do goto/kill */
X pickone ();
X else
X {
X curwp -> w_markp = curwp -> w_dotp;
X curwp -> w_marko = curwp -> w_doto;
X if (kbdmop == NULL)
X {
X writ_echo (MSG_mark_set);
X }
X }
X return (TRUE);
X}
X
X
X/* pvr
X* Swap the values of "dot" and "mark" in
X* the current window. This is pretty easy, because
X* all of the hard work gets done by the standard routine
X* that moves the mark about. The only possible
X* error is "no mark".
X*/
Xbool swapmark ()
X{
X register short odoto;
X register LINE * odotp;
X
X if (curwp -> w_markp == NULL)
X {
X writ_echo (MSG_no_mark);
X return (FALSE);
X }
X
X odotp = curwp -> w_dotp;
X curwp -> w_dotp = curwp -> w_markp;
X curwp -> w_markp = odotp;
X odoto = curwp -> w_doto;
X curwp -> w_doto = curwp -> w_marko;
X curwp -> w_marko = odoto;
X wind_on_dot (curwp);
X curwp -> w_flag |= WFMODE; /* update mode line */
X return (TRUE);
X}
X
X/* pvr
X* Go to a specific byte position in buffer.
X* If an argument is present, then
X* it is the byte number, else prompt for a byte number
X* to use.
X*/
Xbool gotoline (f, n, k)
X{
X A32 index;
X register int s;
X char buf[32];
X
X if (f == FALSE)
X {
X
X if ((s = ereply (MSG_go_b_n, buf, sizeof (buf), 0) != TRUE))
X return (s);
X switch (R_TYPE(curwp))
X {
X case TEXT:
X case ASCII:
X case EBCDIC:
X case BINARY:
X case HEX:
X sscanf (buf, MSG_lX, &index);
X break;
X case OCTAL:
X sscanf (buf, MSG_lO, &index);
X break;
X case DECIMAL:
X sscanf (buf, MSG_lD, &index);
X break;
X#if RUNCHK
X default:
X writ_echo (ERR_bas_1);
X break;
X#endif
X }
X }
X
X if (n <= 0)
X {
X writ_echo (MSG_bad_num);
X return (FALSE);
X }
X
X move_ptr (curwp, index, TRUE, TRUE, FALSE);
X curwp -> w_unit_offset = 0;
X
X curwp -> w_flag |= WFMODE; /* update mode line */
X
X wind_on_dot (curwp);
X return (TRUE);
X}
X
END_OF_FILE
if test 11657 -ne `wc -c <'basic.c'`; then
echo shar: \"'basic.c'\" unpacked with wrong size!
fi
# end of 'basic.c'
fi
if test -f 'beav132b.txt' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'beav132b.txt'\"
else
echo shar: Extracting \"'beav132b.txt'\" \(37937 characters\)
sed "s/^X//" >'beav132b.txt' <<'END_OF_FILE'
X BEAV User Manual
X
X
Xshift is 0. For example, a double word at address 10 is made up
Xof the bytes at address 10, 11, 12, and 13. With a shift of 1
Xthat double word would be made of bytes 11, 12, 13, and 14.
XWith a shift of 2 then bytes 12, 13, 14, and 15 would be used.
XThe maximum shift in word display mode is one and the maximum
Xshift in double word mode is three.
X
X The buffer is in effect shifted toward the beginning of the
Xbuffer with 1, 2, or 3 bytes becoming not visible. These bytes
Xare not lost, they become visible when the shift is set to zero.
XThis command cycles through all possible shift values. There is
Xno effect in any byte display mode or any text display mode.
X
X
X 3.6 Inserting and deleting
X
X These commands are the core of BEAV. These commands allow
Xthe buffer to be edited in a similar fashion to a text editor.
XBEAV has an insert mode much the same as text editors but it only
Xworks when displaying data in one of the text modes, either ASCII
Xor EBCDIC. In other modes it doesn't make any sense to insert
Xcharacters as they are typed when there is more than one
Xcharacters per unit. In the data modes there is a command that
Xinserts a unit of zeros into the buffer. Similarly the delete
Xcommands always delete a unit rather than a character. In a
Xtext mode the delete commands work as in a text editor because a
Xunit is a character.
X
X Ctl-X I insert-unit
X
X Insert a zero at the cursor position. The rest of the
Xdata moves down one place. Thus, if double words are being
Xdisplayed, four bytes are inserted before the cursor position.
XThese bytes are initialized to zero. This command works in all
Xdisplay modes.
X
X Ctl-X Ctl-A insert-toggle Insert
X
X In either of the two text modes this command toggles
Xbetween insert mode and overwrite mode. In insert mode each
Xcharacter that is typed is inserted in front of the cursor and
Xthe rest of the buffer is moved down. In overwrite mode the
Xtyped characters replace the character that is at the cursor.
XThis command has no effect in a non-text display mode.
X
X Ctl-Q insert-literally Esc Q
X
X This command sets a special temporary mode where the next
Xtyped character is inserted in the buffer no matter what the
Xcharacter is. This allows control codes to be inserted in the
Xbuffer when in a text display mode. Alternatively the same byte
Xcould be inserted into the buffer by using one of the data
Xdisplay modes. It night be faster to use this command on some
Xoccasions.
X
X
X
X 18
X
X BEAV User Manual
X
X
X
X Ctl-T unit-twiddle
X
X The unit at the cursor is swapped with the previous unit.
X
X Rubout delete-back-char Backspace
X
X This command deletes the character before the cursor and
Xpulls the rest of the buffer back. The cursor remains on the
Xsame character as it moves back. It only works in the text and
Xbyte display modes.
X
X Ctl-D delete-forw-char Delete
X
X The character at the cursor is deleted and the buffer is
Xpulled back. The cursor remains at the same position. It only
Xworks in the text and byte display modes.
X
X Esc Rubout delete-back-unit Esc Ctl-K
X
X This command deletes the unit before the cursor and pulls
Xthe rest of the buffer back. The cursor remains on the same
Xunit as it moves back.
X
X Esc D delete-forw-unit
X
X The unit at the cursor is deleted and the buffer is pulled
Xback. The cursor remains at the same position.
X
X Esc W copy-mark-to-cursor F7
X
X The area in the buffer from the mark to the current cursor
Xposition is copied into the kill buffer. If the mark is not set
Xbefore this command is given an error is reported.
X
X Ctl-W delete-mark-to-cursor F8
X
X The area in the buffer from the mark to the current cursor
Xposition is deleted and placed into the kill buffer. If the
Xmark is not set before this command is given an error is
Xreported.
X
X Ctl-Y yank F6
X
X The contents of the kill buffer is inserted into the buffer
Xat the cursor position. The kill buffer itself is not changed.
X
X
X 3.7 Search and Replace Commands
X
X BEAV has very powerful search and replace commands. The
Xsearch and replace string can be entered in any of the display
Xmodes. The search and replace strings can each be up to 256
Xbytes long. The display mode can be changed at any time while
X
X
X
X 19
X
X BEAV User Manual
X
X
Xentering the string. Wild cards can be placed down to the bit
Xlevel on both the search and replace strings. The wild card
Xcharacter, '?', will match any value that it is compared with.
X
X When a wild card is placed in the replace string it leaves
Xthe destination data unchanged at that position. Thus, if the
Xdestination contains the ASCII string '41 42 43 44' and the
Xreplace string contains '66 67 ?? 69' the result would be '66 67
X43 69'.
X
X Wild cards can be placed in any position that makes sense.
XIf you want to use wild cards in an ASCII string then you must
Xswitch to another mode to enter them. You can then switch back
Xto ASCII mode. In this case a '?' will appear in the position
Xwhere the wild card has been placed but it appears exactly the
Xsame as a standard question mark. In fact if you type a '?'
Xover the wild card there will be no apparent change. However,
Xthe character will no longer be a wild card but a standard
Xquestion mark. To see the true wild cards you must use a data
Xdisplay mode. In fact if the wild card has been set on the bit
Xlevel then you must go to binary display mode to see its actual
Xposition.
X
X The commands to change the display mode in search and
Xreplace are the same as for the window display mode. The search
Xand replace strings can be scrolled back an forth and the cursor
Xmoved using the same commands as for the window. While
Xperforming a replace command you can switch between the search
Xstring and replace string by using the 'move-back-page' or 'move-
Xforw-page' commands.
X
X Esc S search-forw F3
X
X Prompts for a search string then searches from the current
Xcursor position for the first match. The cursor is positioned
Xat the first unit of the match.
X
X Esc R search-back
X
X This command is the same as the previous one except that it
Xsearches backward.
X
X Esc T search-again F4
X
X This command repeats the previous search command, forward
Xor backward. The cursor is first moved one byte in the
Xappropriate direction before the search is repeated.
X
X Esc % replace F5
X
X Prompt for search string. After entering the search
Xstring hit return and you will be prompted for the replace
Xstring. After entering the replace string hit return. BEAV
Xwill then search for the first match with the search string. If
X
X
X
X 20
X
X BEAV User Manual
X
X
Xa match is found you will be prompted with '(R)eplace, (S)kip,
X(A)ll, (O)ne, (Q)uit'
X
X If you type a 'R' the replace will be done at this location
Xand the search will continue. If you type a 'S' the replace
Xwill not be done and search will continue. If you type an 'A'
Xthe replace will be done and will be done at all future matches
Xwithout pausing for conformation. If you type an 'O' the
Xreplace will be done at this location and the search will stop.
XIf you type a 'Q' then the search will be terminated.
X
X Ctl-R recall-srch-string
X
X If you enter search or replace previously used strings can
Xbe recalled with this command.
X
X
X 3.8 Exiting BEAV
X
X While using BEAV individual buffers may be saved to disk
Xduring the editing session. When quitting BEAV you must save
Xall buffers or delete all buffers. There are two commands that
Xdo this.
X
X Ctl-C quit-no-save Sh-F10
X
X If there are any unsaved buffers you will be prompted for
Xconformation before proceeding. All buffers will be deleted
Xthen you will return to DOS.
X
X Ctl-X Ctl-E quit-save-all Sh-F9
X
X All buffers are saved before exiting to DOS.
X
X
X 3.9 Printing
X
X The data that is being displayed in BEAV can be printed or
Xsent to a file in the same format as displayed. If the current
Xwindow is displaying octal words and a print command is given the
Xformat of the print will be in the format of the window; that is,
Xoctal words.
X
X Esc P print-mark-to-cursor Ctl-Print
X
X To use this command you must set the mark and the cursor to
Xdefine the region that you want printed. If the mark is not set
Xit as assumed to be at the first unit. After you enter the
Xcommand you will be prompted with 'Print to:'. You can enter a
Xfile name or a device name to send the print image to. If you
Xenter 'PRN' most systems will print a hard copy.
X
X This is useful for getting a print out of the current key
Xbindings. To do this give the 'help' command 'F1'. Go to the
X
X
X
X 21
X
X BEAV User Manual
X
X
Xbottom of the help window using the 'move-to-end' command 'End',
Xthe mark will be assumed to be at the beginning of the buffer.
XIssue the 'print-mark-to-cursor' command. Enter 'PRN' at the
Xprompt. This should print the complete help buffer and will
Xreflect any changes that you have made to the key bindings.
X
X
X 3.10 Keyboard Macros
X
X BEAV has the capability of recording key strokes as they
Xare entered and playing them back later. This is useful for
Xrepeating multi-keystroke operations.
X
X Ctl-X ( macro-start
X
X Start recording key strokes. There is no effect on the
Xoperation of the key strokes. Any previous recorded key strokes
Xare cleared.
X
X Ctl-X ) macro-end
X
X Stop recording key strokes. The key strokes are available
Xfor play back.
X
X Ctl-X E macro-execute
X
X Play back the recorded key strokes. The key strokes that
Xwere recorded are played back as if they were typed at the
Xkeyboard.
X
X
X 3.11 Key Binding
X
X BEAV provides a user configurable interface. The
Xinterface is controlled by a set of key bindings. This relates
Xthe command that will be executed when a particular key stroke is
Xentered. There are a set of default key bindings as described
Xin this manual. These can be changed to reflect your
Xpreferences. When a change is made it is reflected in the help
Xscreen.
X
X Ctl-X ? binding-for-key Sh-F1
X
X This command will tell you what function a certain key
Xsequence is bound to. When this command is given you will be
Xprompted for a key stroke or key stroke sequence. BEAV will
Xreport back with the function name.
X
X Esc K bind-to-key
X
X First you will prompted for a function name. Enter the
Xname of the function that you wish to create a new binding for.
XFunction names are the names listed in this manual that are of
Xthe form of 'move-forw-unit' or 'display-hex'. After you enter
X
X
X
X 22
X
X BEAV User Manual
X
X
Xthe name hit return. You will be prompted for a key. This can
Xbe in the form of a single standard key such as 'Z'. Standard
Xkey sequences can be entered such as 'Ctl-X Z'
Xor 'Esc Z'. Special keys can be entered such as 'F1' (function
Xkey 1) or 'Page Down'. It is probably a good idea to not use
Xkeys that are needed for editing. If you bound 'Z' to a
Xfunction then you would not be able to enter it as a keystroke
Xwhen using ASCII display mode. You could still enter it using
Xthe 'insert-literally' command or doing it in one of the data
Xdisplay modes but this would be more cumbersome.
X
X Ctl-X L bindings-load
X
X You are prompted for a file name that contains the key
Xbinding that you wish to set. This file is read in and the
Xappropriate bindings are set. The text in the binding file
Xshould be of the form;
X
X<key name> <function name> <key code>
X
X For example;
X
XCtl-X Ctl-P move-back-char 0550
XF1 move-forw-char 04bb
XCtl-A move-forw-unit 0141
XEsc Ctl-T move-back-unit 0354
X
X The easiest way of producing a valid key binding file is to
Xset the desired bindings in BEAV. Next issue the 'help' command
X(ESC ?), then write the buffer out with the file-write command
X(Ctl-X Ctl-W). The file created will be a valid format for
Xloading and can be edited as desired. It is the only reliable
Xway to get the <key code> number.
X
X
X 3.12 Special Functions
X
X These are the commands that do not logically fit under one
Xof the previous headings
X
X Gtl-G abort-cmd F10
X
X This command aborts the current command. It can even
Xabort a partially entered command. Thus, if you have typed an
X'Esc' as that start of a command you can type Ctl-G to return to
Xthe normal command entry mode.
X
X Esc A auto-save
X
X BEAV can be set to automatically save the current buffer
Xafter a specified number of buffer editing commands are given.
XThis command first prompts for the number of operations before
Xthe save is made. If a zero is entered at the prompt, this
X
X
X
X
X 23
X
X BEAV User Manual
X
X
Xfeature is disabled. The default condition of this command is
Xdisabled.
X
X Esc C compare
X
X This is a powerful feature of BEAV. The contents of two
Xwindows are compared byte for byte from the current cursor
Xposition in each window. There must be exactly two windows to
Xuse this command. These windows can be displaying the same or
Xdifferent buffers. When a difference is found the cursor in
Xeach window is moved to that position and both windows are moved
Xaccordingly. The display mode does not affect the operation of
Xthis command except in restricting the cursor position to whole
Xunits.
X
X Esc X extended-command
X
X If any command looses its binding, this command allows the
Xunbound command to be used. A command can loose its binding
Xbecause the binding was assigned to another command. When this
Xcommand is given you will be prompted for a command name. Enter
Xthe command name that you wish to execute, it will be executed as
Xif you had typed its key binding.
X
X Esc Ctl-F n-way-combine
X
X The contents of other windows can be copied sequentially
Xinto the current window. This is useful in combining odd-even
Xproms into an executable image file. To use this command create
Xan empty window with a buffer file name of an empty or
Xnonexistent file. Read into additional windows the files that
Xyou want to combine. While in the empty target window, issue
Xthe n-way-combine command. The data in the other windows will
Xbe read into the current window. The next window lower on the
Xscreen will be read first, then the one below that, etc.
X
X For example; if you had two files, promlow.bin and
Xpromhi.bin that you wanted to combine into a file called
Xprom.bin. First issue the file-visit command (Ctl-X Ctl-V),
Xenter prom.bin at the prompt. This file should be empty of non-
Xexistent. Next read promlow.bin into a new window with the
Xfile-visit-split command (Esc U), enter promlow.bin at the
Xprompt. Open another window for promhi.bin with the same
Xcommand. Go to the window containing prom.bin (empty). Issue
Xthe n-way-combine command. BEAV will copy the first byte from
Xthe window immediately below the prom.bin window and deposit it
Xin the destination window buffer as well as advance the dot
Xposition in both windows. It will advance to the next lower
Xwindow and copy a byte from there into the destination window and
Xadvance the dot in both windows. This process will continue
Xuntil one of the source buffers is exhausted, or the user
Xterminates the command.
X
X
X
X
X
X 24
X
X BEAV User Manual
X
X
X The user must take care that the source buffers are in the
Xcorrect order. They are read starting at the window immediately
Xbelow the current window. If the target window is at the bottom
Xof the screen then it wraps to the top. In this way any order
Xcan be used and changed at will.
X
X Esc Ctl-S n-way-split
X
X This command is the mirror image of the n-way-combine.
XThe data in the current window is distributed among the rest of
Xthe window buffers displayed. The current window buffer must be
Xthe only window buffer that contains data. If there are two
Xother empty window buffers then the data will be divided two
Xways. If there are five then the data will be divided five ways
X
X Ctl-L refresh-screen
X
X The screen is reprinted from BEAV's internal buffer. This
Xis useful if the display is messed up due to transmission errors.
XOn a PC this is unlikely to happen.
X
X Esc Ctl-V show-version
X
X The version and date of BEAV is displayed in the command
Xline.
X
X Ctl-X C spawn-shell
X
X A new MSDOS command shell is created. You can return to
XBEAV by typing 'exit'.
X
X Ctl-U repeat count
X
X This command prompts for a number to be entered. This
Xcauses the next command given to be repeated by that number of
Xtimes. This command cannot have it's binding changed and cannot
Xbe issued using the 'extended-command' function.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X 25
X
X BEAV User Manual
X
X
X 4. Alphabetical list of commands by
Xname
X
XCommand Key Binding Manual Section
X------- ----------- --------------
Xabort-cmd Ctl-G 3.12
Xabort-cmd Ctl-X Ctl-G 3.12
Xabort-cmd Esc Ctl-G 3.12
Xabort-cmd F10 3.12
Xauto-save Esc A 3.12
Xbind-to-key Esc K 3.11
Xbinding-for-key Ctl-X ? 3.11
Xbinding-for-key Sh-F1 3.11
Xbindings-load Ctl-X L 3.11
Xbuffer-set-file-name Ctl-F7 3.3
Xbuffer-set-file-name Ctl-X Ctl-F 3.3
Xbuffer-set-file-name Sh-F7 3.3
Xbuffer-set-name Esc Ctl-N 3.3
Xbuffer-size-lock Ctl-X Ctl-L 3.3
Xbuffers-display Ctl-F1 3.3
Xbuffers-display Ctl-X Ctl-B 3.3
Xchange-buffer Ctl-F2 3.3
Xchange-buffer Ctl-X B 3.3
Xchange-to-next-buffer Ctl-F4 3.3
Xchange-to-next-buffer Esc + 3.3
Xchange-to-prev-buffer Ctl-F5 3.3
Xchange-to-prev-buffer Esc - 3.3
Xchange-window-back Ctl-PageUp 3.5
Xchange-window-back Ctl-X P 3.5
Xchange-window-forw Ctl-PageDown 3.5
Xchange-window-forw Ctl-X N 3.5
Xcompare Esc C 3.12
Xcopy-mark-to-cursor Esc W 3.6
Xcopy-mark-to-cursor F7 3.6
Xdelete-back-char Backspace 3.6
Xdelete-back-char Rubout 3.6
Xdelete-back-unit Esc Ctl-K 3.6
Xdelete-back-unit Esc Rubout 3.6
Xdelete-forw-char Ctl-D 3.6
Xdelete-forw-char Delete 3.6
Xdelete-forw-unit Esc D 3.6
Xdelete-mark-to-cursor Ctl-W 3.6
Xdelete-mark-to-cursor F8 3.6
Xdisplay-ascii Esc Ctl-A 3.5
Xdisplay-binary Esc Ctl-B 3.5
Xdisplay-byte-shift Ctl-A 3.5
Xdisplay-bytes Esc 1 3.5
Xdisplay-decimal Esc Ctl-D 3.5
Xdisplay-double-words Esc 4 3.5
Xdisplay-ebcdic Esc Ctl-E 3.5
Xdisplay-hex Esc Backspace 3.5
Xdisplay-octal Esc Ctl-O 3.5
Xdisplay-swap-order Ctl-E 3.5
Xdisplay-words Esc 2 3.5
X
X
X
X 26
X
X BEAV User Manual
X
X
Xextended-command Esc X 3.12
Xfile-read Ctl-X Ctl-R 3.4
Xfile-read Sh-F2 3.4
Xfile-save Ctl-X Ctl-S 3.4
Xfile-save Sh-F3 3.4
Xfile-view Ctl-X V 3.4
Xfile-visit Ctl-X Ctl-V 3.4
Xfile-visit Sh-F4 3.4
Xfile-visit-split Esc U 3.4
Xfile-write Ctl-X Ctl-W 3.4
Xfile-write Sh-F5 3.4
Xhelp Esc ? 3.1
Xhelp F1 3.1
Xinsert-file Ctl-F8 3.4
Xinsert-file Ctl-X Tab 3.4
Xinsert-file Sh-F8 3.4
Xinsert-literally Ctl-Q 3.6
Xinsert-literally Esc Q 3.6
Xinsert-toggle Ctl-X Ctl-A 3.6
Xinsert-toggle Insert 3.6
Xinsert-unit Ctl-X I 3.6
Xkill-buffer Ctl-F3 3.3
Xkill-buffer Ctl-X K 3.3
Xmacro-end Ctl-X ) 3.10
Xmacro-execute Ctl-X E 3.10
Xmacro-start Ctl-X ( 3.10
Xmark-set Esc . 3.2
Xmark-set F2 3.2
Xmove-back-char Ctl-B 3.2
Xmove-back-char West 3.2
Xmove-back-line Ctl-P 3.2
Xmove-back-line North 3.2
Xmove-back-page Esc V 3.2
Xmove-back-page PageDown 3.2
Xmove-back-unit Ctl-West 3.2
Xmove-back-unit Esc B 3.2
Xmove-forw-char Ctl-F 3.2
Xmove-forw-char East 3.2
Xmove-forw-line Ctl-N 3.2
Xmove-forw-line South 3.2
Xmove-forw-page Ctl-V 3.2
Xmove-forw-page PageUp 3.2
Xmove-forw-unit Ctl-East 3.2
Xmove-forw-unit Esc F 3.2
Xmove-forw-unit Sh-Tab 3.2
Xmove-to-beginning Esc < 3.2
Xmove-to-beginning Home 3.2
Xmove-to-buffer-split Esc G 3.2
Xmove-to-byte Ctl-X G 3.2
Xmove-to-byte F9 3.2
Xmove-to-end End 3.2
Xmove-to-end Esc > 3.2
Xmove-window-down Ctl-X Ctl-N 3.2
Xmove-window-down Ctl-Z 3.2
X
X
X
X 27
X
X BEAV User Manual
X
X
Xmove-window-up Ctl-X Ctl-P 3.2
Xmove-window-up Esc Z 3.2
Xn-way-combine Esc Ctl-F 3.12
Xn-way-split Esc Ctl-S 3.12
Xprint-mark-to-cursor Ctl-Print 3.9
Xprint-mark-to-cursor Esc P 3.9
Xquit-no-save Ctl-C 3.8
Xquit-no-save Ctl-F10 3.8
Xquit-no-save Ctl-X Ctl-C 3.8
Xquit-no-save Sh-F10 3.8
Xquit-save-all Ctl-F9 3.8
Xquit-save-all Ctl-X Ctl-E 3.8
Xquit-save-all Sh-F9 3.8
Xrecall-srch-string Ctl-R 3.7
Xrefresh-screen Ctl-L 3.12
Xreplace Esc % 3.7
Xreplace F5 3.7
Xsave-all-buffers Ctl-X Return 3.4
Xsave-all-buffers Sh-F6 3.4
Xsave-mark-to-cursor Esc O 3.3
Xsearch-again Esc T 3.7
Xsearch-again F4 3.7
Xsearch-back Esc R 3.7
Xsearch-forw Esc S 3.7
Xsearch-forw F3 3.7
Xshow-position Ctl-X = 3.2
Xshow-save-buf Esc Ctl-W 3.3
Xshow-version Esc Ctl-V 3.12
Xspawn-shell Ctl-X C 3.12
Xswap-cursor-and-mark Ctl-X Ctl-X 3.2
Xunit-twiddle Ctl-T 3.6
Xwindow-delete Ctl-X 0 3.5
Xwindow-enlarge Ctl-X Z 3.5
Xwindow-link Esc L 3.2
Xwindow-reposition Esc ! 3.5
Xwindow-shrink Ctl-X Ctl-Z 3.5
Xwindow-single Ctl-X 1 3.5
Xwindow-split Ctl-X 2 3.5
Xyank Ctl-Y 3.6
Xyank F6 3.6
Xyank-buffer Ctl-F6 3.3
Xyank-buffer Esc Y 3.3
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X 28
X
X BEAV User Manual
X
X
X 5. Alphabetical list of commands by key binding
X
XCommand Key Binding Manual Section
X------- ----------- --------------
Xdelete-back-char Backspace 3.6
Xdisplay-byte-shift Ctl-A 3.5
Xmove-back-char Ctl-B 3.2
Xquit-no-save Ctl-C 3.8
Xdelete-forw-char Ctl-D 3.6
Xdisplay-swap-order Ctl-E 3.5
Xmove-forw-unit Ctl-East 3.2
Xmove-forw-char Ctl-F 3.2
Xbuffers-display Ctl-F1 3.3
Xquit-no-save Ctl-F10 3.8
Xchange-buffer Ctl-F2 3.3
Xkill-buffer Ctl-F3 3.3
Xchange-to-next-buffer Ctl-F4 3.3
Xchange-to-prev-buffer Ctl-F5 3.3
Xyank-buffer Ctl-F6 3.3
Xbuffer-set-file-name Ctl-F7 3.3
Xinsert-file Ctl-F8 3.4
Xquit-save-all Ctl-F9 3.8
Xabort-cmd Ctl-G 3.12
Xrefresh-screen Ctl-L 3.12
Xmove-forw-line Ctl-N 3.2
Xmove-back-line Ctl-P 3.2
Xchange-window-forw Ctl-PageDown 3.5
Xchange-window-back Ctl-PageUp 3.5
Xprint-mark-to-cursor Ctl-Print 3.9
Xinsert-literally Ctl-Q 3.6
Xrecall-srch-string Ctl-R 3.7
Xunit-twiddle Ctl-T 3.6
Xmove-forw-page Ctl-V 3.2
Xdelete-mark-to-cursor Ctl-W 3.6
Xmove-back-unit Ctl-West 3.2
Xmacro-start Ctl-X ( 3.10
Xmacro-end Ctl-X ) 3.10
Xwindow-delete Ctl-X 0 3.5
Xwindow-single Ctl-X 1 3.5
Xwindow-split Ctl-X 2 3.5
Xshow-position Ctl-X = 3.2
Xbinding-for-key Ctl-X ? 3.11
Xchange-buffer Ctl-X B 3.3
Xspawn-shell Ctl-X C 3.12
Xinsert-toggle Ctl-X Ctl-A 3.6
Xbuffers-display Ctl-X Ctl-B 3.3
Xquit-no-save Ctl-X Ctl-C 3.8
Xquit-save-all Ctl-X Ctl-E 3.8
Xbuffer-set-file-name Ctl-X Ctl-F 3.3
Xabort-cmd Ctl-X Ctl-G 3.12
Xbuffer-size-lock Ctl-X Ctl-L 3.3
Xmove-window-down Ctl-X Ctl-N 3.2
Xmove-window-up Ctl-X Ctl-P 3.2
Xfile-read Ctl-X Ctl-R 3.4
X
X
X
X 29
X
X BEAV User Manual
X
X
Xfile-save Ctl-X Ctl-S 3.4
Xfile-visit Ctl-X Ctl-V 3.4
Xfile-write Ctl-X Ctl-W 3.4
Xswap-cursor-and-mark Ctl-X Ctl_X 3.2
Xwindow-shrink Ctl-X Ctl-Z 3.5
Xmacro-execute Ctl-X E 3.10
Xmove-to-byte Ctl-X G 3.2
Xinsert-unit Ctl-X I 3.6
Xkill-buffer Ctl-X K 3.3
Xbindings-load Ctl-X L 3.11
Xchange-window-forw Ctl-X N 3.5
Xchange-window-back Ctl-X P 3.5
Xsave-all-buffers Ctl-X Return 3.4
Xinsert-file Ctl-X Tab 3.4
Xfile-view Ctl-X V 3.4
Xwindow-enlarge Ctl-X Z 3.5
Xyank Ctl-Y 3.6
Xmove-window-down Ctl-Z 3.2
Xdelete-forw-char Delete 3.6
Xmove-forw-char East 3.2
Xmove-to-end End 3.2
Xwindow-reposition Esc ! 3.5
Xreplace Esc % 3.7
Xchange-to-next-buffer Esc + 3.3
Xchange-to-prev-buffer Esc - 3.3
Xmark-set Esc . 3.2
Xdisplay-bytes Esc 1 3.5
Xdisplay-words Esc 2 3.5
Xdisplay-double-words Esc 4 3.5
Xmove-to-beginning Esc < 3.2
Xmove-to-end Esc > 3.2
Xhelp Esc ? 3.1
Xauto-save Esc A 3.12
Xmove-back-unit Esc B 3.2
Xdisplay-hex Esc Backspace 3.5
XCompare Esc C 3.12
Xdisplay-ascii Esc Ctl-A 3.5
Xdisplay-binary Esc Ctl-B 3.5
Xdisplay-decimal Esc Ctl-D 3.5
Xdisplay-ebcdic Esc Ctl-E 3.5
Xn-way-combine Esc Ctl-F 3.12
Xabort-cmd Esc Ctl-G 3.12
Xdelete-back-unit Esc Ctl-K 3.6
Xbuffer-set-name Esc Ctl-N 3.3
Xdisplay-octal Esc Ctl-O 3.5
Xn-way-split Esc Ctl-S 3.12
Xshow-version Esc Ctl-V 3.12
Xshow-save-buf Esc Ctl-W 3.3
Xdelete-forw-unit Esc D 3.6
Xmove-forw-unit Esc F 3.2
Xmove-to-buffer-split Esc G 3.2
Xbind-to-key Esc K 3.11
Xwindow-link Esc L 3.2
Xsave-mark-to-cursor Esc O 3.3
X
X
X
X 30
X
X BEAV User Manual
X
X
Xprint-mark-to-cursor Esc P 3.9
Xinsert-literally Esc Q 3.6
Xsearch-back Esc R 3.7
Xdelete-back-unit Esc Rubout 3.6
Xsearch-forw Esc S 3.7
Xsearch-again Esc T 3.7
Xfile-visit-split Esc U 3.4
Xmove-back-page Esc V 3.2
Xcopy-mark-to-cursor Esc W 3.6
Xextended-command Esc X 3.12
Xyank-buffer Esc Y 3.3
Xmove-window-up Esc Z 3.2
Xhelp F1 3.1
Xabort-cmd F10 3.12
Xmark-set F2 3.2
Xsearch-forw F3 3.7
Xsearch-again F4 3.7
Xreplace F5 3.7
Xyank F6 3.6
Xcopy-mark-to-cursor F7 3.6
Xdelete-mark-to-cursor F8 3.6
Xmove-to-byte F9 3.2
Xmove-to-beginning Home 3.2
Xinsert-toggle Insert 3.6
Xmove-back-line North 3.2
Xmove-back-page PageDown 3.2
Xmove-forw-page PageUp 3.2
Xdelete-back-char Rubout 3.6
Xbinding-for-key Sh-F1 3.11
Xquit-no-save Sh-F10 3.8
Xfile-read Sh-F2 3.4
Xfile-save Sh-F3 3.4
Xfile-visit Sh-F4 3.4
Xfile-write Sh-F5 3.4
Xsave-all-buffers Sh-F6 3.4
Xbuffer-set-file-name Sh-F7 3.3
Xinsert-file Sh-F8 3.4
Xquit-save-all Sh-F9 3.8
Xmove-forw-unit Sh-Tab 3.2
Xmove-forw-line South 3.2
Xmove-back-char West 3.2
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X 31
X
X BEAV User Manual
X
X
X 6. Release notes
X
X
X Version 1.20 (3/10/91) of BEAV contains the following fixes
Xand enhancements;
X
X* Under unix files are created with read/write
X permissions.
X
X* Fixed the bug in the terminal I/O routine that caused
X BEAV to spin rather than give up control when waiting for a
X character.
X
X* Added the ANSI #define that was missing for MSDOS.
X
X* Changed the D16 #define to a unsigned short.
X
X* Called ttclose on error exit.
X
X* Check and limit ncol and nrow to the actual screen
X array size.
X
X* Add the ability to load key bindings from a file
X automatically under MSDOS and unix.
X
X* Add delete current window command.
X
X* Support VT100 type function keys.
X
X
X Version 1.30 (7/1/91) of BEAV contains the following fixes
Xand enhancements;
X
X* Under MSDOS and 16 bit UNIX systems the kill or copy
X region could not be over 64K bytes. This limit has been
X eliminated.
X
X* The save buffer can be made visible with the Esc Ctl-
X W command. The save buffer is not editable.
X
X* All memory allocation errors now pause and ask for
X conformation before continuing. In previous releases only
X an error message was printed. Since an allocation error
X generally means data loss, I have forced the user to
X respond. Memory allocation errors are not otherwise fatal
X to BEAV, they are probably fatal to the user's data. The
X decision is left to the user with the appropriate warning.
X
X* Two commands have been added to aid in working with
X PROM files; n-way-split (Esc Ctl-S) and n-way-combine (Esc
X Ctl-F).
X
X* The speed of the delete-mark-to-cursor (Ctl-W)
X command has been greatly improved.
X
X
X
X 32
X
X BEAV User Manual
X
X
X
X* All commands that can potentially take a lot of time
X can be stopped by pressing Ctl-G.
X
X
X Version 1.31 (11/2/91) of BEAV contains the following
Xfixes;
X
X* A serious bug that causes a crash on systems that
X trapped the use of dereferenced pointers has been fixed.
X
X* Beav now names the backup file properly under unix.
X Previously; if a dot file (.<filename>) was edited, the
X backup file was given a garbage name. Now, a backup file
X simply has ".bak" appended to the file name.
X
X* You can use the buffers-display (Ctl-X, Ctl-B)
X command to; go to, kill, or save a buffer.
X
X* A compile flag for DEC ULTRA was created and a
X makeable is included in this release (makefile.utx).
X
X* When a large region was deleted the offset value was
X displayed wrong, this is now fixed.
X
X* A bug in the parse_f_name that trashed a variable is
X now fixed.
X
X* Regions of never used code have been deleted.
X
X* Under UNIX the file permissions are maintained
X correctly when the file is saved.
X
X* A number of un-niceities that lint reported have been
X fixed.
X
X
X Version 1.32 (11/8/91) of BEAV contains the following
Xenhancements;
X
X* BEAV will now compile and run on the Amiga computer.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X 33
X
X BEAV User Manual
X
X
X 7. Source Availability
X
X The source and MSDOS executable BEAV has been posted on
Xnews to comp.sources.misc.
X
X The MSDOS executable has been posted to the
Xcomp.binaries.ibm.pc news group. This is archived at SIMTEL20
Xin PD1:<MSDOS.FILUTL>BEAV131.ZIP.
X
X If anyone does not have access to usenet, I will mail a
Xcopy of the source on floppy for $20.00 copying charge. The
Xfloppies can be in MSDOS file format or UNIX tar format. I can
Xalso supply either QIC-24, QIC-120, QIC-150, or 9 track reel to
Xreel tape. The price for the tape will include the cost of the
Xmedia.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X 34
END_OF_FILE
if test 37937 -ne `wc -c <'beav132b.txt'`; then
echo shar: \"'beav132b.txt'\" unpacked with wrong size!
fi
# end of 'beav132b.txt'
fi
echo shar: End of archive 1 \(of 9\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 9 archives.
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still must unpack the following archives:
echo " " ${MISSING}
fi
exit 0
exit 0 # Just in case...