Skip to content

Latest commit

 

History

History
342 lines (270 loc) · 12.1 KB

File metadata and controls

342 lines (270 loc) · 12.1 KB

RPW 65 Changelog

[2.0.4] - 2026-06-29

Rewrite object bytes and cycle counts decorator mechanism for performance. Automatically determine tab tops and upper/lower case, deprecating associated project settings.

Added:

  • a78Header section to project file
  • Prepend Atari 7800 header to binary when saving as .a78 file
  • Write assembly results to bin directory
  • Keyword highlighting for platform-specific register names
  • Error reported when renumbering locals is cancelled
  • Editor: Support function names as document symbols
  • Debugger: Step forward command (step over branch)
  • Debugger: Support setting watch expression values
  • Debugger: Support data breakpoints
  • Debugger: Show cpu cycle delta
  • DASM: Support RORG and REND
  • DASM: Support ORG fill value
  • DASM: Error on immediate values > 255
  • All: Error on negative org delta
  • All: Support binary include

Fixed:

  • Unneeded reparsing on file open, tab change
  • Hover over structure labels not showing values
  • All: Enforce quoted strings on include file names
  • All: Renumbering of locals with numbers and some non-numeric characters
  • All: Mark tokens after opcodes without arguments as errors
  • DASM: Generate data for strings in .byte and dc.b statements
  • DASM: Mark closing quote as error on string constant
  • DASM: Apply opcode suffix to code generation (lda.w, etc.)
  • DASM: Fill bytes when switching between SEG.U and SEG
  • DASM: ifconst and ifnconst with undefined symbols
  • CA65: crash when using aliased functions like .def, .ismnem, etc.
  • Editor: Force cursor visible after large cut of text with codeByte decorators
  • Editor: Suppress trailing space on auto-completes for LSR, ROR, etc.
  • Editor: Handling of trigger characters in completion suggestions
  • Editor: Use macro definition case for completion suggestion
  • Debugger: Watch arrays with empty dimensions ("$1000:[]", "$1000[][4]" etc.)
  • Debugger: Stale breakpoints across debugger launches

Changed:

  • Hover over label definition no longer shows comment header block

[2.0.3] - 2025-09-16

Fixed:

  • Debugger: Address to source file/line problems
  • Debugger: Stopping CPU when setting registers

[2.0.2] - 2025-08-26

Added:

  • Include definition when finding all references
  • Improved comment block extraction for hover
  • imgDir property to project
  • Debugger: Disk image writeback support
  • Debugger: Scope watch variables to stack frame
  • Show modified code bytes in red

Fixed:

  • Error/assert statements inside structure/dummy defs and in shared files
  • autoClosingPairs in language-configuration.json
  • Hover over unused labels now shows value
  • Debugger: Hover over ZPAGE now shows header block
  • Debugger: Matching of breakpoints to source files, avoiding aliasing
  • Debugger: ZPAGE hover formatting
  • Debugger: Watch sizing/formatting of arrays

[2.0.1] - 2025-08-05

Added:

  • Enable semantic highlighting in all themes by default

Fixed:

  • Debugger default entry point selection from binaries
  • Propagate project load errors up to VS Code user

Changed:

  • Tweak semantic token scope mapping

[2.0.0] - 2025-07-29

Added:

  • Full debugger support for connecting to RPW A2 emulator
  • Support for showing code bytes and cycle counts next to source code

Fixed:

  • All [from smokku]: Disable variable tabs when inline suggestion is visible
  • All [from smokku]: Parse comments before keywords in rpw65.tmLanguage

[1.5.3] - 2025-04-30

Added:

  • 64TASS [from agurtovoy]: All supported CPUs in .cpu syntax
  • 64TASS: Support for unspecified values (".byte ?", for example) in .structs
  • 64TASS: Support lower word, higher word, and lower byte swapped word operators

Fixed:

  • 64TASS: Change bank byte operator from "^" to "`"
  • DASM: Macros are case insensitive, unlike symbols

[1.5.2] - 2025-04-14

Added:

  • All: Add base srcDir to include path search
  • CA65: Anonymous .enum parsing, implicit values
  • CA65: Symbol size prefix parsing

