a65.vim (6393B)
1 " Vim syntax file 2 " Language: xa 6502 cross assembler 3 " Maintainer: Clemens Kirchgatterer <clemens@1541.org> 4 " Last Change: 2016 Aug 31 5 6 " quit when a syntax file was already loaded 7 if exists("b:current_syntax") 8 finish 9 endif 10 11 syn case ignore 12 13 " Opcodes 14 syn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address 15 syn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address 16 syn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address 17 syn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address 18 syn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address 19 syn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address 20 syn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address 21 syn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address 22 syn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address 23 syn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address 24 syn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address 25 syn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address 26 syn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address 27 syn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address 28 syn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address 29 syn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address 30 syn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address 31 syn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address 32 syn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address 33 syn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address 34 syn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address 35 syn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address 36 syn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address 37 syn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address 38 syn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address 39 syn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address 40 syn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address 41 syn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address 42 syn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address 43 syn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address 44 syn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address 45 syn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address 46 syn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address 47 syn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address 48 syn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address 49 syn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address 50 syn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address 51 syn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address 52 syn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address 53 syn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address 54 syn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address 55 syn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address 56 syn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address 57 syn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address 58 syn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address 59 syn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address 60 syn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address 61 syn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address 62 syn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address 63 syn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address 64 syn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address 65 syn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address 66 syn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address 67 syn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address 68 syn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address 69 syn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address 70 syn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address 71 syn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address 72 syn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address 73 syn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address 74 syn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address 75 syn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address 76 syn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address 77 syn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address 78 syn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address 79 syn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address 80 syn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address 81 82 " Addresses 83 syn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)" 84 syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)" 85 syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)" 86 syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)" 87 syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)" 88 syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)" 89 syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)" 90 syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)" 91 syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)" 92 syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)" 93 94 " Numbers 95 syn match a65Number "#\=[0-9]*\>" 96 syn match a65Number "#\=$[0-9A-F]*\>" 97 syn match a65Number "#\=&[0-7]*\>" 98 syn match a65Number "#\=%[01]*\>" 99 100 syn case match 101 102 " Types 103 syn match a65Type "\(^\|\s\)\.byt\($\|\s\)" 104 syn match a65Type "\(^\|\s\)\.word\($\|\s\)" 105 syn match a65Type "\(^\|\s\)\.asc\($\|\s\)" 106 syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)" 107 syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)" 108 syn match a65Type "\(^\|\s\)\.text\($\|\s\)" 109 syn match a65Type "\(^\|\s\)\.data\($\|\s\)" 110 syn match a65Type "\(^\|\s\)\.bss\($\|\s\)" 111 syn match a65Type "\(^\|\s\)\.zero\($\|\s\)" 112 syn match a65Type "\(^\|\s\)\.align\($\|\s\)" 113 114 " Blocks 115 syn match a65Section "\(^\|\s\)\.(\($\|\s\)" 116 syn match a65Section "\(^\|\s\)\.)\($\|\s\)" 117 118 " Strings 119 syn match a65String "\".*\"" 120 121 " Program Counter 122 syn region a65PC start="\*=" end="\>" keepend 123 124 " HI/LO Byte 125 syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend 126 127 " Comments 128 syn keyword a65Todo TODO XXX FIXME BUG contained 129 syn match a65Comment ";.*"hs=s+1 contains=a65Todo 130 syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment 131 132 " Preprocessor 133 syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue 134 syn match a65End excludenl /end$/ contained 135 syn match a65Continue "\\$" contained 136 137 " Define the default highlighting. 138 " Only when an item doesn't have highlighting yet 139 140 hi def link a65Section Special 141 hi def link a65Address Special 142 hi def link a65Comment Comment 143 hi def link a65PreProc PreProc 144 hi def link a65Number Number 145 hi def link a65String String 146 hi def link a65Type Statement 147 hi def link a65Opcode Type 148 hi def link a65PC Error 149 hi def link a65Todo Todo 150 hi def link a65HiLo Number 151 152 153 let b:current_syntax = "a65"