textfiles/computers/DOCUMENTATION/hexedit.txt

1453 lines
58 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

HexEdit 2.1
~~~~~~~ ~~~
By Mike Graham.
Copyright 1986,1991.
April 20th, 1991. 7:26.
Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . 2
2 Features . . . . . . . . . . . . . . . . . . . . . . 2
3 What is Freeware? . . . . . . . . . . . . . . . . . . 3
4 What does registration get you? . . . . . . . . . . . 3
5 Distributing HexEdit . . . . . . . . . . . . . . . . 4
6 Commercial use of HexEdit . . . . . . . . . . . . . . 4
7 Unlimited? . . . . . . . . . . . . . . . . . . . . . 4
8 Installing HexEdit . . . . . . . . . . . . . . . . . 5
8.1 General Installation . . . . . . . . . . . . . . 5
8.2 Installing for DESQview . . . . . . . . . . . . 5
8.3 Installing for Windows 3.0 . . . . . . . . . . . 5
9 The Basics . . . . . . . . . . . . . . . . . . . . . 6
9.1 Starting up HexEdit . . . . . . . . . . . . . . 6
9.2 Once You're Started . . . . . . . . . . . . . . 6
10 The Keys . . . . . . . . . . . . . . . . . . . . . . 7
10.1 F1: Help . . . . . . . . . . . . . . . . . . . 7
10.2 F2: Jump to Byte . . . . . . . . . . . . . . . 7
10.3 Shift-F2: Jump to Sector . . . . . . . . . . . 8
10.4 F3: Search . . . . . . . . . . . . . . . . . . 8
10.5 F4: Search and Replace . . . . . . . . . . . . 8
10.6 F8: Mask non-text bytes . . . . . . . . . . . . 8
10.7 F9: Mode . . . . . . . . . . . . . . . . . . . 8
10.8 Alt-A: ASCII Table . . . . . . . . . . . . . . 9
10.9 Alt-B: Base Conversion . . . . . . . . . . . . 9
10.10 Alt-C: Configuration . . . . . . . . . . . . . 9
10.11 Alt-N: Next Found . . . . . . . . . . . . . 10
10.12 Alt-P: Previous Found . . . . . . . . . . . 10
10.13 Alt-S: Shell to DOS . . . . . . . . . . . . 10
10.14 Alt-T: Text Search . . . . . . . . . . . . . 10
10.15 Alt-U: Undo . . . . . . . . . . . . . . . . 10
10.16 Alt-X: Panic Abort . . . . . . . . . . . . . 11
10.17 Esc:Exit . . . . . . . . . . . . . . . . . . 11
10.18 Backspace . . . . . . . . . . . . . . . . . 11
10.19 Cursor Keys . . . . . . . . . . . . . . . . 11
11 System Requirements . . . . . . . . . . . . . . . 12
12 Odd Notes . . . . . . . . . . . . . . . . . . . . 12
13 Future Enhancements . . . . . . . . . . . . . . . 13
14 Revision History . . . . . . . . . . . . . . . . . 14
15 Legal Crud . . . . . . . . . . . . . . . . . . . . 18
16 Credit where credit is due . . . . . . . . . . . . 20
17 Contacting the Author . . . . . . . . . . . . . . 21
i
HexEdit 2.1 By Mike Graham
1 Introduction
HexEdit is a programmer's hexadecimal patch editor. "What," you ask,
"is a programmer's hexadecimal patch editor?" Well, it's a special
editor, similar to a text editor except that it deals with unformatted
binary files, rather than nice, clean text. For more info on the uses of
patch editors, see the HEXEARL.TXT file.
HexEdit has evolved greatly since version 1.0 back in '86. The
revision history is near the end of this document.
2 Features
- Handles files of unlimited size.
- Records all changes to a file, with an UNDO feature wherein you
can selectively UNDO any number of changes.
- UNDO log files can be saved to disk before you leave HexEdit, so
the next time you edit the file, you will have the same changes
available for UNDO.
- Searches files at a rate of around 10 seconds per megabyte on a
high-powered machine.
- Fast and flexible search / search and replace. You can search
with or without case-sensitivity. Searches can be aborted mid-
stream, even when doing a replace, with no problems.
- High-speed, crisp response; HexEdit can keep up with every
keyboard accelerator I've tried it with.
- Random access jump to any byte(F2) or sector(SF2) of a file.
Location can be specified in decimal or hexadecimal format, or you
can simply specify top or bottom of file.
- Searches for character strings or hexadecimal series'.
- Will store the location of up to 15,000 search matches.
- Move through file by jumping to locations where items were found
in the last search operation.
- On-line base conversion including decimal, hexadecimal, and
binary.
- Pop-up ASCII table (Alt-A) for quick reference of weird
characters.
- Search for random text strings (Alt-T) in binary files.
Page Two.
HexEdit 2.1 By Mike Graham
- Swapping DOS shell
- Full colour customization, with all changes stored directly in the
executable file, meaning no configuration files to fool around
with.
- Panic abort of edit. If all else fails... PANIC! The file being
edited will revert to its original (pre-edited) state, and you
will instantly drop back to DOS.
3 What is Freeware?
We're all familiar with the Shareware concept: you're allowed to use
the product for so many days, then if you intend to continue using it you
have to send a cheque for so many dollars ere you burn in hell forever.
Freeware is different.
We're all TOO TOO familiar with Crippleware (an evil, perverted
mutation of Shareware) in which you get a product that has all of the
nice features disabled. Or it dies and will never run again after a
certain number of days. To get one that works, you have to cough up the
money. How can you tell if it will do what you need it to DO, if you
can't USE IT???
Freeware is better.
With the Freeware concept, I'm not TELLING you to send me money. I'm
giving you a completely working product which you can use forever and a
day without paying for, if you want. However, if you DO like this
product, and you'd like to see new versions of it in the future, then it
would likely be in your best interest to register the product and support
my programming efforts. There is no preset registration fee (though $20
per copy used is recommended). Send whatever your conscience tells you.
All I ask is that you at least cover the cost of mailing out the latest
version to you (minimum $10 to cover postage, disk, disk mailer, etc.).
Some of the companion products that come with HexEdit (such as
HexConvert and KEYLOCK) have actually been released to the public domain.
This means that I have basically abandoned all ownership of the programs
(though I still reserve the names as copyright) so you can give them to
anyone with no registration obligation at all. Feel free to install
KEYLOCK on the machine at work, or whatever.
4 What does registration get you?
If you register your product, you get the latest version mailed to you
on whatever size of floppy disk you specify (also specify the version you
have, so if you already have the latest then I'll wait and send you the
next one when it's out). Once registered, your name goes on file, and
Page Three.
HexEdit 2.1 By Mike Graham
you will be alerted of the next release by mail (or whatever method is
most convenient). At any time you can send me $10 and I'll send you the
most recent version. See HEXORDER.FRM for further information regarding
registration.
Oh yeah, if you send me a good idea regarding alterations to improve
HexEdit, or if you send in a good (read 'current and real') bug-alert,
you will be automatically registered for the next version (which will
include your suggestion or bug-fix).
I'm expecting to release new versions of HexEdit roughly every three
months or so.
5 Distributing HexEdit
Feel free to upload any UNMODIFIED copies of HexEdit anywhere you like.
You can ADD HexEdit-related files to the HEXEDnn.ZIP, but don't CHANGE or
DELETE files. I.e, if you came up with a really amazing help screen or
icon for HexEdit, you can include it with the zip file to give to someone
or distribute, but make sure that the original file remains with its
original name. You can add a readme file to promote your addition. BBS
Advertisements can be added, but I'd appreciate it if it doesn't appear
each time you run HexEdit (i.e. those irritating RUNME.BAT files that
some people come up with... I DESPISE title screens!)
6 Commercial use of HexEdit
If you represent a company that would like to use HexEdit, but require
a special version, detailed technical specs, source code, better docu-
mentation, site licensing, or whatever, then drop me a line, and I'll see
what I can do. Changes can usually be made in a weekend, but if they're
really in-depth and nasty, then it might take a week. Drop me a letter!
What do you have to lose? Even if you are a mere human being, and not a
company at all...
7 Unlimited?
Occasionally throughout this document I will use words and phrases like
'unlimited', 'unending', 'really totally humongous' etc. It should be
noted that there are limits to everything, so when I say unlimited I mean
limits so huge that you have to be NASA to exceed them. For instance, I
mention unlimited file size, when in reality you can only edit files of
up to 2.5 gigabytes or so (well, up to almost 5 gigabytes, but I suspect
it gets pretty flaky after 2.5 gigabytes.. I haven't exactly been able to
test that part...). Of course, it relies on hard drive size as well,
which limits most people to files of around 100 megabytes and less. For
all intents and purposes, that's big enough that I can get away with
saying unlimited.
Page Four.
HexEdit 2.1 By Mike Graham
8 Installing HexEdit
8.1 General Installation
The only file absolutely required to use HexEdit is the executable file
HE.EXE. If this file is put in your path somewhere, then you should have
no trouble at all. To use the on-line help, the file HEXEDIT.HLP should
be copied into the same directory as HE.EXE. To use HEB.BAT for
automatic backups (see subsection "Starting up HexEdit" below) then you
will need to copy HEB.BAT and MAKEBAK.EXE to your path (they do not need
to be in the same directory as HE.EXE).
8.2 Installing for DESQview
HexEdit is a DESQview-aware application. Because of this, it can be
run more fluidly under DESQview than a non-aware application could be.
To install HexEdit, you should copy the HE-PIF.DVP file into the
directory with HE.EXE. Now, simply pop up the DESQview main menu, select
the "Open Window" menu, pick "Add a Program", and select "O" for "Other
(add program not in list)". In the dialogue box that appears, fill in
the directory that you copied HE.EXE and HE-PIF.DVP to. Once you hit
enter, you can select to install HexEdit. Note that if you also copied
the Windows 3.0 PIF file to the HE.EXE directory, then you will actually
have a choice between TWO seemingly identical "HexEdit" applications to
install. This is because DESQview partially understands PIF files. Pick
the HexEdit in the left-hand column. HexEdit is now installed. Note
that the DVP file assumes that the HE.EXE file is in the path. If it
isn't, you will have to modify the DVP file slightly.
8.3 Installing for Windows 3.0
HexEdit comes with a Windows 3.0 PIF file, and two icon files. If you
want to run HexEdit under Windows, then you should copy at least the PIF
file to the HexEdit directory. To install, simply run Windows, select
the group you want to add HexEdit to as the current group, and select
"New" under the "File" menu. You will now see a dialogue box asking you
whether you want to add a new program item or a new group. Make sure the
"Program Item" radio button is pressed, and click on "OK". You now see
the "Edit Properties" dialogue box. Type in the full path of the HexEdit
PIF file (HE.PIF). Once that's typed in, click on "Change Icon", and
type in the full path of one of the HexEdit .ICO files. Click on "View
Next" to make sure the path is right, and you should see the custom icon.
Try changing the icon path to the other icon file (there's "HE.ICO" and
"HE2.ICO") and viewing it; each icon has its merit. Once the icon is
selected, just click on "OK" a few times, and you're done. It's
installed. You will likely have to change the PIF file slightly to
specify where you copied HE.EXE, though.
Page Five.
HexEdit 2.1 By Mike Graham
9 The Basics
9.1 Starting up HexEdit
Just call up HexEdit with a file name as the first parameter, and an
UNDO file as the (optional) second parameter. Additionally, you can add
"/MONO" after the last file parameter to force the 'factory default'
monochrome colours. For a quick refresher of parameters, you can just
run HexEdit with no parameters, and you will get a help screen listing
all of the parameter choices.
For example: "HE JUNK.DAT JUNK.LOG /MONO" will start HexEdit and load
JUNK.DAT using JUNK.LOG as the UNDO log. The monochrome 'factory
default' colour set will be used.
If you want HexEdit to make a backup of the file you're editing, then
replace "HEB" for "HE" in the above commands. HEB is a batch file that
automatically copies whatever file you want to edit to a file with the
extension .BAK. If the file you're editing IS a .BAK file, then a file
with the extension .BA0 will be created.
9.2 Once You're Started
The file is read in, and you see the first page (256 bytes) of it. It
looks sort of like this:
<EFBFBD>[Editing: C:\UTIL\HE\HE.EXE]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[HexEdit 2.1]<5D><><EFBFBD><EFBFBD><EFBFBD>
Found: 127/290 Changes : 4297 Mask:Off Mode:C Page:1
Current Sector: 39(00000027) Byte: 20360(00004F88)
Total Sectors : 127(0000007F) Bytes: 65503(0000FFDF)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>00<EFBFBD>01<EFBFBD>02<EFBFBD>03<EFBFBD>04<EFBFBD>05<EFBFBD>06<EFBFBD>07<EFBFBD>08<EFBFBD>09<EFBFBD>0A<EFBFBD>0B<EFBFBD>0C<EFBFBD>0D<EFBFBD>0E<EFBFBD>0F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0123456789ABCDEF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
00- 74 69 6F 6E 20 6F 66 20-48 45 58 45 44 49 54 2E -00- tion of HEXEDIT. -00
01- 54 58 54 20 66 6F 72 20-6D 6F 72 65 20 69 6E 66 -01- TXT for more inf -01
02- 6F 72 6D 61 74 69 6F 6E-2E 36 54 68 65 72 65 20 -02- ormation.6There -02
03- 69 73 20 6E 6F 20 64 69-66 66 65 72 65 6E 63 65 -03- is no difference -03
04- 20 62 65 74 77 65 65 6E-20 74 68 65 20 72 65 67 -04- between the reg -04
05- 69 73 74 65 72 65 64 20-61 6E 64 20 6E 6F 6E 2D -05- istered and non- -05
06- 33 72 65 67 69 73 74 65-72 65 64 20 76 65 72 73 -06- 3registered vers -06
07- 69 6F 6E 73 20 28 74 68-69 73 20 69 73 20 4E 4F -07- ions (this is NO -07
08- 54 20 43 72 69 70 70 6C-65 77 61 72 65 21 21 21 -08- T Crippleware!!! -08
09- 21 21 29 2E 0F 20 20 20-20 4D 69 6B 65 20 47 72 -09- !!). Mike Gr -09
0A- 61 68 61 6D 0D 20 20 20-20 42 6F 78 20 36 30 30 -0A- aham Box 600 -0A
0B- 33 36 18 20 20 20 20 55-20 6F 66 20 41 20 50 6F -0B- 36 U of A Po -0B
0C- 73 74 61 6C 20 4F 75 74-6C 65 74 10 20 20 20 20 -0C- stal Outlet -0C
0D- 45 64 6D 6F 6E 74 6F 6E-2C 20 41 42 13 20 20 20 -0D- Edmonton, AB -0D
0E- 20 43 61 6E 61 64 61 20-20 54 36 47 20 32 53 34 -0E- Canada T6G 2S4 -0E
0F- 3C 20 6F 72 20 63 6F 6E-74 61 63 74 20 22 6D 69 -0F- < or contact "mi -0F
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>00<EFBFBD>01<EFBFBD>02<EFBFBD>03<EFBFBD>04<EFBFBD>05<EFBFBD>06<EFBFBD>07<EFBFBD>08<EFBFBD>09<EFBFBD>0A<EFBFBD>0B<EFBFBD>0C<EFBFBD>0D<EFBFBD>0E<EFBFBD>0F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0123456789ABCDEF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
F1:Help F2/SF2:Jump F3:Search F4:Srch/Rep F8:Mask F9:Mode ESC:Exit
Alt keys: A:Ascii B:Base C:Config S:Shell X:Abort! T:Text U:Undo
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
At the top, you see the name of the file being patched (in this case,
HE.EXE) and the version of HexEdit. On the next line you see 'Found:
127/290' which indicates that the last search you did resulted in 290
Page Six.
HexEdit 2.1 By Mike Graham
finds, and you most recently jumped to the location of the 127th found
item (think of it as location 127 of 290 locations). In the center of
that line you see 'Changes: 4297'. This indicates that 4297
modifications have been made to the file (use UNDO (Alt-U) to restore the
file to its original form). To the right is 'Mask:Off'. This is the
indicator for the text filter mask. Farther to the right is 'Mode:C'.
This indicates that you're currently in character editing mode, so any
key you hit (besides arrow keys etc.) will overwrite the character under
the cursor. If you were to change to hex mode (F9) then you can edit the
hex value of the byte directly (the C will change to an H). Farther to
the right is 'Page:1'. This tells you that you're on the second
(numbered from 0) 256 byte chunk (or 'page') of the current 512 byte
sector. On the next line is the number of the current 512 byte sector
within the file (in decimal, with hex in the brackets) and the offset of
the current byte (hex in the brackets). The next line is similar to the
one above, except that it indicates the maximums for the file, i.e. the
number of sectors and bytes in the file. Bytes, pages and sectors are
numbered with the first one being zero. Everything else is pretty
obvious.
A word about nomenclature: a file is divided in to any number of 512 byte
sectors, which are in turn divided into two 256 byte pages. At any given
time you are looking at ONE PAGE of the CURRENT SECTOR. Any time you
specify a sector target, you will jump to the first PAGE of that sector
(in other words, you might have to hit page-down once after the jump to
get where you want to be if you wanted the second page of a certain
sector).
10 The Keys
10.1 F1: Help
This key will call up the one-page text file 'HEXEDIT.HLP' if it can
be found in the same directory as the HexEdit executable file. Feel free
to edit this file to your liking.
10.2 F2: Jump to Byte
Hitting this key will call up a command line which asks: 'Byte to jump
to [dec/$hex/MIN/MAX/F/L/N/P]'. The net effect, is that if you type in a
decimal number like '100' or '51231', then you will be instantly
transported to that byte (Remember! Bytes are numbered from ZERO, so byte
#1 is the second byte in the file). If you type in a hexadecimal string
beginning with a dollar sign (i.e. '$F10F') then you will jump to the
byte denoted by that value. If you type in MIN, you will jump to the
first (minimum) byte, MAX will jump to the last (maximum) byte in the
file. F is the first found item, L is the last found item, N is the next
and P is the previous found item.
Page Seven.
HexEdit 2.1 By Mike Graham
10.3 Shift-F2: Jump to Sector
This works almost exactly the same as F2 except that if you specify a
number in decimal or hex, you will be 'jumped' to the first page of that
SECTOR, not BYTE. Other than that, the MIN/MAX/F/L/N/P choices work
exactly the same. You will find that you will generally use F2, but this
function is included for completeness.
10.4 F3: Search
This feature works differently depending on whether you are in HEX or
CHAR editing mode. If you are in HEX mode, it will prompt and search for
a HEX string. If you're in CHAR mode, then it will prompt and search for
a character string. After the string is entered you will be prompted as
to whether you want the search case sensitive or not. Hitting <ESC>
instead of <ENTER> to terminate input of the search string will cause the
search to abort.
10.5 F4: Search and Replace
Same as search (F3) except after the case sensitivity prompt, you are
asked for a string/hex series to replace the search string/hex series
with (must be the same length if hex, can be shorter if you're searching
for text (string will be padded with space (ASCII 32) characters if
shorter). After the replacement string/series is entered, a box pops up
asking you if the details are correct (remember: short strings are
padded at the right!). If not, you can retype the replace string/series
until it IS right (or ESC to abort). After the replace string/series is
entered correctly, you are asked whether you want to be prompted for each
replace. If you indicate that you do NOT want to be prompted, then
everything will happen automatically, and every occurrence of the search-
string/series in the file will be replaced by the replace string/series.
If you indicate that you DO want to be prompted, then every time the
search string is found, you are prompted whether you want to 'Replace?
<Y/N/A/Q>'. 'Y' and 'N' are simply 'yes' and 'no'. If you want to
replace this occurrence, then type 'y'. If you don't want to replace
this occurrence, then type 'n'. If you type 'A' (for Automatic or All)
then all of the remaining occurrences will be replaced automatically. If
you type 'Q' (for Quit), then you will be returned to the main HexEdit
screen without replacing this, or any subsequent occurrences.
10.6 F8: Mask non-text bytes
Hitting this key will toggle the text mask on and off. When active,
the text mask causes all bytes that are not text bytes (i.e. ASCII
#32-#126) to appear on the screen as periods ('.') rather than as their
actual values. This is convenient when you are looking through a file,
and want to view only the textual information (see also Alt-T: Text
Search).
10.7 F9: Mode
Toggle between character editing mode and hex editing mode. In
character editing mode you can replace characters by typing directly with
Page Eight.
HexEdit 2.1 By Mike Graham
the keyboard (the cursor will be on the character array on the right hand
side of the screen). In hex mode, you enter the hex codes with the
keyboard, and the characters are replaced with the ones represented by
that hex code (the cursor will be on the hex grid on the left side of the
screen).
10.8 Alt-A: ASCII Table
Hitting this key will pop up an ASCII table which has fairly simple
commands. All of the standard cursor commands (PGUP, PGDN, ARROWUP,
ARROWDN, HOME, and END) do things that make sense, so it shouldn't be a
really stressful thing to get the hang of. Hit ESC when you're done with
it.
10.9 Alt-B: Base Conversion
Hitting Alt-B will pop up a small window in the upper-left corner of
the screen. There are three lines in this window. The first line is the
value in decimal, the second hexadecimal, the third in binary. On pop-
up, the value displayed will be whatever value was under the cursor when
you hit Alt-B. Once in the window, however, you can tab about the lines
and change them. A change in one is reflected in them all. Hit ESC to
return to HexEdit.
10.10 Alt-C: Configuration
Change the default colours. If you're running a monochrome system,
you might not want to run this, as I designed default colours that work
pretty nicely for monochrome, but it never hurts to check it out. It's
REAL easy. After hitting ALT-C, you will be looking at a box with a list
of items down the left, and a facsimile of the HexEdit main screen on the
right. Just use the cursor keys to pick the item to change. Once you
have selected an item, you get the attribute box, which shows you the
current foreground/background/blink options for that item. You use the
cursor keys to change the colours (note the sample colour swatch at the
bottom of the attribute box). When you have the colour set the way you
want, just hit enter, and you will return to the main configuration box,
and the screen will be updated with the colours you selected. If you
pick some really gross colours, and decide to switch back to the colours
you had before you entered the configuration section, just select
"RESTORE". Once you have the screen the way you like it, just hit
<ESCAPE> and you will be asked whether you want to save the changes to
disk or not. If you reply no, then the changes will last for the current
editing session only, otherwise they will be saved permanently. Just
give it a try and see what happens. Changes are written directly to the
HexEdit executable. Note that you can rename 'HE.EXE' with impunity.
HexEdit always knows what you've renamed it to. The only thing that
needs to be changed if you rename HE.EXE is HEB.BAT. By default, HEB
calls "HE %1 %2 %3 %4". If you change the name of HE.EXE, than you
should change HEB.BAT accordingly.
Page Nine.
HexEdit 2.1 By Mike Graham
10.11 Alt-N: Next Found
This is just a shortcut for F2/N. It will jump you to the next found
item on the FOUND list.
10.12 Alt-P: Previous Found
This is just a shortcut for F2/P. It will jump you to the previous
found item on the FOUND list.
10.13 Alt-S: Shell to DOS
Use this function to quickly drop to DOS to copy files etc. Just type
"EXIT" at the DOS command line to return to HexEdit. A note regarding
swapping to DOS: don't delete any of the files that are in use by HexEdit
while swapped to DOS! I.e. don't delete the file you're editing, or the
HEXEDIT.LOG file, or the HEXEDIT.SWP file!. Changing directories is
okay, but you DON'T want to delete any files that are currently open. If
you DO delete any of the really important files (even if they have a 0
file size) then bad things could happen, and you will likely have to run
a CHKDSK/F to clean things up.
10.14 Alt-T: Text Search
Search for random strings of text (ASCII characters 32 to 126) of a
certain minimum length. For instance, you're patching COMMAND.COM, and
you want to change the name of the batch file that's executed on start-up
(i.e. instead of AUTOEXEC.BAT, make it RUNME.BAT). After you've done
this with a quick search and replace (F4), you suddenly wonder to
yourself "Gee, I wonder what ELSE I can change?". Rather than using
PGUP/PGDN to crawl around the file looking for text, you can simply do a
text search for strings with a length of 12 or so. This will find all
the interesting (changeable) parts of the file. Give it a try. It's
hard to explain, but you'll like it.
10.15 Alt-U: Undo
You can undo an unlimited number of changes made to the file currently
being edited. After you hit Alt-U, you will be prompted for the number
of changes to undo (the default is 1, or whatever number you undid the
previous time). You can either type in a number (decimal only.. why
bother with hex in this instance?) or either of the keywords 'ALL' or
'PURGE'. Entering 'ALL' will undo all of the changes, just as if you had
typed in the number of changes that had actually been done (saves you
from typing weird numbers all of the time). If you enter the keyword
'PURGE' instead of a number, then you will be prompted for the number of
changes to retain. For instance, say you had done a rather huge search
and replace and had replaced 100 20 character strings (resulting in 2000
changes). Perhaps you don't want all 2000 changes in your logfile. If
you don't, you can hit Alt-U to pop up the UNDO prompt, enter 'PURGE',
then enter 20 or something somewhat smaller to reduce the size of your
purge file. You don't HAVE to do this... the undo file can grow to any
size that your hard drive will permit, but sometimes it's nice the prune
the sucker down. Remember that when you UNDO something, that UNDO action
Page Ten.
HexEdit 2.1 By Mike Graham
is added to the UNDO log... the net effect is that if you keep UNDOing
one action, you will just toggle between two values and keep adding to
the UNDO log. For instance, if you change a 'b' to an 'a' and back
again, then HexEdit remember each change, even though they are redundant
(i.e. you're back where you started from). Keeping this in mind, another
example of when you would want to purge would be if you had done a
massive search and replace, then decided that you really didn't want to
do that... If you UNDO the search and replace, then you have redundant
UNDO records in the log: a set of records changing the file, and a set
changing it back. You can PURGE the log down to what it was before the
whole search and replace fiasco, and still be able to UNDO everything.
What the heck; if you want to do it, do it. Remember: if you purge the
UNDO log, the panic-abort option may not restore the file entirely
(unless the changes you purged were redundant).
10.16 Alt-X: Panic Abort
Hitting this key combination pops up a window which asks if you really
want to fast-abort the edit. If you respond yes, then all of your
changes to the file are undone, and you are immediately kicked out to
DOS. Use this if you have maimed the file you're editing beyond all
recognition, and just want to get out HexEdit, lick your wounds, and hope
nobody ever finds out about the incident. Note that HexEdit can only
UNDO the changes that are recorded in the current UNDO log, so if you
have PURGED it, you're out of luck.
10.17 Esc:Exit
If you can't figure this one out, you need more help than I can give
you.
10.18 Backspace
Yes, believe it or not the backspace key gets a separate subsection.
When you use the backspace key, the cursor will move one space to the
left, and it will additionally undo any changes made to the character on
the space it just moved onto. Note that this is not the same as the
ALT-U UNDO, this is just a quick way to undo changes that haven't been
saved yet. Just type in a couple of characters and hit the backspace key
a few times and you'll see what I mean. You'll love it!
10.19 Cursor Keys
See the on-line help file "HEXEDIT.HLP" (F1) for fast reference to all
of the movement key assignments. The only thing you need to remember is
that if you hit the up arrow when you're at the top of the current page,
then you will move to the bottom line of the previous page. All of the
cursor keys work in that fashion. A little experimentation will reveal
all.
Page Eleven.
HexEdit 2.1 By Mike Graham
11 System Requirements
HexEdit requires one floppy disk drive, and 384K of memory. However,
just because HexEdit will USE pedestrian hardware doesn't mean it LIKES
it. Give HexEdit hard drives and things like that, and you will have a
friend for life. For ultimate performance, run it on a RAM disk. EMS
will be utilized for the swapping DOS shell (up to about 700K or so) if
it's found. The only incompatibility that I know of is this: HexEdit
uses direct memory checks to see if a key has been pressed. For this
reason, if your system has the keyboard buffer in a nonstandard place,
then you might have problems aborting from searches etc. TSR programs
that expand the keyboard buffer are known to cause problems. Note that
HexEdit currently even works on Tandy 1000's, so any clone that calls
itself "100% compatible" should work with no problems.
12 Odd Notes
These are NOT bugs, they're simply somewhat unexpected operating
methods.
- You may find the cursor speed in HexEdit to be not so hot.
HexEdit uses BIOS functions for most keypress functions, therefore
it can only go as fast as your keyboard sends the keypress info.
If you use a keyboard accelerator like Cruise Control, PC-Kwik
key, or something similar then you will find MARKED improvements.
HexEdit spends about 80% if its time waiting for keystrokes, so if
you use an accelerator then you can pump keystrokes into HexEdit
MUCH faster, making for faster scrolls, etc. Note also that if
you use DOS 4.01 or better, then you can use the command "MODE
CON:RATE=32 DELAY=2" and that will speed up the keyboard as well
(though not NEARLY as fast as Cruise Control or PC-Kwik key can).
- HexEdit REQUIRES DOS 3.0 or better. It might work on prior
releases, but some of the features might not work properly. The
reason it needs the recent DOS is because HexEdit needs to
backtrack the executable file in order to do the configuration,
find the help file, etc.
- The file is saved as you go along. Whenever you change the
displayed sector, the 'Changes: n' display at the top of the
screen starts blinking. Also, every character that has been
altered is highlighted. When you try to exit or move from this
sector using PGUP or PGDN or whatever, you will be prompted
whether you want to save the sector or not. If you answer yes,
the sector will be saved to disk within the original file,
otherwise the changes will be discarded. Note that these saves
are made directly to the original file, so if you want to play
around with a file, and you're too paranoid to trust the wonderful
UNDO feature, then you should use the HEB.BAT file which is
documented above.
Page Twelve.
HexEdit 2.1 By Mike Graham
13 Future Enhancements
Most of these enhancements will happen in phases. The next big phase
is conversion to TurboVision. Each potential enhancement has been
labeled either "Soon", "TVision" or "Maybe". Enhancements labeled "Soon"
will appear in the next version or two. Enhancements labeled "TVision"
will appear when I convert to TurboVision (during the summer, hopefully).
Those enhancements labeled "Maybe" are ones that I haven't even decided
whether I'll DO yet.
Soon:
- Keyboard remapping will be implemented in the next version or two
to allow people to change the default keys to whatever they happen
to want them to be.
- Final implementation of my buffered file access unit will be
happening soon, too, which will nail shut all of the disk
thrashing problems.
- Some day, I will code a method to actually INCREASE or DECREASE
the size of files, in order to do a search and replace with
unlike-sized search and replace strings. At first I thought that
this would be somewhat of a waste of time, because you can't mess
around with the innards of an executable file THAT much without
REALLY knowing what you're doing. I have been informed, however,
that people also use HexEdit to edit binary data files, and an
unlike-sized search&replace would be VERY handy. Okee dokee.
TVision:
- Pull-down windows will be implemented with TurboVision (of
course). I'm partially against it, but I sort of know it has to
happen sooner or later. If anyone would suffer at the
implementation of menus, it's me; remember I've been using these
keystrokes for 5 years! Ah well. There but for the grace of the
user go I.
- Upon conversion to TurboVision, editing multiple files will be a
reality!
- The pop-up calculator will be thrown in with the TurboVision
release.
- Context-sensitive help
- Enhanced screen customization
- Mouse support
Maybe:
Page Thirteen.
HexEdit 2.1 By Mike Graham
- Do we want to be able to patch disk sectors directly? I'm not
sure. That's not really the PURPOSE of HexEdit, but it wouldn't
be too hard to do. How about a directory editor? Unerase? Maybe
as a separate product?
Feedback! Need user feedback!
Well, Frank Lenk (senior editor of Computing Now... wonderful magazine)
recently put up his list of "Bare Necessities" for the applications of
today. Well, HexEdit holds up pretty well (once the TurboVision release
hits the streets). The point in Mr. Lenk's editorial that really hit
home for me was his including "A Future" in with his vital attributes.
That's something that not everyone thinks about when they buy software.
One example of an excellent product that appears to have no future is
Borland's Sprint. I'm one of the many people who bought Sprint only to
find out that it's basically a dead product now. Sure it's powerful, and
it does an excellent job with text documentation (such as the
documentation you're reading right now) but if there's no new development
happening, then how long is it going to STAY powerful? What about
printer drivers, etc? The point of my meandering is that I've sweated
blood over HexEdit, and there's more where that came from, so you can
rest easy. HexEdit will continue to evolve for as long as the money
keeps rolling (limping, crawling) in.
14 Revision History
(Reverse chronological order)
Version 2.1: April 20, 1991
A vast improvement over 2.0.
New Additions:
- The HEB.BAT file was added to pacify the people who REALLY want to
have .BAK files.
- F8 now toggles a text mask which, when active, causes all non-text
characters to appear on the screen as a period '.'.
- ALT-N now jumps to next found item.
- ALT-P now jump to previous found item.
- ALT-X is now the panic button (previously ALT-P).
- ALT-A now pops up an ASCII table.
- ALT-S will call a fully swapping DOS shell (swaps to EMS if
available, otherwise swaps to disk).
Page Fourteen.
HexEdit 2.1 By Mike Graham
- Backspace now works in a much more intelligent way, rather than
just being the same as a back-arrow.
- The FastRep program was added as a very vertical-market, niche
application that I happened to have lying around and thought
someone might be able to use.
- I tossed in KEYLOCK as well, even though it has nothing to do with
HexEdit at all (but it's SO nice to add to your autoexec.bat to
shut off the bleedin' NUM lock).
- Windows support has been greatly expanded with a PIF file, two
icon files, and enough rewrites to let HexEdit run in a graphic
window. Pretty nifty.
- DESQview support has been enhanced as well. HexEdit is a
DESQview-aware application, and there is a .DVP file included.
Fixes:
- That weird bug regarding searches being SO SLOW under Windows was
solved (it was Windows' fault).
- The search engine was heavily modified to remove some intermittent
problems dealing with finding null characters, and finding strings
that overlapped sector boundaries.
- The UNDO engine was rebuilt from the ground up. It now works so
fast and clean it even amazes ME.
- A really dumb bug was found (sharp eyes, Craig!) in the Jump
routines. If you used Shift-F2 (for jump by sector) and selected
to jump to the next found item, it wouldn't jump there in all
cases. Dumb dumb dumb.
- Documentation overhauled.
Version 2.0: February 16, 1991
The official release! Very clean... no known bugs. You can now abort
from searches and UNDO activities. Percent-done boxes were added to the
UNDO engine, so now everything that can possibly take more than a second
or two now has a percent-done box and the facility to abort the process
cleanly. Also added was the /MONO parameter, and the RESTORE function in
the configuration. I think I'll take a break from programming HexEdit
for a little while to work on my next big project (still top-secret, but
it will make efficient programming a MUCH more enjoyable experience).
Version 1.9g: February 9, 1991
There were actually fairly few bugs to fix for this release. There was
a weird bug that only appeared if you were editing files with sizes that
Page Fifteen.
HexEdit 2.1 By Mike Graham
were evenly divisible by 256. Go figure. I modified the exit prompt to
revert to the old default of 'Y' instead of 'N'. The position bar things
on the main screen (the ones that show you what byte you're on... you
know, those hex things in highlight at the side and top of the screen?)
were a bit hard to track if you were far away from them, so I added more
at the right and bottom of the screen. One or two minor things were
improved, but basically this is version 1.9e with a minor facelift. (1.9f
was not released). Also added was the 'Panic Button' (Alt-P) which will
automatically undo all of your changes, and kick you out to DOS with the
file in it's original, pristine condition (providing you haven't PURGED
the UNDO log). Also, I swapped F2 and SF2, so that F2 is now Jump by
Byte, rather than Jump by Sector. I did this because Jump by Byte is
used MUCH MUCH more often. (Jump by Sector was F2 by inertia... it had
been F2 for over five years..). I went over HexEdit with the Turbo
Profiler, and I found that HexEdit spends about 85% of it's time waiting
for user keypresses, and that's when the a key is HELD DOWN. Quite
efficient. The search could use a minor tweak, though. So could the
UNDO function. Using Turbo Pascal 6.0, I was able to compile HexEdit to
a 57K executable!!! Unbelievable! I am... speechless.
Version 1.9e: February 3, 1991.
I've managed to streamline the code further; we're down to about a 70K
executable file. A few programming glitches were exterminated, including
one miserable bug that still amazes me to this minute. The previous
version of HexEdit, 1.9d, required a math coprocessor. I don't know WHY,
but it did. I guess I just left the compiler switch in the wrong
position. Anyway, because I HAVE a coprocessor, I never noticed this
flaw. Things like this BUG me. The other things that were fixed
included some idiosyncrasies regarding saving log files, and some general
cursor movement stuff. The cursor routines were updated so that if
you're at the top of a page and cursor up, you will automatically PGUP.
The net effect is that you can scroll through a file with the cursor.
Version 1.9d: January 30, 1991.
Several bugs were fixed in this release. The major ones were in the
UNDO engine which I thought worked like a charm (of course). Many minor
changes were also implemented, including changing the 'Exit to DOS'
prompt to default to no, and changing the F3/F4 key assignments.
Documentation updated. I rewrote a lot of the code to more heavily
encapsulate it. HexEdit now consists of TEN source files. Every major
function (jump, search, undo, etc.) each has their own unit. Makes for
faster compiles. Anyway, this rewrite caused a few things to glitch, but
I think I have them all sorted out. We're up to 7000 lines of code now,
with almost 3000 lines of it being HexEdit-specific, and the rest
library-specific. Changed default colours to something that looks pretty
bland, but is visible for monochrome users without being utterly
disgusting in colour. Previously, monochrome users were right out of
luck because they couldn't even SEE the prompts and stuff in the
configuration section. Now, if they screw up the colours they only have
themselves to blame...
Page Sixteen.
HexEdit 2.1 By Mike Graham
Version 1.9c: January 26, 1991.
I'm home from work, and I can see that there were quite a few minor
things wrong with the UNDO. They're fixed. This release will be the
official BETA release for this week. I've fixed some glitches in the
configuration section that were driving me absolutely around the bend.
It's weird how sometimes the small bugs can drive you nuts when the big
ones get fixed fast. I re-coded the base conversion procedure and saved
25K in the bargain. I'm not sure if I like it as much, though. Figures.
I've decided to release only one BETA version per week, that way I don't
have people pointing out bugs that I've already fixed (for a while there,
I was always a version or two ahead of the BETA testers).
Version 1.9a: January 26, 1991.
Added UNDO, and BYTE JUMP. Modified the screen layout to display total
sectors and total bytes. This release was VERY hurried. I got the undo
working about a half an hour before I had to be at work... I started the
upload and RAN. I knew it worked for the easy test instance I gave it,
but I did no real testing. I'll be more considerate for future BETA
releases (I mean, even the word 'BETA' doesn't excuse THAT many sins...)
Version 1.4b: January 10, 1991 (I took a rest.)
Added Search/Replace. Also modified HexEdit to track down what its
executable filename is, so you can rename the executable with impunity
and the self-modification still works. Also, the help files and such are
no longer searched in the path. Everything is looked for in the
directory in which the HexEdit executable resides.
Version 1.3b: January 5, 1991 (I don't learn, do I? :-> )
Added option to select window style (no more totalitarianism for THIS
guy). Added a procedure to search for any TEXT (ALT-T). I.e. if you're
looking for text, ANY text, in a humongous file, you can specify to find
a string of characters at least n characters long, and it will find them.
Also added a selection for case-insensitive searches.
Version 1.2c: January 3, 1991
Fixed a few bugs (yeah. real, ugly bugs). Nothing else really changed.
This was an emergency release, something I hope not to have to repeat. I
guess you're kind of asking for it when you release three versions in two
days.... I documented the call for base conversion as Alt-B, but coded it
as Alt-H. I must have been tired.
Version 1.2b: January 3, 1991
Page Seventeen.
HexEdit 2.1 By Mike Graham
Version 1.1b with a face-lift. I've added the ALT-C configuration
section that modifies the EXE file directly to set colours. Works nice,
but you can't LZEXE the file until after you have it configured. Ah
well. If you have UNLZEXE or use PKLITE, then you can always just create
a batch file that uncompresses HexEdit, runs it, and then compresses it
again for those few occasions when you need to redefine the colours. Of
course, you can just set them once then compress it. This would keep you
going for the rare occasions that you need to reconfigure HexEdit. Also
added was the ALT-B base conversion utility. A few minor critters were
cleaned up (the kind that never pop up unless the user does something
WRONG. I've got to work on the user-hostility HexEdit tends to exude.).
Version 1.1b: January 2, 1991
After using my patch editor in a mostly-working capacity for a long
time, I started a project wherein I had to figure out the Turbo Pascal
TPU file structure. Well, I spent a LOT of time using HexEdit, and I
became painfully aware of its limitations. I abandoned my TPU project
(I've got to get back to it, though) and rewrote HexEdit. Version 1.1 is
basically a total rewrite, with support for files of any size etc. The
speedy search was refined, blockreads and writes are used for speed. Many
of the seams were caulked, and it appears a much more bullet proof
application.
Version 1.0: circa 1986
I first wrote 1.0 way back a few years when I was around 16 years old.
It sort of worked, and I used it faithfully, but it wasn't distributed
much. It would only handle files of up to 50K (No, I'm not kidding) and
it generally handled like a dog. Not bad for a 16-year-old, but not
great. It took forever to read and save files (files were defined FILE
OF BYTE... Turbo Pascal version 3.0). I'm not entirely sure why I kept
using it... I guess because it was free!
15 Legal Crud
As far as hardware compatibility goes, here is the HexEdit standard
system:
- Dell system 310 20MHz 386
- Dell DOS 4.01 and Dell OS/2 1.21
- 8MB RAM
- 155MB CDC Wren III hard drive
- Archive tape backup unit
- ATI VGAWonder/NEC MultiSync 3D
Page Eighteen.
HexEdit 2.1 By Mike Graham
- HP LaserJet III
- Roland LAPC Synthesizer card with Rhodes 760 keyboard
- Logitech Series 9 bus mouse
- Gravis Deluxe joystick and controller
- Artist's mannequin
- Profile of me, done when I was in grade 2, on the wall.
- Two gumball machines.
- Me.
- A big Pioneer stereo with no less than FOUR remote controls and
lots of CDs by Enya, Robert Palmer, Billy Joel, Chris de Burgh,
The Moody Blues, and the B-52's.
- A fridge with lots of A&W Rootbeer and President's Choice
Grapefruit juice in it. (Not even *I* can handle rootbeer first
thing in the morning..)
This is the standard system. If your system doesn't match the standard
system EXACTLY, right down to the last mote of dust on the nose that you
crank on one of my gumball machines, then I do not guarantee that it
works (in fact, I don't even guarantee that it will work on the standard
system!).
I will say, however, that I've never found a system that professes to be
100% PC compatible that HexEdit doesn't like.
Basically, I don't guarantee anything. Every word of this document could
be a big lie. I could be sitting at home snickering, thinking of all the
people who wasted their on-line time downloading a patch editor that
doesn't work. I might ENJOY typing in a thousand lines of sundry
documentation in the hopes of sucking some poor individual into wasting
their time with a worthless product. I'm not, and I don't, but I could
be, and I might.
If HexEdit works for you, then great, I'm happy, send me money. If it
doesn't, then darn, I'm ashamed, send me a letter describing the error
and I'll do my best to fix it.
Page Nineteen.
HexEdit 2.1 By Mike Graham
16 Credit where credit is due
The following wonderful folks generously donated some of their valuable
time to aid in BETA testing HexEdit:
Neal Sanche
Monroe Thomas, Sysop of The Keep
Ben Graham
Paul Brown
Craig Harris
Thanks to Martin Silva for catching that odd bug in the search algorithm.
Supreme thanks to j William Donovan, who taught me Turbo Pascal when I
was just a wee shaver.
I used the TechnoJock Turbo Toolkit windowing and fastwrite library for
Turbo Pascal 5.5 in the later versions of HexEdit. It is a spiffy
product, well worth the money.
TechnoJock Software Inc.
PO Box 820927
Houston, Texas
77282-0927
Also used was Kim Kokkonen's EXECSWAP unit. Turbo Pascal just wouldn't
be the same without that guy... Kim is the president of TurboPower
software, which is a major producer of Turbo Pascal programming tools.
If you program Turbo Pascal and don't own any Turbo Power software
products, you should seriously look into it. You can contact Kim at:
P.O. Box 66747
Scotts Valley CA
95066
Page Twenty.
HexEdit 2.1 By Mike Graham
17 Contacting the Author
I can be reached by mail at the following address:
Michael A. Graham
Box 60036
U of A Postal Outlet
Edmonton, AB
Canada, T6G 2S4
Or I can be contacted on InterNet as
"michael_graham@mts.ucs.ualberta.ca".
(if that doesn't work, substitute "MGRM" for michael_graham.
I can be contacted on the McNamara Software BBS in Edmonton, Alberta,
(403)433-8375, as "Mike Graham" and am also available under the same name
at The Keep BBS, also in Edmonton, (403)437-1428. The latest version of
HexEdit and all of my other PD and Freeware programming efforts will
always be available on these two BBS's. Feel free to contact me if you
have suggestions for improvements, or (perish the thought!) a bug report.
Page Twenty-One.