
۲
۲
۲
۲                                          
۲                                                     
۲                                                      
۲                                                    
۲                                                     
۲                                                     
۲                                                
۲                                                                  
۲                          Ver 5.0.3                               
۲                          31 mar 2000.                            
۲                                                                  
۲    Made in Kazan.Tatarstan.Russia. Written By Nick Kurshev.      
۲                                                                  
۲         WWW:  http://biew.sourceforge.net                        
۲         FTP:  ftp://biew.sourceforge.net/pub/biew/               
۲      E-mail:  nick@voshod.com (up to 8Mb)                        
۲               nickols_k@mail.ru (up to 1Mb)                      
۲                                                                  
۲
۲
۲


 Preamble
 ========

    Biew  is  Binary  vIEWer  with   built-in   editor   for   binary,
hexadecimal and disassembler modes. The program also has  text  viewer
with different  Russia  codepages  support  (Windows-1251,  MSDOS-866,
etc.). Run the program with  -?  or  without  arguments  for  help  on
program switches.
    This program is Free and can be redistributed on any computers
without any limits. For details see license through
 [F1]-[F3] key.

 BIEW history
 ============

   Why did I write BIEW? As for me, I  was  always  looking  for  some
powerful viewer of binary files. All viewers that I had in  1995  year
did not satisfy me. Neither famous HIEW, neither  QVIEW  or  something
else did not contain more than 50% of needed features.
   And so, tired to wait when their  authors  would  write  a  viewer,
which can display  any  information  without  any  problem  about  any
executable file, I wrote BIEW. Though  it  looks  like  those  viewers
that I've already had (of course: I borrowed some ideas), but I  think
that it's easier and more modeless,  besides  I  tried  to  make  easy
access  to  different  information  stored  in  file.  Nowdays,   BIEW
conjoins PIII disassembler, TDUMP (  without  possibility  of  viewing
.obj as OMF ), EXEHDR, DUMPEXE, NewExe Disasm,  and  also  quite  good
text viewer with Russian codepage converter, and so on.
   However I do not want to  compete  with  any  other  authors.  More
over, I'm thankful to them, their programs pushed me  on  this  heroic
step - to carry out my own ideas. Basically, I wrote BIEW  for  myself
and my friends, and if somebody else appreciates it - good luck.

 Installation and setup
 ======================

   Today BIEW is ported under  several  operating  systems.  For  each
operating system there are own nuances of adjusting  the  program.  If
your operating system does not support security or if you always  work
as a Administrator, then the placing of files on the disk is a  matter
of your taste. Otherwise  you  can  place  program  in  your  personal
subfolder (where You have write access). As a rule, you can place  all
files of distribution in the same subfolder.

Under DOS, OS2, Win32 following files are needed:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   biew.exe - executable module ;-)
   biew.ini - file of initializing and keeping variable
s between sessions.
	      (is created automatically at first launch).
   biew.hlp - a file containing help system.
BIEW will search these files in startup folder.

For *NIX systems:
~~~~~~~~~~~~~~~~~
   biew     - executable module ;-)
   .biewrc  - file of initializing and keeping variables between sessions.
	      (is created automatically at first launch).
	      BIEW will search for (or try to create) it in the home directory;
	      if attempt will fail, then in  /tmp,  if you don't have
	      access rights to /tmp, then BIEW will work without it.
   biew.hlp - file containing help system. BIEW will try to open it
              as /usr/lib/biew/biew.hlp and in case of failure will
              work without it.

For more information see unix.txt

For all systems:
~~~~~~~~~~~~~~~~
Anyway, if you do not agree with default  placing  of  files  you  can
create BIEW_INI environment  variable  that  will  indicate  where  to
search a file of initializing a project, through  which  you  will  be
able to define all other adjustment of program.

 Short keyboard guide
 ====================

   Starting from version 5.00 there is following concept  of  keyboard
usage:

F1-F10   - Basic functions of BIEW, basically for switching modes.

ShiftF1- - Help functions of BIEW, for calling service utilities.
ShiftF10   

AltF1-   - Defined by executable module fragment of BIEW.
AltF10     (PE, NE, ELF, etc.)

CtrlF1-  - Defined by current view mode
CtrlF10    (bin, text, hex, disasm).

