2 " Language: xa 6502 cross assembler
3 " Maintainer: Clemens Kirchgatterer <clemens@thf.ath.cx>
4 " Last Change: 2003 May 03
6 " For version 5.x: Clear all syntax items
7 " For version 6.x: Quit when a syntax file was already loaded
10 elseif exists("b:current_syntax")
17 syn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address
18 syn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address
19 syn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address
20 syn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address
21 syn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address
22 syn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address
23 syn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address
24 syn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address
25 syn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address
26 syn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address
27 syn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address
28 syn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address
29 syn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address
30 syn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address
31 syn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address
32 syn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address
33 syn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address
34 syn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address
35 syn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address
36 syn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address
37 syn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address
38 syn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address
39 syn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address
40 syn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address
41 syn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address
42 syn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address
43 syn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address
44 syn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address
45 syn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address
46 syn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address
47 syn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address
48 syn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address
49 syn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address
50 syn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address
51 syn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address
52 syn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address
53 syn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address
54 syn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address
55 syn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address
56 syn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address
57 syn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address
58 syn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address
59 syn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address
60 syn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address
61 syn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address
62 syn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address
63 syn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address
64 syn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address
65 syn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address
66 syn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address
67 syn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address
68 syn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address
69 syn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address
70 syn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address
71 syn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address
72 syn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address
73 syn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address
74 syn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address
75 syn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address
76 syn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address
77 syn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address
78 syn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address
79 syn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address
80 syn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address
81 syn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address
82 syn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address
83 syn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address
86 syn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)"
87 syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)"
88 syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)"
89 syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)"
90 syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)"
91 syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)"
92 syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)"
93 syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)"
94 syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)"
95 syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)"
98 syn match a65Number "#\=[0-9]*\>"
99 syn match a65Number "#\=$[0-9A-F]*\>"
100 syn match a65Number "#\=&[0-7]*\>"
101 syn match a65Number "#\=%[01]*\>"
106 syn match a65Type "\(^\|\s\)\.byt\($\|\s\)"
107 syn match a65Type "\(^\|\s\)\.word\($\|\s\)"
108 syn match a65Type "\(^\|\s\)\.asc\($\|\s\)"
109 syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)"
110 syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)"
111 syn match a65Type "\(^\|\s\)\.text\($\|\s\)"
112 syn match a65Type "\(^\|\s\)\.data\($\|\s\)"
113 syn match a65Type "\(^\|\s\)\.bss\($\|\s\)"
114 syn match a65Type "\(^\|\s\)\.zero\($\|\s\)"
115 syn match a65Type "\(^\|\s\)\.align\($\|\s\)"
118 syn match a65Section "\(^\|\s\)\.(\($\|\s\)"
119 syn match a65Section "\(^\|\s\)\.)\($\|\s\)"
122 syn match a65String "\".*\""
125 syn region a65PC start="\*=" end="\>" keepend
128 syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend
131 syn keyword a65Todo TODO XXX FIXME BUG contained
132 syn match a65Comment ";.*"hs=s+1 contains=a65Todo
133 syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment
136 syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue
137 syn match a65End excludenl /end$/ contained
138 syn match a65Continue "\\$" contained
140 " Define the default highlighting.
141 " For version 5.7 and earlier: only when not done already
142 " For version 5.8 and later: only when an item doesn't have highlighting yet
143 if version >= 508 || !exists("did_a65_syntax_inits")
145 let did_a65_syntax_inits = 1
146 command -nargs=+ HiLink hi link <args>
148 command -nargs=+ HiLink hi def link <args>
151 HiLink a65Section Special
152 HiLink a65Address Special
153 HiLink a65Comment Comment
154 HiLink a65PreProc PreProc
155 HiLink a65Number Number
156 HiLink a65String String
157 HiLink a65Type Statement
158 HiLink a65Opcode Type
161 HiLink a65HiLo Number
166 let b:current_syntax = "a65"