﻿// AVR Assembler brush for Syntax Highlighter 3.0.83(July 18, 2010)
// Copyright (C) 2010 JaxCoder
// This software is freely used but, distributed only at http://JaxCoder.com
SyntaxHighlighter.brushes.Asm = function() {
    var registers = "r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 sp spl sph x y z xl xh yl yh zl zh eicra eicrb eimsk eifr pcicr pcifr pcmsk1 pcmsk2 pcmsk0 mcucr tccr0a tccr0b tcnt0 ocr0a ocr0b timsk0 tifr0 tccr1a tccr3a tccr4a tccr5a tccr1b tccr3b tccr4b tccr5b tccr1c tccr3c tccr4c tccr5c tcnt1 tcnt1h tcnt1l tcnt3 tcnt3h tcnt3l tcnt4 tcnt4h tcnt4l tcnt5 tcnt5h tcnt5l ocr1a ocr1ah ocr1al ocr1b ocr1bh ocr1bl ocr1c ocr1ch ocr1cl ocr3a ocr3ah ocr3al ocr3b ocr3bh ocr3bl ocr3c ocr3ch ocr3cl ocr4a ocr4ah ocr4al ocr4b ocr4bh ocr4bl ocr4c ocr4bh ocr4bl ocr5a ocr5ah ocr5al ocr5b ocr5bh ocr5bl ocr5c ocr5ch ocr5cl icr1 icr1h icr1l icr3 icr3h icr3l icr4 icr4h icr4l icr5 icr5h icr5l timsh1 timsh3 timsk4 timsk5 tifr1 tifr3 tifr4 tifr5 gtccr tccr2a tccr2b tcnt2 ocr2a ocr2b assr timsh2 tifr2 spcr spsr spdr udr1 udr2 ucsr1a ucsr1b ucsr2a ucsr2b uscr1c ucsr2c ubrr1 ubrr1h ubrr1l ubrr2 ubrr2h ubrr2l twbr twcr twsr twdr twar twamr adcsrb acsr didr1 admux adcsra adch adcl didr0 didr2 eecr eepe eear eearh eearl eedr eempe eere"; 
    var directives = "device def equ set include cseg db dw listmac macro endmacro eseg dseg byte org list nolist exit if ifdef ifndef message error warning low high";
    var instructions = "adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec des eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbci sbi sbic sbis sbiw sbr sbrc sbrs sec seh sen ser ses set sev sez sleep spm st sts sub subi swap tst wdr";
    this.regexList = [
        { regex: /^;.*$/gm, css: "comments" },
        { regex: /\s\;.*$/gm, css: "comments" },
		{ regex: /\w*\:/gm, css: 'value' }, 	// preprocessor tags like #region and #endregion
		{ regex: /ddr[a-l]|port[a-l]|pin[0-7]/gmi, css: "variable" },
        { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, 
        { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: "string" },
        { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: "string" },
        { regex: new RegExp(this.getKeywords(registers), "gmi"), css: "color1 bold" },
        { regex: new RegExp(this.getKeywords(instructions), "gmi"), css: "functions bold" },
        { regex: new RegExp(this.getKeywords(directives), "gmi"), css: "keyword bold"}]
    }; 
        SyntaxHighlighter.brushes.Asm.prototype = new SyntaxHighlighter.Highlighter(); SyntaxHighlighter.brushes.Asm.aliases = ["asm", "avr"];

