a65.vim 6.2 KB

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