• Sign In



  • Categories

    Extension Details



    Readme

    Motorola 68000 Additions adds support for Motorola 68000-family assembly language to Nova: the Amiga, Atari ST, Mega Drive/Genesis, Neo Geo, classic Mac, and anything else built around a 68k.

    Features

    • Syntax highlighting powered by Tree-sitter, covering 68000 through 68060, CPU32, and the 68881/68882 FPU. Branches, jumps, and returns stand out from other instructions. Highlighting also covers vasm and Devpac directives, size suffixes, every addressing mode, macros and their arguments (\1, \@, narg), conditional assembly, rept blocks, local labels (.loop), and $hex, %binary, and @octal numbers.
    • Symbols in the sidebar and jump bar for sections, labels, macros, equ/= constants, rs structure offsets, and equr/reg register aliases.
    • Folding for macro…endm, rept…endr, rem…erem, and if…else…endc blocks.
    • Completions for instructions, directives, registers, size suffixes (type move. to get b/w/l), labels and constants in the file, local labels, and snippets for macro, rept, ifd/ifnd/if, and section. Completions match regardless of case, so MOVE.L works too.
    • Language server support via m68k-lsp: instruction and directive docs on hover, go to definition, find references, rename, formatting, register usage analysis, the value of constants shown inline, and errors from vasm as you type.
    • vasm tasks: assemble with Nova's Build button (⌘B) into an Amiga executable, Atari ST program, raw binary, and more. Errors and warnings appear in the Issues sidebar and inline, even ones inside macros. Run (⌘R) can launch the result in an emulator.

    Requirements

    Highlighting, symbols, folding, and completions work out of the box.

    For language server features, install Node.js 22.15 or later, then the server:

    brew install node
    npm install --global m68k-lsp-server
    

    The server checks files with vasm. It uses a bundled WebAssembly copy of vasm unless it finds a real one.

    For build tasks, you need vasmm68k_mot. Homebrew doesn't package it, so build it from source:

    curl -LO http://sun.hasenbraten.de/vasm/release/vasm.tar.gz
    tar xzf vasm.tar.gz && cd vasm
    make CPU=m68k SYNTAX=mot
    cp vasmm68k_mot /usr/local/bin/     # or anywhere on your PATH
    

    The extension looks for both tools on your PATH, in Homebrew's prefix, and in npm, pnpm, Volta, and nvm global install directories. You can also set explicit paths in Extensions → Extension Library → Motorola 68000 Additions → Settings.

    Usage

    Project settings

    In Project → Project Settings… → Motorola 68000 Additions, choose the target Processor, turn on the FPU if you use one, and add Include Paths. These feed completions, diagnostics, and vasm's -m and -I options. A .m68krc.json in the project overrides them for the language server, and also configures formatting.

    vasm tasks

    1. Choose Project → Project Settings…, then click + under Tasks and pick vasm.
    2. Pick the Main Source File and Output Format. The output file defaults to the source's name with a fitting extension, such as .prg or .bin. Amiga executables get no extension.
    3. Use Build (⌘B) and Clean from the toolbar.
    4. To use Run (⌘R), set a Run Command such as an emulator binary or .app. $OUTPUT in Run Arguments stands for the assembled file. Some examples:
    Target Run Command Run Arguments
    Amiga (vAmiga, FS-UAE) the emulator depends on the emulator; many take the executable via a mounted folder
    Atari ST (Hatari) /Applications/Hatari.app $OUTPUT
    Mega Drive (BlastEm) blastem $OUTPUT

    Commands

    • Extensions → Motorola 68000 Additions → Restart m68k-lsp restarts the language server.

    Settings

    Setting Description
    Enable m68k-lsp Turn the language server on or off.
    m68k-lsp-server Path Explicit path to the server. Empty means automatic.
    Show Constant Values Inline Show the evaluated value of equ/set/= constants.
    vasm Path Explicit path to vasmm68k_mot, used by tasks and diagnostics.
    Check Files with vasm Show vasm errors and warnings as you edit.

    Known limitations

    • 68020+ bitfield operands (bfextu d0{8:4},d1) aren't understood by the grammar yet; they get a parse error, but only within that operand.
    • .s and .asm are shared with other assembly languages, so files with those extensions are claimed with a lower priority unless they look like 68k code. If one opens with the wrong syntax, choose 68000 Assembly from the syntax menu in the status bar.

    Credits

    The parser is tree-sitter-m68k by Graham Bates, used under the MIT License (see Syntaxes/tree-sitter-m68k-LICENSE.md). To rebuild it, run Tools/build-parser.sh. The language server is m68k-lsp-server, also by Graham Bates. vasm is by Volker Barthelmann and Frank Wille.

    License

    MIT. See LICENSE.

    Release Notes

    Version 1.0

    Initial release.

    • Tree-sitter syntax highlighting for Motorola 68000-family assembly (.s, .asm, .i, .68k, .x68), built from tree-sitter-m68k 0.3.2: 68000–68060, CPU32, and 68881/68882 FPU instructions; vasm/Devpac directives; macros and macro arguments; conditional assembly; rept blocks
    • Symbols sidebar: sections, labels, macros, equ/= constants, rs offsets, and equr/reg register aliases
    • Code folding for macros, rept, rem, and if/else/endc blocks
    • Completions for instructions, directives, registers, size suffixes, labels, and block snippets
    • m68k-lsp language server integration (hover docs, go to definition, references, rename, formatting, vasm diagnostics)
    • vasm task template with errors and warnings (including those inside macros) reported as issues, plus a configurable Run command for emulators
    • 68k code blocks highlighted inside Markdown (```m68k)

    License

    MIT License

    Copyright (c) 2026 Maple Street Games

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.