" Vim syntax file " Language: Assembler, KickAssembler " Maintainer: Roman 'gryf' Dobosz " Last Change: 2012-07-22 " Version: 1.2 " " Changelog: " 1.2 Updated to KickAssembler 3.25 changes " " 1.1 Since in assembly languages 'everything is a label' there pretty hard " to distinguish labels from variables and structures, so I decided to " remove highlighting labels at all. Instead numbers are highlighted, so that " labels and defined variables are easily spotted in the code. " " 1.0 Initial release " " To install this file place it in ~/.vim/syntax (*nix/Mac) or in " $VIMRUNTIME/syntax on Windows and issue command: " " :set filetype=kickass " " You can also add to your vimrc file autocommand: " " autocmd BufRead *.asm set filetype=kickass " " From now on, all files with extension 'asm' will have brand new kickass " syntax. " " Enjoy. syn clear " Macro names. syn case ignore syn match kickAssMacroCall ":[a-z_][a-z0-9_]*" syn case match " 6502 mnemonics syn keyword kickAssMnemonic brk clc cld cli clv dex dey inx iny nop pha php syn keyword kickAssMnemonic pla plp sec sed sei tax tay tsx txa txs tya syn keyword kickAssJump rti rts syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssMnemonic "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssJump "\" syn match kickAssJump "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" " DTV mnemonics syn match kickAssJump "\" syn match kickAssMnemonic "\" syn match kickAssMnemonic "\" " indexes syn match kickAssIndex ",\s*[xy]" " Strings/chars syn region kickAssString start=+"+ skip=+\\"+ end=+"+ contains=@Spell oneline syn region kickAssString start=+'+ skip=+\\'+ end=+'+ contains=@Spell oneline " Comments syn keyword kickAssTodo TODO FIXME XXX TBD NOTE WARNING BUG contained syn match kickAssLineComment "\/\/.*" contains=@Spell,kickAssTodo syn region kickAssComment start="/\*" end="\*/" contains=@Spell,kickAssTodo " Numbers syn match kickAssDecNumber "\<\d\+\>" syn match kickAssHexNumber "\$\x\+\>" syn match kickAssBinNumber "%[01]\+\>" syn match kickAssImmediate "#\$\x\+\>" syn match kickAssImmediate "#\d\+\>" syn match kickAssImmediate "#<\$\x\+\>" syn match kickAssImmediate "#<\d\+\>" syn match kickAssImmediate "#>\$\x\+\>" syn match kickAssImmediate "#>\d\+\>" " memory and data directives syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ " modifiers syn match kickAssDirective /\.\/ syn match kickAssDirective /\.\/ " import directive syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" nextgroup=kickAssImportType skipwhite syn keyword kickAssImportType source binary c64 text contained " console output syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" " elements of script language syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn keyword kickAssDirective else syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" " special macros syn match kickAssMacroCall ":\" " PSID files syn match kickAssFunction "\("he=e-1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 " string methods and functions syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 " Math library syn keyword kickAssConstant PI E syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 " List already defined: size syn match kickAssFunction /\(/he=e-1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 " READY. " Hash - already defined names: get, remove syn match kickAssFunction /\(/he=e-1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 " Vector/Matrix - already defined: get, set syn match kickAssFunction "\("he=e-1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\<\X\>("he=e-1,hs=s+1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 " Structures - already defined names: get, set syn match kickAssDirective "\.\" syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 " pseudocommand syn match kickAssDirective "\.\" syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn match kickAssFunction "\("he=e-1 syn keyword kickAssConstant AT_ABSOLUTE AT_ABSOLUTEX AT_ABSOLUTEY AT_IMMEDIATE syn keyword kickAssConstant AT_INDIRECT AT_IZEROPAGEX AT_IZEROPAGEY AT_NONE " Opcode constants syn match kickAssFunction "\("he=e-1 syn keyword kickAssConstant RTS syn match kickAssConstant "\<[A-Z]\{3}2\?_\(IMM\|I\?ZP[XY]\?\|ABS[XY]\?\|IND\|REL\)\>" " Constants syn keyword kickAssColor BLACK WHITE RED CYAN PURPLE GREEN BLUE YELLOW ORANGE syn keyword kickAssColor BROWN LIGHT_RED DARK_GRAY GRAY LIGHT_GREEN LIGHT_BLUE syn keyword kickAssColor LIGHT_GRAY DARK_GREY GREY LIGHT_GREY syn keyword kickAssConstant C64FILE syn keyword kickAssConstant BD_C64FILE BF_BITMAP_SINGLECOLOR BF_KOALA BF_FLI " Binary import syn match kickAssFunction "\("he=e-1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssFunction "\("he=e-1 " Graphics files syn match kickAssFunction "\("he=e-1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssAttr "\.\"hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 " User defined files syn match kickAssFunction "\("he=e-1 syn match kickAssMethod "\.\("he=e-1,hs=s+1 " Testing syn match kickAssDirective "\.\" syn match kickAssDirective "\.\" if !exists("did_kickasm_syntax_inits") let did_kickasm_syntax_inits = 1 hi def link kickAssDirective Special hi def link kickAssMnemonic Type hi def link kickAssIndex None hi def link kickAssJump Conditional hi def link kickAssString String hi def link kickAssString String hi def link kickAssComment Comment hi def link kickAssLineComment Comment hi def link kickAssMacroCall Function hi def link kickAssTodo Todo hi def link kickAssImportType Operator hi def link kickAssFunction Function hi def link kickAssMethod Function hi def link kickAssAttr Special hi def link kickAssColor Constant hi def link kickAssConstant Constant hi def link kickAssImmediate Number hi def link kickAssHexNumber Number hi def link kickAssBinNumber Number hi def link kickAssDecNumber Number endif let b:current_syntax = "kickasm"