mirror of
https://github.com/fadden/6502bench.git
synced 2024-07-07 07:28:57 +00:00
Update README
Add v1.7 features, and update a few other things.
This commit is contained in:
parent
92c648807c
commit
881b354e50
49
README.md
49
README.md
@ -22,12 +22,13 @@ as well as many less-common ones.
|
|||||||
- Fully interactive point-and-click GUI. Define labels, set addresses,
|
- Fully interactive point-and-click GUI. Define labels, set addresses,
|
||||||
add comments, and see the results immediately. Add multi-line comments
|
add comments, and see the results immediately. Add multi-line comments
|
||||||
and have them word-wrapped automatically. Create inline visualizations
|
and have them word-wrapped automatically. Create inline visualizations
|
||||||
of embedded graphics and animated sequences.
|
of embedded bitmaps and wireframe data, and define animated sequences.
|
||||||
- The disassembly engine traces code execution, automatically finding all
|
- Sophisticated static analysis. The disassembly engine traces code
|
||||||
instructions reachable from a given starting point. Changes to the
|
execution, automatically finding all instructions reachable from defined
|
||||||
processor status flags are tracked, allowing identification of branches
|
entry points. Changes to the processor status flags are tracked,
|
||||||
that are always/never taken, accurate cycle count listings, and correct
|
allowing identification of branches that are always/never taken,
|
||||||
analysis of 65816 code with variable-width registers.
|
accurate cycle count listings, and easier analysis of 65816 code with
|
||||||
|
variable-width registers.
|
||||||
- Easy generation of assembly source code for popular cross-assemblers
|
- Easy generation of assembly source code for popular cross-assemblers
|
||||||
(currently 64tass, ACME, cc65, and Merlin 32). Cross-assemblers can be
|
(currently 64tass, ACME, cc65, and Merlin 32). Cross-assemblers can be
|
||||||
invoked from the GUI to verify correctness.
|
invoked from the GUI to verify correctness.
|
||||||
@ -35,9 +36,10 @@ as well as many less-common ones.
|
|||||||
points on several popular systems.
|
points on several popular systems.
|
||||||
- Project files are designed for sharing and collaboration.
|
- Project files are designed for sharing and collaboration.
|
||||||
|
|
||||||
A demo video is [available on YouTube](https://youtu.be/dalISyBPQq8).
|
Video demos of [basic features](https://youtu.be/dalISyBPQq8) and
|
||||||
|
[visualizations](https://youtu.be/lSvEr5nCHbY) are available.
|
||||||
|
|
||||||
#### Additional Features ####
|
#### Features in Detail ####
|
||||||
|
|
||||||
Analyzer:
|
Analyzer:
|
||||||
- Support for 6502, 65C02, and 65816, including undocumented opcodes.
|
- Support for 6502, 65C02, and 65816, including undocumented opcodes.
|
||||||
@ -69,8 +71,9 @@ User interface:
|
|||||||
function as color-coded bookmarks. Very useful for marking up a work in
|
function as color-coded bookmarks. Very useful for marking up a work in
|
||||||
progress. Similarly, symbols can be marked as uncertain by adding a
|
progress. Similarly, symbols can be marked as uncertain by adding a
|
||||||
'?' that is automatically stripped away during code generation.
|
'?' that is automatically stripped away during code generation.
|
||||||
- Instruction summaries, including CPU cycles and flags modified, are shown
|
- Instruction reference data, such as CPU cycles and flags modified,
|
||||||
along with a description of the opcode's function.
|
are shown along with a description of the opcode's function. Very
|
||||||
|
useful when encountering rarely-used undocumented instructions.
|
||||||
- Various aspects of the code display can be reconfigured, including
|
- Various aspects of the code display can be reconfigured, including
|
||||||
upper/lower case, pseudo-opcode naming, and expression formats. These
|
upper/lower case, pseudo-opcode naming, and expression formats. These
|
||||||
choices are not part of the project definition, so everyone can view a
|
choices are not part of the project definition, so everyone can view a
|
||||||
@ -83,22 +86,32 @@ Code generation:
|
|||||||
- Symbols may be exported from one project and imported into another to
|
- Symbols may be exported from one project and imported into another to
|
||||||
facilitate multi-binary disassembly.
|
facilitate multi-binary disassembly.
|
||||||
- Listings can be generated in HTML form for publication on the web.
|
- Listings can be generated in HTML form for publication on the web.
|
||||||
Many aspects of the output format can be configured.
|
Many aspects of the output format can be configured. Inline
|
||||||
|
visualizations are exported as GIF or animated GIF.
|
||||||
|
|
||||||
Miscellaneous:
|
Miscellaneous:
|
||||||
- All data files are stored in text formats (primarily JSON).
|
- All project data is stored in text formats (primarily JSON).
|
||||||
- The project file includes nothing from the data file but a CRC. This may
|
- 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
|
allow the project to be shared without violating copyrights (subject to
|
||||||
local laws).
|
local laws).
|
||||||
- Handy tools: file slicer, file concatenator, CPU instruction reference
|
- Handy tools: file slicer, file concatenator, CPU instruction reference
|
||||||
chart, ASCII chart, file hex dump.
|
chart, ASCII chart, file hex dump.
|
||||||
|
- The OMF converter tool can be used to disassemble Apple IIgs executables.
|
||||||
|
|
||||||
#### Limitations ####
|
#### Limitations ####
|
||||||
|
|
||||||
Support for 65816 code is largely complete, lacking only a way to specify
|
While the 65816 CPU is fully supported, SourceGen can be awkward to use
|
||||||
the data bank register. However, the current user interface tries to
|
with the large binaries that the expanded architecture makes possible. The
|
||||||
keep everything in a single list, which works poorly for large
|
disassembly is displayed in a single scrolling window, so projects for
|
||||||
multi-bank binaries.
|
binaries larger than about 100KB become difficult to navigate. There may
|
||||||
|
also be performance issues at larger sizes. SourceGen currently imposes an
|
||||||
|
arbitrary 1MB limit on the data file.
|
||||||
|
|
||||||
|
Generating output larger than 64KB requires some target-specific
|
||||||
|
directives, e.g. for defining OMF segments for Apple IIgs executables.
|
||||||
|
SourceGen does not currently support these. While you can generate source
|
||||||
|
for a binary larger than 64KB, most cross-assemblers will fail to assemble
|
||||||
|
it without additional edits.
|
||||||
|
|
||||||
To learn about other areas for improvement, visit the wiki section for the
|
To learn about other areas for improvement, visit the wiki section for the
|
||||||
[current "TO DO" list](https://github.com/fadden/6502bench/wiki/TO-DO-List).
|
[current "TO DO" list](https://github.com/fadden/6502bench/wiki/TO-DO-List).
|
||||||
@ -125,7 +138,7 @@ SourceGen does not currently run on Linux or Mac OS X. My understanding is
|
|||||||
that .NET apps don't work under WINE, so it can only be run on a full
|
that .NET apps don't work under WINE, so it can only be run on a full
|
||||||
Windows system emulation.
|
Windows system emulation.
|
||||||
|
|
||||||
(SourceGen Versions 1.0 and 1.1 used the WinForms API, which has been
|
(SourceGen versions 1.0 and 1.1 used the WinForms API, which has been
|
||||||
implemented for Mono, but after encountering significant bugs that I wasn't
|
implemented for Mono, but after encountering significant bugs that I wasn't
|
||||||
able to work around I abandoned the approach and switched to WPF. Besides
|
able to work around I abandoned the approach and switched to WPF. Besides
|
||||||
working better under Windows, WPF uses a more modern approach (XAML) that
|
working better under Windows, WPF uses a more modern approach (XAML) that
|
||||||
@ -137,7 +150,7 @@ may ease the transition to a cross-platform GUI API like Avalonia.)
|
|||||||
The best way to get started is by working through the tutorial. Launch
|
The best way to get started is by working through the tutorial. Launch
|
||||||
SourceGen, hit F1 to open the user manual in your web browser, then look
|
SourceGen, hit F1 to open the user manual in your web browser, then look
|
||||||
for the Tutorial link in the index. Click it and follow the instructions
|
for the Tutorial link in the index. Click it and follow the instructions
|
||||||
there.
|
there. Note this is a "follow along" tutorial, not a "read it" tutorial.
|
||||||
|
|
||||||
I strongly recommend doing this. Some aspects of SourceGen are non-obvious.
|
I strongly recommend doing this. Some aspects of SourceGen are non-obvious.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user