Basic keys:
-----------

  F1 - Displayed window "Intro" (About)
  F2 - Mode switch:
                Binary - Binary mode. All characters displayed as is.
                         ( Very quick )
                Text - Text mode. In this mode characters 0AH and  0DH
                       are  string  terminators.   The   program   has
                       several modes of text  view  available  through
                       Ctrl-F2.
                Hex - Hexadecimal mode. In this  mode  information  is
                      displayed in form of hexadecimal digits:
                           Byte - as 8-bit byte,
                           Word - as 16-bit word,
                           DoubleWord - as 32-bit double word,
                           Binary - as bits.
                Disasm - Disassembler mode. Information  is  displayed
                         as   assembly   instructions   of    CPU/FPU.
                         Disassembler contain full instruction set for
                         PentiumIII/K7 Athlon/Cyrix-M2 microchips.
                         Instructions   for   different   chips    are
                         displayed  with   different   colors.   Press
                         [ShiftF1] for color set legend, [CtrlF1]  for
                         known instruction sets.
  F3 - Select other file to view from file list in command line
  F4 - Modification mode. ( Not  available  in  text  mode  ).  Allows
       modifying information in binary, hexadecimal  and  disassembler
       modes. Also it is possible to put the  mask  [F3]  and  execute
       logical operation ( OR, XOR, AND, PUT ) for  input  information
       stream  and  mask.  Current  value   of   mask   displayed   in
       upper-right corner of screen [F2] - save changes to disk.  [F9]
       and [CtrlBkSpace] - restore original values of  modified  byte.
       In text mode this key (F4) switches Wrap/Unwrap modes.
  F5 - Goto. Moves current file pointer on given offset:
        - from start of file (ABSOLUTE mode).
        - from current position (RELATIVE mode).
        - to virtual address (VIRTUAL mode).
  F6 - Reread file.
  F7 - Search. Offers to  input  sequence  up  to  20  characters  and
       searches  for  it.  If  given  sequence  exists  then   program
       highlights it  during  all  lifetime,  or  until  other  search
       sequence, or file rereading.
  F8 - If viewing file is  DOS-driver,  DOS-exe  or  NEW-exe  displays
       "old" "MZ" DOS header. [Enter] - jump on entry point.
  F9 - Setup.
  F10 - Quit program. [Escape] - alternative way.

SHIFT - common utilities and setup:
-----------------------------------

  ShiftF1 - Help for current mode.
  ShiftF5 - Where - Display information about current file position.
  ShiftF6 - System information:
            - ASCII table of character generator.
            - ...
  ShiftF7 - Continues search without query for new sequence.
  ShiftF8 - Auxiliary utilities:
            - Digital converter. Convert numbers from one base to other:
              16, +-10, 8, 2
            - Calculator
            - ...
  ShiftF10- File utilities. Utilities that allow  to  change  contents
            and size of current file.
              - ChSize. Change file size.
              - FStore. Write  dump  of  current  file  to  the  given
                filename  of  choice.  It   is   possible   to   write
                disassembler block of information in selected  bitness
                (USE16 or USE32). Not allowed out of range of file.
              - FRestore.  Restores  already  stored  before  dump  of
                information starting from given  position  and  length
                in  file.  Not  allowed   out   of   range   of   file
                (Autotruncation).
              - Insert/delete  -  Inserts  empty  block  or    deletes
                existing block of information with resizing.
              - Crypt block - crypt/decrypt block with user password.
                This feature used non standard algorithm of encryption.

ALT - key binding to NEW-exe:
-----------------------------

Usage of these keys is not hard limited, and  generally  follows  this
conception:

(function is applied only if given feature exists in current format)

  AltF1 - Help for current format.
  AltF2 -  Displays  list  of  external  modules  (dynamic  or  shared
          libraries) referenced by the current module (dynamic  link).
          In  many  modes  by  pressing  [Enter]  list  of  referenced
          external (imported) names (functions) from  required  module
          needed for external link resolving will be displayed.
  AltF3 - Displays list of exported names.
  AltF8 - Displays native (non MZ) header of module.
  AltF9 - Displays list of pages contained in the objects of module.
  AltF10 - Displays object (segment) list of module.

