<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language _name="asm" version="1.0" _section="Sources" mimetypes="text/x-asm">

	<line-comment _name = "Comment" style= "Comment">
		<start-regex>;</start-regex>
	</line-comment>

	<string _name = "String" style = "String" end-at-line-end = "TRUE">
		<start-regex>&quot;</start-regex>
		<end-regex>&quot;</end-regex>
	</string>

	<keyword-list _name = "Instructions" style = "Keyword" case-sensitive="FALSE">
		<keyword>addwf</keyword>
		<keyword>andwf</keyword>
                <keyword>clrf</keyword>
                <keyword>clfw</keyword>
                <keyword>comf</keyword>
                <keyword>decf</keyword>
                <keyword>decfsz</keyword>
                <keyword>incf</keyword>
                <keyword>incfsz</keyword>
                <keyword>iorwf</keyword>
                <keyword>movf</keyword>
                <keyword>movwf</keyword>
                <keyword>nop</keyword>
                <keyword>rlf</keyword>
                <keyword>rrf</keyword>
                <keyword>subwf</keyword>
                <keyword>swapf</keyword>
                <keyword>xorwf</keyword>
                <keyword>bcf</keyword>
                <keyword>bsf</keyword>
                <keyword>btfsc</keyword>
                <keyword>btfss</keyword>
                <keyword>addlw</keyword>
                <keyword>andlw</keyword>
                <keyword>call</keyword>
                <keyword>clrwdt</keyword>
                <keyword>goto</keyword>
                <keyword>iorlw</keyword>
                <keyword>movlw</keyword>
                <keyword>retfie</keyword>
                <keyword>retlw</keyword>
                <keyword>return</keyword>
                <keyword>sleep</keyword>
                <keyword>sublw</keyword>
                <keyword>zorlw</keyword>
	</keyword-list>

	<string _name = "Bit pattern" style = "String" end-at-line-wnd = "TRUE">
		<start-regex>&apos;</start-regex>
		<end-regex>&apos;</end-regex>
	</string>

	<pattern-item _name = "Decimal" style = "Decimal">
                <regex>\b([1-9][0-9]*|0)([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b
</regex>
        </pattern-item>

        <pattern-item _name = "Octal Number" style = "Base-N Integer">
                <regex>\b0[0-7]+([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</regex>
        </pattern-item>

        <pattern-item _name = "Hex Number" style = "Base-N Integer">
                <regex>\b0[xX][0-9a-fA-F]+([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?
\b</regex>
        </pattern-item>

	<keyword-list _name = "Preprocessor Definitions" style = "Preprocessor" case-sensitive="TRUE"
		match-empty-string-at-beginning = "FALSE"
		match-empty-string-at-end = "TRUE"
		beginning-regex = "^[ \t]*#[ \t]*">
		<keyword>define</keyword>
		<keyword>undefine</keyword>
		<keyword>include</keyword>
	</keyword-list>

	<keyword-list _name = "Directives" style = "Data Type" case-sensitive="FALSE"> 
		<keyword>__BADRAM</keyword>
		<keyword>__CONFIG</keyword>
		<keyword>__IDLOCS</keyword>
		<keyword>__MAXRAM</keyword>
		<keyword>BANKISEL</keyword>
		<keyword>BANKSEL</keyword>
		<keyword>CBLOCK</keyword>
		<keyword>CODE</keyword>
		<keyword>CONSTANT</keyword>
		<keyword>DA</keyword>
		<keyword>DATA</keyword>
		<keyword>DB</keyword>
		<keyword>DE</keyword>
		<keyword>DT</keyword>
                <keyword>DW</keyword>
                <keyword>ELSE</keyword>
                <keyword>END</keyword>
                <keyword>ENDC</keyword>
                <keyword>ENDIF</keyword>
                <keyword>ENDM</keyword>
                <keyword>ENDW</keyword>
                <keyword>EQU</keyword>
                <keyword>ERROR</keyword>
                <keyword>ERRORLEVEL</keyword>
                <keyword>EXTERN</keyword>
                <keyword>EXITM</keyword>
                <keyword>EXPAND</keyword>
                <keyword>FILL</keyword>
                <keyword>GLOBAL</keyword>
                <keyword>IDATA</keyword>
                <keyword>IF</keyword>
                <keyword>IFDEF</keyword>
                <keyword>IFNDEF</keyword>
                <keyword>LIST</keyword>
                <keyword>LOCAL</keyword>
                <keyword>MACRO</keyword>
                <keyword>MESSG</keyword>
                <keyword>NOEXPAND</keyword>
                <keyword>NOLIST</keyword>
                <keyword>ORG</keyword>
                <keyword>PAGE</keyword>
                <keyword>PAGESEL</keyword>
                <keyword>PROCESSOR</keyword>
                <keyword>RADIX</keyword>
                <keyword>RES</keyword>
                <keyword>SET</keyword>
                <keyword>SPACE</keyword>
                <keyword>SUBTITLE</keyword>
                <keyword>TITLE</keyword>
                <keyword>UDATA</keyword>
                <keyword>UDATA_ACS</keyword>
                <keyword>UDATA_OVR</keyword>
                <keyword>UDATA_SHR</keyword>
                <keyword>VARIABLE</keyword>
                <keyword>WHILE</keyword>
	</keyword-list>	

	<keyword-list _name = "Registers" style = "Others" case-sensitive="FALSE">
		<keyword>W</keyword>
		<keyword>F</keyword>
		<keyword>INDF</keyword>
		<keyword>TMR0</keyword>
                <keyword>PCL</keyword>
                <keyword>STATUS</keyword>
                <keyword>FSR</keyword>
                <keyword>PORTA</keyword>
                <keyword>PORTB</keyword>
                <keyword>PORTC</keyword>
                <keyword>PORTD</keyword>
                <keyword>PORTE</keyword>
                <keyword>PCLATH</keyword>
                <keyword>INTCON</keyword>
                <keyword>PIR1</keyword>
                <keyword>PIR2</keyword>
                <keyword>TMR1L</keyword>
                <keyword>TMR1H</keyword>
                <keyword>T1CON</keyword>
                <keyword>TMR2</keyword>
                <keyword>T2CON</keyword>
                <keyword>SSPBUF</keyword>
                <keyword>SSPCON</keyword>
                <keyword>CCPR1L</keyword>
                <keyword>CCPR1H</keyword>
                <keyword>CCP1CON</keyword>
                <keyword>RCSTA</keyword>
                <keyword>TXREG</keyword>
                <keyword>RCREG</keyword>
                <keyword>CCPR2L</keyword>
                <keyword>CCPR2H</keyword>
                <keyword>CCP2CON</keyword>
                <keyword>ADRESH</keyword>
                <keyword>ADCON0</keyword>
                <keyword>OPTION_REG</keyword>
                <keyword>TRISA</keyword>
                <keyword>TRISB</keyword>
                <keyword>TRISC</keyword>
                <keyword>TRISD</keyword>
                <keyword>TRISE</keyword>
                <keyword>PIE1</keyword>
                <keyword>PIE2</keyword>
                <keyword>PCON</keyword>
                <keyword>SSPCON2</keyword>
                <keyword>PR2</keyword>
                <keyword>SSPADD</keyword>
                <keyword>SSPSTAT</keyword>
                <keyword>TXSTA</keyword>
                <keyword>SPBRG</keyword>
                <keyword>ADRESL</keyword>
                <keyword>ADCON1</keyword>
                <keyword>EEDATA</keyword>
                <keyword>EEADR</keyword>
                <keyword>EEDATH</keyword>
                <keyword>EEADRH</keyword>
                <keyword>EECON1</keyword>
                <keyword>EECON2</keyword>
	</keyword-list>

	<keyword-list _name = "Register Bits" style = "Others" case-sensitve="FALSE">
		<keyword>IRP</keyword>
                <keyword>RP1</keyword>
                <keyword>RP0</keyword>
                <keyword>NOT_TO</keyword>
                <keyword>NOT_PD</keyword>
                <keyword>Z</keyword>
                <keyword>DC</keyword>
                <keyword>C</keyword>
                <keyword>GIE</keyword>
                <keyword>PEIE</keyword>
                <keyword>T0IE</keyword>
                <keyword>INTE</keyword>
                <keyword>RBIE</keyword>
                <keyword>T0IF</keyword>
                <keyword>INTF</keyword>
                <keyword>RBIF</keyword>
                <keyword>PSPIF</keyword>
                <keyword>ADIF</keyword>
                <keyword>RCIF</keyword>
                <keyword>TXIF</keyword>
                <keyword>SSPIF</keyword>
                <keyword>CCP1IF</keyword>
                <keyword>TMR2IF</keyword>
                <keyword>TMR1IF</keyword>
                <keyword>EEIF</keyword>
                <keyword>BCLIF</keyword>
                <keyword>CCP2IF</keyword>
                <keyword>T1CKPS1</keyword>
                <keyword>T1CKPS0</keyword>
                <keyword>T10SCEN</keyword>
                <keyword>NOT_T1SYNC</keyword>
                <keyword>T1SYNC</keyword>
                <keyword>TMR1CS</keyword>
                <keyword>TMR1ON</keyword>
                <keyword>TOUTPS3</keyword>
                <keyword>TOUTPS2</keyword>
                <keyword>TOUTPS1</keyword>
                <keyword>TOUTPS0</keyword>
                <keyword>TMR2ON</keyword>
                <keyword>T2CKPS1</keyword>
                <keyword>T2CKPS0</keyword>
                <keyword>WCOL</keyword>
                <keyword>SSPOV</keyword>
                <keyword>SSPEN</keyword>
                <keyword>CKP</keyword>
                <keyword>SSPM3</keyword>
                <keyword>SSPM2</keyword>
                <keyword>SSPM1</keyword>
                <keyword>SSPM0</keyword>
                <keyword>CCP1X</keyword>
                <keyword>CCP1Y</keyword>
                <keyword>CCP1M3</keyword>
                <keyword>CCP1M2</keyword>
                <keyword>CCP1M1</keyword>
                <keyword>CCP1M0</keyword>
                <keyword>SPEN</keyword>
                <keyword>RX9</keyword>
                <keyword>SREN</keyword>
                <keyword>CREN</keyword>
                <keyword>ADDEN</keyword>
                <keyword>FERR</keyword>
                <keyword>OERR</keyword>
                <keyword>RX9D</keyword>
                <keyword>RCD8</keyword>
                <keyword>CCP2X</keyword>
                <keyword>CCP2Y</keyword>
                <keyword>CCP2M3</keyword>
                <keyword>CCP2M2</keyword>
                <keyword>CCP2M1</keyword>
                <keyword>CCP2M0</keyword>
                <keyword>ADCS1</keyword>
                <keyword>ADCS0</keyword>
                <keyword>CHS2</keyword>
                <keyword>CHS1</keyword>
                <keyword>CHS0</keyword>
                <keyword>GO</keyword>
                <keyword>NOT_DONE</keyword>
                <keyword>GO_DONE</keyword>
                <keyword>ADON</keyword>
                <keyword>NOT_RBPU</keyword>
                <keyword>INTEDG</keyword>
                <keyword>T0CS</keyword>
                <keyword>T0SE</keyword>
                <keyword>PSA</keyword>
                <keyword>PS2</keyword>
                <keyword>PS1</keyword>
                <keyword>PS0</keyword>
                <keyword>IBF</keyword>
                <keyword>OBF</keyword>
                <keyword>IBOV</keyword>
                <keyword>PSPMODE</keyword>
                <keyword>TRISE2</keyword>
                <keyword>TRISE1</keyword>
                <keyword>TRISE0</keyword>
                <keyword>PSPIE</keyword>
                <keyword>ADIE</keyword>
                <keyword>RCIE</keyword>
                <keyword>TXIE</keyword>
                <keyword>SSPIE</keyword>
                <keyword>CCP1IE</keyword>
                <keyword>TMR2IE</keyword>
                <keyword>TMR1IE</keyword>
                <keyword>EEIE</keyword>
                <keyword>BCLIE</keyword>
                <keyword>CCP2IE</keyword>
                <keyword>NOT_POR</keyword>
                <keyword>NOT_BO</keyword>
                <keyword>NOT_BOR</keyword>
                <keyword>GCEN</keyword>
                <keyword>ACKSTAT</keyword>
                <keyword>ACKDT</keyword>
                <keyword>ACKEN</keyword>
                <keyword>RCEN</keyword>
                <keyword>PEN</keyword>
                <keyword>RSEN</keyword>
                <keyword>SEN</keyword>
                <keyword>SMP</keyword>
                <keyword>CKE</keyword>
                <keyword>D</keyword>
                <keyword>I2C_DATA</keyword>
                <keyword>NOT_A</keyword>
                <keyword>NOT_ADDRESS</keyword>
                <keyword>D_A</keyword>
                <keyword>DATA_ADDRESS</keyword>
                <keyword>P</keyword>
                <keyword>I2C_STOP</keyword>
                <keyword>S</keyword>
                <keyword>I2C_START</keyword>
                <keyword>R</keyword>
                <keyword>I2C_READ</keyword>
                <keyword>NOT_W</keyword>
                <keyword>NOT_WRITE</keyword>
                <keyword>R_W</keyword>
                <keyword>READ_WRITE</keyword>
                <keyword>UA</keyword>
                <keyword>BF</keyword>
                <keyword>CSRC</keyword>
                <keyword>TX9</keyword>
                <keyword>TXEN</keyword>
                <keyword>SYNC</keyword>
                <keyword>BRGH</keyword>
                <keyword>TRMT</keyword>
                <keyword>TX9D</keyword>
                <keyword>ADFM</keyword>
                <keyword>PCFG3</keyword>
                <keyword>PCFG2</keyword>
                <keyword>PCFG1</keyword>
                <keyword>PCFG0</keyword>
                <keyword>EEPGD</keyword>
                <keyword>WRERR</keyword>
                <keyword>WREN</keyword>
                <keyword>WR</keyword>
                <keyword>RD</keyword>
	</keyword-list>

	<keyword-list _name = "RAM Definition" style = "Preprocessor" case-sensitive="FALSE">
		<keyword>__MASRAM</keyword>
                <keyword>__BADRAM</keyword>
	</keyword-list>

	<keyword-list _name = "Configuration Bits" style = "Preprocessor" case-sensitive="FALSE">
		<keyword>_CP_ALL</keyword>
                <keyword>_CP_HALF</keyword>
                <keyword>_CP_UPPER_256</keyword>
                <keyword>_CP_OFF</keyword>
                <keyword>_DEBUG_ON</keyword>
                <keyword>_DEBUG_OFF</keyword>
                <keyword>_WRT_ENABLE_ON</keyword>
                <keyword>_WRT_ENABLE_OFF</keyword>
                <keyword>_CPD_ON</keyword>
                <keyword>_CPD_OFF</keyword>
                <keyword>_LVP_ON</keyword>
                <keyword>_LVP_OFF</keyword>
                <keyword>_BODEN_ON</keyword>
                <keyword>_BODEN_OFF</keyword>
                <keyword>_PWRTE_OFF</keyword>
                <keyword>_PWRTE_ON</keyword>
                <keyword>_WDT_ON</keyword>
                <keyword>_WDT_OFF</keyword>
                <keyword>_LP_OSC</keyword>
                <keyword>_XT_OSC</keyword>
                <keyword>_HS_OSC</keyword>
                <keyword>_RC_OSC</keyword>
	</keyword-list>

</language>