Fixed:

  • All: MVN and MVP expression parsing
  • All: COP param parsing when # is missing
  • All: Tracking of macro file indexes
  • All: "jsr (symbol,x)" addressing when symbol is imported
  • CA65: Multiple .export parsing

[1.5.1] - 2025-04-07

Fixed:

  • MERLIN: Default symbol case sensitivity to true, not false, per docs

[1.5.0] - 2025-04-04

Major rewrite of preprocessor to move it towards an actual multi-pass assembler.

Added:

  • All: Support external symbol definition in project file
  • All: Add per-syntax case sensitivity setting and support
  • All: Warn on forward declared zpage variable treated as absolute
  • All: Added support for wildcard in project module src property
  • All: Report errors within macro expansions
  • All: Syntax hilite macro/struct/enum type parameters
  • CA65: Support indented @local: variables
  • DASM: Support "(#expression)" syntax for immediate opcodes

Fixed:

  • All: Fix variable scoping on loop/repeat/for
  • All: Fix/limit scoping within macro definitions
  • All: Fix crash with continuation "" on last line of file
  • All: Improved variable reference tracking in macro definitions and repeats
  • CA65: String constants should be case insensitive (.setcpu "65c02", for example)
  • CA65: Mark "LDA #-1" as a range error to match assembler
  • DASM: Allow dc statements without data expressions

[1.4.0] - 2024-11-22

Mainly the addition of 65816 and ORCA/M parsing and hiliting

Added:

  • Parsing and hiliting of all 65816 and 65EL02 opcodes and addressing modes
  • Preliminary ORCA/M (APW) syntax definition
  • DASM: Brackets in place of parens

Fixed:

  • All: Expression parsing crash on invalid hex values ("$XX", for example)
  • DASM: Regression in handling of "#" prefix on pseudo-ops

[1.3.2] - 2024-10-21

Updates to default syntax hiliting definitions in rpw65.tmLanguage.json

Added:

  • All directives/pseudo ops
  • Single quoted string pattern
  • Corrected escape character pattern

[1.3.1] - 2024-10-18

Added:

  • ACME v.97: Support string escape characters, added since v.96
  • ACME v.97: Warn on binary constants with digits that are not mod 8
  • CA65: Support \x## string escapes

[1.3.0] - 2024-10-17

Major rewrite of syntax parsing to move from an imperative implementation to a definition-driven one.

Added:

  • Hover, auto complete and descriptions for all directives/pseudo ops
  • 64tass syntax support
  • Missing keywords and aliases for all syntaxes
  • Improved auto-detect of syntax
  • Support for parsing line continuations
  • Many more test cases
  • Many other fixes

[1.2.2] - 2024-08-15

General collection of improvements, including Merlin additions so Prince of Persia sources parse cleanly-ish.