All other keys have function defined by internal structure of module.

CTRL - key binding to view mode:
--------------------------------

  CtrlF1 - Additional mode help.
  CtrlF2 - Select "submode" of view
  CtrlF6 -  Address  Resolution  (Resolving)  -  in  hex/disasm  modes
           controls details of address in left  column.  Will  display
           absolute  file  offset  from  beginning  of  the  file   or
           relative offset from  beginning  of  the  block/segment  of
           current binary format with the name of  block/segment.  All
           other keys are defined by selected mode.

  Note: you can jump on points  in  tables  or  lists  highlighted  by
        black background by pressing [ENTER].

Functional keys, that are not displayed in prompt string:
=========================================================

Ctrl-O - Review the last screen. This allows  you  to  see  again  the
         output produced by the last program executed.

 CodeGuider
 ==========
 (available only in disassembler mode)

Codeguider is mechanism of moving within code of program.  For  moving
within code following keys are used:

  [0],[1],[2],...[9],[A]([a]),[B]([b]),...[Z]([z]), [BackSpace]

  If there's a pointer in the right position of  disassembler  string:
=>[X] then after pressing key [X] you move to  address  referenced  by
instruction.  To  return  back  press  [BackSpace].  Stack  of  return
addresses is 256 cells.


 History
 =======

Amount of found errors is decreasing in each release
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

v0.01       -              Was so long ago I don't remember.
v0.90       - 29 dec 1995. ( 80486/387 disassembler )
v0.99       - 17 jan 1996. ( Search system )
v1.00 BETA  - 19 jan 1996. Final edition 1.00.
v1.01 BETA  - 21 feb 1996. DOS Drivers header & system information
v1.50 BETA  - 27 feb 1996. RAM viewer
v1.51 BETA  - 01 mar 1996. PE header ( without tables )
v2.00 BETA  - 04 mar 1996. Text viewer
v2.01 BETA  - 05 mar 1996. Windows CodePage 1251 & DKOI converter
v2.02 BETA  - 06 mar 1996. EBCDIC converter
v3.00       - 12 mar 1996. Binary editor
v3.10       - 14 mar 1996. Hexadecimal editor
v3.11       - 15 mar 1996. Digital converter
v3.20       - 22 mar 1996. Disassembler editor.
v3.21       - 29 mar 1996. Performance detection CPU/FPU
v3.21 PRO   - 01 apr 1996. Testing of disassembler.
v3.22 PRO   - 02 apr 1996. Mouse support.
v3.23 PRO   - 04 apr 1996. Add work with dumps. ( CtrlF2 / CtrlF3 )
v3.50 PRO   - 04 may 1996. Add calculation of entry point in NE files.
v3.52 PRO   - 23 may 1996. LE,LX headers. LX name tables
v3.53 PRO   - 28 may 1996. PE objects.
v3.60 PRO   - 11 jun 1996. 80586 disassembler.
v3.61 PRO   - 31 jul 1996. PE table and entry points.
v3.65 PRO   - 19 feb 1997. ImpDef utility.
v3.66 PRO   - 23 may 1997. CMOS viewer.
v3.70 PRO   - 28 may 1997. For Ctrl-F2 changed dump of disassembler (add
                           labels), also different types of comments.
                           ( Special for A. Glinkin )
v3.79.99 PRO- 29 may 1997. 80686/80687 disassembler.
v3.80 PRO   -  2 jun  1997. K. Boldyshev made right translation of texts
                           to English. Better mouse support.
                           Automatic detection of text files.
v3.81 PRO   -  4 jun 1997. Correct some bugs.
v3.85 PRO   - 11 jun 1997. Add displaying relocation references
                           in MZ  NE structures.
v3.86 PRO   - 13 jun 1997. Add CodeGuider.
v3.87 PRO   - 23 jun 1997. In PE format for ImportDirRVA add correction
                           for MajVer,MinVer <> 0.
                           Add sort of lists by F2,F3.
v3.90 PRO   - 17 jul 1997. LX,LE tables and entry points.
v3.95 PRO   - 28 aug 1997. Speed-up NE file binding, and corrected some
                           mistakes of ver 3.90. Changed displaying prefixes
                           in disassembler. Add object code hiding ( CrtlF7 )
                           Rewrote Help of assembler.
