1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: xa 6502 cross assembler 3438f67a0SBram Moolenaar" Maintainer: Clemens Kirchgatterer <[email protected]> 4*f37506f6SBram Moolenaar" Last Change: 2016 Aug 31 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11071d4279SBram Moolenaarsyn case ignore 12071d4279SBram Moolenaar 13071d4279SBram Moolenaar" Opcodes 14071d4279SBram Moolenaarsyn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address 15071d4279SBram Moolenaarsyn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address 16071d4279SBram Moolenaarsyn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address 17071d4279SBram Moolenaarsyn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address 18071d4279SBram Moolenaarsyn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address 19071d4279SBram Moolenaarsyn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address 20071d4279SBram Moolenaarsyn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address 21071d4279SBram Moolenaarsyn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address 22071d4279SBram Moolenaarsyn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address 23071d4279SBram Moolenaarsyn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address 24071d4279SBram Moolenaarsyn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address 25071d4279SBram Moolenaarsyn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address 26071d4279SBram Moolenaarsyn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address 27071d4279SBram Moolenaarsyn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address 28071d4279SBram Moolenaarsyn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address 29071d4279SBram Moolenaarsyn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address 30071d4279SBram Moolenaarsyn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address 31071d4279SBram Moolenaarsyn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address 32071d4279SBram Moolenaarsyn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address 33071d4279SBram Moolenaarsyn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address 34071d4279SBram Moolenaarsyn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address 35071d4279SBram Moolenaarsyn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address 36071d4279SBram Moolenaarsyn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address 37071d4279SBram Moolenaarsyn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address 38071d4279SBram Moolenaarsyn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address 39071d4279SBram Moolenaarsyn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address 40071d4279SBram Moolenaarsyn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address 41071d4279SBram Moolenaarsyn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address 42071d4279SBram Moolenaarsyn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address 43071d4279SBram Moolenaarsyn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address 44071d4279SBram Moolenaarsyn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address 45071d4279SBram Moolenaarsyn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address 46071d4279SBram Moolenaarsyn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address 47071d4279SBram Moolenaarsyn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address 48071d4279SBram Moolenaarsyn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address 49071d4279SBram Moolenaarsyn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address 50071d4279SBram Moolenaarsyn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address 51071d4279SBram Moolenaarsyn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address 52071d4279SBram Moolenaarsyn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address 53071d4279SBram Moolenaarsyn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address 54071d4279SBram Moolenaarsyn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address 55071d4279SBram Moolenaarsyn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address 56071d4279SBram Moolenaarsyn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address 57071d4279SBram Moolenaarsyn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address 58071d4279SBram Moolenaarsyn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address 59071d4279SBram Moolenaarsyn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address 60071d4279SBram Moolenaarsyn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address 61071d4279SBram Moolenaarsyn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address 62071d4279SBram Moolenaarsyn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address 63071d4279SBram Moolenaarsyn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address 64071d4279SBram Moolenaarsyn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address 65071d4279SBram Moolenaarsyn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address 66071d4279SBram Moolenaarsyn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address 67071d4279SBram Moolenaarsyn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address 68071d4279SBram Moolenaarsyn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address 69071d4279SBram Moolenaarsyn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address 70071d4279SBram Moolenaarsyn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address 71071d4279SBram Moolenaarsyn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address 72071d4279SBram Moolenaarsyn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address 73071d4279SBram Moolenaarsyn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address 74071d4279SBram Moolenaarsyn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address 75071d4279SBram Moolenaarsyn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address 76071d4279SBram Moolenaarsyn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address 77071d4279SBram Moolenaarsyn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address 78071d4279SBram Moolenaarsyn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address 79071d4279SBram Moolenaarsyn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address 80071d4279SBram Moolenaarsyn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address 81071d4279SBram Moolenaar 82071d4279SBram Moolenaar" Addresses 83071d4279SBram Moolenaarsyn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)" 84071d4279SBram Moolenaarsyn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)" 85071d4279SBram Moolenaarsyn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)" 86071d4279SBram Moolenaarsyn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)" 87071d4279SBram Moolenaarsyn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)" 88071d4279SBram Moolenaarsyn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)" 89071d4279SBram Moolenaarsyn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)" 90071d4279SBram Moolenaarsyn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)" 91071d4279SBram Moolenaarsyn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)" 92071d4279SBram Moolenaarsyn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)" 93071d4279SBram Moolenaar 94071d4279SBram Moolenaar" Numbers 95071d4279SBram Moolenaarsyn match a65Number "#\=[0-9]*\>" 96071d4279SBram Moolenaarsyn match a65Number "#\=$[0-9A-F]*\>" 97071d4279SBram Moolenaarsyn match a65Number "#\=&[0-7]*\>" 98071d4279SBram Moolenaarsyn match a65Number "#\=%[01]*\>" 99071d4279SBram Moolenaar 100071d4279SBram Moolenaarsyn case match 101071d4279SBram Moolenaar 102071d4279SBram Moolenaar" Types 103071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.byt\($\|\s\)" 104071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.word\($\|\s\)" 105071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.asc\($\|\s\)" 106071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.dsb\($\|\s\)" 107071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.fopt\($\|\s\)" 108071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.text\($\|\s\)" 109071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.data\($\|\s\)" 110071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.bss\($\|\s\)" 111071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.zero\($\|\s\)" 112071d4279SBram Moolenaarsyn match a65Type "\(^\|\s\)\.align\($\|\s\)" 113071d4279SBram Moolenaar 114071d4279SBram Moolenaar" Blocks 115071d4279SBram Moolenaarsyn match a65Section "\(^\|\s\)\.(\($\|\s\)" 116071d4279SBram Moolenaarsyn match a65Section "\(^\|\s\)\.)\($\|\s\)" 117071d4279SBram Moolenaar 118071d4279SBram Moolenaar" Strings 119071d4279SBram Moolenaarsyn match a65String "\".*\"" 120071d4279SBram Moolenaar 121071d4279SBram Moolenaar" Programm Counter 122071d4279SBram Moolenaarsyn region a65PC start="\*=" end="\>" keepend 123071d4279SBram Moolenaar 124071d4279SBram Moolenaar" HI/LO Byte 125071d4279SBram Moolenaarsyn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend 126071d4279SBram Moolenaar 127071d4279SBram Moolenaar" Comments 128071d4279SBram Moolenaarsyn keyword a65Todo TODO XXX FIXME BUG contained 129071d4279SBram Moolenaarsyn match a65Comment ";.*"hs=s+1 contains=a65Todo 130071d4279SBram Moolenaarsyn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment 131071d4279SBram Moolenaar 132071d4279SBram Moolenaar" Preprocessor 133071d4279SBram Moolenaarsyn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue 134071d4279SBram Moolenaarsyn match a65End excludenl /end$/ contained 135071d4279SBram Moolenaarsyn match a65Continue "\\$" contained 136071d4279SBram Moolenaar 137071d4279SBram Moolenaar" Define the default highlighting. 13889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 139071d4279SBram Moolenaar 140*f37506f6SBram Moolenaarhi def link a65Section Special 141*f37506f6SBram Moolenaarhi def link a65Address Special 142*f37506f6SBram Moolenaarhi def link a65Comment Comment 143*f37506f6SBram Moolenaarhi def link a65PreProc PreProc 144*f37506f6SBram Moolenaarhi def link a65Number Number 145*f37506f6SBram Moolenaarhi def link a65String String 146*f37506f6SBram Moolenaarhi def link a65Type Statement 147*f37506f6SBram Moolenaarhi def link a65Opcode Type 148*f37506f6SBram Moolenaarhi def link a65PC Error 149*f37506f6SBram Moolenaarhi def link a65Todo Todo 150*f37506f6SBram Moolenaarhi def link a65HiLo Number 151071d4279SBram Moolenaar 152071d4279SBram Moolenaar 153071d4279SBram Moolenaarlet b:current_syntax = "a65" 154