2018-09-27 22:13:25 +00:00
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
|
|
|
|
|
|
<head>
|
2020-01-27 22:01:43 +00:00
|
|
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<link href="main.css" rel="stylesheet" type="text/css" />
|
|
|
|
|
|
|
|
<title>6502bench Tools</title>
|
2018-09-27 22:13:25 +00:00
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
2018-10-09 16:44:27 +00:00
|
|
|
<div id="content">
|
2018-09-30 22:12:28 +00:00
|
|
|
<h1>6502bench SourceGen</h1>
|
2018-09-27 22:13:25 +00:00
|
|
|
|
2018-09-30 22:12:28 +00:00
|
|
|
<p>6502bench is a code development "workbench" for the 65xx family
|
|
|
|
of processors, including the 6502, 65C02, and 65802/65816. It currently
|
|
|
|
features one tool, the SourceGen disassembler.</p>
|
|
|
|
|
2018-09-30 22:16:37 +00:00
|
|
|
<p>Quick links:</p>
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
2020-07-31 03:50:53 +00:00
|
|
|
<li>Watch a 9-minute video of
|
|
|
|
<a href="https://youtu.be/dalISyBPQq8">basic product features</a> (from v1.0)</li>
|
2020-01-27 22:01:43 +00:00
|
|
|
<li>See an 8-minute
|
|
|
|
<a href="https://youtu.be/lSvEr5nCHbY">demonstration of visualizers</a>
|
|
|
|
in a disassembly of the Apple II game <i>Space Eggs</i></li>
|
2019-11-01 20:35:22 +00:00
|
|
|
<li>Download source & binaries for the latest version
|
2020-01-27 22:01:43 +00:00
|
|
|
<a href="https://github.com/fadden/6502bench/releases/">from the Releases page</a></li>
|
2018-09-30 22:16:37 +00:00
|
|
|
<li>Check out the
|
2020-01-27 22:01:43 +00:00
|
|
|
<a href="https://github.com/fadden/6502bench/">GitHub project</a></li>
|
2020-08-06 15:15:11 +00:00
|
|
|
<li>SourceGen has been used to disassemble software for the Apple II,
|
|
|
|
NES (Nintendo Entertainment System), Atari 2600 VCS, and coin-op arcade
|
|
|
|
systems. Visit 6502disassembly.com to see some
|
|
|
|
<a href="https://6502disassembly.com/">disassembly project examples</a>.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
</ul>
|
|
|
|
|
|
|
|
<hr/>
|
|
|
|
|
|
|
|
<p><strong>SourceGen</strong> is an industrial-strength disassembler for 6502,
|
2020-01-27 22:01:43 +00:00
|
|
|
65C02, and 65816 programs. It runs on Windows 7 or later. Key features include:</p>
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
2020-01-27 22:01:43 +00:00
|
|
|
<li>Fully interactive point-and-click GUI. Define labels, set addresses,
|
|
|
|
add comments, and see the results immediately. Add multi-line comments
|
|
|
|
and have them word-wrapped automatically. Create inline visualizations of
|
2020-07-31 03:50:53 +00:00
|
|
|
embedded bitmaps and wireframe data, and define animated sequences.</li>
|
2020-10-21 15:09:30 +00:00
|
|
|
<li>Sophisticated static analysis. The disassembly engine traces code
|
2020-07-31 03:50:53 +00:00
|
|
|
execution, automatically finding all instructions reachable from a given
|
|
|
|
starting point. Changes to the processor status flags are tracked,
|
|
|
|
allowing identification of branches that are always/never taken,
|
|
|
|
accurate cycle count listings, and easier analysis of 65816 code with
|
|
|
|
variable-width registers.</li>
|
2018-09-30 22:20:46 +00:00
|
|
|
<li>Easy generation of assembly source code in popular formats (currently
|
2019-09-27 21:08:59 +00:00
|
|
|
64tass, ACME, cc65, and Merlin 32). Cross-assemblers can be invoked from the GUI to
|
2018-09-30 22:12:28 +00:00
|
|
|
verify correctness.</li>
|
|
|
|
<li>Symbols and constants are provided for ROM and operating system entry
|
2020-03-02 18:30:44 +00:00
|
|
|
points on several popular systems (Apple, Atari, Commodore, others).</li>
|
2018-10-10 00:31:06 +00:00
|
|
|
<li>Project files are designed for sharing and collaboration.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
</ul>
|
|
|
|
|
|
|
|
<p>
|
2020-01-27 23:00:20 +00:00
|
|
|
<a href="images/screenshot-15-mainwin.png"><img border="2" src="images/screenshot-15-mainwin-small.png" alt="Main Window Screenshot" width="320" height="180"/></a>
|
|
|
|
<a href="images/screenshot-15-asmwin.png"><img border="2" src="images/screenshot-15-asmwin-small.png" alt="Gen/Asm Dialog Screenshot" width="320" height="180"/></a>
|
|
|
|
<a href="images/screenshot-15-vis.png"><img border="2" src="images/screenshot-15-vis-small.png" alt="Gen/Asm Dialog Screenshot" width="320" height="180"/></a>
|
2018-09-30 22:12:28 +00:00
|
|
|
</p>
|
|
|
|
|
2020-07-31 03:50:53 +00:00
|
|
|
<h4>Features in Detail:</h4>
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
2018-10-09 16:44:27 +00:00
|
|
|
<li>Analyzer:
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
|
|
|
<li>Support for 6502, 65C02, and 65816, including undocumented
|
2020-10-24 15:27:04 +00:00
|
|
|
opcodes and the W65C02 extensions.</li>
|
|
|
|
<li>Code tagging mechanism allows manual identification of code start/stop
|
|
|
|
points and inline data.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
<li>Editable labels are generated for every branch destination and data
|
|
|
|
target.</li>
|
2019-09-27 21:08:59 +00:00
|
|
|
<li>Automatic detection and classification of character strings and runs
|
2018-09-30 22:12:28 +00:00
|
|
|
of identical bytes.</li>
|
|
|
|
<li>Symbol files for ROM entry points, operating system constants, and
|
2019-09-27 21:08:59 +00:00
|
|
|
other platform-specific data are stored in plain text files loaded at runtime.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
<li>Extension scripts can be defined that automatically reformat code and
|
2019-09-27 21:08:59 +00:00
|
|
|
identify inline data that follows a JSR, JSL, or BRK.</li>
|
2018-10-09 16:44:27 +00:00
|
|
|
</ul></li>
|
|
|
|
<li>User interface:
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
|
|
|
<li>"Infinite" undo/redo of all operations.</li>
|
|
|
|
<li>Cross-reference tables are generated for every branch and data target
|
|
|
|
address, as well as for external platform symbols.</li>
|
2019-09-27 21:08:59 +00:00
|
|
|
<li>Instruction operand formats (hex, decimal, binary, character, symbol) can
|
2018-09-30 22:12:28 +00:00
|
|
|
be set for individual instructions. References to nearby symbols are
|
|
|
|
offset, allowing simple expressions like "addr + 1".</li>
|
|
|
|
<li>Data areas can be formatted in various formats, including individual
|
2019-09-27 21:08:59 +00:00
|
|
|
bytes, 16-bit and 24-bit words, addresses, or strings.
|
|
|
|
Multiple character encodings are supported, including ASCII, high ASCII,
|
|
|
|
C64 PETSCII, and C64 screen codes.</li>
|
|
|
|
<li>Zero-page variables can be given different labels at different points
|
|
|
|
in the program.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
<li>Multi-line comments can be "boxed" for an authentic retro feel.</li>
|
|
|
|
<li>Notes can be added that aren't included in generated output. These
|
2020-01-27 22:01:43 +00:00
|
|
|
also function as color-coded bookmarks. Very useful for marking up a
|
|
|
|
work in progress. Similarly, symbols can be marked as uncertain by
|
|
|
|
adding a '?' that is automatically stripped away during code generation.</li>
|
2020-07-31 03:50:53 +00:00
|
|
|
<li>Instruction reference data, such as CPU cycles and flags modified, are
|
|
|
|
shown along with a description of the opcode's function. Very useful when
|
|
|
|
encountering rarely-used undocumented instructions.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
<li>Various aspects of the code display can be reconfigured, including
|
|
|
|
upper/lower case, pseudo-opcode naming, and expression formats. These
|
|
|
|
choices are not part of the project definition, so everyone can view a
|
|
|
|
project according to their own personal preferences.</li>
|
2018-10-09 16:44:27 +00:00
|
|
|
</ul></li>
|
|
|
|
<li>Code generation:
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
2020-01-27 22:01:43 +00:00
|
|
|
<li>Labels can be global or local. Use non-unique labels like "@Loop"
|
|
|
|
for clarity. Labels will be promoted from local to global or renamed to
|
|
|
|
be unique as required by each assembler.</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
<li>Symbols may be exported from one project and imported into another
|
|
|
|
to facilitate multi-binary disassembly.</li>
|
2019-09-27 21:08:59 +00:00
|
|
|
<li>Listings can be generated in HTML form for publication on the web. Many
|
2020-07-31 03:50:53 +00:00
|
|
|
aspects of the output format can be configured. Inline visualizations
|
|
|
|
are exported as GIF or animated GIF.</li>
|
2018-10-09 16:44:27 +00:00
|
|
|
</ul></li>
|
|
|
|
<li>Miscellaneous:
|
2018-09-30 22:12:28 +00:00
|
|
|
<ul>
|
2020-07-31 03:50:53 +00:00
|
|
|
<li>All project data is stored in text formats (primarily JSON).</li>
|
2018-09-30 22:12:28 +00:00
|
|
|
<li>The project file includes nothing from the data file but a CRC. This
|
|
|
|
may allow the project to be shared without violating copyrights (subject
|
|
|
|
to local laws).</li>
|
2020-01-27 22:01:43 +00:00
|
|
|
<li>Handy tools: file slicer, file concatenator, CPU instruction reference
|
|
|
|
chart, ASCII chart, file hex dump.</li>
|
2020-07-31 03:50:53 +00:00
|
|
|
<li>The OMF converter tool can be used to disassemble Apple IIgs executables.</li>
|
2018-10-09 16:44:27 +00:00
|
|
|
</ul></li>
|
2018-09-30 22:12:28 +00:00
|
|
|
</ul>
|
|
|
|
|
2019-09-27 21:08:59 +00:00
|
|
|
<p>SourceGen is written in C# .NET, using the (free to download) Visual
|
2020-07-31 03:50:53 +00:00
|
|
|
Studio Community 2019 IDE as the primary development environment.
|
|
|
|
The user interface uses the Windows Presentation Foundation (WPF) API.
|
2019-09-27 21:08:59 +00:00
|
|
|
The full source code for the project is available on GitHub, licensed under Apache 2.0.</p>
|
2018-09-27 22:13:25 +00:00
|
|
|
|
|
|
|
</div>
|
|
|
|
|
2018-10-09 16:44:27 +00:00
|
|
|
<div id="footer">
|
|
|
|
<hr/>
|
2020-01-27 22:01:43 +00:00
|
|
|
<p>Copyright 2020 faddenSoft</p>
|
2018-09-27 22:13:25 +00:00
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|