rg-dis release notes
0.10.5 — 2026-10-10
Reconstructs high-level BASIC syntax on direct GFA-BASIC runtime calls, exposes structured GFA metadata in JSON disassembly output, and prevents short branches from being demoted across functions preceded by padding words.
New features
- Direct GFA-BASIC call reconstruction: Reconstructs high-level BASIC command syntax and backward-traces parameter registers on direct runtime calls, annotating expressions directly in the assembly listing.
- Structured GFA-BASIC JSON records: Emits typed
gfa_library,gfa_call, andgfa_argrecords in JSON disassembly output, detailing ABI variants, resolved function targets, and parameter types. - Routine discovery for stripped binaries: Discovers routine extents from text labels under
--inspect functionsand the JSON functions array on executables lacking DRI symbol tables.
Improvements
- A6 dispatch map corroboration: Corroborates A6 displacement dispatch table names against resolved code targets, avoiding misattributions and scoping dispatch probes to valid code regions.
- Return register consumer tracking: Annotates forward instruction consumers of GFA-BASIC runtime return registers within straight-line blocks.
Bug fixes
- Forced symbol boundary clamping: Treats valid text symbols and user labels as forced instruction boundaries during initial scan passes. Prevents function entry points preceded by null padding from being swallowed into immediate instructions, avoiding instruction desynchronization and preserving conditional branches without raw word demotions.
0.10.4 — 2026-10-08
Improves parameter detection for embedded DSP microkernels and refines entry-point labeling in Motorola DSP56001 disassembly.
Improvements
- Embedded DSP parameter scanning: Accurately tracks address registers staged before system calls when locating embedded DSP microkernels.
- Entry point labeling: Correctly emits custom entry labels when disassembling Motorola DSP56001 programs with non-zero start addresses.
0.10.3 — 2026-10-07
Inherits annotation and formatting options for embedded DSP blocks in heterogeneous executables.
Improvements
- Embedded DSP annotations: Embedded DSP code blocks within heterogeneous Atari executables now inherit command-line annotation options (
--annotate-cycles,--annotate-hw), providing consistent cycle timing and hardware register annotations across both 680x0 and DSP code streams. - DO loop comment alignment: Preserves column 60 comment alignment on DO loop termination labels.
0.10.2 — 2026-10-07
Adds cycle timing and program offset annotations for Motorola DSP56001 disassembly, preserving byte-exact reassembly across tested binaries.
New features
- DSP cycle annotations: Annotates execution cycles for DSP instructions under
--annotate-cycles, aligning cycle totals in comments across single-word and two-word instructions. - DSP offset annotations: Prints program memory addresses as comments under
--annotate-offsets. - Top header comment: Emits a header naming the input filename and memory space word counts across P, X, and Y spaces.
Bug fixes
- Short memory addressing: Preserves short memory address prefixes (
<) in control register transfers (MOVEC), preventing one-word instructions from widening to two words on reassembly. - 24-bit control register immediates: Preserves full 24-bit immediate values in control register transfers.
- Normalization opcode encoding: Encodes DSP56001
NORMinstructions matching the canonical processor opcode.
0.10.1 — 2026-10-07
Adds semantic hardware register and interrupt vector annotations for Motorola DSP56001 disassembly, annotating on-chip peripheral I/O and interrupt vectors alongside existing 68000 hardware annotations.
New features
- DSP hardware register annotations: Annotates memory-mapped DSP peripheral registers ($FFC0..$FFFF) and control bitfields across Host Interface, Serial Communication Interface, and Synchronous Serial Interface accesses.
- DSP interrupt vector naming: Annotates interrupt vectors in program memory ($0000..$003F) with descriptive vector labels, including host command vectors.
- Structured DSP annotations: Emits typed annotation records in JSON output when disassembling DSP binaries.
0.10.0 — 2026-10-05
Adds Motorola DSP56001 disassembly to rg-dis, providing a single unified disassembler for both 680x0 and DSP binaries across the Atari ecosystem.
New features
- DSP56001 disassembly: Disassembles Motorola DSP56001 programs with memory space segmentation (P, X, Y), parallel ALU move decoding, hardware DO loops, and bit-manipulation instructions.
- Multi-format DSP loading: Automatically detects and loads DSP binaries in
.p56,.lod, and.outformats, as well as cooked DSP object blocks. - Embedded DSP detection: Scans Falcon executables for embedded DSP programs via
--inspect embedded-dsp, extracting code and data block boundaries. - Architecture selection: Adds
--archwith options forauto,68k, anddsp, alongside--dialect motorolaand--dialect a56for DSP syntax targeting.
0.9.43 — 2026-10-05
Adds support for non-standard floppy disk images and fixes crashes when inspecting damaged disk headers.
Bug fixes
- Non-standard floppy disk images: Disk images formatted with custom track counts or sector layouts now open reliably by reading the layout directly from the boot sector.
- Damaged disk headers: Disks with invalid or corrupted directory headers no longer crash the inspector, gracefully falling back to standard disk layouts when readable.
0.9.42 — 2026-10-04
Listings of compiled GFA-BASIC programs are easier to follow: runtime calls now show where they go, and data hiding behind those calls displays as data.
New features
- Followable runtime calls: Calls and jumps into the GFA-BASIC runtime now name the destination label wherever the target is verified code, instead of a bare address — including routines entered partway through shared code.
- Data behind the call: Length words and strings tucked after a runtime call now list as data instead of stray instructions, and the call names the label where execution continues.
0.9.41 — 2026-10-04
Vetoes phantom string heuristics across bounded instruction sequences, and anchors ASCII-shaped branch displacements to loader fixups.
Bug fixes
- Phantom string heuristic veto: Rejects spurious C-string classifications across bounded code runs when execution flows past the region boundary, preventing valid branch sequences from being demoted to data blobs.
- Reloc-anchored branch classification: Preserves short branches with ASCII-like displacement bytes as executable code when anchored by nearby loader fixups holding visited routine addresses.
- Basepage preamble commentary: Harmonizes Mshrink sizing and parameter comments in startup preamble analysis with standard GEMDOS ABI terminology.
0.9.40 — 2026-10-03
Prevents valid short branch instructions from being incorrectly demoted to raw data words.
Bug fixes
- Short branch demotion: Prevents short branch instructions whose bytes resemble string terminators from being demoted to data words, preserving continuous instruction disassembly.
0.9.39 — 2026-10-03
Synthesizes instruction-start labels for code branches and subroutine calls, eliminating self-relative branch expressions and anchoring mid-instruction references to instruction boundaries.
Improvements
- Synthesized code labels: Replaces self-relative branch expressions with synthesized instruction-start labels (
_Lxxxxxx), preserving transparent control flow and clean re-assembly across all supported dialects. - Instruction-anchored SMC offsets: Formats mid-instruction modifications as
_Lxxxxxx+N, ensuring multi-word instructions stay intact rather than splitting into raw data words. - String label veto: Prevents branch and subroutine call targets from resolving against string literals.
0.9.38 — 2026-10-03
Prevents false-positive GFA-BASIC runtime commentary on ordinary binaries, and adds statistical code-likelihood classification for ambiguous regions.
Bug fixes
- GFA-BASIC runtime detection: Restricts anonymous runtime calls to emitted instructions, removing spurious commentary from non-GFA binaries while preserving recognition across compiled GFA-BASIC programs.
Improvements
- Code-likelihood rescue: Data regions whose words statistically resemble valid instructions are marked unknown rather than data.
0.9.37 — 2026-10-03
Adds address-level classification explanation and rule logging in the regions view.
Improvements
--explain <addr>prints why an address was classified as code, data, or string.--record-decisionspopulates therulecolumn in--inspect regions.
0.9.36 — 2026-10-03
Unifies code and data checks into an ordered vote table with documented priority.
Improvements
- Overlapping data checks resolve through a deterministic vote order.
0.9.35 — 2026-10-02
Consolidates the character mapping; disassembly output is unchanged.
Maintenance
- Shared Atari ST charset: Unifies character mapping across the toolchain so extracted string glyphs remain consistent.
0.9.34 — 2026-10-02
Adds automatic startup basepage and Mshrink annotations, and fixes subroutine target label resolution near strings.
New features
- Startup basepage annotation: Automatically detects TOS startup preambles, annotating basepage fields,
Mshrink($4A) sizing, stack reservations, and buffers. Disable with--no-annotate-basepage.
Bug fixes
- Subroutine label resolution: Ensures call targets prefer exact routine labels rather than resolving as offsets into preceding string literals.
0.9.33 — 2026-10-02
Prevents parameter block smart labels from misidentifying executable code instructions following zero-padding or entry preambles.
Bug fixes
- Parameter block validation: Rejects parameter block smart labels that overlap executable code instructions or fall-through execution streams, preserving clean instruction disassembly.
0.9.32 — 2026-10-01
Adds Devpac and vasm program header flags, improves raw binary data detection, and clarifies output dialect options.
New features
- Program header flags: Emits
Fastload,TTRAM_RUN, andTTRAM_Mallocdefinitions andCOMMENT HEAD=...header directives for TOS executables under Devpac and vasm dialects.
Bug fixes
- Raw binary data detection: Prevents PC-relative data tables in raw binary images from being mis-decoded as instructions after routine endings.
- CLI dialect guidance: Clarifies that
--dialect vasmmust be passed for Motorola vasm reassembly.
0.9.31 — 2026-10-01
Adds vasm Motorola dialect export directives, clean byte immediate masking, backward branch target preservation, and pointer table extent fixes.
Bug fixes
- vasm dialect Motorola directives: Emits Motorola-syntax section directives (
SECTION TEXT,SECTION DATA,SECTION BSS),XDEFsymbol declarations, andOPT P=68000header when outputting vasm dialect assembly. - vasm byte immediate masking: Fixes masking 8-bit byte immediates.
- Backward branch target preservation: Protects backward branch targets (
BRA.Wtargets) from being subsumed by preceding data blobs. - Pointer table relocation field runs: Preserves continuous 32-bit relocation field arrays as data longwords (
dc.l).
0.9.30 — 2026-09-30
Adds GFA-BASIC 2.x header probing and runtime preamble recognition.
New features
- GFA-BASIC 2.x runtime header recognition: Detects compiler header validation magic and Run-Only preamble strings, ensuring GFA-BASIC 2.x executables qualify for runtime annotations.
0.9.29 — 2026-09-30
Decodes unlabelled short branches as self-relative instructions rather than raw data words.
Bug fixes
- Unlabelled short branch decoding: Decodes short branch instructions whose targets lack resolvable labels using self-relative target expressions (
*+rel), preserving routine contiguity while maintaining re-assemblable output.
0.9.28 — 2026-09-30
Prunes redundant GFA-BASIC operand annotations.
Improvements
- GFA-BASIC commentary precision: Restricts GFA-BASIC annotation comments to named workspace vectors, procedure descriptions, and system register roles, removing redundant commentary that merely restated operand displacements.
0.9.27 — 2026-09-29
Stops GFA-BASIC runtime annotations bleeding onto Pure C binaries.
Bug fixes
- GFA-BASIC runtime detection: Restricts anonymous GFA runtime qualification to verified dispatch patterns or library signatures, removing false-positive GFA-BASIC commentary from Pure C binaries using A4/A6 registers while preserving recognition across compiled GFA-BASIC binaries.
0.9.26 — 2026-09-29
Adds multi-version GFA-BASIC runtime recognition, routine parameter descriptions, and documented command form annotations. Expands routine signature coverage across all major GFA-BASIC 3.x release libraries and identifies exact compiler runtime versions on disassembly headers.
New features
- Multi-version GFA-BASIC runtime identification: Detects compiled GFA-BASIC runtime library versions (3.50, 3.50F, 3.60, 3.6DE, 3.6TTB) and reports the identified runtime version and signature match count in listing preambles.
- Curated GFA-BASIC routine descriptions: Annotates runtime subroutine calls with distinct per-routine descriptions for graphics, math, string, array, sound, disk, and GEM VDI/AES operations.
- Documented GFA-BASIC command syntax: Displays canonical command syntax from the GFA-BASIC interpreter manual (e.g.
COLOR C,EXEC flg,name,cmd,env) at recognized runtime call sites.
Improvements
- Probed GFA-BASIC ABI dispatch: Gates A6 runtime call and jump annotations on verified GFA dispatch initialization sequences, resolving unnamed indirect runtime dispatches to target image addresses while preventing false-positive annotations on standard C frame pointers.
- Expanded GFA-BASIC signature bank: Extends runtime routine coverage across all signature patterns extracted across all vendored GFA-BASIC 3.x release libraries.
- Clean routine commentary: Emits routine descriptions without raw library module filenames on call commentary lines.
Bug fixes
- GFA-BASIC tail-call jumps: Recognizes indirect jumps through A6 (
JMP -d(A6)) as runtime dispatches rather than local stack frame accesses. - A4 vector lookup bounds: Prevents small negative A4 displacements from matching unassociated A6 routine definitions.
0.9.25 — 2026-09-29
Fixes mid-routine instruction demotions around odd region starts and relocated absolute calls.
Bug fixes
- Short branches demoted mid-routine: Prevents odd byte boundaries at region starts from causing valid short branches to demote to raw data words.
- Relocated absolute calls: Resolves relocation-targeted absolute calls as instructions when splitting label regions.
0.9.24 — 2026-09-29
Stops GFA-BASIC commentary appearing on binaries without a GFA-BASIC runtime.
Bug fixes
- GFA-BASIC runtime detection: Restricts GFA-BASIC annotation triggers to explicit GFA runtime dispatches and signatures, preventing false-positive GFA comments on standard C function-pointer calls.
0.9.23 — 2026-09-28
Adds user-defined code and data regions, and fixes pointer-read table classification.
New features
- User-defined code/data sections (
--regions,--region-code,--region-data): Overrides automatic code/data classification for specified guest address ranges (<START>:<END>) on raw images and TOS/PRG executables.
Bug fixes
- Pointer-read tables with an unlabelled skip target: Tables read via pointer indexed loading are classified as data even when the skipping branch targets an unlabelled address.
0.9.22 — 2026-09-28
Fixes PC-relative operand formatting for assembler compatibility.
Bug fixes
- PC-relative operands: Formats
d16(PC)andd8(PC,Xn)operands as target addresses (*+N/*-N) instead of bare displacements, avoiding syntax errors under Devpac 2 and related assemblers.
0.9.21 — 2026-09-28
Classifies pointer-read data tables as data.
Improvements
- Pointer-read tables: Constant tables accessed via PC-indexed operands (
d(PC,Dn.W)) orLEApointers are classified as data directives rather than instructions, even without a skipping branch.
0.9.20 — 2026-09-28
Improves code and data classification for unstripped binaries.
Improvements
- Digit-only strings: Recognises numeric string constants (e.g.
"68010") as data instead of decoding them as instructions. - Branch-skipped data tables: Classifies unlabelled, zero-filled, or partially-labelled constant tables behind forward
BRAinstructions as data.
0.9.19 — 2026-09-28
Fixes value handling for user-defined equates.
Bug fixes
- User-defined equate constants: Treats
--equatevalues as absolute constants rather than image-relative offsets.
0.9.18 — 2026-09-27
Adds user-defined labels and equates, region classification inspection, and option validation.
New features
- User-defined labels (
--label,--labels): Supports custom address labels and label renames via inline arguments (--label LOCATION=NAME) or TSV files. - User-defined equates (
--equate,--equates): Defines constant symbol values via inline arguments (--equate NAME=VALUE) or TSV files.
Improvements
- Region classification inspection (
--inspect regions): Reports code, data, string, and BSS segment ranges in table or JSON format.
Bug fixes
- Option validation: Refuses raw-only options (
--org,--offset,--len) on container listings, and--symon disk images or container members. - Data runs after forward branches: Prevents non-code data words between
BRA.Sand its branch target from decoding as instructions.
0.9.17 — 2026-09-26
Improves instruction cycle annotations for 68020–68060.
Improvements
- Cycle annotations: Shows instruction cycle costs for 68020–68060 targets under
--annotate-cycles.
0.9.16 — 2026-09-26
Devpac indexed addressing compatibility, tab-delimited formatting, and multi-line string recognition.
Improvements
- Devpac indexed addressing compatibility: Emits explicit
.wsize suffixes on word index registers for(d8,An,Xn.w)and(d8,PC,Xn.w)addressing modes. - Tab-delimited formatting (
--tabs): Uses single tab characters (\t) for directive and equate formatting to reduce listing file sizes. - Multi-line string recognition: Identifies string spans containing internal newlines, tabs, and escape sequences as data string directives.
0.9.15 — 2026-09-26
Adds instruction cycle annotations for additional 680x0 CPU variants.
Improvements
- Per-variant cycle annotations: Adds 68010, 68020, 68040, and 68060 cycle lookup tables to
--annotate-cycles.
0.9.14 — 2026-09-26
Improves alignment padding detection and string table boundaries.
Improvements
- Subroutine alignment padding: Identifies NOP and zero alignment padding following
RTSinstructions as data padding. - String table boundaries: Prevents instruction classification from resuming inside multi-entry string tables.
0.9.13 — 2026-09-26
Fixes 68040 cache instruction decoding length.
Bug fixes
- 68040 cache instruction length: Fixed instruction length for 68040 cache operations (
cpusha,cinva, etc.) to 2 bytes.
0.9.12 — 2026-09-26
Improves GFA-BASIC floating-point decoding and argument annotations.
Improvements
- GFA-BASIC 48-bit floating-point decoding: Decodes 6-byte floating-point values into decimal representation for loop bounds and float arguments.
- Parameter tracing and annotations: Annotates GFA runtime calls with parameter descriptions and decimal values for graphic coordinates, delays, and allocation sizes.
- GFA runtime descriptions: Expands routine descriptions across AES/VDI helpers, string operations, disk I/O, and sound routines.
Bug fixes
- Argument register tracking: Excludes comparison and test instructions from register tracking during argument resolution.
0.9.11 — 2026-09-25
Preserves multiple annotations on individual instructions.
Bug fixes
- Multiple instruction annotations: Preserves and joins annotations when multiple note categories apply to the same instruction line.
0.9.10 — 2026-09-25
Relocation-seeded code discovery, dialect byte immediate formatting, and expanded GFA-BASIC runtime definitions.
Improvements
- Relocation entries seed code discovery: Uses pointer targets from executable relocation tables as code entry points during disassembly traversal.
- Byte immediate formatting across dialects: Formats byte-sized immediate operands within valid range limits for target dialects.
- GFA-BASIC runtime dictionary: Expands named runtime routine coverage for GFA-BASIC binaries.
0.9.9 — 2026-09-24
Devpac immediate formatting, Line-A operand syntax, and ELF formatting flags.
Improvements
- Devpac byte immediate formatting: Formats byte-sized immediate operands as 8-bit values under
--dialect devpac. - Line-A operand formatting: Formats Line-A opcode vectors without
#prefixes across target dialects. - ELF text disassembly formatting: Propagates
--dialect,--lower,--sp, and--no-abs-parensformatting flags to ELF disassembly.
0.9.8 — 2026-09-24
GFA-BASIC vector routine naming, workspace member dictionaries, and indirect jump target resolution.
Improvements
- GFA-BASIC vector routine names: Maps negative
A6dispatch offsets (JSR -disp(A6)) to named GFA runtime routines. - GFA workspace field dictionary: Decodes
d(A4)workspace accesses with named GFA data fields (sys_base,vdi_handle,mouse_x, etc.). - Indirect jump target resolution: Traces register initialization prior to
JMP (An)andJMP d(An)calls to resolve branch targets.
0.9.7 — 2026-09-24
GFA-BASIC vector annotations, variable and frame naming, and indirect call tracing.
Improvements
- GFA-BASIC vector annotations: Names GFA runtime library calls (
A6) and workspace vectors (A4). - GFA variable and stack frame naming: Reconstructs typed global variable names for
d(A5)accesses and distinguishes stack arguments from local variables ford(A6)frames. - Indirect call register tracing: Traces register loading prior to
JSR (An)andJSR d(An)calls to annotate call targets.
0.9.6 — 2026-09-24
Devpac directive syntax formatting and instruction branch table recovery.
Improvements
- Instruction branch tables: Decodes inline
BRA.SandBRA.Warrays followingJMP d(PC,Dn)dispatches as instruction targets rather than data bytes.
Bug fixes
- Devpac directive formatting (
--dialect devpac): Omits leading dots on data and BSS directives (dc.b,dc.l,ds.b) for Devpac syntax compatibility.
0.9.5 — 2026-09-23
Branch table detection and indexed PC-relative switch table resolution.
Improvements
- Instruction branch table detection: Identifies scaled register index
JMP d(PC,Dn)dispatches to prevent instruction words from being parsed as jump table offsets. - Indexed PC-relative switch tables: Resolves displacements for
MOVE.W d(PC,D1),D0+ADD.W D1,D0+JMP 2(PC,D0)switch idioms to label jump targets.
0.9.4 — 2026-09-23
Decodes short conditional branches and absolute subroutine calls.
Improvements
- Short conditional branch decoding (
Bcc.S): Decodes symbolicBcc.Sbranch instructions across all 16 condition codes. - Absolute subroutine calls (
JSR): DecodesJSRinstructions with symbolic target labels in mixed code regions. - Relocation-seeded code entries: Uses relocation targets to seed code classification for function pointer tables.
0.9.3 — 2026-09-23
MOVEM post-increment decoding, Devpac header options, and GFA annotation precision.
Improvements
- MOVEM post-increment decoding: Decodes single and double register stack restores as symbolic
MOVEM.L (A7)+,regsinstructions.
Bug fixes
- Devpac 1 and 2 header directives: Omits unsupported
OPT P=andOPT F=CPU directives fordevpac1anddevpac2export dialects. - GFA data pattern filtering: Restricts library function pattern matching to valid instruction boundaries to avoid false-positive annotations on data tables.
0.9.2 — 2026-09-23
Default GFA-BASIC runtime recognition and library signature precision.
New features
- GFA-BASIC annotation control (
--annotate-gfa,--no-annotate-gfa): Enables GFA-BASIC runtime routine recognition by default (disable with--no-annotate-gfa).
Bug fixes
- Library signature precision: Restricts subroutine signature matching to code instruction boundaries to avoid false positives in data tables.
0.9.1 — 2026-09-23
Adds assembler export dialects (--dialect) and fixes decoder regressions.
New features
- Assembler export dialects (
--dialect): Formats output source for 23 assembler dialects (devpac,purec,gas,rmac,madmac, etc.), adjusting directives, labels, CPU options, and alignment syntax per dialect family.
Bug fixes
- Sign-extended byte immediates: Corrects decoding for sign-extended byte immediate operands.
- UNLK before RTS epilogues: Classifies
UNLK Anepilogue instructions preceding labelledRTStargets as code.
0.9.0 — 2026-09-23
GFA-BASIC runtime routine recognition and parameter tracing.
New features
- GFA-BASIC version support: Identifies runtime signatures across GFA-BASIC v2.02, v3.02, v3.50, v3.60, and v3.6TT compiled executables.
- GFA-BASIC runtime library dictionary: Recognizes 1,187 GFA-BASIC runtime routines across graphics, math, sound, memory, and VDI/AES helpers.
- GFA calling convention annotations: Traces register parameter setup (
A4,A5,A6,D0–D3) at GFA runtime call sites. - GFA annotation flag: Added
--annotate-gfaoption (aliased to--annotate-stdlib).
0.8.2 — 2026-09-23
Standard C library signature recognition and parameter typing.
New features
- Compiler library recognition: Identifies over 1,000 standard library routines across Pure C, VBCC, AHCC, Lattice C, Sozobon, Alcyon, Megamax, Mark Williams, and Mintlib.
- VBCC library coverage: Identifies functions across VBCC standard and math libraries (
libvc.a,libm.a, etc.). - Prefix signature indexing: Uses opcode prefix indexing for fast signature lookups during disassembly.
Improvements
- Calling convention argument typing: Binds parameter descriptors at call sites for Pure C, VBCC fastcall, Lattice regargs, math helper, and cdecl conventions.
0.8.1 — 2026-09-22
Standard library attribution, fastcall argument tracing, and expanded VBCC coverage.
Bug fixes
- Signature attribution priority: Prioritizes bytecode pattern matching over symbol table lookups for compiler attribution.
- AHCC signature masks: Corrects AHCC signature masks to prevent false fastcall tagging.
Improvements
- Fastcall argument tracing: Traces register arguments (
A0,A1,D0) for@-prefixed fastcall routines. - Expanded VBCC signatures: Adds signature coverage for common VBCC memory, string, and formatting routines.
- Function header comments: Emits descriptive comments on recognized function definition labels.
0.8.0 — 2026-09-22
Adds standard C library function recognition and call-site argument tracing (--annotate-stdlib).
New features
- Standard library identification: Automatically identifies and labels standard C functions, runtime arithmetic helpers, and OS wrappers across Atari C compilers under
--annotate-stdlib. - Call-site argument tracing: Annotates function parameters at call sites (
BSR/JSR) across cdecl, fastcall, and math intrinsic calling conventions. - Library function commentary: Labels recognized library functions with canonical names and descriptive comments.
0.7.12 — 2026-09-22
Fixes floppy disk disassembly across sector boundaries and unifies disk selections into a single continuous address space with sector boundary markers.
Bug fixes
- Branches across sector boundaries: Branches and jumps spanning sector boundaries now resolve cleanly to target labels instead of falling back to raw data words.
- Cross-sector instructions: Multi-byte instructions crossing sector boundaries decode cohesively across the boundary.
New features
- Sector boundary markers: Emits track/side/sector labels or equates at each sector boundary for easy referencing in multi-sector and full-disk disassemblies.
- Byte window support for disks:
--offsetand--lenslice selections accurately within disk images, and--annotate-offsetsstamps addresses across disk listings.
Improvements
- Repeated byte collapsing: Long sequences of identical filler or padding bytes collapse into compact
.ds.bor.dcb.bdirectives.
0.7.11 — 2026-09-21
Expands smart string labeling to PC-relative text and data targets, binds dual-word trap arguments on single long instructions, and refines variable load and disk disassembly formatting.
Improvements
- Smart string labels on PC-relative data: Automatically labels string references (including PC-relative references in text and data) as descriptive
STR_*symbols derived up to CR/LF delimiters with non-label characters converted to underscores. - Dual-word trap argument binding: Single long instructions (
CLR.L -(A7)orMOVE.L -(A7)) that supply two adjacent 16-bit word arguments in TOS and XBIOS trap frames now bind and annotate both arguments on the instruction line. - Clean address load annotations:
LEAandPEAaddress calculations on system variables and hardware registers now display the variable name and description without an inaccurate "read" verb. - Formatted disk preambles: Disk sector disassembly headers now format sector counts and byte sizes with thousands separators and omit redundant origin addresses.
0.7.10 — 2026-09-21
Fixes string truncation caused by false opcode detection in data blocks, and polishes --lower label casing and --tabs comment alignment.
Bug fixes
- Reachable instruction anchor validation: Validates code reachability before creating PC-relative instruction anchors, preventing false opcode matches in data tables from truncating string literals.
- Lowercase labels with
--lower: Ensures auto-generated and synthetic label identifiers in definitions and operand expressions follow the requested lowercase casing. - Tab-stop comment alignment with
--tabs: End-of-line annotations now calculate column width across tab stops and use tab characters for clean alignment.
0.7.9 — 2026-09-21
Improves multi-line ASCII string formatting, adds formatting customization flags, and fixes floppy disk and raw disassembly edge cases.
Improvements
- Multi-line and CRLF string detection: Disassembles multi-line ASCII menus and messages with CRLF/LF line endings into cohesive quoted strings.
- Exact PC-relative displacement labels: References into unvisited tables or data structures now receive exact target labels instead of relative offsets from preceding instructions.
- Floppy sector disassembly: Disassembles executable code and structured data across all selected floppy sectors with
--disk. - Formatting options: Adds
--no-abs-parensto omit parentheses on absolute addresses,--case lower/--lowerfor lowercase output,--spfor SP register alias, and--tabsfor tab indentation and column separation.
Bug fixes
- Raw
--orgbase calculation: Explicit--orgsets the exact assembly base address when slicing files with--offset. - Absolute short addressing: Low-RAM system variable references remain absolute short operands without generating unnecessary local labels.
- Multi-sector disk label scoping: Multi-sector
--diskdisassemblies now scope labels across the full image to prevent duplicate label definitions across sectors.
0.7.8 — 2026-09-20
Moves the semantic annotation engine into a shared library. Listing output and re-assembly behavior remain identical.
Improvements
- Shared hardware and OS annotations: Moves semantic annotation tables (hardware registers, OS traps, and AES/VDI calls) into one shared set, so every tool names them the same way.
Compatibility
- Preserved output fidelity: Disassembly output, annotation comments, JSON schema, and round-trip reassembly remain unchanged across our test suite.
0.7.7 — 2026-09-20
Wraps long string and data directives across multiple lines to respect standard line length limits.
Improvements
- Long string line wrapping: Breaks long strings and mixed data directives across multiple
dc.b/.dc.blines keeping lines within the standard 80-column budget while preserving exact address offset stamping for each line.
0.7.6 — 2026-09-20
Cleans up listing headers and improves branch and relocation label resolution in mixed code and data sections.
Improvements
- Cleaner listing headers: Removes internal CPU scope comments from disassembly output.
Bug fixes
- Label and relocation resolution: Improves branch target and rebased relocation matching so labels in mixed code and data regions resolve accurately for round-trip reassembly.
0.7.5 — 2026-09-20
Emits un-encodable destination addressing modes and byte-sized address register tests as raw data words to ensure clean round-trip reassembly.
Bug fixes
- Un-encodable destination addressing modes: Emits instructions using PC-relative destination operands as raw
dc.wdata words instead of invalid mnemonics. - Byte address register tests: Emits
TST.Bwith address register operands as raw data words, as the architecture only supports word and long sizes for this form.
0.7.4 — 2026-09-20
Emits reserved and un-encodable effective address forms as raw data words so listings re-assemble cleanly without assembler warnings.
Bug fixes
- Reserved effective address encodings: Emits invalid operand combinations (such as invalid predecrement destinations or non-encodable register operations) as raw
dc.wwords so listings assemble without errors.
0.7.3 — 2026-09-19
Streamlines string inspection with string-first table formatting and updates listing documentation.
Improvements
- String-first inspection tables (
--inspect strings): Places extracted string content in the primary column of terminal tables and keeps metadata compact. - Unified string table formatting: Standardizes string inspection output across executables, object files, raw binary buffers, and floppy disk images.
0.7.2 — 2026-09-18
Adds directory timestamps and attributes to disk inspection, fixes multi-word offset annotations, and improves annotation flag composition.
Improvements
- File metadata in directory listings (
--inspect disk): Adds last-written dates, DOS attribute flags (read-only, hidden, system, archive, directory, volume label), and attribute legends to directory tables. - Filesystem volume date span: Reports the earliest and latest directory write timestamps in the filesystem summary, and exposes them under
--jsonasvolume.file_dates. - Nominal media descriptor reporting: Labels legacy boot sector media descriptor codes as nominal descriptions, avoiding contradictions with actual measured disk geometry.
Bug fixes
- Multi-word raw instruction address annotations (
--annotate-offsets): Stamped addresses on every word line when multi-word instructions fall back to split rawdc.wrepresentations. - Annotation flag composition: Allows combining
--annotatewith specific--no-annotate-<family>flags to selectively disable individual annotation categories.
0.7.1 — 2026-09-18
Enforces 16-bit word alignment on code entry points and unreachable segment traversals.
Bug fixes
- Word alignment in code start heuristics: Rejects odd byte addresses during code entry validation and unreachable region walks to preserve 16-bit 68000 alignment invariants.
0.7.0 — 2026-09-17
Adds per-line memory address annotations for disassembly listings and structured table formatting for disk inspection reports.
New features
- Per-line memory addresses (
--annotate-offsets): Annotates instruction and data lines with their loaded memory addresses at a uniform column width (included in--annotateand--json). When combined with--annotate-cycles, the address column is rendered alongside execution timings.
Improvements
- Structured disk inspection tables (
--inspect disk): Formats geometry, allocation, directory listings, container members, and filesystem defect summaries into aligned boxed tables. - Floppy media descriptor reporting: Reports the boot sector media descriptor byte as its corresponding 3.5-inch disk format.
0.6.27 — 2026-09-17
Adds floppy disk inspection without disassembly, fixes MOVEM and trap call comment fidelity, and clarifies round-trip reassembly verification documentation.
New features
- Floppy disk inspection (
--inspect disk): Reports disk geometry, boot sector metadata, filesystem layout, space usage, volume labels, and recursive directory trees directly from metadata without disassembling. - Executable detection and unreadable disk handling: Identifies GEMDOS executables within disk file listings and reports invalid sector geometry errors instead of attempting raw disassembly.
Bug fixes
- Single-register MOVEM stores: Emits single-register stack stores as valid
MOVEMinstructions rather than raw data words. - Call-site trap annotation filtering: Annotates subroutine calls (
JSR/BSR) with TOS trap names only when the target is a dedicated wrapper subroutine.
Documentation
- Round-trip reassembly documentation: Clarifies documentation and web copy to specify that round-trip fidelity verifies byte-identical code and data reassembly rather than symbol table reproduction.
0.6.26 — 2026-09-17
Fixes undefined symbol emissions when resolving displaced absolute operands in disassembly listings.
Bug fixes
- Displaced absolute operand name resolution: Strips displacement offsets when checking symbol definitions for operands such as
(NAME+4).L, preventing undefined labels from being emitted. - Unified operand symbol scanning: Unifies base symbol extraction across undefined-symbol and collision scanners by splitting bracketed operands at displacement operators.
0.6.25 — 2026-09-17
Extends undefined symbol elimination to word-sized absolute addressing modes.
Bug fixes
- Word-sized absolute operand validation: Checks word-sized absolute operands (
(NAME).W) against defined symbols to prevent emitting undefined labels. - Operand suffix matching: Updates the scanner to recognise both
.Wand.Labsolute operand suffixes.
0.6.24 — 2026-09-17
Prevents undefined symbols from being emitted for absolute operands pointing into unlabelled data regions.
Bug fixes
- Undefined absolute symbol suppression: Emits raw numeric addresses instead of unlabelled
.textsymbols for absolute operands, preventing reassembly failures. - Symbol emission pass consistency: Aligns absolute operand label verification with branch target and PC-relative label checks in Pass 2.
0.6.23 — 2026-09-17
Ensures disassembled listings define all referenced labels, improves relocation immediate formatting, and clarifies CPU directive scope.
Bug fixes
- Referenced label emission: Emits all referenced symbol table code targets as labels to ensure disassembled source links cleanly.
- Relocated immediate instruction decoding: Renders long immediate instructions bearing relocations as valid instructions instead of raw data words.
- Illegal instruction demotion: Demotes invalid address-register operand encodings to data directives.
- Mid-word code region alignment: Handles odd-byte boundaries at code region ends as raw data bytes to prevent label skipping.
Improvements
- CPU directive scope comments: Adds preamble comments clarifying when listing
.cpu/.fpudirectives cover all emitted code regions while--inspect cpureports reachable code only.
0.6.22 — 2026-09-17
Filters opcode false positives from string inspection, synchronises summary string counts, and fixes UTF-8 console output on Windows.
Improvements
- Opcode filtering in string inspection: Excludes decoded instruction regions from
--inspect stringsby default to suppress false positives (configurable via--strings-include-code). - String count synchronisation: Aligns total string counts in bare
--inspectsummaries with--inspect stringstable output. - Windows console UTF-8 support: Ensures banners and diagnostic notes render correctly on Windows consoles without character encoding errors.
0.6.21 — 2026-09-16
Improves reassembly fidelity for branch targets in data sections and handles unsupported FMOVEM register masks.
Bug fixes
- Branch targets in data sections: Emits branch targets as labels only when defined within the listing, preserving round-trip reassembly for mixed code and data across our test suite.
- FMOVEM dynamic register masks: Emits raw data words for
FMOVEMregister masks that cannot be expressed with standard register list syntax.
0.6.20 — 2026-09-16
Improves CPU inspection output and updates documentation for round-trip testing and container inspection.
Improvements
- CPU inspection summary details: Reports the minimum required CPU and FPU alongside the analysed
.textbyte count in--inspect cpu. - Round-trip fidelity documentation: Updates documentation to clarify the scope of verified round-trip reassembly across our test suite.
- Container inspection documentation: Documents container member listing options in
--helpand manual pages.
0.6.19 — 2026-09-16
Automatically routes floppy disk images to the disk inspection pipeline and improves disassembly performance for large binaries.
New features
- Automatic floppy image detection: Automatically routes
.ST,.MSA, and.STXdisk images to the floppy inspection pipeline by file header and extension, with--input-format diskavailable to force handling.
Improvements
- Disk fallback handling: Falls back to raw binary disassembly with a warning on stderr if floppy header autodetection fails.
- Pipeline routing documentation: Updates
--helpand documentation to explain automatic disk routing and fallback options. - Disassembly throughput: Optimises pass traversal to disassemble large raw images and executables up to 9× faster.
0.6.18 — 2026-09-15
Emits non-executable boot sectors and non-boot floppy tracks as collapsed data directives.
Improvements
- Non-executable boot sector formatting: Emits boot sectors with the executable flag cleared as collapsed
.dc.b/.ds.b/.dcb.bdata directives rather than instructions. - Disk data-track listings: Emits non-boot sectors with unified preambles, per-sector
orgdirectives, and collapsed data runs.
0.6.17 — 2026-09-15
Improves CPU/FPU preamble auto-targeting accuracy, adds non-executable boot sector comments, and stabilises test defaults.
Improvements
- Conservative CPU auto-targeting: Derives
.cpuand.fpupreamble directives strictly from emitted instructions, preventing embedded data bytes from inflating target requirements. - Fixed disk track target defaults: Disassembles non-boot disk sectors against a fixed 68000 target to avoid escalating target directives across disk images.
- Non-executable boot sector comments: Adds a
; non-executable boot sectorcomment following the preamble when the bootable flag is clear.
Bug fixes
- Raw round-trip test target stability: Disables auto-targeting in raw round-trip test helpers to maintain consistent baseline targets across partial slices.
0.6.16 — 2026-09-15
Adds raw hex fallback for undocumented IKBD command writes and preserves PC-relative data blobs.
New features
- Undocumented IKBD command fallback: Emits raw hex values for IKBD command bytes that do not match known hardware constants.
Bug fixes
- PC-displacement data blob preservation: Protects PC-relative data blobs across corpus fixtures under default 68030/68882 decode settings.
0.6.15 — 2026-09-13
Adds configurable line indentation, validates data-to-code flow transitions, and aligns Pass 2 rescans across padding.
New features
- Configurable line indentation (
--spaces,--tabs): Adds--spaces [N]and--tabs [N]options to configure listing indentation width and style.
Bug fixes
- Data-to-code flow validation: Requires candidate code runs transitioning out of data blobs to terminate with valid control-flow instructions, preventing data tables from being misidentified as code.
- Pass 2 padding alignment: Aligns Pass 2 rescan across null padding runs before known labels and relocations in
.text, avoiding skipped branch targets and misdecoded subroutine prologues. - Spurious branch fallback suppression: Suppresses invalid
dc.wfallback emission for branch targets entering valid code preceded by padding. - Smart label index formatting: Formats duplicate smart label variables with underscore-separated indices (e.g.
OLD_HZ_200_2).
0.6.14 — 2026-09-13
Identifies OS system call wrappers and annotates caller argument setup instructions.
New features
- OS system call wrapper labelling: Automatically labels leaf subroutines wrapping GEMDOS, BIOS, XBIOS, and VDI/AES traps with semantic names (e.g.
XBIOS_FLOPRD,GEMDOS_MSHRINK). - Caller argument register annotations: Annotates setup instructions preceding wrapper calls with corresponding OS parameter names based on register mappings.
- Wrapper call site annotations: Annotates subroutine calls (
BSR/JSR) targeting wrapper routines with the target OS trap class and function name. - MFP interrupt register clear annotations: Annotates 32-bit clears to MFP interrupt enable and mask register pairs with concise semantic descriptions.
0.6.13 — 2026-09-13
Improves string extraction across unlabelled data runs and refines VT-52 detection thresholds.
Improvements
- Continuous unlabelled string extraction: Scans ahead through unlabelled
.datablocks to extract valid string and VT-52 runs instead of demoting entire blocks to hex.
Bug fixes
- Unlabelled string and VT-52 validation: Enforces minimum character and termination criteria for unlabelled string candidates to avoid fragmented lines and false-positive VT-52 annotations.
0.6.12 — 2026-09-13
Packs binary data into continuous 16-byte lines, tightens string detection heuristics, and fixes unaligned data relocation loops.
Improvements
- Continuous binary data packing: Formats binary
.datablocks into uniform 16-byte.dc.blines without premature line breaks on isolated printable characters. - Representative integration test suite: Enrolls 8 curated binaries into the default test suite for fast integration testing.
Bug fixes
- String candidate detection threshold: Requires at least 4 alphabetic characters and valid termination for string candidates in raw data blocks.
- Unaligned data relocation handling: Fixes an infinite loop when encountering unaligned relocation offsets in
.datasections.
0.6.11 — 2026-09-12
Restricts GEM parameter buffer labels to data and BSS segments, and adds boundary awareness to string smart labels.
New features
- Label-bounded string detection: Recognises known symbol and section boundaries as string delimiters, enabling smart label generation for packed string arrays.
Bug fixes
- GEM parameter buffer segment gating: Restricts VDI and AES parameter block smart labels to
.dataand.bsssections, preventing spurious labels in executable.text.
0.6.10 — 2026-09-09
Improves relocation reconstruction and operand fidelity for disassembled TOS executables.
Improvements
- Relocation boundary pointer slicing: Slices data blocks at relocation offsets to emit symbolic
.dc.lpointers, preserving relocations on reassembly. - Displaced relocatable address resolution: Resolves displaced absolute long operands against relocatable labels with offsets rather than emitting absolute equates.
- Symbolic pointer resolver validation: Verifies target label emission for symbolic pointers in data blobs to prevent unvisited addresses falling back to absolute equates.
0.6.9 — 2026-09-09
Adds .prgflags directive emission for TOS header flags and improves data segment relocation fidelity.
New features
- PRG flags directive (
.prgflags): Emits a.prgflagsdirective in disassembly output when non-zero TOS executable header flags are detected.
Bug fixes
- Data segment relocation preservation: Preserves relocations and labels across
.datasymbol blobs to maintain pointer alignment and structure integrity.
0.6.8 — 2026-09-08
Adds --color, --ascii, and --banner display control options for terminal styling, ASCII table borders, and banner formatting.
New features
- Terminal display controls (
--color,--ascii,--banner): Adds--colorto control ANSI output,--asciifor standard ASCII table borders, and--bannerto select stderr masthead style.
0.6.7 — 2026-09-08
Improves CPX header inspection layout and fixes table column alignment with null-padded identifiers.
Improvements
- CPX header inspection layout: Reorders CPX header rows to place title before icon text and adds a dedicated flags group.
Bug fixes
- CPX ID column alignment: Strips trailing null bytes and whitespace from CPX identifiers to prevent table border misalignment.
0.6.6 — 2026-09-08
Prevents synthetic smart labels from encroaching on user data blobs and preserves relocation-targeted labels.
Bug fixes
- Smart label blob pruning and auto-label retention: Excludes synthetic smart labels from user symbol boundaries and protects relocation targets from auto-label pruning.
0.6.5 — 2026-09-07
Preserves interior labels within GEM parameter blocks and prevents synthetic equates from dropping relocations.
Bug fixes
- GEM parameter block interior labels: Preserves labels at interior offsets within VDI and AES parameter blocks to maintain relocations on reassembly.
0.6.4 — 2026-09-07
Fixes GEM parameter block pointer resolution in binaries over 64 KB and prevents spurious entry point renaming.
Bug fixes
- GEM parameter block slot pointer resolution: Resolves relocated parameter block slots from file offsets to ensure correct label emission in binaries larger than 64 KB.
- Parameter block target bounds checking: Validates address bounds before rebasing parameter blocks and prevents null pointers from renaming the entry point.
0.6.3 — 2026-09-07
Restricts GEM parameter block detection to immediate and address-register pointer sources.
Bug fixes
- GEM parameter block address detection: Requires immediate operands or explicit
LEAinstructions forTRAP #2parameter block recovery, avoiding misidentification of indirect variable loads.
0.6.2 — 2026-09-07
Adds structured formatting and annotations for GEM VDI/AES parameter blocks, control size tables, and subsystem selectors.
New features
- VDI and AES parameter block formatting (
--annotate-vdi,--annotate-aes): Recognises and formats VDI and AES parameter blocks as structured.dc.lpointer tables with descriptive field comments. - AES control size table decoding: Identifies and annotates AES opcode control size tables with function names and expected parameter counts.
- GEM subsystem selector annotations: Annotates
D0register setups beforeTRAP #2with identified VDI or AES subsystem selectors.
0.6.1 — 2026-09-07
Adds --unpack decompression support, fixes CPX header parsing and character decoding, and handles broken stdout pipes cleanly.
New features
- Executable unpacking (
--unpack): Automatically detects and decompresses executables packed with Atari ST crunchers (Ice, Atomik, Automation, Pompey, SpeedPacker, Fire) prior to disassembly.
Improvements
- CPX header parsing and charset decoding: Aligns CPX header field offsets with the XControl specification and decodes strings using the Atari ST character set.
Bug fixes
- Broken pipe error handling: Exits cleanly with code 0 when stdout is closed by downstream tools like
headorless.
0.6.0 — 2026-09-07
Rebuilds CPU requirement inspection using control-flow reachability analysis, expands 68020 instruction coverage, fixes cycle annotation defaults, and adds padded CPX header support. Consolidates development from 0.5.29 through 0.5.45.
New features
- CPU requirements inspection (
--inspect=cpu): Inspects minimum CPU and FPU architecture requirements based on control-flow reachability analysis. - Padded CPX header support: Detects and disassembles Control Panel Extension files with padded headers.
- JSON and interactive CPU reporting: Emits CPU requirement tables in interactive output and structured
cpuobjects under--json.
Improvements
- Control-flow CPU requirement analysis: Traces executable control flow across branches, jump tables, and subroutines to exclude embedded data from CPU requirement classification.
- Object file routine traversal: Traverses all defined function symbols across relocatable object sections.
- Expanded 68020 instruction classification: Recognises
EXTB.L,LINK.Lwith 32-bit displacements, 32-bit branches, and extendedTST/CMPIaddressing modes. - Indirect call discovery: Seeds reachability traversal from relocation fixups and symbol definitions to analyse routines reached via jump tables.
- Line-A opcode traversal: Recognises Line-A opwords (
$A000–$A00F) as system calls to continue control-flow traversal. - Architecture discovery ceiling: Decodes up to 68040 and 68882 FPU during inspection regardless of default target flags.
- Target flag handling: Honours explicit
--cpuand--fpuCLI arguments during requirement inspection. - Non-TTY CPU inspection output: Renders requirement summaries in clean plain text when stdout is redirected.
Bug fixes
- Intra-function label validation: Prevents local labels from causing candidate code components to be discarded during CFG validation.
- Forward and non-returning subroutine calls: Fixes false section overrun detection on forward calls and supports non-returning subroutines in relocatable objects.
- Raw binary analysis slicing: Slices past synthetic wrapper headers to prevent payload truncation during CPU analysis.
- Data pointer filtering: Filters data operands and data relocations from reachability worklists to prevent evaluating data structures as code entry points.
- Component error recovery: Skips invalid decode sequences on unreachable branches rather than discarding entire candidate code components.
- Unmodelled CPU cycle timing: Omits timing output and warns on stderr when
--annotate-cyclesis used with unmodelled CPU targets or instructions. - Invalid instruction rejection: Rejects invalid
CMPI Anencodings and malformedCHK2/CMP2addressing modes to prevent inline data raising false 68020+ requirements. - Code versus data classification: Restores instruction-to-data fallback classification consistency across target CPUs.
- Inspection argument parsing: Fixes space-separated
--inspect cpu <file>syntax to parse input filepaths correctly.
0.5.28 — 2026-09-05
Suppresses cycle annotations on data directives and fixes multi-line comment column alignment.
Bug fixes
- Data directive annotations: Suppresses cycle timings and semantic annotations on demoted
dc.wandds.wdirectives. - Multi-line comment column alignment: Aligns trailing annotation comments based on final line width in multi-line instruction blocks.
0.5.27 — 2026-09-05
Adds CPX file detection, GEMDOS Pterm0 decoding, expanded header diagnostics, and CPU requirements inspection.
New features
- CPX file detection: Detects and disassembles Atari Control Panel Extension (
.CPX) files and provides header metadata tables in--inspect. - CPU and FPU requirements inspection (
--inspect=cpu): Detects minimum CPU and FPU requirements and reports non-68000 instructions and addressing modes.
Improvements
- Pterm0 call recognition: Decodes
TRAP #1invocations with zero arguments as GEMDOS function 0 (Pterm0). - Executable header diagnostics: Adds annotations and table breakdowns for Fastload, TT-RAM, MiNT memory protection, and TPA limit flags.
0.5.26 — 2026-09-05
Documents default target architecture and updates release download links.
Improvements
- Default CPU documentation: Documents the default 68030 target architecture across CLI help and reference docs.
- Release documentation: Adds platform binary download links across release documentation.
0.5.25 — 2026-09-05
Adds per-instruction CPU cycle execution cost annotations.
New features
- Cycle cost annotations (
--annotate-cycles): Annotates instruction lines with estimated CPU execution cycle counts based on the target architecture.
0.5.24 — 2026-09-05
Fixes guest address resolution for 68020+ base and outer displacements in indexed addressing modes.
Bug fixes
- 68020+ displacement resolution: Fixes base and outer displacement address resolution in memory-indirect addressing modes to prevent double-rebasing during symbol lookup.
0.5.23 — 2026-09-05
Interim fix for 68020+ indexed addressing displacement resolution (superseded by 0.5.24).
Bug fixes
- Full extension displacement resolution (interim): Reads displacements directly from decoded operands rather than raw extension words (superseded by 0.5.24).
0.5.22 — 2026-09-05
Adds support for SR/CCR bit operations, explicit zero displacements, and expanded Falcon memory-mapped I/O annotations.
Improvements
- SR and CCR bit operations: Disassembles
ORI,ANDI, andEORIinstructions targetingSRandCCRto standard mnemonics instead of raw data words. - Zero-displacement addressing: Emits explicit
0(An)displacements for address register indirect operands to preserve reassembly fidelity. - 68020+ base-suppressed indexing: Adds support for base-suppressed indexed addressing (
(Xn,bd)) with symbol table resolution. - Subroutine spacing: Restricts subroutine boundary spacing to terminal
RTS/RTEinstructions to keep epilogues contiguous. - Branch target boundary classification: Recognises branch targets following null padding words during label collection.
- Falcon memory-mapped I/O annotations: Adds hardware register annotations for Falcon system configuration, bus control, and Videl timing.
0.5.21 — 2026-09-04
Adds CLI flags to control VT-52 escape sequence annotations.
New features
- VT-52 annotation flags (
--annotate-vt52): Adds flags to control VT-52 escape sequence decoding annotations independently.
0.5.20 — 2026-09-04
Adds PC-relative string pointer support to smart label generation.
Improvements
- PC-relative string pointers: Recognises
PEA str(PC)operands during string analysis to generate contextualSTR_andVT52_labels.
0.5.19 — 2026-09-04
Adds VT-52 terminal escape sequence decoding, smart labelling, and console call annotations.
New features
- VT-52 escape sequence decoding: Decodes standard VT-52 control commands and Atari ST extensions (screen clear, cursor movement, video attributes).
- VT-52 smart labels: Generates
VT52_prefixed labels for detected escape sequence buffers under--smart-labels. - Console call annotations: Annotates GEMDOS
Cconwsand console string arguments with decoded escape command summaries.
0.5.18 — 2026-09-04
Improves branch target spacing for object files and corrects Atari ST character classification.
Improvements
- Object file branch spacing: Includes branch target auto-labels in vertical spacing plans for GST and a.out object formats.
- Greek character classification: Adjusts Atari ST Greek character ranges to exclude mathematical symbols from string scoring.
0.5.17 — 2026-09-04
Improves loop header vertical spacing containment and refines string extraction scoring.
Improvements
- Loop header stack cleanup spacing: Bounds stack cleanup scans by basic block boundaries to keep loop header branch targets separate from preceding calls.
- String scoring adjustments: Excludes symbol padding bytes from vowel scoring and enables accented Latin script anchoring.
0.5.16 — 2026-09-04
Adds Hebrew and Greek string scoring support and constrains return consumer spacing scans.
Improvements
- Hebrew and Greek string extraction: Adds script continuity scoring for Atari TOS Hebrew, Greek, and accented Latin character ranges.
- Call return spacing: Prevents forward return consumer scans from crossing basic block boundaries into labelled loop headers.
0.5.15 — 2026-09-04
Refines Atari ST character set scoring heuristics and bounds return consumer spacing.
Improvements
- Character set string scoring: Restores ASCII and Latin accent validation in string scoring heuristics to filter false-positive opcode sequences.
- Return consumer spacing: Restricts return consumer scans to verified symbol boundaries and entry points.
0.5.14 — 2026-09-04
Improves call spacing for return value bit tests, preserves symbol boundaries, and filters non-letter glyphs.
Improvements
- BTST return consumer spacing: Keeps
BTST #n, D0return value tests contiguous with preceding system call blocks. - Symbol boundary spacing: Preserves function and entry boundaries by incorporating symbol and label addresses into spacing calculations.
- Character filtering: Restricts high-byte letter classification to accented Latin, Hebrew, and Greek characters, excluding math and typography symbols.
0.5.13 — 2026-09-04
Maintains contiguity for argument push sequences and bounds return consumer spacing.
Improvements
- D0 argument push spacing: Keeps
MOVE.W D0, -(SP)argument setup contiguous with subsequent function calls. - Basic block boundary containment: Prevents forward return consumer scans from crossing branch target boundaries.
0.5.12 — 2026-09-03
Maintains spacing contiguity for return value stores to stack offsets.
Improvements
- Stack return store spacing: Keeps return stores to stack offsets (
MOVE.W D0, d(SP)) contiguous with call blocks without misidentifying them as argument pushes.
0.5.11 — 2026-09-03
Improves LEA stack cleanup vertical spacing and adds character scoring for Hebrew and Greek.
Improvements
- LEA stack cleanup spacing: Keeps positive-displacement stack cleanups (
LEA n(SP), SP) contiguous with preceding system calls. - Hebrew and Greek character scoring: Adds classification support for Atari TOS Hebrew and Greek character ranges in string scoring.
0.5.10 — 2026-09-03
Maintains contiguous spacing for multiple return value stores following trap calls.
Improvements
- Multiple return store spacing: Keeps sequential stores or tests of trap return values (
D0orA0) contiguous with the call block.
0.5.9 — 2026-09-03
Maintains contiguous spacing for non-predecrement stack argument stores preceding function calls.
Improvements
- Stack argument store spacing: Treats direct stores to
(SP),d(SP), andd(SP,Xn)as argument setups, keeping them contiguous with call instructions.
0.5.8 — 2026-09-03
Fixes vertical line spacing around FPU instructions.
Bug fixes
- FPU instruction spacing: Restricts non-stack system call vertical spacing to Line-A traps, preventing unwanted blank lines around FPU instructions.
0.5.7 — 2026-09-03
Improves string extraction filtering for the Atari ST character set and adds unfiltered extraction.
Improvements
- Atari charset string scoring: Evaluates high-byte density and clustering under
--strings-charset atarito filter false positives from compressed data while retaining localized text. - Unfiltered string extraction (
--strings-min-score 0): Bypasses heuristic scoring to output all extracted character runs.
0.5.6 — 2026-09-03
Adds unfiltered string extraction option and corrects section names in documentation.
Improvements
- Unfiltered string extraction (
--strings-min-score 0): Disables heuristic filtering and code-region length minimums to extract all printable runs. - Section documentation: Corrects segment listings in documentation from
BSStoTEXT,DATA, or named sections.
0.5.5 — 2026-09-03
Enables ColdFire on-chip FPU defaults, decodes 32-bit multiply and divide instructions, and validates MOV3Q destinations.
Improvements
- ColdFire FPU default: Defaults ColdFire targets to enable on-chip FPU (
.fpu coldfire). - 32-bit arithmetic decoding: Enables disassembly and instruction length calculation for 32-bit
MULU.LandDIVS.Lon ColdFire targets. - MOV3Q operand validation: Restricts
MOV3Qdestination decoding to alterable effective addresses, rejecting PC-relative destinations.
0.5.4 — 2026-09-02
Supports address register operands in ALU operations and validates ColdFire instructions.
Improvements
- ALU address register operands: Supports
ADD,SUB, andCMPdisassembly with address register sources (An), while demoting invalid byte and logical operations to data words. - ColdFire Line-A validation: Enforces opcode mask checks for ColdFire Line-A instructions.
- STLDSR and MOV3Q instructions: Adds disassembly support for
STLDSRwith immediate operands andMOV3Qwith address register destinations.
0.5.3 — 2026-09-02
Emits ColdFire listing directives, adds MAC parallel load decoding, and tightens opcode validation.
Improvements
- Listing directives: Emits
.cpu coldfireand.fpu coldfiretarget directives in ColdFire listings. - MAC parallel loads: Adds decoding support for ColdFire MAC parallel loads, displacements, accumulator selectors, and scale factors.
- ColdFire opcode validation: Validates brief-format index register sizing, validates
TPFopcodes, and rejects memory-destinationSccencodings.
0.5.2 — 2026-09-02
Unifies ColdFire FPU command-line options.
Improvements
- ColdFire FPU CLI options: Adds
coldfireandcfaliases directly to--fpu.
0.5.1 — 2026-09-02
ColdFire instruction set decoding, MAC/EMAC, and on-chip FPU support.
New features
- ColdFire ISA support: Adds decode support for ColdFire targets (
-m coldfire,--fpu coldfire) including MAC/EMAC and on-chip FPU. - CPU target aliases: Adds CLI aliases for target CPUs (
68k,000,010,020,030,040,060,cf,cfv4e).
0.5.0 — 2026-09-02
Initial public release. Disassembles Atari ST, TT, and Falcon executables, object files, and disk images to Motorola 680x0 assembly source with round-trip reassembly fidelity across our test suite.
New features
- Multi-Format Disassembly: Disassembles Atari GEMDOS executables (
.TOS,.PRG,.APP,.GTP), relocatable objects (DRI, Devpac GST, VBCCa.out), static libraries (ararchives), and raw binary images. - Floppy Disk & Container Support: Extracts and disassembles boot sectors and disk sectors from Pasti
.STX,.ST,.MSA,.ZIP, and.LZHimages with geometry-aware CHS extraction. - Round-Trip Reassembly: Produces assembly source verified for round-trip reassembly across our test suite when reassembled with size optimisation disabled.
- 680x0 and FPU instruction coverage: Disassembles MC68000 through MC68060 CPUs and 68881/68882 FPUs (defaulting to 68030 with 68882 FPU).
- Semantic annotations: Decodes GEMDOS, BIOS, and XBIOS trap calls with stack argument tracking, alongside hardware register annotations across Atari systems.
- Symbol table reconstruction: Loads DRI, GST, and
.SYMsymbol tables to reconstruct routine, branch, and data labels (prunes unreferenced equates by default; configurable via--unused-equates). - Metadata inspection (
--inspect): Summarises binary headers, functions, cycle counts, and extracted strings, with structured--jsonoutput.