v3.96 PRO   -  3 sep 1997. Speed-up MZ binding, corrected some errors of 
                           disassembler and shell.
v3.97 PRO   -  5 sep 1997. Virtual binding PE files. ( Virtual - because
                           special analyze of address of relative jump,
                           but not this place, as in NE format).
                           Corrected call/jmp far for MZ files!
                           Corrected 66h/67h for Use16/Use32 after change
                           prefix representation.
v4.00 PRO   - 26 sep 1997. P5MMX disassembler.
                           Optimization of disassembler.
                           Changed strategy moving within disassembler:
                             1. backward disassembling
                             2. keys <-,-> changed file position on -+ 1 byte
                             3. keys , changed file position on -+ 1 
                                instruction
                           Independent remember Bin/Txt/Hex/Asm for memory
                           and file.
                           Rewriting Help for disassembler; expanded service
                           in disassembler editor. Correct little errors.
v4.01 PRO   - 20 dec 1998. Work in protected mode.

New history.
~~~~~~~~~~~~

v5.0.0-beta.0 ! Changed interface, internal architecture of code. Now program is
16 may 1999.    more object-oriented. Rewrote aprox. 80% of code. (For program
                this started new life. Code now is simple expanded and made
                first steps in portability way - multiplatform) Somewhat lost
                (RAM, CMOS view), added alpha support Unix formats - ELF, a.out,
                coff32, arch
