blob: 6445b9438b941cfe6d09e4909183e6d8f64ef212 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: xa 6502 cross assembler
Bram Moolenaar438f67a2014-01-07 06:09:28 +01003" Maintainer: Clemens Kirchgatterer <clemens@1541.org>
Bram Moolenaarf37506f2016-08-31 22:22:10 +02004" Last Change: 2016 Aug 31
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 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
Viktor Szépe3fc7a7e2023-08-23 21:20:00 +0200121" Program Counter
Bram Moolenaar071d4272004-06-13 20:20:40 +0000122syn 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.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200138" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200140hi 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
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152
153let b:current_syntax = "a65"