Skip to content

fieserWolF/dissector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dissector

Dissector disassembles 6502 code. As of now, this primarily is a commandline-tool, but there is an optional gui available. It runs on 64 bit versions of Linux, MacOS, Windows and other systems supported by Python.

Why Dissector?

reason description
open source easy to modify and to improve, any useful contribution is highly welcome
portable available on Linux, MacOS, Windows and any other system supported by Python3
illegals full illegal opcode support
cycles used cpu-cycles shown for each opcode
extensive info extensive C64 memory map carefully gathered from best sources I could find online
assemblers ACME and KickAssembler supported, easy to implement other assemblers

Usage

dissector v1.00 [21.08.2021] *** by fieserWolF
usage: dissector.py [-h] [-lf LABEL_FILE] [-o OFFSET] [-l LIMIT] [-t {acme,kickass}] [-d] [-i] [-ll] [-cc] input_file output_file startaddress

This program disassembles 6502 code.

positional arguments:
  input_file            binary input file
  output_file           sourcecode output file
  startaddress          startaddress in hex

optional arguments:
  -h, --help            show this help message and exit
  -lf LABEL_FILE, --label-file LABEL_FILE
                        labels json-file, default="c64labels.json"
  -o OFFSET, --offset OFFSET
                        offset in hex
  -l LIMIT, --limit LIMIT
                        limit in hex
  -t {acme,kickass}, --asmtype {acme,kickass}
                        assembler-type
  -d, --dump            show memory-dump
  -i, --illegals        use illegal opcodes
  -ll, --labels         show label-list
  -cc, --cycles         show cycles

Example: ./dissector.py test.prg test.a 2000 -lf c64labels.json -o 2 -l 100 -t acme --dump --labels --illegals --cycles

Have a good look in /doc.

C64 information sources

Graham`s 65xx resources http://www.oxyron.de/html/opcodes02.html Copyright 2002-2012 Graham. Last change on 03.11.2012.

book: Mapping the C64 http://unusedino.de/ec64/technical/project64/mapping_c64.html

Commodore 64 RAM Memory Map V1.2, published 1 Sep 1994 ftp://arnold.c64.org/pub/docs/C64rom.lib ftp://arnold.c64.org/pub/docs/C64ram.doc

Author

Getting Started

dissector comes in two flavors:

  • standalone executable for 64-bit systems Linux, MacOS/Darwin and Windows (see releases)
  • Python3 script

Run the standalone executable

Just download your bundle at releases and enjoy. Keep in mind that only 64bit systems are supported as I could not find a 32bit system to generate the bundle.

Note for Windows users

If some antivirus scanner puts dissector into quarantine because it suspects a trojan or virus, simply put it out there again. It isn`t harmful, I used PyInstaller to bundle the standalone executable for you. Unfortunately, the PyInstaller bootloader triggers a false alarm on some systems. I even tried my best and re-compiled the PyInstaller bootloader so that this should not happen anymore. Keep your fingers crossed ;)

Note for MacOS users

Your system might complain that the code is not signed by a certificated developer. Well, I am not, so I signed the program on my own.

"dissector" can`t be opened because it is from an unidentified developer.

You need to right-click or Control-click the app and select “Open”.

Run the Python3 script directly

Download dissector.py and c64labels.json into the same folder on your computer.

python3 dissector.py 

graphical user interface

If you prefer a gui, start the script "gui.py":

python3 gui.py 

This graphical interface was kindly provided by Streetuff/TRSI. It uses PySimpleGUI library.

Prerequisites

At least this is needed to run the script directly:

  • python 3
  • argparse
  • PySimpleGUI (optional for the graphical user interface)

Normally, you would use pip like this:

pip3 install argparse pysimplegui

On my Debian GNU/Linux machine I use apt-get to install everything needed:

apt-get update
apt-get install python3 python3-argh

PySimpleGui is not included in Debian GNU/Linux yet. You have to install it with pip as described above.

Changelog

Future plans

  • maybe: implement other architectures

Any help and support in any form is highly appreciated.

If you have a feature request, a bug report or if you want to offer help, please, contact me:

http://csdb.dk/scener/?id=3623 or wolf@abyss-connection.de

Changes in 1.01

  • bugfix: KERNEL labels appear in label-list now

Changes in 1.00

  • initial release

License

Dissector 6502 disassembler.

Copyright (C) 2021 fieserWolF / Abyss-Connection

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

See the LICENSE file for details.

For further questions, please contact me at http://csdb.dk/scener/?id=3623 or wolf@abyss-connection.de

For Python3 and other used source licenses see file LICENSE_OTHERS.