home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-11-21 | 54.5 KB | 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...
-