Plugins currently available in the repository:
CPU plugins:
File loader plugins:
Tool plugins:
version 0.2.1
This CPU core plugin allows you to disassemble 6502/65C02 code, used in loads of home computers of the 70s, 80s, and early 90s, and in industrial automation or other specialised tasks where an MCU is needed.
CPU backends currently supported: 6502, 65C02, 65N02, 65R02, 65S02, HuC6280, MELPS740, M37450, R6500, R65C02, R65C19, R65C29, SunPlus, W65C02S.
Manufacturer | Model | Provider | Datasheet |
---|---|---|---|
Conexant | L27 | Rockwell → R65C19 | Datasheet |
L28 | Rockwell → R65C19 | Datasheet | |
California Micro Devices | G65SC02 | Generic → 65C02 | Datasheet |
G65SC150 | Generic → 65C02 | Datasheet | |
G65SC151 | Generic → 65C02 | Datasheet | |
GTE | GS65C02 | Generic → 65C02 | Datasheet |
Hua Ko Electronics | HKE65SC02 | Generic → 65C02 | Datasheet |
HKE65SC03 | Generic → 65C02 | Datasheet | |
HKE65SC04 | Generic → 65C02 | Datasheet | |
HKE65SC05 | Generic → 65C02 | Datasheet | |
HKE65SC06 | Generic → 65C02 | Datasheet | |
HKE65SC07 | Generic → 65C02 | Datasheet | |
HKE65SC102 | Generic → 65C02 | Datasheet | |
HKE65SC103 | Generic → 65C02 | Datasheet | |
HKE65SC104 | Generic → 65C02 | Datasheet | |
HKE65SC105 | Generic → 65C02 | Datasheet | |
HudsonSoft | HuC6280 | HudsonSoft → HuC6280 | N/A |
HuC6280A | HudsonSoft → HuC6280 | N/A | |
Mitsubishi | M37408 | Mitsubishi → MELPS740 | Datasheet |
M37409 | Mitsubishi → MELPS740 | Datasheet | |
M37410 | Mitsubishi → MELPS740 | Datasheet | |
M37412 | Mitsubishi → MELPS740 | Datasheet | |
M37413 | Mitsubishi → MELPS740 | Datasheet | |
M37414 | Mitsubishi → MELPS740 | Datasheet | |
M37415 | Mitsubishi → MELPS740 | Datasheet | |
M37416 | Mitsubishi → MELPS740 | Datasheet | |
M37417 | Mitsubishi → MELPS740 | Datasheet | |
M37418 | Mitsubishi → MELPS740 | Datasheet | |
M37420 | Mitsubishi → MELPS740 | Datasheet | |
M37421 | Mitsubishi → MELPS740 | Datasheet | |
M37424 | Mitsubishi → MELPS740 | Datasheet | |
M37524 | Mitsubishi → MELPS740 | Datasheet | |
M37450M2 | Mitsubishi → M37450 | Datasheet | |
M37450M4 | Mitsubishi → M37450 | Datasheet | |
M37450M8 | Mitsubishi → M37450 | Datasheet | |
MOS | 6502 | Generic → 6502 | Datasheet |
6503 | Generic → 6502 | Datasheet | |
6504 | Generic → 6502 | Datasheet | |
6505 | Generic → 6502 | Datasheet | |
6506 | Generic → 6502 | Datasheet | |
6507 | Generic → 6502 | Datasheet | |
6508 | Generic → 6502 | Datasheet | |
6509 | Generic → 6502 | Datasheet | |
6510 | Generic → 6502 | Datasheet | |
6512 | Generic → 6502 | Datasheet | |
6513 | Generic → 6502 | Datasheet | |
6514 | Generic → 6502 | Datasheet | |
6515 | Generic → 6502 | Datasheet | |
7501 | Generic → 6502 | N/A | |
8500 | Generic → 6502 | N/A | |
8501 | Generic → 6502 | N/A | |
8502 | Generic → 6502 | N/A | |
8510 | Generic → 6502 | N/A | |
NCR | NCR65C02 | Generic → 65C02 | Datasheet |
Novatek | NT6880 | Generic → 6502 | Datasheet |
NT6881 | Generic → 6502 | Datasheet | |
NT68P1 | Generic → 6502 | Datasheet | |
Ricoh | RP2A03 | Generic → 6502 | N/A |
RP2A07 | Generic → 6502 | N/A | |
RP65C02 | Generic → 65C02 | N/A | |
Rockwell | R6500/11 | Rockwell → R6500 | Datasheet |
R6500/12 | Rockwell → R6500 | Datasheet | |
R6500/13 | Rockwell → R6500 | Datasheet | |
R6500/15 | Rockwell → R6500 | Datasheet | |
R6500/16 | Rockwell → R6500 | Datasheet | |
R6501 | Rockwell → R6500 | Datasheet | |
R6502 | Generic → 6502 | Datasheet | |
R6503 | Generic → 6502 | Datasheet | |
R6504 | Generic → 6502 | Datasheet | |
R6505 | Generic → 6502 | Datasheet | |
R6506 | Generic → 6502 | Datasheet | |
R6507 | Generic → 6502 | Datasheet | |
R6511 | Rockwell → R6500 | Datasheet | |
R6512 | Generic → 6502 | Datasheet | |
R6513 | Generic → 6502 | Datasheet | |
R6514 | Generic → 6502 | Datasheet | |
R6515 | Generic → 6502 | Datasheet | |
R65C00/21 | Rockwell → R65C29 | Datasheet | |
R65C02 | Rockwell → R65C02 | Datasheet | |
R65C19 | Rockwell → R65C19 | Datasheet | |
R65C29 | Rockwell → R65C29 | Datasheet | |
R65C102 | Rockwell → R65C29 | Datasheet | |
R65C112 | Rockwell → R65C29 | Datasheet | |
Sunplus | SPL61A | Sunplus → 65N02 | Datasheet |
SPL130A | Sunplus → 65N02 | Datasheet | |
SPL191A | Sunplus → 65N02 | Datasheet | |
SPL256A | Sunplus → 65N02 | Datasheet | |
SPL512A | Sunplus → 65N02 | Datasheet | |
SPL512B | Sunplus → 65N02 | Datasheet | |
SPL1000A | Sunplus → 65N02 | Datasheet | |
SPL1000B | Sunplus → 65N02 | Datasheet | |
SPLB10A | Sunplus → 65N02 | Datasheet | |
SPF02A | Sunplus → 65R02 | Datasheet | |
SPL02C | Sunplus → 65R02 | Datasheet | |
SPL02D | Sunplus → 65R02 | Datasheet | |
SPL03B | Sunplus → 65R02 | Datasheet | |
SPL03C | Sunplus → 65R02 | Datasheet | |
SPL05A | Sunplus → 65R02 | Datasheet | |
SPL05B | Sunplus → 65R02 | Datasheet | |
SPL06A | Sunplus → 65R02 | Datasheet | |
SPL06B | Sunplus → 65R02 | Datasheet | |
SPLB20A | Sunplus → 65R02 | Datasheet | |
SPLB20A1 | Sunplus → 65R02 | Datasheet | |
SPLB21A | Sunplus → 65R02 | Datasheet | |
SPLB22A | Sunplus → 65R02 | Datasheet | |
SPLB23A | Sunplus → 65R02 | Datasheet | |
SPLB24A | Sunplus → 65R02 | Datasheet | |
SPLB25A | Sunplus → 65R02 | Datasheet | |
SPLB26A | Sunplus → 65R02 | Datasheet | |
SPL128A | Sunplus → 65R02 | Datasheet | |
SPLG01 | Sunplus → 65R02 | Datasheet | |
SPF06A1 | Sunplus → 65S02 | Datasheet | |
SPF18A1 | Sunplus → 65S02 | Datasheet | |
SPF20A | Sunplus → 65S02 | Datasheet | |
SPF30A1 | Sunplus → 65S02 | Datasheet | |
SPF30B | Sunplus → 65S02 | Datasheet | |
SPL02A | Sunplus → 65S02 | Datasheet | |
SPCxxx | Sunplus → SunPlus | Datasheet | |
SPCRxxx | Sunplus → SunPlus | Datasheet | |
SPMCxx | Sunplus → SunPlus | Datasheet | |
SPFA64A | Sunplus → SunPlus | Datasheet | |
SPFA120A | Sunplus → SunPlus | Datasheet | |
SPL08A | Sunplus → SunPlus | Datasheet | |
SPL15A | Sunplus → SunPlus | Datasheet | |
SPL15B | Sunplus → SunPlus | Datasheet | |
SPL25B | Sunplus → SunPlus | Datasheet | |
SPL25C | Sunplus → SunPlus | Datasheet | |
SPL30A | Sunplus → SunPlus | Datasheet | |
SPL31A | Sunplus → SunPlus | Datasheet | |
SPL60A | Sunplus → SunPlus | Datasheet | |
SPL190A | Sunplus → SunPlus | Datasheet | |
SPMC65P1504A | Generic → 6502 | Datasheet | |
SPMC65P1502A | Generic → 6502 | Datasheet | |
Synertek | SY6502 | Generic → 6502 | Datasheet |
SY6503 | Generic → 6502 | Datasheet | |
SY6504 | Generic → 6502 | Datasheet | |
SY6505 | Generic → 6502 | Datasheet | |
SY6506 | Generic → 6502 | Datasheet | |
SY6507 | Generic → 6502 | Datasheet | |
SY6512 | Generic → 6502 | Datasheet | |
SY6513 | Generic → 6502 | Datasheet | |
SY6514 | Generic → 6502 | Datasheet | |
SY6515 | Generic → 6502 | Datasheet | |
SY65C02 | Generic → 65C02 | N/A | |
UMC | UM6502 | Generic → 6502 | Datasheet |
UM6507 | Generic → 6502 | Datasheet | |
UM6512 | Generic → 6502 | Datasheet | |
VLSI | 6502A | Generic → 6502 | N/A |
VL65NC02 | WDC → W65C02S | Datasheet | |
WDC | W65C02S | WDC → W65C02S | Datasheet |
W65C134S | WDC → W65C02S | Datasheet | |
W65C02GPMCU | WDC → W65C02S | Datasheet | |
Weltrend | WT5090 | Generic → 6502 | N/A |
WT5091 | Generic → 6502 | N/A | |
WT50P6 | Generic → 6502 | N/A | |
WT6148 | Generic → 6502 | Datasheet | |
WT6160 | Generic → 6502 | Datasheet | |
WT62P2 | Generic → 6502 | Datasheet | |
WT65F1 | Generic → 6502 | Datasheet | |
WT6511 | Generic → 6502 | N/A | |
WT6512 | Generic → 6502 | N/A | |
WT6512F | Generic → 6502 | N/A |
- Negation for hexadecimal, decimal, and octal types.
- Re-test 6502, 65C02, R6500, R65C02, and W65C02 backends.
- Write tests for the HuC6280 backend.
- Write tests for the R65C19 backend.
- Write tests for the R65C29 backend.
- Properly handle the extra registers present in the R65C19 variant.
- Attempt to reject files too big for address-space reduced chip variants.
- Add support for more 6502 variants if any are found in the wild.
- Properly relocate files in the 64k address space with BSS sections around data segments.
- Alternate syntax for extended opcodes (i.e. BBS0 → BBS 0,...).
- A way to properly model stack changes (ie. being able to increment and decrement the virtual stack pointer when encountering PHx or PLx instructions).
- Have a customised memory map with named registers for each chip (needs BSS support first).
- Undocumented opcodes for the generic 6502 core are not supported (and this is not going to change in the near future).
- Rebuilding the test binaries requires having the AS Macroassembler command line tools available in your
PATH
variable.
version 0.2.0
This CPU core plugin allows you to disassemble 65816/65802 code, used in some of home computers of the 80s, and early 90s, for industrial automation or other specialised tasks where a microcontroller is needed, and in the Super Nintendo/Super Famicom games console.
CPU backends currently supported: 65816, MELPS 7700.
Manufacturer | Model | Provider | Datasheet |
---|---|---|---|
California Micro Devices | G65SC816 | Generic → 65816 | Datasheet |
G65SC802 | Generic → 65816 | Datasheet | |
WDC | W65C816S | Generic → 65816 | Datasheet |
W65C802S | Generic → 65816 | N/A | |
W65C265S | Generic → 65816 | Datasheet | |
W65C816GPMCU | Generic → 65816 | Datasheet | |
Mitsubishi | M37906M4C | Mitsubishi → M7700 | Datasheet |
M37906M4H | Mitsubishi → M7700 | Datasheet | |
M37906M6C | Mitsubishi → M7700 | Datasheet | |
M37906M8C | Mitsubishi → M7700 | Datasheet |
- Add support for more 65816 variants if any are found in the wild.
- Attempt to reject files too big for address-space reduced chip variants.
- Expand the generic 65816 test suite.
- Accumulator and index register width change propagation analysis.
- Automatically add I/O register labels for MELPS 7700.
- Properly relocate files in the entire address space with BSS sections around data segments.
- A way to properly model stack changes (ie. being able to increment and decrement the virtual stack pointer when encountering PHx or PLx instructions).
- Rebuilding the test binaries requires having the AS Macroassembler command line tools available in your
PATH
variable. - The default CPU mode has both accumulator and index registers set to 8 bits each. This can be changed via the usual Hopper CPU mode setting facilities.
version 0.1.0
This CPU core plugin allows you to disassemble 8x300 code, used in early signal processing equipment in the 70s and early 80s.
CPU backends currently supported: 8x300, 8x305.
Manufacturer | Model | Provider | Datasheet |
---|---|---|---|
AMD | AM29x305 | Generic → 8x305 | Datasheet |
AM29x305A | Generic → 8x305 | Datasheet | |
Lansdale | SL8X305 | Generic → 8x305 | Datasheet |
Philips | S8X305I | Generic → 8x305 | N/A |
Scientific Micro Systems | SMS300 | Generic → 8x300 | N/A |
Signetics | N8X300I | Generic → 8x300 | Datasheet |
S8X300-1 | Generic → 8x300 | Datasheet | |
S8X300-2 | Generic → 8x300 | Datasheet | |
N8X305A | Generic → 8x305 | Datasheet | |
N8X305I | Generic → 8x305 | Datasheet | |
N8X305N | Generic → 8x305 | Datasheet |
- Add support for more 8x300 variants if any are found in the wild.
- Attempt to reject files too big for address-space reduced chip variants.
- Automatic variable extraction for generated
SEL
opcodes.
- Rebuilding the test binaries requires having the AS Macroassembler command line tools available in your
PATH
variable. - If MCCAP syntax is used, comments will still start with
;
rather than with*
as expected. As far as the author can see, this is something that cannot fixed by the plugin but by the Hopper authors directly. - The MCCAP syntax does not support negation for constant operands, therefore attempting to mark a constant as negated will not yield anything. Negation works as intended if using the AS syntax.
version 0.0.1
This CPU core plugin allows you to disassemble Texas Instruments' TMS1000 series code, used in early embedded equipment and terminals.
CPU backends currently supported: TMS1000, TMS1100.
Manufacturer | Model | Provider | Datasheet |
---|---|---|---|
Texas Instruments | TMS1000 | Texas Instruments → TMS1000 | Datasheet |
TMS1070 | Texas Instruments → TMS1000 | Datasheet | |
TMS1100 | Texas Instruments → TMS1100 | Datasheet | |
TMS1200 | Texas Instruments → TMS1000 | Datasheet | |
TMS1270 | Texas Instruments → TMS1000 | Datasheet | |
TMS1300 | Texas Instruments → TMS1100 | Datasheet |
- Add support for more TMS1000 variants if any are found in the wild.
- Attempt to reject files too big for address-space reduced chip variants.
- Alternate syntax for A1ACC opcodes.
- Rebuilding the test binaries requires having the AS Macroassembler command line tools available in your
PATH
variable.
version 0.2.2
This file loader plugin allows you to load Commodore binaries in PRG format to be disassembled. (Please note that the plugin depends on the 6502 CPU core to be installed in order to work properly)
- Add support for containers (Disk and Tape images).
- Add support for cartridges.
- The plugin can also handle BASIC loader stubs if any are present, although the detokeniser for that is quite flaky and barely tested. Invalid or improper BASIC code will crash the plugin, and maybe bring Hopper down with it.
- Properly relocate files in the 64k address space with BSS sections around data segments.
- Automatically fill labels for audio, video, and zero page locations and automatically create virtual segments for register banking.
version 0.0.1
This file loader plugin allows you to load binaries saved as ASCII HEX files. Currently the plugin only support the following formats: Intel HEX.
- Add full support for segments in Intel HEX files.
- Add support for Motorola S-Record files.
- Add support for Tektronix HEX files.
- Add support for MOS HEX files.
- The plugin cannot handle overlapping ranges, which can happen when flashing operations require writing memory out of order and hitting locations more than once.
version 0.0.2
This tool plugin currently allows to map the full address space of the CPU chosen for the currently loaded file. When dealing with firmware images and the like, especially on older architectures, the code already assumes a certain memory layout and memory amount. If a block of code is loaded at a particular address and points to absolute memory locations it is a bit of a pain to handle the situation in Hopper since there is no way (that I know of) to create a segment from the UI. This plugin solves this very specific situation.
- Mapping the full address space of a 32 or 64 binary is not recommended, as the UI will act as if you have loaded a 4 GB/2 EB file.
Checkout from Git, open HopperPlugins.xcworkspace
in Xcode/AppCode, select the plugin you are interested in and then let Xcode/AppCode build the associated project; the plugin will be automatically copied to the appropriate paths (~/Library/Application Support/Hopper/Plugins/v4/{CPUs,Loaders,Tools}
). Once done, please close any open instances of Hopper and restart them. That's all there is to it.
Keep in mind that these plugins require Hopper 4.2.8 or later to work. They may work on older versions but they are neither tested nor supported on anything older than v4.2.8.
If you are unable or unwilling to update your Hopper installation from v3 to v4 then build the code marked by the v3api
git tag. However, since the Hopper author allowed free upgrades from v3 licences to v4 licenses, v3 plugins are effectively unsupported as of v4 release. It is strongly suggested to update your Hopper installation at your earliest opportunity.
Send an email to a.gatti * frob.it
(yep, replace the asterisk, you know what to do), or try sending a message to [email protected]
on Jabber if you so fancy.