Added:

  • Hovering over opcodes shows addressing modes, cycles counts, and flag effects.
  • MERLIN: Leading "#" in data directive expressions
  • MERLIN: DUM implicitly closes previous DUM
  • MERLIN: XC off
  • MERLIN: --^ for repeat end
  • MERLIN: Leading "#" in EQU expressions
  • MERLIN: Trailing ":" on opcodes to force 16-bit
  • ACME: !src, !bin aliases for !source, !binary
  • ACME: !macro definition parameters
  • ACME: Anonymous locals ("+" and "-") in all expressions
  • DASM: Allow segment without name
  • DASM: Macro invoke parameter parsing
  • DASM: Leading "#" on keywords
  • CA65: Error on immediate/byte values -1 to -128
  • CA65: Improved .import parsing/handling
  • CA65: Error on double-quoted text in opcodes (CMP #"C", for example)
  • All: Maintain local scope across equate assignment

Fixed:

  • Macro definitions nested inside if/ifdef conditionals
  • Syntax highlighting on file lost when included file is closed
  • Syntax highlighting missing when file included multiple times
  • Rename symbol to larger size sometimes consumes non-whitespace

[1.2.1] - 2024-05-23

Minor changes, mainly to make Choplifter and Lode Runner disassemblies parse cleanly.

Added:

  • CA65: Macro invoke in first column
  • DASM,ACME: Space delimited HEX statements
  • DASM: Leading "#" in EQU expressions
  • DASM: Report extra spaces in "(ZP), Y", "(ZP, X)", etc. as errors

[1.2.0] - 2024-05-08

This update includes a large batch of changes to get ACME and CA65 closer to parity with Merlin and DASM. It also has changes to make highlighting more automatic, including detecting the syntax type from context and searching more aggressively for include files.

Added:

  • Auto-detect of syntax by analyzing keywords and symbol names
  • Show current syntax in status bar next to rpw65
  • ACME: Scoped brace support for !zone, !macro, !pseudopc, !cpu, !for
  • CA65: Support for .enum, .struct, .union, .proc, .scope
  • Folding on macros, repeat loops, enums, structures, ACME brace blocks
  • .l to list of supported file extensions for LISA 2 files
  • Search for include file in current directory
  • Recursively search for include files in all directories under workspace when no project file
  • Throw exception when multiple .rpw-project files found in the workspace directory or JSON parsing fails
  • CA65: full parsing of segment/code/data/bss, import/export, assert, etc.
  • ALL: Full incbin and align argument parsing
  • ALL: Repeat/loop parsing
  • Settings to turn off errors and warnings

Fixed:

  • Suppress completions on hex values and addressing mode endings
  • Allow "label jmp label" while still flagging "label = label" as an error
  • Stop hiliting operator words (mod, div, etc.) in red
  • ACME: Parsing of parameters for macro define and invoke

Changed

  • ACME: Suppress errors in braced inline code until parsing is supported
  • ACME: Suppress errors in multi-statement lines until parsing is supported

[1.1.3] - 2024-02-26

Added:

  • .a to list of supported file extensions
  • Brackets in place of parens (always allowed, to be connected to syntax feature later)
  • CA65: Anonymous ":", ":+", ":-" labels
  • CA65: Indented assignment
  • CA65: ":=" assignment
  • CA65: .set variables
  • CA65: Better scoping of macro parameters and symbols
  • CA65: More keywords and directives
  • DASM: Optional "." or "#" prefix on all directives
  • DASM: Error if "A" present on accumulator mode shift and rotation opcodes
  • DASM: Parsing of forced addressing mode suffixes on opcodes

Fixed:

  • Loading default settings from project
  • Tabbing in the middle of a word, across a tabstop, sometimes overwrites a character instead of inserting space
  • Crash caused by circular symbol reference (label = label)
  • Auto-completion of keywords starting with symbol
  • CA65: Parsing of quoted file paths

[1.1.2] - 2024-02-04

Added:

  • .inc to list of supported file extensions
  • CA65: Missing common keywords
  • CA65: Support for keywords at character column 1

[1.1.1] - 2024-01-02

Fixed:

  • Disable variable tab indentation while in snippet or completion mode (Issue #1)
  • Add setting to disable variable tab indentation completely (rpw.columns.enable)
  • Renaming a symbol to exactly the label column width doesn't pad with a space before the opcode column
  • Don't insert ';' on tab when already in comment
  • Tab jumps too far when label or opcode are larger than their respective widths

[1.1.0] - 2023-12-19

Added:

  • 65C02 opcode support
  • Non-Merlin: Allow ';' comment without preceding whitespace
  • ACME: Fill in several missing text, disk, and conditional keywords
  • DASM: Support SET and variables
  • DASM: Support SEG.U
  • DASM: Treat single '.' the same as '*'
  • DASM: Allow trailing ':' on labels
  • DASM: Support BYTE and WORD without leading '.' and without arguments

Fixed:

  • Don't add padding after a shrinking renamed symbol if in the middle of an expression
  • Non-Merlin: Strip quotes off include file names

Changed:

  • Moved settings out of project file and into VSCode workspace settings
  • Updated documentation images

[1.0.0] - 2023-12-13

Fixed:

  • Paren and brace parsing for non-Merlin syntaxes
  • Elseif conditional handling
  • Put/include directory parsing exception while editing

Changed:

  • Moved project settings under a common property in project file
  • Updated documentation images
  • Updated descriptions for project properties in README

[0.9.0] - 2023-11-30

Added:

  • Multi-syntax parsing
  • Semantic syntax hiliting
  • Auto-completion
  • Symbol hover/tooltips
  • Syntax errors and warnings
  • Go To Definition and References
  • Rename Symbol
  • Renumber Locals

Contains extensive support for Merlin syntax, with initial basic support for DASM, CA65, ACME, and LISA2.5.