1" Vim syntax file
2" Language:     PIC16F84 Assembler (Microchip's microcontroller)
3" Maintainer:   Aleksandar Veselinovic <aleksa@cs.cmu.com>
4" Last Change:  2003 May 11
5" URL:		http://galeb.etf.bg.ac.yu/~alexa/vim/syntax/pic.vim
6" Revision:     1.01
7
8" For version 5.x: Clear all syntax items
9" For version 6.x: Quit when a syntax file was already loaded
10if version < 600
11  syntax clear
12elseif exists("b:current_syntax")
13  finish
14endif
15
16syn case match
17syn keyword picTodo NOTE TODO XXX contained
18
19syn case ignore
20
21syn match picIdentifier "[a-z_$][a-z0-9_$]*"
22syn match picLabel      "^[A-Z_$][A-Z0-9_$]*"
23syn match picLabel      "^[A-Z_$][A-Z0-9_$]*:"me=e-1
24
25syn match picASCII      "A\='.'"
26syn match picBinary     "B'[0-1]\+'"
27syn match picDecimal    "D'\d\+'"
28syn match picDecimal    "\d\+"
29syn match picHexadecimal "0x\x\+"
30syn match picHexadecimal "H'\x\+'"
31syn match picHexadecimal "[0-9]\x*h"
32syn match picOctal      "O'[0-7]\o*'"
33
34
35syn match picComment    ";.*" contains=picTodo
36
37syn region picString    start=+"+ end=+"+
38
39syn keyword picRegister		INDF TMR0 PCL STATUS FSR PORTA PORTB
40syn keyword picRegister		EEDATA EEADR PCLATH INTCON INDF OPTION_REG PCL
41syn keyword picRegister		FSR TRISA TRISB EECON1 EECON2 INTCON OPTION
42
43
44" Register --- bits
45
46" STATUS
47syn keyword picRegisterPart     IRP RP1 RP0 TO PD Z DC C
48
49" PORTA
50syn keyword picRegisterPart     T0CKI
51syn match   picRegisterPart     "RA[0-4]"
52
53" PORTB
54syn keyword picRegisterPart     INT
55syn match   picRegisterPart     "RB[0-7]"
56
57" INTCON
58syn keyword picRegisterPart     GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
59
60" OPTION
61syn keyword picRegisterPart     RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
62
63" EECON2
64syn keyword picRegisterPart     EEIF WRERR WREN WR RD
65
66" INTCON
67syn keyword picRegisterPart     GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
68
69
70" OpCodes...
71syn keyword picOpcode  ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ
72syn keyword picOpcode  IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF
73syn keyword picOpcode  BCF BSF BTFSC BTFSS
74syn keyword picOpcode  ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE
75syn keyword picOpcode  RETLW RETURN SLEEP SUBLW XORLW
76syn keyword picOpcode  GOTO
77
78
79" Directives
80syn keyword picDirective __BADRAM BANKISEL BANKSEL CBLOCK CODE __CONFIG
81syn keyword picDirective CONSTANT DATA DB DE DT DW ELSE END ENDC
82syn keyword picDirective ENDIF ENDM ENDW EQU ERROR ERRORLEVEL EXITM EXPAND
83syn keyword picDirective EXTERN FILL GLOBAL IDATA __IDLOCS IF IFDEF IFNDEF
84syn keyword picDirective INCLUDE LIST LOCAL MACRO __MAXRAM MESSG NOEXPAND
85syn keyword picDirective NOLIST ORG PAGE PAGESEL PROCESSOR RADIX RES SET
86syn keyword picDirective SPACE SUBTITLE TITLE UDATA UDATA_OVR UDATA_SHR
87syn keyword picDirective VARIABLE WHILE INCLUDE
88syn match picDirective   "#\=UNDEFINE"
89syn match picDirective   "#\=INCLUDE"
90syn match picDirective   "#\=DEFINE"
91
92
93" Define the default highlighting.
94" For version 5.7 and earlier: only when not done already
95" For version 5.8 and later: only when an item doesn't have highlighting yet
96if version >= 508 || !exists("did_pic16f84_syntax_inits")
97  if version < 508
98    let did_pic16f84_syntax_inits = 1
99    command -nargs=+ HiLink hi link <args>
100  else
101    command -nargs=+ HiLink hi def link <args>
102  endif
103
104  HiLink picTodo		Todo
105  HiLink picComment		Comment
106  HiLink picDirective		Statement
107  HiLink picLabel		Label
108  HiLink picString		String
109
110 "HiLink picOpcode		Keyword
111 "HiLink picRegister		Structure
112 "HiLink picRegisterPart	Special
113
114  HiLink picASCII		String
115  HiLink picBinary		Number
116  HiLink picDecimal		Number
117  HiLink picHexadecimal		Number
118  HiLink picOctal		Number
119
120  HiLink picIdentifier		Identifier
121
122  delcommand HiLink
123endif
124
125let b:current_syntax = "pic"
126
127" vim: ts=8
128