Merge branch 'hack/autopaste'
[vim-kana.git] / runtime / syntax / a65.vim
blobdbf1cdb46d5870f20e7cc9a24aa202832a7ebac9
1 " Vim syntax file
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
8 if version < 600
9   syntax clear
10 elseif exists("b:current_syntax")
11   finish
12 endif
14 syn case ignore
16 " Opcodes
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
85 " Addresses
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\)"
97 " Numbers
98 syn match a65Number     "#\=[0-9]*\>"
99 syn match a65Number     "#\=$[0-9A-F]*\>"
100 syn match a65Number     "#\=&[0-7]*\>"
101 syn match a65Number     "#\=%[01]*\>"
103 syn case match
105 " Types
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\)"
117 " Blocks
118 syn match a65Section    "\(^\|\s\)\.(\($\|\s\)"
119 syn match a65Section    "\(^\|\s\)\.)\($\|\s\)"
121 " Strings
122 syn match a65String     "\".*\""
124 " Programm Counter
125 syn region a65PC        start="\*=" end="\>" keepend
127 " HI/LO Byte
128 syn region a65HiLo      start="#[<>]" end="$\|\s" contains=a65Comment keepend
130 " Comments
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
135 " Preprocessor
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")
144   if version < 508
145     let did_a65_syntax_inits = 1
146     command -nargs=+ HiLink hi link <args>
147   else
148     command -nargs=+ HiLink hi def link <args>
149   endif
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
159   HiLink a65PC          Error
160   HiLink a65Todo        Todo
161   HiLink a65HiLo        Number
163   delcommand HiLink
164 endif
166 let b:current_syntax = "a65"