v5.0.0-pre.1  ! Cut off:
24 may 1999.    - work with memory
                - SysInfo (First step for porting on any platforms and OS'es)
                Added:
                + hot keys in lists.
v5.0.0-pre.2  ! Returned disassembler functions
26 may 1999.    + (HiLight, PanelMode, Reference resolving)
v5.0.0-pre.3  ! Bug fixes:
10 jun 1999.    * work with mouse.
                * conversation long int -> string
                * little errors of disassembler
                Added:
                + Additional info for MZ format (such as: archiver, ...)
                + alpha support of PharLap format.
                + quick mode switch by Enter
                + License (F9)
v5.0.0-pre.4  ! Bug fixes:
18 jun 1999.    * hex edition
                * errors of disassembler
                Added:
                + Pentium III instructions sets
                + K6 3dNow! instructions set
                + CPU family pointer in 10 position in disassembler mode
v5.0.0-pre.5  ! Added:
23 jun 1999.    + Cyrix 686 instructions set
                * Rewrote help of assembler
                + Search in lists
v5.0.0-pre.6  ! Changes:
30 jun 1999.    * Error of search in selective lists
                + ShiftF10 - File utilities
                * ShiftF2/ShiftF3 moved to ShiftF10 menu
                + Insert/delete block in File Utilities
v5.0.0-pre.7  ! Changes:
6 jul 1999.     * Error in Save as/Restore procedures
                * Linked with new version of XDOS16 loader
                Works on:
                - DOS + QDPMI 7 (1.02)
                - Win9x
                - WinNT + SP3
                - OS2Warp.4 + FP5
                Don't works on :-((( :
                - DOS + QDPMI 9 (1.10)
                - Linux + dosemu
v5.0.0-pre.8  ! Changes:
29 jul 1999.    ++++++ HURRAY!!! PROJECT IS PORTABLE +++++++++
                ++++++ JUST IN TIME 32-BITS VERSION
                ++++++ PORTED UNDER:
                ++++++ DOS32 (GO32 of DJGPP)
                ++++++ OS/2 (16 & (32 bit's version for EMX))
                ++++++ WIN32 for Cygwin and RSX
                + File Information in ShiftF10
                * Restored function AddressResolv by CtrlF6
                * Opened read-only file
                * Rewrote all console part
v5.0.0-pre.9  ! Changed:
20 aug 1999.    * Disassembler errors:
                  in some instructions with one operand wrong interpreted
                  field mod of command
                * Accelerated video output
                + Added .ini files (There biew saved basic variables for
                  restoring self state after rerun (In future will expanded)
                + Translit in Russia codepage converter
                * Corrected error in search system
v5.0.0-pre.10 ! Changes:
5 oct 1999.     * Detected error of disassembler - wrong displaying arguments
                  many instructions (I hope it last)
                * Don't warning, if write in file impossible
                * Correct error of edition for small files
                * Changed wrong size of some dialog windows
                * Cosmetic changes of dialog windows
                * Corrected some little errors
                + Additional Russian codepages
                + Common accelerates
                = Comparison of productivity 32 and 16 bits versions is: 4/1.
                 (May be 16-bits version must die?)
                + F3 - More
                + Initial Linux port
                + Displayed pressed control key in left lower corner ( special
                  for *NIX terminal )
                * Accelerated search by using Boyer-Moore algorithm
v5.0.0 (Stable) ! Changes:
20 feb 2000     ++++++ I opened project under GNU GPL (Developers are welcome!)
                * Project was proofread
                + Accelerated video output
                * Corrected minor errors
                * Disassembler block rewritten as plugin
                + Best memory usage. Decreased number of static arrays.
                  Dynamics array is allocated in compete mode.
                * Fixed memory leak (existed since v5.0.0-pre.9)
                + User screen (Ctrl-O)
                + Undocumented opcodes of i387SL, Cyrix487
                + Help system
                + Opcodes of AMD-K7 Athlon
                + Utilities rewritten as addons
                + Integer calculator
                + .Ini file has saved more number of modes
                + Crypt/Decrypt block
                * Fixed error of buffering of file
                * Fixed search system error
                * Correct disassembler error in SIB-block (existed since 0.xx
                  versions)
                + Released time slice while waiting for input
                + Virtual jump
                + Where. Display information about current position of file.
                + CPU performance utility (restored from 4.x versions)
                * Some optimization
                + 'Put structures' in Save as dialogs for disassembler mode.
                  (attempt to recreate internal structures of current file).
                + Added RDOFF support
                + Restored 0F BA opcodes family. 
                  Reported by ("Patrick Alken" <wnder@underworld.net>)
v5.0.1        ! Changes:
03 mar 2000     + Force mono output
                + Mouse sensitivity
                + Accelerated .ini file input/output
                * Fixed minor error in sources (ansi compliance, gcc-2.95
                  compatible)
                * Fixed bug in hexadecimal editor
                * Fixed minor bugs in disassembler
v5.0.2        ! Changes:
26 mar 2000     * Fixed bug of viewing 0 length file(s) reported by
                  ("Alexey Plehanov" <aplehan@hoaxer.opensys.tsogu.ru>)
                * Fixed bug in disassembler editor (when screen width > 80).
                  Fixed by CyberMan (cyberman@ag.ru)
                + Added fully-featured Unicode support (ru/en zones)
                  and lot of Unicode-related bugs fixed.
                * Fixed bug when search system did not correctly show the found
                  string in text mode with expanded tabs characters, when the
                  found string was outside of screen
                + Max. width of screen increased upto 255 chars.
                * Fixed minor bugs
                * Minor optimization
                * Now function twDirectWrite is not affected cursor position
                + Win2000 ready! (thanks to Eugene Roshal roshal@rarsoft.com and
                  Cyberman cyberman@ag.ru)
                + MSCV 6.0 port (ported by Cyberman cyberman@ag.ru still 
                  without assembler block).
                + Hexadecimal viewer adapts to screen size.
                * Full screen editors rewrite contents lesser.
                * If value of item written to .ini file has % symbol,
                  then this string is written to .ini file within #nosmart
                  #smart records.
5.0.3         ! Changes:
31 mar 2000     * Fixed bug of lost title and footer in some windows.
                  (twRefreshWin now updates only internal part of window,
		  but entire window is updated with twRefreshFullWin)
                * Fixed bug of creating temporary files when it was unable
		  to open viewed file.
                * Convert OS/2 rc to UNIX errno.
                * In windows that used own filling technology filler char is
                  changed from 0x00(zero) to TW_DEF_FILLER.
                  Thanks to Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
                * All constants from twin.h file now have prefix TW_*.
                * Found way to avoid problem of bugs of console input
                  under Win95. Works while with the little delay.
                  Tested on Win95 PE, OSR2, Win98
                  Fixed by Shoorick <alex@eunet.lt>
[]======================================================================[]
[]  Thank you for your interest.                                        []
[]  Nick Kurshev.                                                       []
[]======================================================================[]
