Menu

Tree [0578c3] master /
 History

HTTPS access


File Date Author Commit
 ftplugin 2015-01-11 Max Bane Max Bane [bc4b70] Add a filetype plugin for ca65.
 indent 2015-07-04 Ricardo Quesada Ricardo Quesada [ce583c] adds repeat
 syntax 2023-08-07 Martin Krischik Martin Krischik [c8c753] Strings and characters in CA65 don't actually u...
 .gitattributes 2022-11-03 Martin Krischik Martin Krischik [280b98] Update submodules. Remove LFS. Update LICENSE
 .gitignore 2015-01-07 Max Bane Max Bane [5a171a] Add .gitignore
 .gitmodules 2022-11-14 Martin Krischik Martin Krischik [0d6722] get Wiki with https URLs.
 LICENSE 2015-01-07 Max Bane Max Bane [08d7ea] Initial commit
 README.md 2023-01-29 Max Bane Max Bane [57e120] Typo.

Read Me

vim-asm_ca65

Vim plugin for the ca65 assembly language.

Purpose

This repository provides a Vim
syntax-highlighting plugin, auto-indent plugin, and filetype plugin for the
ca65 assembly language.

ca65 is a full-featured assembler for the MOS
6502
family of
microprocessors, which powered such historic platforms as the KIM I, Apple II,
Commodore 64, and Nintendo Entertainment System. It is a part of the popular
cc65 suite of development tools for the 6502,
which also includes a C compiler, linker, object dumper, etc. ca65 is
designed both for direct use by assembly programmers and as the compilation
target of the cc65 C compiler. ca65 is especially used by "homebrew"
communities for the NES, SNES, etc.

The stock Vim runtime distribution includes syntax modules for several dialects
of assembly, as well as a "generic" module (which is really for the GNU
Assembler), none of which works particularly well with 6502 assembly
conventions, and especially not with ca65's many added features.

Features

  • Syntax highlighting
    • Highlights 6502 instruction mnemonics as keywords, with special highlighting
      for "illegal" instructions, and error highlighting for unknown (typo)
      instructions.
    • Highlights all valid ca65 numeric and string literals, label
      definitions, and comments, with special highlighting for TODOs, FIXMEs, etc.
    • Highlights all valid expression operators and control comands, with special
      treatment for various classes of commands, including .fileopt, segment
      names, includes, macro definitions, storage types, conditional assembly,
      linker control commands, structs, unions, procedures, pseudo-functions, some
      built-in macros, console output commands (.out, .warn, .etc.), and
      assembler behavior switches.
  • Auto-indent
    • Auto-indent under labels, .procs, .if statements, macro definitions,
      macro call parameters, scopes, unions, and structs. Automatically
      de-dent when closing these structures.
  • Filetype plugin
    • Defines ca65 comment syntax for Vim's automatic comment formatting features.
    • Recognizes .include, .incbin, and .macpack statements for Vim's
      include-aware features.

Examples (screenshots)

Solarized colorscheme

Elflord colorscheme

Limitations

  • asm_ca65.vim currently has no awareness of, or support for, assembler
    options that change the rules of valid labels, identifiers, and literals from
    their defaults, for example the following .feature options and related
    command-line switches to ca65.
  • .feature at_in_identifiers
  • .feature dollar_in_identifiers
  • .feature labels_without_colons
  • .feature underline_in_numbers

Installation and Usage

Install in the normal way (i.e., place the contents of the syntax/, indent/
and ftplugin/ directories in corresonding locations in your vim runtime
path), or, if you use Pathogen, clone
this repository under ~/.vim/bundle/.

Everything is enabled by setting a buffer's filetype to asm_ca65. For
example, if all of your ca65 assembly source files end with the .s and
.inc suffixes, the follwing suffices in your .vimrc:

filetype plugin indent on
augroup filetypedetect
    au BufNewFile,BufRead *.s,*.inc set ft=asm_ca65
augroup END
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.