;
BCOMP: VISUAL BINARY FILE COMPARISON               ( Z  - General Information)
                                                    (Type asterisked commands)
  		       <<< BCOMP 2.0  COMMANDS >>>     (for additional help)

      VIEW Mode:                                             EDIT Mode:
==============================================================================
 T - Top of File         I - Input More File*          ^E - Cursor Up
 B - End of File         H - Hex Calc*                 ^X - Cursor Down
 . - Next Screen         E - Echo to Both Screens*     ^S - Cursor Left
 , - Previous Screen     V - Toggle Alt Vid Display*   ^D - Cursor Right
 > - Next Line           F - Find*                     ^H - Alt Left
 < - Previous Line       R - Repeat Find*              CR - Switch Files
 = - Next Byte          SP - Switch Files              ^B - Mark Block
 - - Previous Byte      CR - Next Screen Both Files    ^V - Yank Block
 # - Go to Record*     ESC - Edit Mode                 ^C - Copy Block
 A - Go to Address*      X - Exit                      ^F - Fill Block
 O - Set New Offset*     / - Help*                     ^A - ASCII/Hex Field
 C - Auto Compare*       ? - Help                     ESC - View Mode
:z 
		  BCOMP - VISUAL BINARY FILE COMPARISON

PURPOSE:

  Read two files into memory and compare them, or compare  a file with memory.
In the case of similar files with  an extra byte here and there,  COMP doesn't 
work well.  With BCOMP, you can move the display around	in the files freely.

SYNTAX:	BCOMP [DU:|DIR:]FILE1 [DU:|DIR:][FILE2] [/]

   If no FILE2,  then FILE1 name is  used again.   If no DU:FILE2, then second
window is memory.  "/" option forces automatic wild-carding of filenames.

Z3CPR TOOL:
   Requires 80 x 24 CRT (minimum) with TCAP support for EREOL, CLS, cursor.

USAGE:
	1) Find the differences between two similar files.
	   Example:  BCOMP VERS1.COM VERS2.COM 
		     
	2) Compare disk image and memory image.
	   Example:  BCOMP SYS.RCP


TUTORIAL EXAMPLE:   (Type what is in brackets)

<BCOMP BCOMP.COM>     Looks at bcomp the file, and at memory.
<space bar>	      Switch to the memory window.
<F>,<"Z3ENV>	      Find string Z3ENV.
<R>		      Repeat, until a string at 103h is found.
<--->		      Back up 3 bytes.  The files are now in sync.
  You have found the PROGRAM running at 100h and are comparing it to the FILE
  residing wherever bcomp has read it in.
<C>		      Display goes to first place they differ.
  They differ at flag and pointer tables near the end.
<space bar><T>	      Bring file display back to the beginning.
<space bar><R>...     Look for the file in memory.  Sync them with <--->
  You are comparing the file to itself.
<C>		      Since there are no differences, get the EOF message.
<R>		      Eventually, find the ENV descriptor in high memory.

... more


ANOTHER EXERCISE:

<SAVE 255 TRASH>      Entire contents of memory from 100h
<BCOMP TRASH>	      Look at memory and memory image
<O><100>	      Now addresses should correspond
<I><FE00>	      That record is not in memory.  Have to READ first.
:v c
 			    COMPARING FILES 

     The display shows 128 bytes of  the first  file on the  upper half of the 
screen and 128 bytes of the second file on the lower half.  The alternate file
displays  a  **  for  identical  bytes,  a la  COMP.  When  switching  to  the 
alternate, the display scheme reverses.


C - AUTO-COMPARE:
     Find the next byte in which the files differ.  Display both files at that
byte.   If the display did not start with the files in sync,  then the command 
will only move a single byte ahead.  If no difference is found, an EOF message
shows on the status line.

V - VIDEO TOGGLE:
     Toggle highlighting  of bytes in  active window that  are  different from 
those in the  alternate window.   When  only  a few bytes differ,  it  is much 
easier to see them this way.  Default is OFF.
:e  
			MOVING BETWEEN FILES




<sp> - SWITCH FILES:  Toggle
	Cursor moves from one file to the other.

E - ECHO MODE:  Toggle
	Echo mode repeats  a command  for both  files so  you can move through
them in tandem.  The right upper corner shows a reminder when in echo mode.
:i


				INPUT More File

I - INPUT More File:
	If BCOMP printed a "memory full" message, more of the file may be read
in.   The new read replaces data currently in memory.   If there is no more to
read, you may start again at the beginning of the file.

        If the  MEMORY window is used instead  of  a second  file,  twice  the 
buffer space is available.
:a o
                          ADDRESS AND OFFSET
A - SET ADDRESS:
     A  hex (or decimal preceded by #)  address is entered.   The display then
goes to that  address relative to the current offset.   An address beyond what
is currently in memory will go to either the start or end of the buffer.
     If the offset is 100h,  address 100 is  the beginning  of the file.   The
address disply is  OK until 64k of file  is read in,  then it wraps to 0.  The
24 bit math needed to go beyond address FFFFh has not been implemented.
     
O - SET OFFSET:
     Input a  new hex offset.   The address  display for  the file will change
but the location in  memory will not.   Default offset for files is taken from
the  file  type (e.g. COM, RCP, ENV)  after  the  manner  of  ZPATCH.   Type 3 
environment files will be displayed at their load address offsets.
     For the memory window, the address display is always absolute.  An offset
is used to calculate a number for the record display.  For example, if you run
a Type3 program,  then run BCOMP to look at the file, the memory offset can be
set to the program's load address (8000h).   The file and  memory windows will
then show the  same  addresses and record  numbers as you compare  the file to 
its memory image.
:# h


# - GO TO RECORD:
     Input a decimal (or hex with # trigger) record number to jump to.   It is
up to you to pick  a record currently in memory.   BCOMP does not  random read 
the file looking for your record.   Record count display is  OK to 8  meg file 
max.

H - HEX CALCULATOR:
     The  hex  calculator  from  MU3  is  included.    It  displays  sums  and 
differences as well as decimal-hex conversion.
:f r

                              FIND STRING

F - FIND:
     Find the series of hex bytes entered.  

Syntax (taken from POKE):   <val1> <val2> .. <valn> <"text string...>

     No further hex  bytes may follow  the string trigger.   Note  there is NO
terminating ".   The hex input  routine (from MU3) will  accept  decimal bytes
with the # preface.

R - REPEAT FIND:
     Look for the same series again.   The string is maintained when switching
to the alternate file.
:/ ?

                                 HELP

     The help screen version will show the commands available,  as in the main 
menu for this file.

     The "expert" version will  just refresh the screen.   You may need  to do 
this if the read string function of BDOS has caused some linefeeds.
