1" Vim syntax file 2" Language: xa 6502 cross assembler 3" Maintainer: Clemens Kirchgatterer <[email protected]> 4" Last Change: 2016 Aug 31 5 6" quit when a syntax file was already loaded 7if exists("b:current_syntax") 8 finish 9endif 10 11syn case ignore 12 13" Opcodes 14syn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address 15syn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address 16syn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address 17syn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address 18syn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address 19syn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address 20syn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address 21syn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address 22syn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address 23syn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address 24syn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address 25syn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address 26syn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address 27syn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address 28syn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address 29syn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address 30syn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address 31syn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address 32syn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address 33syn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address 34syn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address 35syn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address 36syn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address 37syn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address 38syn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address 39syn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address 40syn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address 41syn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address 42syn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address 43syn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address 44syn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address 45syn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address 46syn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address 47syn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address 48syn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address 49syn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address 50syn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address 51syn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address 52syn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address 53syn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address 54syn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address 55syn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address 56syn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address 57syn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address 58syn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address 59syn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address 60syn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address 61syn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address 62syn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address 63syn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address 64syn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address 65syn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address 66syn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address 67syn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address 68syn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address 69syn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address 70syn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address 71syn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address 72syn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address 73syn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address 74syn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address 75syn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address 76syn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address 77syn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address 78syn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address 79syn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address 80syn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address 81 82" Addresses 83syn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)" 84syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)" 85syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)" 86syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)" 87syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)" 88syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)" 89syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)" 90syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)" 91syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)" 92syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)" 93 94" Numbers 95syn match a65Number "#\=[0-9]*\>" 96syn match a65Number "#\=$[0-9A-F]*\>" 97syn match a65Number "#\=&[0-7]*\>" 98syn match a65Number "#\=%[01]*\>" 99 100syn case match 101 102" Types 103syn match a65Type "\(^\|\s\)\.byt\($\|\s\)" 104syn match a65Type "\(^\|\s\)\.word\($\|\s\)" 105syn match a65Type "\(^\|\s\)\.asc\($\|\s\)" 106syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)" 107syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)" 108syn match a65Type "\(^\|\s\)\.text\($\|\s\)" 109syn match a65Type "\(^\|\s\)\.data\($\|\s\)" 110syn match a65Type "\(^\|\s\)\.bss\($\|\s\)" 111syn match a65Type "\(^\|\s\)\.zero\($\|\s\)" 112syn match a65Type "\(^\|\s\)\.align\($\|\s\)" 113 114" Blocks 115syn match a65Section "\(^\|\s\)\.(\($\|\s\)" 116syn match a65Section "\(^\|\s\)\.)\($\|\s\)" 117 118" Strings 119syn match a65String "\".*\"" 120 121" Programm Counter 122syn region a65PC start="\*=" end="\>" keepend 123 124" HI/LO Byte 125syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend 126 127" Comments 128syn keyword a65Todo TODO XXX FIXME BUG contained 129syn match a65Comment ";.*"hs=s+1 contains=a65Todo 130syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment 131 132" Preprocessor 133syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue 134syn match a65End excludenl /end$/ contained 135syn match a65Continue "\\$" contained 136 137" Define the default highlighting. 138" Only when an item doesn't have highlighting yet 139 140hi def link a65Section Special 141hi def link a65Address Special 142hi def link a65Comment Comment 143hi def link a65PreProc PreProc 144hi def link a65Number Number 145hi def link a65String String 146hi def link a65Type Statement 147hi def link a65Opcode Type 148hi def link a65PC Error 149hi def link a65Todo Todo 150hi def link a65HiLo Number 151 152 153let b:current_syntax = "a65" 154