opt nolist
;
; Device type definition for PIC16F72
;

__progmem_size		equ	2048
__data_eeprom_size	equ	0

__config		set	0x3fff

			set_pic_type "PIC16F72", "14-bit"

__do_config	macro	; keyword, value

		if streqcase("\1", "osc") | streqcase("\1", "fosc")
			if streqcase("\2", "lp")
__config			set	__config & 0xfffc
				exitm
			endif
			if streqcase("\2", "xt")
__config			set	(__config & 0xfffc) | 0x01
				exitm
			endif
			if streqcase("\2", "hs")
__config			set	(__config & 0xfffc) | 0x02
				exitm
			endif
			if streqcase("\2", "rc")
__config			set	(__config & 0xfffc) | 0x03
				exitm
			endif
			error	"Invalid oscillator setting"
			exitm
		endif

		if streqcase("\1", "wdt") | streqcase("\1", "wdten")
			if streqcase("\2", "no") | streqcase("\2", "off")
__config			set	__config & 0xfffb
				exitm
			endif
			if streqcase("\2", "yes") | streqcase("\2", "on")
__config			set	__config | 0x0004
				exitm
			endif
			error	"Invalid WDT setting"
			exitm
		endif

		if streqcase("\1", "pwrt") | streqcase("\1", "pwrte")
			if streqcase("\2", "no") | streqcase("\2", "off")
__config			set	__config | 0x0008
				exitm
			endif
			if streqcase("\2", "yes") | streqcase("\2", "on")
__config			set	__config & 0xfff7
				exitm
			endif
			error	"Invalid PWRT setting"
			exitm
		endif

		if streqcase("\1", "cp")
			if streqcase("\2", "no") | streqcase("\2", "off")
__config			set	__config | 0x0010
				exitm
			endif
			if streqcase("\2", "yes") | streqcase("\2", "on")
__config			set	__config & 0xffef
				exitm
			endif
			error	"Invalid CP setting"
			exitm
		endif

		if streqcase("\1", "bor") | streqcase("\1", "boren") | streqcase("\1", "bod") | streqcase("\1", "boden")
			if streqcase("\2", "no") | streqcase("\2", "off")
__config			set	__config & 0xffbf
				exitm
			endif
			if streqcase("\2", "yes") | streqcase("\2", "on")
__config			set	__config | 0x0040
				exitm
			endif
			error	"Invalid BOR setting"
			exitm
		endif

		error	"Invalid configuration keyword"
		endm

		opt list


syntax highlighted by Code2HTML, v. 0.9.1