1
0
mirror of https://github.com/gryf/.vim.git synced 2025-12-17 19:40:29 +01:00
Files
.vim/syntax/kickass.vim

349 lines
14 KiB
VimL

" Vim syntax file
" Language: Assembler, KickAssembler
" Maintainer: Roman 'gryf' Dobosz <gryf_esm@o2.pl>
" 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 "\<adc\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<ahx\(\.\(izp\?y\|a\(bs\)\?y\)\)\?\>"
syn match kickAssMnemonic "\<alr\(\.imm\?\)\?\>"
syn match kickAssMnemonic "\<anc\(\.imm\?\)\?\>"
syn match kickAssMnemonic "\<anc2\(\.imm\?\)\?\>"
syn match kickAssMnemonic "\<and\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<arr\(\.imm\?\)\?\>"
syn match kickAssMnemonic "\<asl\(\.\(zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<axs\(\.imm\?\)\?\>"
syn match kickAssJump "\<bcc\(\.r\(el\)\?\)\?\>"
syn match kickAssJump "\<bcs\(\.r\(el\)\?\)\?\>"
syn match kickAssJump "\<beq\(\.r\(el\)\?\)\?\>"
syn match kickAssMnemonic "\<bit\(\.\(zp\?\|a\(bs\)\?\)\)\?\>"
syn match kickAssJump "\<bmi\(\.r\(el\)\?\)\?\>"
syn match kickAssJump "\<bne\(\.r\(el\)\?\)\?\>"
syn match kickAssJump "\<bpl\(\.r\(el\)\?\)\?\>"
syn match kickAssJump "\<bvc\(\.r\(el\)\?\)\?\>"
syn match kickAssJump "\<bvs\(\.r\(el\)\?\)\?\>"
syn match kickAssMnemonic "\<cmp\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<cpx\(\.\(imm\?\|zp\?\|a\(bs\)\?\)\)\?\>"
syn match kickAssMnemonic "\<cpy\(\.\(imm\?\|zp\?\|a\(bs\)\?\)\)\?\>"
syn match kickAssMnemonic "\<dcp\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<dec\(\.\(zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<eor\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<inc\(\.\(zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<isc\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssJump "\<jmp\(\.\(a\(bs\)\?\|i\(nd\)\?\)\)\?\>"
syn match kickAssJump "\<jsr\(\.a\(bs\)\?\)\?\>"
syn match kickAssMnemonic "\<las\(\.a\(bs\)\?y\)\?\>"
syn match kickAssMnemonic "\<lax\(\.\(imm\?\|zp\?y\?\|izp\?[xy]\|a\(bs\)\?y\?\)\)\?\>"
syn match kickAssMnemonic "\<lda\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<ldx\(\.\(imm\?\|zp\?y\?\|a\(bs\)\?y\?\)\)\?\>"
syn match kickAssMnemonic "\<ldy\(\.\(imm\?\|zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<lsr\(\.\(zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<ora\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<rla\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<rol\(\.\(zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<ror\(\.\(zp\?x\?\|a\(bs\)\?x\?\)\)\?\>"
syn match kickAssMnemonic "\<rra\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<sax\(\.\(zp\?[xy]\?\|a\(bs\)\?\)\)\?\>"
syn match kickAssMnemonic "\<sbc\(\.\(imm\?\|zp\?x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<sbc2\(\.imm\?\)\?\>"
syn match kickAssMnemonic "\<shx\(\.a\(bs\)\?y\)\?\>"
syn match kickAssMnemonic "\<shy\(\.a\(bs\)\?x\)\?\>"
syn match kickAssMnemonic "\<slo\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<sre\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<sta\(\.\(zp\?\x\?\|izp\?[xy]\|a\(bs\)\?[xy]\?\)\)\?\>"
syn match kickAssMnemonic "\<stx\(\.\(zp\?y\?\|a\(bs\)\?\)\)\?\>"
syn match kickAssMnemonic "\<sty\(\.\(zp\?x\?\|a\(bs\)\?\)\)\?\>"
syn match kickAssMnemonic "\<tas\(\.a\(bs\)\?y\)\?\>"
syn match kickAssMnemonic "\<xaa\(\.imm\?\)\?\>"
" DTV mnemonics
syn match kickAssJump "\<bra\(\.r\(el\)\?\)\?\>"
syn match kickAssMnemonic "\<sac\(\.imm\?\)\?\>"
syn match kickAssMnemonic "\<sir\(\.imm\?\)\?\>"
" 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 /\.\<pc\>/
syn match kickAssDirective /\.\<align\>/
syn match kickAssDirective /\.\<byte\>/
syn match kickAssDirective /\.\<word\>/
syn match kickAssDirective /\.\<dword\>/
syn match kickAssDirective /\.\<text\>/
syn match kickAssDirective /\.\<fill\>/
syn match kickAssDirective /\.\<pseudopc\>/
" modifiers
syn match kickAssDirective /\.\<modify\>/
syn match kickAssDirective /\.\<filemodify\>/
" import directive
syn match kickAssDirective "\.\<importonce\>"
syn match kickAssDirective "\.\<import\>" nextgroup=kickAssImportType skipwhite
syn keyword kickAssImportType source binary c64 text contained
" console output
syn match kickAssDirective "\.\<print\>"
syn match kickAssDirective "\.\<printnow\>"
syn match kickAssDirective "\.\<error\>"
" elements of script language
syn match kickAssDirective "\.\<eval\>"
syn match kickAssDirective "\.\<var\>"
syn match kickAssDirective "\.\<const\>"
syn match kickAssDirective "\.\<enum\>"
syn match kickAssDirective "\.\<label\>"
syn match kickAssDirective "\.\<lock\>"
syn match kickAssDirective "\.\<define\>"
syn match kickAssDirective "\.\<if\>"
syn keyword kickAssDirective else
syn match kickAssDirective "\.\<for\>"
syn match kickAssDirective "\.\<macro\>"
syn match kickAssDirective "\.\<function\>"
syn match kickAssDirective "\.\<return\>"
syn match kickAssDirective "\.\<namespace\>"
syn match kickAssDirective "\.\<filenamespace\>"
" special macros
syn match kickAssMacroCall ":\<BasicUpstart2\?\>"
" PSID files
syn match kickAssFunction "\<LoadSid\>("he=e-1
syn match kickAssAttr "\.\<header\>"hs=s+1
syn match kickAssAttr "\.\<version\>"hs=s+1
syn match kickAssAttr "\.\<location\>"hs=s+1
syn match kickAssAttr "\.\<init\>"hs=s+1
syn match kickAssAttr "\.\<play\>"hs=s+1
syn match kickAssAttr "\.\<size\>"hs=s+1
syn match kickAssAttr "\.\<songs\>"hs=s+1
syn match kickAssAttr "\.\<startSong\>"hs=s+1
syn match kickAssAttr "\.\<name\>"hs=s+1
syn match kickAssAttr "\.\<author\>"hs=s+1
syn match kickAssAttr "\.\<copyright\>"hs=s+1
syn match kickAssAttr "\.\<speed\>"hs=s+1
syn match kickAssAttr "\.\<flags\>"hs=s+1
syn match kickAssAttr "\.\<startpage\>"hs=s+1
syn match kickAssAttr "\.\<pagelength\>"hs=s+1
syn match kickAssMethod "\.\<getData\>("he=e-1,hs=s+1
" string methods and functions
syn match kickAssMethod "\.\<string\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<size\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<charAt\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<substring\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<asBoolean\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<asNumber\>("he=e-1,hs=s+1
syn match kickAssFunction "\<toIntString\>("he=e-1
syn match kickAssFunction "\<toBinaryString\>("he=e-1
syn match kickAssFunction "\<toOctalString\>("he=e-1
syn match kickAssFunction "\<toHexString\>("he=e-1
" Math library
syn keyword kickAssConstant PI E
syn match kickAssFunction "\<abs\>("he=e-1
syn match kickAssFunction "\<acos\>("he=e-1
syn match kickAssFunction "\<asin\>("he=e-1
syn match kickAssFunction "\<atan\>("he=e-1
syn match kickAssFunction "\<atan2\>("he=e-1
syn match kickAssFunction "\<cbrt\>("he=e-1
syn match kickAssFunction "\<ceil\>("he=e-1
syn match kickAssFunction "\<cos\>("he=e-1
syn match kickAssFunction "\<cosh\>("he=e-1
syn match kickAssFunction "\<exp\>("he=e-1
syn match kickAssFunction "\<expml\>("he=e-1
syn match kickAssFunction "\<floor\>("he=e-1
syn match kickAssFunction "\<hypot\>("he=e-1
syn match kickAssFunction "\<IEEEremainder\>("he=e-1
syn match kickAssFunction "\<log\>("he=e-1
syn match kickAssFunction "\<log10\>("he=e-1
syn match kickAssFunction "\<log1p\>("he=e-1
syn match kickAssFunction "\<max\>("he=e-1
syn match kickAssFunction "\<min\>("he=e-1
syn match kickAssFunction "\<mod\>("he=e-1
syn match kickAssFunction "\<pow\>("he=e-1
syn match kickAssFunction "\<random\>("he=e-1
syn match kickAssFunction "\<round\>("he=e-1
syn match kickAssFunction "\<signum\>("he=e-1
syn match kickAssFunction "\<sin\>("he=e-1
syn match kickAssFunction "\<sinh\>("he=e-1
syn match kickAssFunction "\<sqrt\>("he=e-1
syn match kickAssFunction "\<tan\>("he=e-1
syn match kickAssFunction "\<tanh\>("he=e-1
syn match kickAssFunction "\<toDegrees\>("he=e-1
syn match kickAssFunction "\<toRadians\>("he=e-1
" List already defined: size
syn match kickAssFunction /\<List\>(/he=e-1
syn match kickAssMethod "\.\<get\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<set\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<add\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<remove\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<shuffle\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<reverse\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<sort\>("he=e-1,hs=s+1
" READY.
" Hash - already defined names: get, remove
syn match kickAssFunction /\<Hashtable\>(/he=e-1
syn match kickAssMethod "\.\<put\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<keys\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<containsKey\>("he=e-1,hs=s+1
" Vector/Matrix - already defined: get, set
syn match kickAssFunction "\<Vector\>("he=e-1
syn match kickAssMethod "\.\<getX\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getY\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getZ\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<\X\>("he=e-1,hs=s+1
syn match kickAssFunction "\<Matrix\>("he=e-1
syn match kickAssFunction "\<RotationMatrix\>("he=e-1
syn match kickAssFunction "\<ScaleMatrix\>("he=e-1
syn match kickAssFunction "\<PerspectiveMatrix\>("he=e-1
syn match kickAssFunction "\<MoveMatrix\>("he=e-1
" Structures - already defined names: get, set
syn match kickAssDirective "\.\<struct\>"
syn match kickAssMethod "\.\<getStructName\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getNoOfFields\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getFieldNames\>("he=e-1,hs=s+1
" pseudocommand
syn match kickAssDirective "\.\<pseudocommand\>"
syn match kickAssFunction "\<CmdArgument\>("he=e-1
syn match kickAssFunction "\<getType\>("he=e-1
syn match kickAssFunction "\<getValue\>("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 "\<asmCommandSize\>("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 "\<LoadBinary\>("he=e-1
syn match kickAssMethod "\.\<getSize\>("he=e-1,hs=s+1
syn match kickAssFunction "\<LoadBinary\>("he=e-1
" Graphics files
syn match kickAssFunction "\<LoadPicture\>("he=e-1
syn match kickAssAttr "\.\<width\>"hs=s+1
syn match kickAssAttr "\.\<height\>"hs=s+1
syn match kickAssMethod "\.\<getPixel\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getSinglecolorByte\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getMulticolorByte\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getScreenRamSize\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getScreenRam\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getColorRamSize\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getColorRam\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getBitmapSize\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getBitmap\>("he=e-1,hs=s+1
syn match kickAssMethod "\.\<getBackgroundColor\>("he=e-1,hs=s+1
" User defined files
syn match kickAssFunction "\<createFile\>("he=e-1
syn match kickAssMethod "\.\<writeln\>("he=e-1,hs=s+1
" Testing
syn match kickAssDirective "\.\<kickAssert\>"
syn match kickAssDirective "\.\<kickAsserterror\>"
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"