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