85 lines
3.2 KiB
Markdown
85 lines
3.2 KiB
Markdown
# filed-qbasic
|
|
|
|
FilEd is a hex editor for MS-DOS written in QBasic.
|
|
|
|
- Search for a byte value or string.
|
|
- Compare one file to another to find changes.
|
|
- Replace values, one byte at a time or by typing a string.
|
|
|
|
<img src="screenshot.png" width="1482" alt='Screenshot of white fixed width characters on a black screen. The program is titled "File Ed" and the open file is filed.bas. A grid of byte values are displayed in 8 columns and 16 rows. To the right is another grid showing the ASCII equivalent of each byte. The bottom lists the available keyboard shortcuts '>
|
|
|
|
## History
|
|
|
|
This is the first computer program I remember feeling really proud about. The last version, 1.51, was completed on October 22, 1997.
|
|
|
|
Except for half-heartedly uploading the file to my Geocities website, I made no attempt to publish or distribute this software.
|
|
|
|
I'm sharing it now just for fun.
|
|
|
|
## Usage
|
|
|
|
- Run FILED.EXE
|
|
- Enter the filename of the file to edit.
|
|
|
|
After writing this program, I used it to edit save files in DOS games to cheat or otherwise cause impossible conditions, using the following steps:
|
|
|
|
1. Make a backup copy of my save file.
|
|
2. Perform an action in the game, for example, losing some health points.
|
|
3. Save the game.
|
|
4. Compare the backup copy to the current copy of the save file, to find the address of the changed value.
|
|
5. Edit the byte value to a new value.
|
|
6. Load the game and see if I've successfully changed the value in the game.
|
|
|
|
The example I remember best is changing my party members in Ultima VI, adding NPCs who normally could never join the party.
|
|
|
|
### Keyboard shortcuts
|
|
|
|
<dl>
|
|
<dt>B</dt>
|
|
<dd>Back: Go back a page in the file.</dd>
|
|
<dt>F</dt>
|
|
<dd>Forward: Go forward a page in the file.</dd>
|
|
<dt>N</dt>
|
|
<dd>Move to a new address.</dd>
|
|
<dt>S</dt>
|
|
<dd>Search for a value or text string.</dd>
|
|
<dt>E</dt>
|
|
<dd>Edit one byte value.</dd>
|
|
<dt>T</dt>
|
|
<dd>Type a string to change a series of bytes.
|
|
<dt>Q</dt>
|
|
<dd>Quit the program.</dd>
|
|
<dt>C</dt>
|
|
<dd>Compare to find differences between the active file and another.</dd>
|
|
<dt>L</dt>
|
|
<dd>Load a new file, either:
|
|
<ul>
|
|
<li>A regular file in the filesystem;</li>
|
|
<li>The first 1 MB or memory; or</li>
|
|
<li>I/O ports</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>D</dt>
|
|
<dd>DOS: Open a temporary command prompt without losing your place in the current file.</dd>
|
|
<dt>M</dt>
|
|
<dd>Mode: Switch between seeing byte values and only seeing the string representation.</dd>
|
|
<dt>H</dt>
|
|
<dd>Hex/decimal: Switch between displaying byte values as hex or decimal.</dd>
|
|
</dl>
|
|
|
|
## Code quality
|
|
|
|
It's uncommented spaghetti code with line numbers and GOTO statements.
|
|
|
|
## Acknowledgements
|
|
|
|
Thank you to my father, a hobbyist who started on a Timex Sinclair before teaching me how to write BASIC programs on a Commodore 64.
|
|
|
|
I vaguely remember, before we got a PC, modifying save game files on the C64 (in particular, the Gold Box Dungeons & Dragons games) but I can't remember how I accomplished this.
|
|
|
|
## License
|
|
|
|
<a href="https://git.sdf.org/dankeck/filed-qbasic">FilEd</a> by <a href="https://sdf.org/~dankeck">Dan Keck</a> is marked <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0</a> <img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg" alt="" width="16"><img src="https://mirrors.creativecommons.org/presskit/icons/zero.svg" alt="" width="16">
|
|
|
|
|