xref: /vim-8.2.3635/runtime/syntax/a65.vim (revision f37506f6)
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