rg-dis release notes
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.