xref: /vim-8.2.3635/runtime/syntax/z8a.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Z80 assembler asz80
3071d4279SBram Moolenaar" Maintainer:	Milan Pikula <[email protected]>
4071d4279SBram Moolenaar" Last Change:	2003 May 11
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" Common Z80 Assembly instructions
14071d4279SBram Moolenaarsyn keyword z8aInstruction adc add and bit ccf cp cpd cpdr cpi cpir cpl
15071d4279SBram Moolenaarsyn keyword z8aInstruction daa di djnz ei exx halt im in
16071d4279SBram Moolenaarsyn keyword z8aInstruction ind ini indr inir jp jr ld ldd lddr ldi ldir
17071d4279SBram Moolenaarsyn keyword z8aInstruction neg nop or otdr otir out outd outi
18071d4279SBram Moolenaarsyn keyword z8aInstruction res rl rla rlc rlca rld
19071d4279SBram Moolenaarsyn keyword z8aInstruction rr rra rrc rrca rrd sbc scf set sla sra
20071d4279SBram Moolenaarsyn keyword z8aInstruction srl sub xor
21071d4279SBram Moolenaar" syn keyword z8aInstruction push pop call ret reti retn inc dec ex rst
22071d4279SBram Moolenaar
23071d4279SBram Moolenaar" Any other stuff
24071d4279SBram Moolenaarsyn match z8aIdentifier		"[a-z_][a-z0-9_]*"
25071d4279SBram Moolenaar
26071d4279SBram Moolenaar" Instructions changing stack
27071d4279SBram Moolenaarsyn keyword z8aSpecInst push pop call ret reti retn rst
28071d4279SBram Moolenaarsyn match z8aInstruction "\<inc\>"
29071d4279SBram Moolenaarsyn match z8aInstruction "\<dec\>"
30071d4279SBram Moolenaarsyn match z8aInstruction "\<ex\>"
31071d4279SBram Moolenaarsyn match z8aSpecInst "\<inc\s\+sp\>"me=s+3
32071d4279SBram Moolenaarsyn match z8aSpecInst "\<dec\s\+sp\>"me=s+3
33071d4279SBram Moolenaarsyn match z8aSpecInst "\<ex\s\+(\s*sp\s*)\s*,\s*hl\>"me=s+2
34071d4279SBram Moolenaar
35071d4279SBram Moolenaar"Labels
36071d4279SBram Moolenaarsyn match z8aLabel		"[a-z_][a-z0-9_]*:"
37071d4279SBram Moolenaarsyn match z8aSpecialLabel	"[a-z_][a-z0-9_]*::"
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar" PreProcessor commands
40071d4279SBram Moolenaarsyn match z8aPreProc	"\.org"
41071d4279SBram Moolenaarsyn match z8aPreProc	"\.globl"
42071d4279SBram Moolenaarsyn match z8aPreProc	"\.db"
43071d4279SBram Moolenaarsyn match z8aPreProc	"\.dw"
44071d4279SBram Moolenaarsyn match z8aPreProc	"\.ds"
45071d4279SBram Moolenaarsyn match z8aPreProc	"\.byte"
46071d4279SBram Moolenaarsyn match z8aPreProc	"\.word"
47071d4279SBram Moolenaarsyn match z8aPreProc	"\.blkb"
48071d4279SBram Moolenaarsyn match z8aPreProc	"\.blkw"
49071d4279SBram Moolenaarsyn match z8aPreProc	"\.ascii"
50071d4279SBram Moolenaarsyn match z8aPreProc	"\.asciz"
51071d4279SBram Moolenaarsyn match z8aPreProc	"\.module"
52071d4279SBram Moolenaarsyn match z8aPreProc	"\.title"
53071d4279SBram Moolenaarsyn match z8aPreProc	"\.sbttl"
54071d4279SBram Moolenaarsyn match z8aPreProc	"\.even"
55071d4279SBram Moolenaarsyn match z8aPreProc	"\.odd"
56071d4279SBram Moolenaarsyn match z8aPreProc	"\.area"
57071d4279SBram Moolenaarsyn match z8aPreProc	"\.page"
58071d4279SBram Moolenaarsyn match z8aPreProc	"\.setdp"
59071d4279SBram Moolenaarsyn match z8aPreProc	"\.radix"
60071d4279SBram Moolenaarsyn match z8aInclude	"\.include"
61071d4279SBram Moolenaarsyn match z8aPreCondit	"\.if"
62071d4279SBram Moolenaarsyn match z8aPreCondit	"\.else"
63071d4279SBram Moolenaarsyn match z8aPreCondit	"\.endif"
64071d4279SBram Moolenaar
65071d4279SBram Moolenaar" Common strings
66071d4279SBram Moolenaarsyn match z8aString		"\".*\""
67071d4279SBram Moolenaarsyn match z8aString		"\'.*\'"
68071d4279SBram Moolenaar
69071d4279SBram Moolenaar" Numbers
70071d4279SBram Moolenaarsyn match z8aNumber		"[0-9]\+"
71071d4279SBram Moolenaarsyn match z8aNumber		"0[xXhH][0-9a-fA-F]\+"
72071d4279SBram Moolenaarsyn match z8aNumber		"0[bB][0-1]*"
73071d4279SBram Moolenaarsyn match z8aNumber		"0[oO\@qQ][0-7]\+"
74071d4279SBram Moolenaarsyn match z8aNumber		"0[dD][0-9]\+"
75071d4279SBram Moolenaar
76071d4279SBram Moolenaar" Character constant
77071d4279SBram Moolenaarsyn match z8aString		"\#\'."hs=s+1
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" Comments
80071d4279SBram Moolenaarsyn match z8aComment		";.*"
81071d4279SBram Moolenaar
82071d4279SBram Moolenaarsyn case match
83071d4279SBram Moolenaar
84071d4279SBram Moolenaar" Define the default highlighting.
8589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
86071d4279SBram Moolenaar
87*f37506f6SBram Moolenaarhi def link z8aSection		Special
88*f37506f6SBram Moolenaarhi def link z8aLabel		Label
89*f37506f6SBram Moolenaarhi def link z8aSpecialLabel	Label
90*f37506f6SBram Moolenaarhi def link z8aComment		Comment
91*f37506f6SBram Moolenaarhi def link z8aInstruction	Statement
92*f37506f6SBram Moolenaarhi def link z8aSpecInst		Statement
93*f37506f6SBram Moolenaarhi def link z8aInclude		Include
94*f37506f6SBram Moolenaarhi def link z8aPreCondit		PreCondit
95*f37506f6SBram Moolenaarhi def link z8aPreProc		PreProc
96*f37506f6SBram Moolenaarhi def link z8aNumber		Number
97*f37506f6SBram Moolenaarhi def link z8aString		String
98071d4279SBram Moolenaar
99071d4279SBram Moolenaar
100071d4279SBram Moolenaarlet b:current_syntax = "z8a"
101071d4279SBram Moolenaar" vim: ts=8
102