home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume26 / beav / part01 next >
Text File  |  1991-11-21  |  56KB  |  1,720 lines

  1. Newsgroups: comp.sources.misc
  2. From: pvr@wang.com (Peter Reilley)
  3. Subject:  v26i037:  beav - Binary file editor and viewer, v1.32, Part01/09
  4. Message-ID: <csm-v26i037=beav.165530@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 68708604e3d80104b5208e2185082316
  6. Date: Thu, 21 Nov 1991 23:00:38 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: pvr@wang.com (Peter Reilley)
  10. Posting-number: Volume 26, Issue 37
  11. Archive-name: beav/part01
  12. Environment: UNIX, AIX, MS-DOS, AMIGA
  13. Supersedes: beav: Volume 22, Issue 10-18
  14.  
  15. This release 1.32 of BEAV (Binary Editor And Viewer), a full featured 
  16. binary file editor.  Just about any operation that you could want to do 
  17. to a binary file is possible with BEAV.   You can insert or delete in 
  18. the middle of a file thereby changing it's size.  You can display and 
  19. edit data in hex, octal, decimal, binary, ascii, or ebcdic formats.   
  20. You can display data in byte, word, or long word formats in either 
  21. Intel or Motorola byte ordering.   You can send the formatted display 
  22. mode to a file or printer.
  23.  
  24.       Version 1.32  (8/08/91)  of  beav  contains  the  following
  25. fixes and enhancements;
  26.  
  27. *           A serious bug that causes a crash on systems that
  28.       trapped the use of dereferenced pointers has been fixed.
  29.  
  30. *           Beav now names the backup file properly under unix.
  31.       Previously; if a dot file (.<filename>) was edited, the
  32.       backup file was given a garbage name.   Now, a backup file
  33.       simply has ".bak" appended to the file name.
  34.  
  35. *           You can use the buffers-display (Ctl-X, Ctl-B)
  36.       command to; go to, kill, or save a buffer.
  37.  
  38. *           A compile flag for DEC ULTRA was created and a
  39.       makeable is included in this release (makefile.utx).
  40.  
  41. *           When a large region was deleted the offset value was
  42.       displayed wrong, this is now fixed.
  43.  
  44. *           A bug in the parse_f_name that trashed a variable is
  45.       now fixed.
  46.  
  47. *           Regions of never used code have been deleted.
  48.  
  49. *           Under UNIX the file permissions are maintained
  50.       correctly when the file is saved.
  51.  
  52. *           A number of un-niceities that lint reported have been
  53.       fixed.
  54.  
  55. *           BEAV will now compile and run on the Amiga computer.
  56.  
  57.  
  58.     BEAV is based on the source for emacs for display and keyboard handling 
  59. functions.   The binary file handling and display formats are special
  60. to BEAV.   There is a full manual included in this release.   There
  61. are makefiles for unix, xenix 286, amiga, and MSC 5.1 under DOS.   The old 
  62. Wang PC is supported.   This has been tested on 286 and 386 PC's under SCO 
  63. UNIX and XENIX and AIX on a RS6000.   There are a number of makefiles 
  64. included; select the appropriate one and rename it to makefile.
  65.  
  66.     I am willing to maintain BEAV and will entertain suggestions for
  67. modifications and/or bug fixes.   I can be reached at;
  68.  
  69.         pvr@wang.com
  70.  
  71. or at;
  72.  
  73.         Peter Reilley
  74.         19 Heritage Cir.
  75.         Hudson, N.H. 03051
  76. ------
  77. #! /bin/sh
  78. # This is a shell archive.  Remove anything before this line, then feed it
  79. # into a shell via "sh file" or similar.  To overwrite existing files,
  80. # type "sh file -c".
  81. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  82. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  83. # Contents:  basic.c beav132b.txt
  84. # Wrapped by kent@sparky on Thu Nov 21 16:46:59 1991
  85. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  86. echo If this archive is complete, you will see the following message:
  87. echo '          "shar: End of archive 1 (of 9)."'
  88. if test -f 'basic.c' -a "${1}" != "-c" ; then 
  89.   echo shar: Will not clobber existing file \"'basic.c'\"
  90. else
  91.   echo shar: Extracting \"'basic.c'\" \(11657 characters\)
  92.   sed "s/^X//" >'basic.c' <<'END_OF_FILE'
  93. X/*
  94. X*      Basic cursor motion commands.
  95. X* The routines in this file are the basic
  96. X* command functions for moving the cursor around on
  97. X* the screen, setting mark, and swapping dot with
  98. X* mark. Only moves between lines, which might make the
  99. X* current buffer framing bad, are hard.
  100. X*/
  101. X
  102. X#include    "def.h"
  103. X
  104. Xbool    move_ptr ();
  105. Xbool    forwchar ();
  106. Xbool    wind_on_dot ();
  107. Xbool    backline ();
  108. X
  109. Xextern    char    MSG_mark_set[];
  110. Xextern    char    MSG_no_mark[];
  111. Xextern    char    MSG_go_b_n[];
  112. Xextern    char    MSG_bad_num[];
  113. X#if RUNCHK
  114. Xextern    char    ERR_bas_1[];
  115. X#endif
  116. Xextern    char    MSG_lX[];
  117. Xextern    char    MSG_lO[];
  118. Xextern    char    MSG_lD[];
  119. X
  120. X
  121. Xextern  bool    rplc_mode;
  122. X
  123. X/*  pvr
  124. X* Move cursor backwards. Do the
  125. X* right thing if the count is less than
  126. X* 0. Error if you try to move back from
  127. X* the beginning of the buffer.
  128. X*/
  129. Xbool backchar (f, n, k)
  130. Xregister int    n;
  131. X{
  132. X    if (n < 0)
  133. X        return (forwchar (f, -n, KRANDOM));
  134. X
  135. X    while (n--)
  136. X    {
  137. X        if (curwp -> w_unit_offset == 0)
  138. X        {
  139. X            if (!move_ptr (curwp,  -(long)R_B_PER_U(curwp),
  140. X                TRUE, TRUE, TRUE))
  141. X                return (FALSE);
  142. X
  143. X            /* step to previous unit */
  144. X            curwp -> w_unit_offset = R_CHR_PER_U(curwp) - 1;
  145. X
  146. X            /* if before first line in window then move window */
  147. X            wind_on_dot (curwp);
  148. X        }
  149. X        else
  150. X            curwp -> w_unit_offset--;
  151. X    }
  152. X    curwp -> w_flag |= WFMODE;  /* update mode line */
  153. X    return (TRUE);
  154. X}
  155. X
  156. X/*  pvr
  157. X* Move cursor forwards. Do the
  158. X* right thing if the count is less than
  159. X* 0. Error if you try to move forward
  160. X* from the end of the buffer.
  161. X*/
  162. Xbool forwchar (f, n, k)
  163. Xregister int    n;
  164. X{
  165. X    if (n < 0)
  166. X        return (backchar (f, -n, KRANDOM));
  167. X
  168. X    curwp -> w_flag |= WFMODE;  /* update mode line */
  169. X    while (n--)
  170. X    {
  171. X        if (curwp -> w_unit_offset >= (R_CHR_PER_U(curwp) - 1))
  172. X        {
  173. X            /* move to the mext unit */
  174. X            curwp -> w_unit_offset = 0;
  175. X
  176. X            if (!move_ptr (curwp,  (long)R_B_PER_U(curwp),
  177. X                TRUE, TRUE, TRUE))
  178. X            {
  179. X                /* I am at the the end of the buffer */
  180. X                return (FALSE);
  181. X            }
  182. X
  183. X            /* if after the last line in window then move window */
  184. X            wind_on_dot (curwp);
  185. X        }
  186. X        else if/* if at last byte of buffer then do not step  */
  187. X        (DOT_POS(curwp) < BUF_SIZE(curwp))
  188. X            curwp -> w_unit_offset++;/* step within unit */
  189. X    }
  190. X    return (TRUE);
  191. X}
  192. X
  193. X/*  pvr
  194. X*   This function moves the specified pointer by the ammount specified
  195. X*   in 'len'.   Move the dot pointer is 'dot' is true, else move
  196. X*   the window pointer.  Do the fix up if 'fix' is TRUE.
  197. X*   This is a relative move if 'rel' is TRUE, else it is an
  198. X*   absolute move.
  199. X*/
  200. X
  201. Xbool    move_ptr (wp, len, dot, fix, rel)
  202. XWINDOW  *wp;
  203. Xlong    len;
  204. Xbool    dot, fix, rel;
  205. X{
  206. X    A32     cur_pos, dest_pos, fix_val, last_pos;
  207. X    long    rel_pos;
  208. X    A32     last_fixed_pos, align;
  209. X    LINE    **line;
  210. X    int     *l_off;
  211. X    char    shift;
  212. X    bool    no_limit;
  213. X
  214. X    no_limit = TRUE;
  215. X    if (dot)
  216. X    {                       /* move dot position */
  217. X        l_off = (int *)&wp -> w_doto;
  218. X        line = &wp -> w_dotp;
  219. X        align = R_SIZE(wp);  /* bytes -1 in a unit */
  220. X    }
  221. X    else
  222. X    {                       /* move window position */
  223. X        l_off = (int *)&wp -> w_loff;
  224. X        line = &wp -> w_linep;
  225. X        align = R_ALIGN(wp) - 1; /* interval of bytes to align window */
  226. X    }
  227. X
  228. X    /* get the current position in the buffer */
  229. X    cur_pos = (*line) -> l_file_offset + *l_off;
  230. X
  231. X    if (rel)
  232. X    {
  233. X        rel_pos = len;
  234. X        dest_pos = len + cur_pos;   /* destination position */
  235. X    }
  236. X    else
  237. X    {
  238. X        rel_pos = len - cur_pos;   /* relative move amount */
  239. X        dest_pos = len;   /* destination position */
  240. X    }
  241. X    if (fix)
  242. X    {
  243. X        shift = wp -> w_disp_shift;
  244. X
  245. X        /* limit at begining */
  246. X        if ((long)dest_pos < (long)shift)
  247. X        {
  248. X            rel_pos = shift - cur_pos;
  249. X            no_limit = FALSE;
  250. X        }
  251. X        else
  252. X        {
  253. X            /* calculate fixed up destination position */
  254. X            fix_val = dest_pos &= ~align;
  255. X            fix_val += shift;
  256. X
  257. X            /* calculate the last position in the buffer */
  258. X            last_pos = BUF_SIZE(wp);
  259. X            if (last_pos < (last_fixed_pos = (last_pos & ~align) + shift))
  260. X                last_pos = last_fixed_pos - align - 1;
  261. X
  262. X            /* if we are going to limit at the end of the buffer */
  263. X            if (last_pos < fix_val)
  264. X            {
  265. X                fix_val = last_pos;
  266. X                no_limit = FALSE;
  267. X            }
  268. X            rel_pos = fix_val - cur_pos;
  269. X        }
  270. X    }
  271. X    while (TRUE)
  272. X    {
  273. X        if (rel_pos < 0)       /* move  backward through buffer */
  274. X        {
  275. X            /* current line? */
  276. X            if (*l_off + rel_pos >= 0)
  277. X            {
  278. X                *l_off += (short) rel_pos;
  279. X                return (no_limit);
  280. X            }
  281. X            /* are we at the first line */
  282. X            if ((*line) -> l_bp -> l_size != 0)
  283. X            {               /* no, so step back */
  284. X                rel_pos += *l_off;
  285. X                (*line) = (*line) -> l_bp;/* move back one line */
  286. X                *l_off = (*line) -> l_used;
  287. X            }
  288. X            else
  289. X            {               /* yes, limit at the begining */
  290. X                *l_off = 0;
  291. X                return (FALSE);
  292. X            }
  293. X        }
  294. X        else /* move forward through buffer */
  295. X        {
  296. X            /* is in current line? */
  297. X            if (((A32)(*l_off) + rel_pos) < ((A32)((*line) -> l_used)))
  298. X            {
  299. X                *l_off += (short) rel_pos;
  300. X                return (no_limit);
  301. X            }
  302. X            if ((*line) -> l_fp -> l_size != 0)
  303. X            {
  304. X                rel_pos -= (*line) -> l_used - *l_off;
  305. X                *l_off = 0;
  306. X                (*line) = (*line) -> l_fp;/* move forward one line */
  307. X            }
  308. X            else
  309. X            {
  310. X                *l_off = (*line) -> l_used;/* at last line so limit it */
  311. X                return (FALSE);
  312. X            }
  313. X        }
  314. X    }
  315. X    return (TRUE);
  316. X}
  317. X
  318. X/*  pvr
  319. X*   Move the window so that the dot is within it's
  320. X*   area.   Return TRUE if window was moved.
  321. X*/
  322. X
  323. Xbool wind_on_dot (wp)
  324. X
  325. XWINDOW * wp;
  326. X{
  327. X    long    diff, incr;
  328. X    A32     d_offs, w_start, bytes, align;
  329. X
  330. X    /* number of bytes in a row */
  331. X    bytes = R_BYTES(wp);
  332. X    /* number of bytes to align on */
  333. X    align = R_ALIGN(wp);
  334. X    /* offset of window from start of the buffer */
  335. X    w_start = WIND_POS(wp);
  336. X    /* offset of dot from start of the buffer */
  337. X    d_offs = DOT_POS(wp);
  338. X    /* calculate the amount to move that is 1/3 of the window */
  339. X    incr = bytes * wp -> w_ntrows / 3;
  340. X    /* if dot is before first line in window */
  341. X    if ((diff = (d_offs - w_start)) < 0)/* diff used later */
  342. X    {
  343. X        move_ptr (wp, diff - incr, FALSE, TRUE, TRUE);
  344. X        wp -> w_flag |= WFHARD;
  345. X        return (TRUE);
  346. X    }
  347. X    /* if dot is after the last line in window */
  348. X    if (0 < (diff -= (wp -> w_ntrows * bytes - 1)))
  349. X    {
  350. X        if (align != 1)
  351. X            diff = (diff & ~(align - 1)) + align;
  352. X        move_ptr (wp, diff + incr, FALSE, TRUE, TRUE);
  353. X        wp -> w_flag |= WFHARD;
  354. X        return (TRUE);
  355. X    }
  356. X    /* is window aligned? */
  357. X    if (w_start != ((w_start & ~(align - 1)) + wp -> w_disp_shift))
  358. X    {                       /* if no then move into alignment */
  359. X        move_ptr (wp, 0L, FALSE, TRUE, TRUE);
  360. X        wp -> w_flag |= WFHARD;
  361. X        return (TRUE);
  362. X    }
  363. X    return (FALSE);
  364. X}
  365. X
  366. X/*  pvr
  367. X* Go to the beginning of the
  368. X* buffer. Setting WFHARD is conservative,
  369. X* but almost always the case.
  370. X*/
  371. Xbool gotobob ()
  372. X{
  373. X    move_ptr (curwp, 0L, TRUE, TRUE, FALSE);    /* move dot */
  374. X    move_ptr (curwp, 0L, FALSE, TRUE, FALSE);   /* move window */
  375. X    curwp -> w_unit_offset = 0;
  376. X    curwp -> w_flag |= WFHARD;
  377. X    return (TRUE);
  378. X}
  379. X
  380. X
  381. X/*  pvr
  382. X* Go to the end of the buffer.
  383. X* Setting WFHARD is conservative, but
  384. X* almost always the case.
  385. X* Dot is one byte past the end of the buffer.
  386. X*/
  387. Xbool gotoeob ()
  388. X{
  389. X    move_ptr (curwp, BUF_SIZE(curwp), TRUE, TRUE, FALSE);  /* move dot */
  390. X    curwp -> w_unit_offset = 0;
  391. X    wind_on_dot (curwp);
  392. X    return (TRUE);
  393. X}
  394. X
  395. X
  396. X/*  pvr
  397. X* Move forward by full lines.
  398. X* If the number of lines to move is less
  399. X* than zero, call the backward line function to
  400. X* actually do it. The last command controls how
  401. X* the goal column is set.
  402. X*/
  403. Xbool forwline (f, n, k)
  404. X{
  405. X    if (n < 0)
  406. X        return (backline (f, -n, KRANDOM));
  407. X
  408. X    if (rplc_mode)
  409. X    {
  410. X        next_pat ();
  411. X    }
  412. X    else
  413. X    {
  414. X        /* move dot */
  415. X        if (!move_ptr (curwp,  (long)R_BYTES(curwp) * n,
  416. X            TRUE, TRUE, TRUE))
  417. X            curwp -> w_unit_offset = 0;
  418. X        wind_on_dot (curwp);
  419. X        curwp -> w_flag |= WFMODE;  /* update mode line */
  420. X    }
  421. X    return (TRUE);
  422. X}
  423. X
  424. X
  425. X/*  pvr
  426. X* This function is like "forwline", but
  427. X* goes backwards. The scheme is exactly the same.
  428. X* Check for arguments that are less than zero and
  429. X* call your alternate. Figure out the new line and
  430. X* call "movedot" to perform the motion.
  431. X*/
  432. Xbool backline (f, n, k)
  433. X{
  434. X    if (n < 0)
  435. X        return (forwline (f, -n, KRANDOM));
  436. X
  437. X    if (rplc_mode)
  438. X    {
  439. X        next_pat ();
  440. X    }
  441. X    else
  442. X    {
  443. X        if (!move_ptr (curwp,  -((long)(R_BYTES(curwp) * n)),
  444. X            TRUE, TRUE, TRUE))
  445. X            curwp -> w_unit_offset = 0;
  446. X
  447. X        /* is dot before the top of window? */
  448. X        wind_on_dot (curwp);
  449. X        curwp -> w_flag |= WFMODE;  /* update mode line */
  450. X    }
  451. X    return (TRUE);
  452. X}
  453. X
  454. X/*  pvr
  455. X* Scroll forward by a specified number
  456. X* of lines, or by a full page if no argument.
  457. X* (KRW) Added cursor (dot) weighting to force cursor
  458. X*       to same position on new page.
  459. X*/
  460. Xbool forwpage (f, n, k)
  461. Xregister int    n;
  462. X{
  463. X    long    mov_lines;
  464. X
  465. X    if (rplc_mode)
  466. X        next_pat ();
  467. X    else
  468. X    {
  469. X        if (curwp -> w_ntrows <= 2)
  470. X            mov_lines = 2;
  471. X        else
  472. X            mov_lines = curwp -> w_ntrows - 2;
  473. X
  474. X        /* check if last line is already displayed */
  475. X        if (WIND_POS(curwp) + (R_BYTES(curwp) * curwp -> w_ntrows) <
  476. X            curwp -> w_bufp -> b_linep -> l_bp -> l_file_offset +
  477. X            curwp -> w_bufp -> b_linep -> l_bp -> l_used)
  478. X        {
  479. X            move_ptr (curwp, (long)(R_BYTES(curwp) * mov_lines),
  480. X                FALSE, TRUE, TRUE);
  481. X        }
  482. X        /* move dot by same amount */
  483. X        if (!move_ptr (curwp, (long)(R_BYTES(curwp) * mov_lines),
  484. X            TRUE, TRUE, TRUE))
  485. X            curwp -> w_unit_offset = 0;
  486. X
  487. X        curwp -> w_flag |= WFHARD;
  488. X    }
  489. X    return (TRUE);
  490. X}
  491. X
  492. X
  493. X/*  pvr
  494. X* This command is like "forwpage",
  495. X* but it goes backwards. 
  496. X*/
  497. Xbool backpage (f, n, k)
  498. Xregister int    n;
  499. X{
  500. X    long    mov_lines;
  501. X
  502. X    if (rplc_mode)
  503. X        next_pat ();
  504. X    else
  505. X    {
  506. X        if (curwp -> w_ntrows <= 2)
  507. X            mov_lines = 2;
  508. X        else
  509. X            mov_lines = curwp -> w_ntrows - 2;
  510. X
  511. X        /* move window */
  512. X        move_ptr (curwp, -(long)(R_BYTES(curwp) * mov_lines),
  513. X            FALSE, TRUE, TRUE);
  514. X        /* move dot by same amount */
  515. X        if (!move_ptr (curwp, -(long)(R_BYTES(curwp) * mov_lines),
  516. X            TRUE, TRUE, TRUE))
  517. X            curwp -> w_unit_offset = 0;
  518. X
  519. X        curwp -> w_flag |= WFHARD;
  520. X    }
  521. X    return (TRUE);
  522. X}
  523. X
  524. X
  525. X/*
  526. X* Set the mark in the current window
  527. X* to the value of dot. A message is written to
  528. X* the echo line unless we are running in a keyboard
  529. X* macro, when it would be silly.
  530. X*/
  531. Xbool setmark ()
  532. X{
  533. X
  534. X    if (curbp == blistp)        /* jam - hack to do goto/kill */
  535. X        pickone ();
  536. X    else
  537. X    {
  538. X        curwp -> w_markp = curwp -> w_dotp;
  539. X        curwp -> w_marko = curwp -> w_doto;
  540. X        if (kbdmop == NULL)
  541. X        {
  542. X            writ_echo (MSG_mark_set);
  543. X        }
  544. X    }
  545. X    return (TRUE);
  546. X}
  547. X
  548. X
  549. X/*  pvr
  550. X* Swap the values of "dot" and "mark" in
  551. X* the current window. This is pretty easy, because
  552. X* all of the hard work gets done by the standard routine
  553. X* that moves the mark about. The only possible
  554. X* error is "no mark".
  555. X*/
  556. Xbool swapmark ()
  557. X{
  558. X    register short  odoto;
  559. X    register    LINE * odotp;
  560. X
  561. X    if (curwp -> w_markp == NULL)
  562. X    {
  563. X        writ_echo (MSG_no_mark);
  564. X        return (FALSE);
  565. X    }
  566. X
  567. X    odotp = curwp -> w_dotp;
  568. X    curwp -> w_dotp = curwp -> w_markp;
  569. X    curwp -> w_markp = odotp;
  570. X    odoto = curwp -> w_doto;
  571. X    curwp -> w_doto = curwp -> w_marko;
  572. X    curwp -> w_marko = odoto;
  573. X    wind_on_dot (curwp);
  574. X    curwp -> w_flag |= WFMODE;  /* update mode line */
  575. X    return (TRUE);
  576. X}
  577. X
  578. X/*  pvr
  579. X* Go to a specific byte position in buffer.
  580. X* If an argument is present, then
  581. X* it is the byte number, else prompt for a byte number
  582. X* to use.
  583. X*/
  584. Xbool gotoline (f, n, k)
  585. X{
  586. X    A32      index;
  587. X    register int    s;
  588. X    char    buf[32];
  589. X
  590. X    if (f == FALSE)
  591. X    {
  592. X
  593. X        if ((s = ereply (MSG_go_b_n, buf, sizeof (buf), 0) != TRUE))
  594. X            return (s);
  595. X        switch (R_TYPE(curwp))
  596. X        {
  597. X        case TEXT:
  598. X        case ASCII:
  599. X        case EBCDIC:
  600. X        case BINARY:
  601. X        case HEX:
  602. X            sscanf (buf, MSG_lX, &index);
  603. X            break;
  604. X        case OCTAL:
  605. X            sscanf (buf, MSG_lO, &index);
  606. X            break;
  607. X        case DECIMAL:
  608. X            sscanf (buf, MSG_lD, &index);
  609. X            break;
  610. X#if RUNCHK
  611. X        default:
  612. X            writ_echo (ERR_bas_1);
  613. X            break;
  614. X#endif
  615. X        }
  616. X    }
  617. X
  618. X    if (n <= 0)
  619. X    {
  620. X        writ_echo (MSG_bad_num);
  621. X        return (FALSE);
  622. X    }
  623. X
  624. X    move_ptr (curwp, index, TRUE, TRUE, FALSE);
  625. X    curwp -> w_unit_offset = 0;
  626. X
  627. X    curwp -> w_flag |= WFMODE;  /* update mode line */
  628. X
  629. X    wind_on_dot (curwp);
  630. X    return (TRUE);
  631. X}
  632. X
  633. END_OF_FILE
  634.   if test 11657 -ne `wc -c <'basic.c'`; then
  635.     echo shar: \"'basic.c'\" unpacked with wrong size!
  636.   fi
  637.   # end of 'basic.c'
  638. fi
  639. if test -f 'beav132b.txt' -a "${1}" != "-c" ; then 
  640.   echo shar: Will not clobber existing file \"'beav132b.txt'\"
  641. else
  642.   echo shar: Extracting \"'beav132b.txt'\" \(37937 characters\)
  643.   sed "s/^X//" >'beav132b.txt' <<'END_OF_FILE'
  644. X                      BEAV User Manual
  645. X
  646. X
  647. Xshift is 0.   For example, a double word at address 10 is made up
  648. Xof the bytes at address 10, 11, 12, and 13.   With a shift of 1
  649. Xthat double word would be made of bytes 11, 12, 13, and 14.
  650. XWith a shift of 2 then bytes 12, 13, 14, and 15 would be used.
  651. XThe maximum shift in word display mode is one and the maximum
  652. Xshift in double word mode is three.
  653. X
  654. X      The buffer is in effect shifted toward the beginning of the
  655. Xbuffer with 1, 2, or 3 bytes becoming not visible.   These bytes
  656. Xare not lost, they become visible when the shift is set to zero.
  657. XThis command cycles through all possible shift values.   There is
  658. Xno effect in any byte display mode or any text display mode.
  659. X
  660. X
  661. X   3.6             Inserting and deleting
  662. X
  663. X      These commands are the core of BEAV.   These commands allow
  664. Xthe buffer to be edited in a similar fashion to a text editor.
  665. XBEAV has an insert mode much the same as text editors but it only
  666. Xworks when displaying data in one of the text modes, either ASCII
  667. Xor EBCDIC.   In other modes it doesn't make any sense to insert
  668. Xcharacters as they are typed when there is more than one
  669. Xcharacters per unit.   In the data modes there is a command that
  670. Xinserts a unit of zeros into the buffer.   Similarly the delete
  671. Xcommands always delete a unit rather than a character.   In a
  672. Xtext mode the delete commands work as in a text editor because a
  673. Xunit is a character.
  674. X
  675. X      Ctl-X I        insert-unit
  676. X
  677. X      Insert a zero at the cursor position.   The rest of the
  678. Xdata moves down one place.   Thus, if double words are being
  679. Xdisplayed, four bytes are inserted before the cursor position.
  680. XThese bytes are initialized to zero.   This command works in all
  681. Xdisplay modes.
  682. X
  683. X      Ctl-X Ctl-A    insert-toggle      Insert
  684. X
  685. X      In either of the two text modes this command toggles
  686. Xbetween insert mode and overwrite mode.    In insert mode each
  687. Xcharacter that is typed is inserted in front of the cursor and
  688. Xthe rest of the buffer is moved down.   In overwrite mode the
  689. Xtyped characters replace the character that is at the cursor.
  690. XThis command has no effect in a non-text display mode.
  691. X
  692. X      Ctl-Q          insert-literally   Esc Q
  693. X
  694. X      This command sets a special temporary mode where the next
  695. Xtyped character is inserted in the buffer no matter what the
  696. Xcharacter is.   This allows control codes to be inserted in the
  697. Xbuffer when in a text display mode.   Alternatively the same byte
  698. Xcould be inserted into the buffer by using one of the data
  699. Xdisplay modes.   It night be faster to use this command on some
  700. Xoccasions.
  701. X
  702. X
  703. X
  704. X                               18
  705. X
  706. X                      BEAV User Manual
  707. X
  708. X
  709. X
  710. X      Ctl-T          unit-twiddle
  711. X
  712. X      The unit at the cursor is swapped with the previous unit.
  713. X
  714. X      Rubout         delete-back-char   Backspace
  715. X
  716. X      This command deletes the character before the cursor and
  717. Xpulls the rest of the buffer back.   The cursor remains on the
  718. Xsame character as it moves back.   It only works in the text and
  719. Xbyte display modes.
  720. X
  721. X      Ctl-D          delete-forw-char   Delete
  722. X
  723. X      The character at the cursor is deleted and the buffer is
  724. Xpulled back.   The cursor remains at the same position.   It only
  725. Xworks in the text and byte display modes.
  726. X
  727. X      Esc Rubout     delete-back-unit   Esc Ctl-K
  728. X
  729. X      This command deletes the unit before the cursor and pulls
  730. Xthe rest of the buffer back.   The cursor remains on the same
  731. Xunit as it moves back.
  732. X
  733. X      Esc D          delete-forw-unit
  734. X
  735. X      The unit at the cursor is deleted and the buffer is pulled
  736. Xback.   The cursor remains at the same position.
  737. X
  738. X      Esc W          copy-mark-to-cursor      F7
  739. X
  740. X      The area in the buffer from the mark to the current cursor
  741. Xposition is copied into the kill buffer.   If the mark is not set
  742. Xbefore this command is given an error is reported.
  743. X
  744. X      Ctl-W          delete-mark-to-cursor    F8
  745. X
  746. X      The area in the buffer from the mark to the current cursor
  747. Xposition is deleted and placed into the kill buffer.   If the
  748. Xmark is not set before this command is given an error is
  749. Xreported.
  750. X
  751. X      Ctl-Y          yank               F6
  752. X
  753. X      The contents of the kill buffer is inserted into the buffer
  754. Xat the cursor position.   The kill buffer itself is not changed.
  755. X
  756. X
  757. X   3.7             Search and Replace Commands
  758. X
  759. X      BEAV has very powerful search and replace commands.   The
  760. Xsearch and replace string can be entered in any of the display
  761. Xmodes.   The search and replace strings can each be up to 256
  762. Xbytes long.   The display mode can be changed at any time while
  763. X
  764. X
  765. X
  766. X                               19
  767. X
  768. X                      BEAV User Manual
  769. X
  770. X
  771. Xentering the string.   Wild cards can be placed down to the bit
  772. Xlevel on both the search and replace strings.   The wild card
  773. Xcharacter, '?', will match any value that it is compared with.
  774. X
  775. X      When a wild card is placed in the replace string it leaves
  776. Xthe destination data unchanged at that position.   Thus, if the
  777. Xdestination contains the ASCII string '41 42 43 44' and the
  778. Xreplace string contains '66 67 ?? 69' the result would be '66 67
  779. X43 69'.
  780. X
  781. X      Wild cards can be placed in any position that makes sense.
  782. XIf you want to use wild cards in an ASCII string then you must
  783. Xswitch to another mode to enter them.   You can then switch back
  784. Xto ASCII mode.   In this case a '?' will appear in the position
  785. Xwhere the wild card has been placed but it appears exactly the
  786. Xsame as a standard question mark.   In fact if you type a '?'
  787. Xover the wild card there will be no apparent change.   However,
  788. Xthe character will no longer be a wild card but a standard
  789. Xquestion mark.   To see the true wild cards you must use a data
  790. Xdisplay mode.   In fact if the wild card has been set on the bit
  791. Xlevel then you must go to binary display mode to see its actual
  792. Xposition.
  793. X
  794. X      The commands to change the display mode in search and
  795. Xreplace are the same as for the window display mode.   The search
  796. Xand replace strings can be scrolled back an forth and the cursor
  797. Xmoved using the same commands as for the window.   While
  798. Xperforming a replace command you can switch between the search
  799. Xstring and replace string by using the 'move-back-page' or 'move-
  800. Xforw-page' commands.
  801. X
  802. X      Esc S          search-forw        F3
  803. X
  804. X      Prompts for a search string then searches from the current
  805. Xcursor position for the first match.   The cursor is positioned
  806. Xat the first unit of the match.
  807. X
  808. X      Esc R          search-back
  809. X
  810. X      This command is the same as the previous one except that it
  811. Xsearches backward.
  812. X
  813. X      Esc T          search-again       F4
  814. X
  815. X      This command repeats the previous search command, forward
  816. Xor backward.   The cursor is first moved one byte in the
  817. Xappropriate direction before the search is repeated.
  818. X
  819. X      Esc %          replace            F5
  820. X
  821. X      Prompt for search string.   After entering the search
  822. Xstring hit return and you will be prompted for the replace
  823. Xstring.   After entering the replace string hit return.   BEAV
  824. Xwill then search for the first match with the search string.   If
  825. X
  826. X
  827. X
  828. X                               20
  829. X
  830. X                      BEAV User Manual
  831. X
  832. X
  833. Xa match is found you will be prompted with '(R)eplace, (S)kip,
  834. X(A)ll, (O)ne, (Q)uit'
  835. X
  836. X      If you type a 'R' the replace will be done at this location
  837. Xand the search will continue.   If you type a 'S' the replace
  838. Xwill not be done and search will continue.   If you type an 'A'
  839. Xthe replace will be done and will be done at all future matches
  840. Xwithout pausing for conformation.   If you type an 'O' the
  841. Xreplace will be done at this location and the search will stop.
  842. XIf you type a 'Q' then the search will be terminated.
  843. X
  844. X      Ctl-R          recall-srch-string
  845. X
  846. X      If you enter search or replace previously used strings can
  847. Xbe recalled with this command.
  848. X
  849. X
  850. X   3.8             Exiting BEAV
  851. X
  852. X      While using BEAV individual buffers may be saved to disk
  853. Xduring the editing session.   When quitting BEAV you must save
  854. Xall buffers or delete all buffers.   There are two commands that
  855. Xdo this.
  856. X
  857. X      Ctl-C          quit-no-save       Sh-F10
  858. X
  859. X      If there are any unsaved buffers you will be prompted for
  860. Xconformation before proceeding.   All buffers will be deleted
  861. Xthen you will return to DOS.
  862. X
  863. X      Ctl-X Ctl-E    quit-save-all      Sh-F9
  864. X
  865. X      All buffers are saved before exiting to DOS.
  866. X
  867. X
  868. X   3.9             Printing
  869. X
  870. X      The data that is being displayed in BEAV can be printed or
  871. Xsent to a file in the same format as displayed.   If the current
  872. Xwindow is displaying octal words and a print command is given the
  873. Xformat of the print will be in the format of the window; that is,
  874. Xoctal words.
  875. X
  876. X      Esc P          print-mark-to-cursor     Ctl-Print
  877. X
  878. X      To use this command you must set the mark and the cursor to
  879. Xdefine the region that you want printed.   If the mark is not set
  880. Xit as assumed to be at the first unit.   After you enter the
  881. Xcommand you will be prompted with 'Print to:'.   You can enter a
  882. Xfile name or a device name to send the print image to.   If you
  883. Xenter 'PRN' most systems will print a hard copy.
  884. X
  885. X      This is useful for getting a print out of the current key
  886. Xbindings.   To do this give the 'help' command 'F1'.   Go to the
  887. X
  888. X
  889. X
  890. X                               21
  891. X
  892. X                      BEAV User Manual
  893. X
  894. X
  895. Xbottom of the help window using the 'move-to-end' command 'End',
  896. Xthe mark will be assumed to be at the beginning of the buffer.
  897. XIssue the 'print-mark-to-cursor' command.   Enter 'PRN' at the
  898. Xprompt.   This should print the complete help buffer and will
  899. Xreflect any changes that you have made to the key bindings.
  900. X
  901. X
  902. X   3.10            Keyboard Macros
  903. X
  904. X      BEAV has the capability of recording key strokes as they
  905. Xare entered and playing them back later.   This is useful for
  906. Xrepeating multi-keystroke operations.
  907. X
  908. X      Ctl-X (        macro-start
  909. X
  910. X      Start recording key strokes.   There is no effect on the
  911. Xoperation of the key strokes.   Any previous recorded key strokes
  912. Xare cleared.
  913. X
  914. X      Ctl-X )        macro-end
  915. X
  916. X      Stop recording key strokes.   The key strokes are available
  917. Xfor play back.
  918. X
  919. X      Ctl-X E        macro-execute
  920. X
  921. X      Play back the recorded key strokes.   The key strokes that
  922. Xwere recorded are played back as if they were typed at the
  923. Xkeyboard.
  924. X
  925. X
  926. X   3.11            Key Binding
  927. X
  928. X      BEAV provides a user configurable interface.   The
  929. Xinterface is controlled by a set of key bindings.   This relates
  930. Xthe command that will be executed when a particular key stroke is
  931. Xentered.   There are a set of default key bindings as described
  932. Xin this manual.   These can be changed to reflect your
  933. Xpreferences.   When a change is made it is reflected in the help
  934. Xscreen.
  935. X
  936. X      Ctl-X ?        binding-for-key    Sh-F1
  937. X
  938. X      This command will tell you what function a certain key
  939. Xsequence is bound to.   When this command is given you will be
  940. Xprompted for a key stroke or key stroke sequence.   BEAV will
  941. Xreport back with the function name.
  942. X
  943. X      Esc K          bind-to-key
  944. X
  945. X      First you will prompted for a function name.   Enter the
  946. Xname of the function that you wish to create a new binding for.
  947. XFunction names are the names listed in this manual that are of
  948. Xthe form of 'move-forw-unit' or 'display-hex'.   After you enter
  949. X
  950. X
  951. X
  952. X                               22
  953. X
  954. X                      BEAV User Manual
  955. X
  956. X
  957. Xthe name hit return.   You will be prompted for a key.   This can
  958. Xbe in the form of a single standard key such as 'Z'.   Standard
  959. Xkey sequences can be entered such as 'Ctl-X Z'
  960. Xor 'Esc Z'.   Special keys can be entered such as 'F1' (function
  961. Xkey 1) or 'Page Down'.   It is probably a good idea to not use
  962. Xkeys that are needed for editing.   If you bound 'Z' to a
  963. Xfunction then you would not be able to enter it as a keystroke
  964. Xwhen using ASCII display mode.   You could still enter it using
  965. Xthe 'insert-literally' command or doing it in one of the data
  966. Xdisplay modes but this would be more cumbersome.
  967. X
  968. X      Ctl-X L        bindings-load
  969. X
  970. X      You are prompted for a file name that contains the key
  971. Xbinding that you wish to set.   This file is read in and the
  972. Xappropriate bindings are set.   The text in the binding file
  973. Xshould be of the form;
  974. X
  975. X<key name>           <function name>    <key code>
  976. X
  977. X      For example;
  978. X
  979. XCtl-X Ctl-P          move-back-char     0550
  980. XF1                   move-forw-char     04bb
  981. XCtl-A                move-forw-unit     0141
  982. XEsc Ctl-T            move-back-unit     0354
  983. X
  984. X      The easiest way of producing a valid key binding file is to
  985. Xset the desired bindings in BEAV.   Next issue the 'help' command
  986. X(ESC ?), then write the buffer out with the file-write command
  987. X(Ctl-X Ctl-W).   The file created will be a valid format for
  988. Xloading and can be edited as desired.   It is the only reliable
  989. Xway to get the <key code> number.
  990. X
  991. X
  992. X   3.12            Special Functions
  993. X
  994. X      These are the commands that do not logically fit under one
  995. Xof the previous headings
  996. X
  997. X      Gtl-G          abort-cmd          F10
  998. X
  999. X      This command aborts the current command.   It can even
  1000. Xabort a partially entered command.   Thus, if you have typed an
  1001. X'Esc' as that start of a command you can type Ctl-G to return to
  1002. Xthe normal command entry mode.
  1003. X
  1004. X      Esc A          auto-save
  1005. X
  1006. X      BEAV can be set to automatically save the current buffer
  1007. Xafter a specified number of buffer editing commands are given.
  1008. XThis command first prompts for the number of operations before
  1009. Xthe save is made.   If a zero is entered at the prompt, this
  1010. X
  1011. X
  1012. X
  1013. X
  1014. X                               23
  1015. X
  1016. X                      BEAV User Manual
  1017. X
  1018. X
  1019. Xfeature is disabled.   The default condition of this command is
  1020. Xdisabled.
  1021. X
  1022. X      Esc C          compare
  1023. X
  1024. X      This is a powerful feature of BEAV.   The contents of two
  1025. Xwindows are compared byte for byte from the current cursor
  1026. Xposition in each window.   There must be exactly two windows to
  1027. Xuse this command.   These windows can be displaying the same or
  1028. Xdifferent buffers.   When a difference is found the cursor in
  1029. Xeach window is moved to that position and both windows are moved
  1030. Xaccordingly.   The display mode does not affect the operation of
  1031. Xthis command except in restricting the cursor position to whole
  1032. Xunits.
  1033. X
  1034. X      Esc X          extended-command
  1035. X
  1036. X      If any command looses its binding, this command allows the
  1037. Xunbound command to be used.   A command can loose its binding
  1038. Xbecause the binding was assigned to another command.   When this
  1039. Xcommand is given you will be prompted for a command name.   Enter
  1040. Xthe command name that you wish to execute, it will be executed as
  1041. Xif you had typed its key binding.
  1042. X
  1043. X      Esc Ctl-F      n-way-combine
  1044. X
  1045. X      The contents of other windows can be copied sequentially
  1046. Xinto the current window.   This is useful in combining odd-even
  1047. Xproms into an executable image file.   To use this command create
  1048. Xan empty window with a buffer file name of an empty or
  1049. Xnonexistent file.   Read into additional windows the files that
  1050. Xyou want to combine.   While in the empty target window, issue
  1051. Xthe n-way-combine command.   The data in the other windows will
  1052. Xbe read into the current window.   The next window lower on the
  1053. Xscreen will be read first, then the one below that, etc.
  1054. X
  1055. X      For example; if you had two files, promlow.bin and
  1056. Xpromhi.bin that you wanted to combine into a file called
  1057. Xprom.bin.   First issue the file-visit command (Ctl-X Ctl-V),
  1058. Xenter prom.bin at the prompt.   This file should be empty of non-
  1059. Xexistent.   Next read promlow.bin into a new window with the
  1060. Xfile-visit-split command (Esc U), enter promlow.bin at the
  1061. Xprompt.   Open another window for promhi.bin with the same
  1062. Xcommand.   Go to the window containing prom.bin (empty).   Issue
  1063. Xthe n-way-combine command.   BEAV will copy the first byte from
  1064. Xthe window immediately below the prom.bin window and deposit it
  1065. Xin the destination window buffer as well as advance the dot
  1066. Xposition in both windows.   It will advance to the next lower
  1067. Xwindow and copy a byte from there into the destination window and
  1068. Xadvance the dot in both windows.   This process will continue
  1069. Xuntil one of the source buffers is exhausted, or the user
  1070. Xterminates the command.
  1071. X
  1072. X
  1073. X
  1074. X
  1075. X
  1076. X                               24
  1077. X
  1078. X                      BEAV User Manual
  1079. X
  1080. X
  1081. X      The user must take care that the source buffers are in the
  1082. Xcorrect order.   They are read starting at the window immediately
  1083. Xbelow the current window.   If the target window is at the bottom
  1084. Xof the screen then it wraps to the top.   In this way any order
  1085. Xcan be used and changed at will.
  1086. X
  1087. X      Esc Ctl-S      n-way-split
  1088. X
  1089. X      This command is the mirror image of the n-way-combine.
  1090. XThe data in the current window is distributed among the rest of
  1091. Xthe window buffers displayed.   The current window buffer must be
  1092. Xthe only window buffer that contains data.   If there are two
  1093. Xother empty window buffers then the data will be divided two
  1094. Xways.   If there are five then the data will be divided five ways
  1095. X
  1096. X      Ctl-L          refresh-screen
  1097. X
  1098. X      The screen is reprinted from BEAV's internal buffer.   This
  1099. Xis useful if the display is messed up due to transmission errors.
  1100. XOn a PC this is unlikely to happen.
  1101. X
  1102. X      Esc Ctl-V      show-version
  1103. X
  1104. X      The version and date of BEAV is displayed in the command
  1105. Xline.
  1106. X
  1107. X      Ctl-X C        spawn-shell
  1108. X
  1109. X      A new MSDOS command shell is created.   You can return to
  1110. XBEAV by typing 'exit'.
  1111. X
  1112. X      Ctl-U          repeat count
  1113. X
  1114. X      This command prompts for a number to be entered.   This
  1115. Xcauses the next command given to be repeated by that number of
  1116. Xtimes.   This command cannot have it's binding changed and cannot
  1117. Xbe issued using the 'extended-command' function.
  1118. X
  1119. X
  1120. X
  1121. X
  1122. X
  1123. X
  1124. X
  1125. X
  1126. X
  1127. X
  1128. X
  1129. X
  1130. X
  1131. X
  1132. X
  1133. X
  1134. X
  1135. X
  1136. X
  1137. X
  1138. X                               25
  1139. X
  1140. X                      BEAV User Manual
  1141. X
  1142. X
  1143. X 4.                          Alphabetical list of commands by
  1144. Xname
  1145. X
  1146. XCommand                        Key Binding       Manual Section
  1147. X-------                        -----------       --------------
  1148. Xabort-cmd                      Ctl-G             3.12
  1149. Xabort-cmd                      Ctl-X Ctl-G       3.12
  1150. Xabort-cmd                      Esc Ctl-G         3.12
  1151. Xabort-cmd                      F10               3.12
  1152. Xauto-save                      Esc A             3.12
  1153. Xbind-to-key                    Esc K             3.11
  1154. Xbinding-for-key                Ctl-X ?           3.11
  1155. Xbinding-for-key                Sh-F1             3.11
  1156. Xbindings-load                  Ctl-X L           3.11
  1157. Xbuffer-set-file-name           Ctl-F7            3.3
  1158. Xbuffer-set-file-name           Ctl-X Ctl-F       3.3
  1159. Xbuffer-set-file-name           Sh-F7             3.3
  1160. Xbuffer-set-name                Esc Ctl-N         3.3
  1161. Xbuffer-size-lock               Ctl-X Ctl-L       3.3
  1162. Xbuffers-display                Ctl-F1            3.3
  1163. Xbuffers-display                Ctl-X Ctl-B       3.3
  1164. Xchange-buffer                  Ctl-F2            3.3
  1165. Xchange-buffer                  Ctl-X B           3.3
  1166. Xchange-to-next-buffer          Ctl-F4            3.3
  1167. Xchange-to-next-buffer          Esc +             3.3
  1168. Xchange-to-prev-buffer          Ctl-F5            3.3
  1169. Xchange-to-prev-buffer          Esc -             3.3
  1170. Xchange-window-back             Ctl-PageUp        3.5
  1171. Xchange-window-back             Ctl-X P           3.5
  1172. Xchange-window-forw             Ctl-PageDown      3.5
  1173. Xchange-window-forw             Ctl-X N           3.5
  1174. Xcompare                        Esc C             3.12
  1175. Xcopy-mark-to-cursor            Esc W             3.6
  1176. Xcopy-mark-to-cursor            F7                3.6
  1177. Xdelete-back-char               Backspace         3.6
  1178. Xdelete-back-char               Rubout            3.6
  1179. Xdelete-back-unit               Esc Ctl-K         3.6
  1180. Xdelete-back-unit               Esc Rubout        3.6
  1181. Xdelete-forw-char               Ctl-D             3.6
  1182. Xdelete-forw-char               Delete            3.6
  1183. Xdelete-forw-unit               Esc D             3.6
  1184. Xdelete-mark-to-cursor          Ctl-W             3.6
  1185. Xdelete-mark-to-cursor          F8                3.6
  1186. Xdisplay-ascii                  Esc Ctl-A         3.5
  1187. Xdisplay-binary                 Esc Ctl-B         3.5
  1188. Xdisplay-byte-shift             Ctl-A             3.5
  1189. Xdisplay-bytes                  Esc 1             3.5
  1190. Xdisplay-decimal                Esc Ctl-D         3.5
  1191. Xdisplay-double-words           Esc 4             3.5
  1192. Xdisplay-ebcdic                 Esc Ctl-E         3.5
  1193. Xdisplay-hex                    Esc Backspace     3.5
  1194. Xdisplay-octal                  Esc Ctl-O         3.5
  1195. Xdisplay-swap-order             Ctl-E             3.5
  1196. Xdisplay-words                  Esc 2             3.5
  1197. X
  1198. X
  1199. X
  1200. X                               26
  1201. X
  1202. X                      BEAV User Manual
  1203. X
  1204. X
  1205. Xextended-command               Esc X             3.12
  1206. Xfile-read                      Ctl-X Ctl-R       3.4
  1207. Xfile-read                      Sh-F2             3.4
  1208. Xfile-save                      Ctl-X Ctl-S       3.4
  1209. Xfile-save                      Sh-F3             3.4
  1210. Xfile-view                      Ctl-X V           3.4
  1211. Xfile-visit                     Ctl-X Ctl-V       3.4
  1212. Xfile-visit                     Sh-F4             3.4
  1213. Xfile-visit-split               Esc U             3.4
  1214. Xfile-write                     Ctl-X Ctl-W       3.4
  1215. Xfile-write                     Sh-F5             3.4
  1216. Xhelp                           Esc ?             3.1
  1217. Xhelp                           F1                3.1
  1218. Xinsert-file                    Ctl-F8            3.4
  1219. Xinsert-file                    Ctl-X Tab         3.4
  1220. Xinsert-file                    Sh-F8             3.4
  1221. Xinsert-literally               Ctl-Q             3.6
  1222. Xinsert-literally               Esc Q             3.6
  1223. Xinsert-toggle                  Ctl-X Ctl-A       3.6
  1224. Xinsert-toggle                  Insert            3.6
  1225. Xinsert-unit                    Ctl-X I           3.6
  1226. Xkill-buffer                    Ctl-F3            3.3
  1227. Xkill-buffer                    Ctl-X K           3.3
  1228. Xmacro-end                      Ctl-X )           3.10
  1229. Xmacro-execute                  Ctl-X E           3.10
  1230. Xmacro-start                    Ctl-X (           3.10
  1231. Xmark-set                       Esc .             3.2
  1232. Xmark-set                       F2                3.2
  1233. Xmove-back-char                 Ctl-B             3.2
  1234. Xmove-back-char                 West              3.2
  1235. Xmove-back-line                 Ctl-P             3.2
  1236. Xmove-back-line                 North             3.2
  1237. Xmove-back-page                 Esc V             3.2
  1238. Xmove-back-page                 PageDown          3.2
  1239. Xmove-back-unit                 Ctl-West          3.2
  1240. Xmove-back-unit                 Esc B             3.2
  1241. Xmove-forw-char                 Ctl-F             3.2
  1242. Xmove-forw-char                 East              3.2
  1243. Xmove-forw-line                 Ctl-N             3.2
  1244. Xmove-forw-line                 South             3.2
  1245. Xmove-forw-page                 Ctl-V             3.2
  1246. Xmove-forw-page                 PageUp            3.2
  1247. Xmove-forw-unit                 Ctl-East          3.2
  1248. Xmove-forw-unit                 Esc F             3.2
  1249. Xmove-forw-unit                 Sh-Tab            3.2
  1250. Xmove-to-beginning              Esc <             3.2
  1251. Xmove-to-beginning              Home              3.2
  1252. Xmove-to-buffer-split           Esc G             3.2
  1253. Xmove-to-byte                   Ctl-X G           3.2
  1254. Xmove-to-byte                   F9                3.2
  1255. Xmove-to-end                    End               3.2
  1256. Xmove-to-end                    Esc >             3.2
  1257. Xmove-window-down               Ctl-X Ctl-N       3.2
  1258. Xmove-window-down               Ctl-Z             3.2
  1259. X
  1260. X
  1261. X
  1262. X                               27
  1263. X
  1264. X                      BEAV User Manual
  1265. X
  1266. X
  1267. Xmove-window-up                 Ctl-X Ctl-P       3.2
  1268. Xmove-window-up                 Esc Z             3.2
  1269. Xn-way-combine                  Esc Ctl-F         3.12
  1270. Xn-way-split                    Esc Ctl-S         3.12
  1271. Xprint-mark-to-cursor           Ctl-Print         3.9
  1272. Xprint-mark-to-cursor           Esc P             3.9
  1273. Xquit-no-save                   Ctl-C             3.8
  1274. Xquit-no-save                   Ctl-F10           3.8
  1275. Xquit-no-save                   Ctl-X Ctl-C       3.8
  1276. Xquit-no-save                   Sh-F10            3.8
  1277. Xquit-save-all                  Ctl-F9            3.8
  1278. Xquit-save-all                  Ctl-X Ctl-E       3.8
  1279. Xquit-save-all                  Sh-F9             3.8
  1280. Xrecall-srch-string             Ctl-R             3.7
  1281. Xrefresh-screen                 Ctl-L             3.12
  1282. Xreplace                        Esc %             3.7
  1283. Xreplace                        F5                3.7
  1284. Xsave-all-buffers               Ctl-X Return      3.4
  1285. Xsave-all-buffers               Sh-F6             3.4
  1286. Xsave-mark-to-cursor            Esc O             3.3
  1287. Xsearch-again                   Esc T             3.7
  1288. Xsearch-again                   F4                3.7
  1289. Xsearch-back                    Esc R             3.7
  1290. Xsearch-forw                    Esc S             3.7
  1291. Xsearch-forw                    F3                3.7
  1292. Xshow-position                  Ctl-X =           3.2
  1293. Xshow-save-buf                  Esc Ctl-W         3.3
  1294. Xshow-version                   Esc Ctl-V         3.12
  1295. Xspawn-shell                    Ctl-X C           3.12
  1296. Xswap-cursor-and-mark           Ctl-X Ctl-X       3.2
  1297. Xunit-twiddle                   Ctl-T             3.6
  1298. Xwindow-delete                  Ctl-X 0           3.5
  1299. Xwindow-enlarge                 Ctl-X Z           3.5
  1300. Xwindow-link                    Esc L             3.2
  1301. Xwindow-reposition              Esc !             3.5
  1302. Xwindow-shrink                  Ctl-X Ctl-Z       3.5
  1303. Xwindow-single                  Ctl-X 1           3.5
  1304. Xwindow-split                   Ctl-X 2           3.5
  1305. Xyank                           Ctl-Y             3.6
  1306. Xyank                           F6                3.6
  1307. Xyank-buffer                    Ctl-F6            3.3
  1308. Xyank-buffer                    Esc Y             3.3
  1309. X
  1310. X
  1311. X
  1312. X
  1313. X
  1314. X
  1315. X
  1316. X
  1317. X
  1318. X
  1319. X
  1320. X
  1321. X
  1322. X
  1323. X
  1324. X                               28
  1325. X
  1326. X                      BEAV User Manual
  1327. X
  1328. X
  1329. X 5. Alphabetical list of commands by key binding
  1330. X
  1331. XCommand                        Key Binding       Manual Section
  1332. X-------                        -----------       --------------
  1333. Xdelete-back-char               Backspace         3.6
  1334. Xdisplay-byte-shift             Ctl-A             3.5
  1335. Xmove-back-char                 Ctl-B             3.2
  1336. Xquit-no-save                   Ctl-C             3.8
  1337. Xdelete-forw-char               Ctl-D             3.6
  1338. Xdisplay-swap-order             Ctl-E             3.5
  1339. Xmove-forw-unit                 Ctl-East          3.2
  1340. Xmove-forw-char                 Ctl-F             3.2
  1341. Xbuffers-display                Ctl-F1            3.3
  1342. Xquit-no-save                   Ctl-F10           3.8
  1343. Xchange-buffer                  Ctl-F2            3.3
  1344. Xkill-buffer                    Ctl-F3            3.3
  1345. Xchange-to-next-buffer          Ctl-F4            3.3
  1346. Xchange-to-prev-buffer          Ctl-F5            3.3
  1347. Xyank-buffer                    Ctl-F6            3.3
  1348. Xbuffer-set-file-name           Ctl-F7            3.3
  1349. Xinsert-file                    Ctl-F8            3.4
  1350. Xquit-save-all                  Ctl-F9            3.8
  1351. Xabort-cmd                      Ctl-G             3.12
  1352. Xrefresh-screen                 Ctl-L             3.12
  1353. Xmove-forw-line                 Ctl-N             3.2
  1354. Xmove-back-line                 Ctl-P             3.2
  1355. Xchange-window-forw             Ctl-PageDown      3.5
  1356. Xchange-window-back             Ctl-PageUp        3.5
  1357. Xprint-mark-to-cursor           Ctl-Print         3.9
  1358. Xinsert-literally               Ctl-Q             3.6
  1359. Xrecall-srch-string             Ctl-R             3.7
  1360. Xunit-twiddle                   Ctl-T             3.6
  1361. Xmove-forw-page                 Ctl-V             3.2
  1362. Xdelete-mark-to-cursor          Ctl-W             3.6
  1363. Xmove-back-unit                 Ctl-West          3.2
  1364. Xmacro-start                    Ctl-X (           3.10
  1365. Xmacro-end                      Ctl-X )           3.10
  1366. Xwindow-delete                  Ctl-X 0           3.5
  1367. Xwindow-single                  Ctl-X 1           3.5
  1368. Xwindow-split                   Ctl-X 2           3.5
  1369. Xshow-position                  Ctl-X =           3.2
  1370. Xbinding-for-key                Ctl-X ?           3.11
  1371. Xchange-buffer                  Ctl-X B           3.3
  1372. Xspawn-shell                    Ctl-X C           3.12
  1373. Xinsert-toggle                  Ctl-X Ctl-A       3.6
  1374. Xbuffers-display                Ctl-X Ctl-B       3.3
  1375. Xquit-no-save                   Ctl-X Ctl-C       3.8
  1376. Xquit-save-all                  Ctl-X Ctl-E       3.8
  1377. Xbuffer-set-file-name           Ctl-X Ctl-F       3.3
  1378. Xabort-cmd                      Ctl-X Ctl-G       3.12
  1379. Xbuffer-size-lock               Ctl-X Ctl-L       3.3
  1380. Xmove-window-down               Ctl-X Ctl-N       3.2
  1381. Xmove-window-up                 Ctl-X Ctl-P       3.2
  1382. Xfile-read                      Ctl-X Ctl-R       3.4
  1383. X
  1384. X
  1385. X
  1386. X                               29
  1387. X
  1388. X                      BEAV User Manual
  1389. X
  1390. X
  1391. Xfile-save                      Ctl-X Ctl-S       3.4
  1392. Xfile-visit                     Ctl-X Ctl-V       3.4
  1393. Xfile-write                     Ctl-X Ctl-W       3.4
  1394. Xswap-cursor-and-mark           Ctl-X Ctl_X       3.2
  1395. Xwindow-shrink                  Ctl-X Ctl-Z       3.5
  1396. Xmacro-execute                  Ctl-X E           3.10
  1397. Xmove-to-byte                   Ctl-X G           3.2
  1398. Xinsert-unit                    Ctl-X I           3.6
  1399. Xkill-buffer                    Ctl-X K           3.3
  1400. Xbindings-load                  Ctl-X L           3.11
  1401. Xchange-window-forw             Ctl-X N           3.5
  1402. Xchange-window-back             Ctl-X P           3.5
  1403. Xsave-all-buffers               Ctl-X Return      3.4
  1404. Xinsert-file                    Ctl-X Tab         3.4
  1405. Xfile-view                      Ctl-X V           3.4
  1406. Xwindow-enlarge                 Ctl-X Z           3.5
  1407. Xyank                           Ctl-Y             3.6
  1408. Xmove-window-down               Ctl-Z             3.2
  1409. Xdelete-forw-char               Delete            3.6
  1410. Xmove-forw-char                 East              3.2
  1411. Xmove-to-end                    End               3.2
  1412. Xwindow-reposition              Esc !             3.5
  1413. Xreplace                        Esc %             3.7
  1414. Xchange-to-next-buffer          Esc +             3.3
  1415. Xchange-to-prev-buffer          Esc -             3.3
  1416. Xmark-set                       Esc .             3.2
  1417. Xdisplay-bytes                  Esc 1             3.5
  1418. Xdisplay-words                  Esc 2             3.5
  1419. Xdisplay-double-words           Esc 4             3.5
  1420. Xmove-to-beginning              Esc <             3.2
  1421. Xmove-to-end                    Esc >             3.2
  1422. Xhelp                           Esc ?             3.1
  1423. Xauto-save                      Esc A             3.12
  1424. Xmove-back-unit                 Esc B             3.2
  1425. Xdisplay-hex                    Esc Backspace     3.5
  1426. XCompare                        Esc C             3.12
  1427. Xdisplay-ascii                  Esc Ctl-A         3.5
  1428. Xdisplay-binary                 Esc Ctl-B         3.5
  1429. Xdisplay-decimal                Esc Ctl-D         3.5
  1430. Xdisplay-ebcdic                 Esc Ctl-E         3.5
  1431. Xn-way-combine                  Esc Ctl-F         3.12
  1432. Xabort-cmd                      Esc Ctl-G         3.12
  1433. Xdelete-back-unit               Esc Ctl-K         3.6
  1434. Xbuffer-set-name                Esc Ctl-N         3.3
  1435. Xdisplay-octal                  Esc Ctl-O         3.5
  1436. Xn-way-split                    Esc Ctl-S         3.12
  1437. Xshow-version                   Esc Ctl-V         3.12
  1438. Xshow-save-buf                  Esc Ctl-W         3.3
  1439. Xdelete-forw-unit               Esc D             3.6
  1440. Xmove-forw-unit                 Esc F             3.2
  1441. Xmove-to-buffer-split           Esc G             3.2
  1442. Xbind-to-key                    Esc K             3.11
  1443. Xwindow-link                    Esc L             3.2
  1444. Xsave-mark-to-cursor            Esc O             3.3
  1445. X
  1446. X
  1447. X
  1448. X                               30
  1449. X
  1450. X                      BEAV User Manual
  1451. X
  1452. X
  1453. Xprint-mark-to-cursor           Esc P             3.9
  1454. Xinsert-literally               Esc Q             3.6
  1455. Xsearch-back                    Esc R             3.7
  1456. Xdelete-back-unit               Esc Rubout        3.6
  1457. Xsearch-forw                    Esc S             3.7
  1458. Xsearch-again                   Esc T             3.7
  1459. Xfile-visit-split               Esc U             3.4
  1460. Xmove-back-page                 Esc V             3.2
  1461. Xcopy-mark-to-cursor            Esc W             3.6
  1462. Xextended-command               Esc X             3.12
  1463. Xyank-buffer                    Esc Y             3.3
  1464. Xmove-window-up                 Esc Z             3.2
  1465. Xhelp                           F1                3.1
  1466. Xabort-cmd                      F10               3.12
  1467. Xmark-set                       F2                3.2
  1468. Xsearch-forw                    F3                3.7
  1469. Xsearch-again                   F4                3.7
  1470. Xreplace                        F5                3.7
  1471. Xyank                           F6                3.6
  1472. Xcopy-mark-to-cursor            F7                3.6
  1473. Xdelete-mark-to-cursor          F8                3.6
  1474. Xmove-to-byte                   F9                3.2
  1475. Xmove-to-beginning              Home              3.2
  1476. Xinsert-toggle                  Insert            3.6
  1477. Xmove-back-line                 North             3.2
  1478. Xmove-back-page                 PageDown          3.2
  1479. Xmove-forw-page                 PageUp            3.2
  1480. Xdelete-back-char               Rubout            3.6
  1481. Xbinding-for-key                Sh-F1             3.11
  1482. Xquit-no-save                   Sh-F10            3.8
  1483. Xfile-read                      Sh-F2             3.4
  1484. Xfile-save                      Sh-F3             3.4
  1485. Xfile-visit                     Sh-F4             3.4
  1486. Xfile-write                     Sh-F5             3.4
  1487. Xsave-all-buffers               Sh-F6             3.4
  1488. Xbuffer-set-file-name           Sh-F7             3.3
  1489. Xinsert-file                    Sh-F8             3.4
  1490. Xquit-save-all                  Sh-F9             3.8
  1491. Xmove-forw-unit                 Sh-Tab            3.2
  1492. Xmove-forw-line                 South             3.2
  1493. Xmove-back-char                 West              3.2
  1494. X
  1495. X
  1496. X
  1497. X
  1498. X
  1499. X
  1500. X
  1501. X
  1502. X
  1503. X
  1504. X
  1505. X
  1506. X
  1507. X
  1508. X
  1509. X
  1510. X                               31
  1511. X
  1512. X                      BEAV User Manual
  1513. X
  1514. X
  1515. X 6. Release notes
  1516. X
  1517. X
  1518. X      Version 1.20 (3/10/91) of BEAV contains the following fixes
  1519. Xand enhancements;
  1520. X
  1521. X*           Under unix files are created with read/write
  1522. X      permissions.
  1523. X
  1524. X*           Fixed the bug in the terminal I/O routine that caused
  1525. X      BEAV to spin rather than give up control when waiting for a
  1526. X      character.
  1527. X
  1528. X*           Added the ANSI #define that was missing for MSDOS.
  1529. X
  1530. X*           Changed the D16 #define to a unsigned short.
  1531. X
  1532. X*           Called ttclose on error exit.
  1533. X
  1534. X*           Check and limit ncol and nrow to the actual screen
  1535. X      array size.
  1536. X
  1537. X*           Add the ability to load key bindings from a file
  1538. X      automatically under MSDOS and unix.
  1539. X
  1540. X*           Add delete current window command.
  1541. X
  1542. X*           Support VT100 type function keys.
  1543. X
  1544. X
  1545. X      Version 1.30 (7/1/91) of BEAV contains the following fixes
  1546. Xand enhancements;
  1547. X
  1548. X*           Under MSDOS and 16 bit UNIX systems the kill or copy
  1549. X      region could not be over 64K bytes.   This limit has been
  1550. X      eliminated.
  1551. X
  1552. X*           The save buffer can be made visible with the Esc Ctl-
  1553. X      W command.   The save buffer is not editable.
  1554. X
  1555. X*           All memory allocation errors now pause and ask for
  1556. X      conformation before continuing.   In previous releases only
  1557. X      an error message was printed.   Since an allocation error
  1558. X      generally means data loss, I have forced the user to
  1559. X      respond.   Memory allocation errors are not otherwise fatal
  1560. X      to BEAV, they are probably fatal to the user's data.   The
  1561. X      decision is left to the user with the appropriate warning.
  1562. X
  1563. X*           Two commands have been added to aid in working with
  1564. X      PROM files; n-way-split (Esc Ctl-S) and n-way-combine (Esc
  1565. X      Ctl-F).
  1566. X
  1567. X*           The speed of the delete-mark-to-cursor (Ctl-W)
  1568. X      command has been greatly improved.
  1569. X
  1570. X
  1571. X
  1572. X                               32
  1573. X
  1574. X                      BEAV User Manual
  1575. X
  1576. X
  1577. X
  1578. X*           All commands that can potentially take a lot of time
  1579. X      can be stopped by pressing Ctl-G.
  1580. X
  1581. X
  1582. X      Version 1.31 (11/2/91) of BEAV contains the following
  1583. Xfixes;
  1584. X
  1585. X*           A serious bug that causes a crash on systems that
  1586. X      trapped the use of dereferenced pointers has been fixed.
  1587. X
  1588. X*           Beav now names the backup file properly under unix.
  1589. X      Previously; if a dot file (.<filename>) was edited, the
  1590. X      backup file was given a garbage name.   Now, a backup file
  1591. X      simply has ".bak" appended to the file name.
  1592. X
  1593. X*           You can use the buffers-display (Ctl-X, Ctl-B)
  1594. X      command to; go to, kill, or save a buffer.
  1595. X
  1596. X*           A compile flag for DEC ULTRA was created and a
  1597. X      makeable is included in this release (makefile.utx).
  1598. X
  1599. X*           When a large region was deleted the offset value was
  1600. X      displayed wrong, this is now fixed.
  1601. X
  1602. X*           A bug in the parse_f_name that trashed a variable is
  1603. X      now fixed.
  1604. X
  1605. X*           Regions of never used code have been deleted.
  1606. X
  1607. X*           Under UNIX the file permissions are maintained
  1608. X      correctly when the file is saved.
  1609. X
  1610. X*           A number of un-niceities that lint reported have been
  1611. X      fixed.
  1612. X
  1613. X
  1614. X      Version 1.32 (11/8/91) of BEAV contains the following
  1615. Xenhancements;
  1616. X
  1617. X*           BEAV will now compile and run on the Amiga computer.
  1618. X
  1619. X
  1620. X
  1621. X
  1622. X
  1623. X
  1624. X
  1625. X
  1626. X
  1627. X
  1628. X
  1629. X
  1630. X
  1631. X
  1632. X
  1633. X
  1634. X                               33
  1635. X
  1636. X                      BEAV User Manual
  1637. X
  1638. X
  1639. X 7. Source Availability
  1640. X
  1641. X      The source and MSDOS executable BEAV has been posted on
  1642. Xnews to comp.sources.misc.
  1643. X
  1644. X      The MSDOS executable has been posted to the
  1645. Xcomp.binaries.ibm.pc news group.   This is archived at SIMTEL20
  1646. Xin PD1:<MSDOS.FILUTL>BEAV131.ZIP.
  1647. X
  1648. X      If anyone does not have access to usenet, I will mail a
  1649. Xcopy of the source on floppy for $20.00 copying charge.   The
  1650. Xfloppies can be in MSDOS file format or UNIX tar format.   I can
  1651. Xalso supply either QIC-24, QIC-120, QIC-150, or 9 track reel to
  1652. Xreel tape.   The price for the tape will include the cost of the
  1653. Xmedia.
  1654. X
  1655. X
  1656. X
  1657. X
  1658. X
  1659. X
  1660. X
  1661. X
  1662. X
  1663. X
  1664. X
  1665. X
  1666. X
  1667. X
  1668. X
  1669. X
  1670. X
  1671. X
  1672. X
  1673. X
  1674. X
  1675. X
  1676. X
  1677. X
  1678. X
  1679. X
  1680. X
  1681. X
  1682. X
  1683. X
  1684. X
  1685. X
  1686. X
  1687. X
  1688. X
  1689. X
  1690. X
  1691. X
  1692. X
  1693. X
  1694. X
  1695. X
  1696. X                               34
  1697. END_OF_FILE
  1698.   if test 37937 -ne `wc -c <'beav132b.txt'`; then
  1699.     echo shar: \"'beav132b.txt'\" unpacked with wrong size!
  1700.   fi
  1701.   # end of 'beav132b.txt'
  1702. fi
  1703. echo shar: End of archive 1 \(of 9\).
  1704. cp /dev/null ark1isdone
  1705. MISSING=""
  1706. for I in 1 2 3 4 5 6 7 8 9 ; do
  1707.     if test ! -f ark${I}isdone ; then
  1708.     MISSING="${MISSING} ${I}"
  1709.     fi
  1710. done
  1711. if test "${MISSING}" = "" ; then
  1712.     echo You have unpacked all 9 archives.
  1713.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1714. else
  1715.     echo You still must unpack the following archives:
  1716.     echo "        " ${MISSING}
  1717. fi
  1718. exit 0
  1719. exit 0 # Just in case...
  1720.