" Vim syntax file" Language: xa 6502 cross assembler" Maintainer: Clemens Kirchgatterer <clemens@thf.ath.cx>" Last Change: 2003 May 03" For version 5.x: Clear all syntax items" For version 6.x: Quit when a syntax file was already loadedif version < 600 syntax clearelseif exists("b:current_syntax") finishendifsyn case ignore" Opcodessyn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Addresssyn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address" Addressessyn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)"syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)"syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)"syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)"syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)"syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)"syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)"syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)"syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)"syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)"" Numberssyn match a65Number "#\=[0-9]*\>"syn match a65Number "#\=$[0-9A-F]*\>"syn match a65Number "#\=&[0-7]*\>"syn match a65Number "#\=%[01]*\>"syn case match" Typessyn match a65Type "\(^\|\s\)\.byt\($\|\s\)"syn match a65Type "\(^\|\s\)\.word\($\|\s\)"syn match a65Type "\(^\|\s\)\.asc\($\|\s\)"syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)"syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)"syn match a65Type "\(^\|\s\)\.text\($\|\s\)"syn match a65Type "\(^\|\s\)\.data\($\|\s\)"syn match a65Type "\(^\|\s\)\.bss\($\|\s\)"syn match a65Type "\(^\|\s\)\.zero\($\|\s\)"syn match a65Type "\(^\|\s\)\.align\($\|\s\)"" Blockssyn match a65Section "\(^\|\s\)\.(\($\|\s\)"syn match a65Section "\(^\|\s\)\.)\($\|\s\)"" Stringssyn match a65String "\".*\""" Programm Countersyn region a65PC start="\*=" end="\>" keepend" HI/LO Bytesyn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend" Commentssyn keyword a65Todo TODO XXX FIXME BUG containedsyn match a65Comment ";.*"hs=s+1 contains=a65Todosyn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment" Preprocessorsyn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continuesyn match a65End excludenl /end$/ containedsyn match a65Continue "\\$" contained" Define the default highlighting." For version 5.7 and earlier: only when not done already" For version 5.8 and later: only when an item doesn't have highlighting yetif version >= 508 || !exists("did_a65_syntax_inits") if version < 508 let did_a65_syntax_inits = 1 command -nargs=+ HiLink hi link <args> else command -nargs=+ HiLink hi def link <args> endif HiLink a65Section Special HiLink a65Address Special HiLink a65Comment Comment HiLink a65PreProc PreProc HiLink a65Number Number HiLink a65String String HiLink a65Type Statement HiLink a65Opcode Type HiLink a65PC Error HiLink a65Todo Todo HiLink a65HiLo Number delcommand HiLinkendiflet b:current_syntax = "a65"
" Vim syntax file
" Language: xa 6502 cross assembler
" Maintainer: Clemens Kirchgatterer <clemens@thf.ath.cx>
" Last Change: 2003 May 03
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case ignore
" Opcodes
syn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address
syn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address
" Addresses
syn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)"
syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)"
syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)"
syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)"
syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)"
syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)"
syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)"
syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)"
syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)"
syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)"
" Numbers
syn match a65Number "#\=[0-9]*\>"
syn match a65Number "#\=$[0-9A-F]*\>"
syn match a65Number "#\=&[0-7]*\>"
syn match a65Number "#\=%[01]*\>"
syn case match
" Types
syn match a65Type "\(^\|\s\)\.byt\($\|\s\)"
syn match a65Type "\(^\|\s\)\.word\($\|\s\)"
syn match a65Type "\(^\|\s\)\.asc\($\|\s\)"
syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)"
syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)"
syn match a65Type "\(^\|\s\)\.text\($\|\s\)"
syn match a65Type "\(^\|\s\)\.data\($\|\s\)"
syn match a65Type "\(^\|\s\)\.bss\($\|\s\)"
syn match a65Type "\(^\|\s\)\.zero\($\|\s\)"
syn match a65Type "\(^\|\s\)\.align\($\|\s\)"
" Blocks
syn match a65Section "\(^\|\s\)\.(\($\|\s\)"
syn match a65Section "\(^\|\s\)\.)\($\|\s\)"
" Strings
syn match a65String "\".*\""
" Programm Counter
syn region a65PC start="\*=" end="\>" keepend
" HI/LO Byte
syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend
" Comments
syn keyword a65Todo TODO XXX FIXME BUG contained
syn match a65Comment ";.*"hs=s+1 contains=a65Todo
syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment
" Preprocessor
syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue
syn match a65End excludenl /end$/ contained
syn match a65Continue "\\$" contained
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_a65_syntax_inits")
if version < 508
let did_a65_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink a65Section Special
HiLink a65Address Special
HiLink a65Comment Comment
HiLink a65PreProc PreProc
HiLink a65Number Number
HiLink a65String String
HiLink a65Type Statement
HiLink a65Opcode Type
HiLink a65PC Error
HiLink a65Todo Todo
HiLink a65HiLo Number
delcommand HiLink
endif
let b:current_syntax = "a65"