; pic16mac.inc
; Copyright (c) 1994 Ian King
; Macros for picasm to generate 16bit PIC code
; from Microchip standard mnemonics
;

macro nop	data 0x0000	endm
macro clrwdt	data 0x0004	endm
macro sleep	data 0x0003	endm
macro retfie	data 0x0005	endm
macro return	data 0x0002	endm

macro bcf
	data 0x8800 | (($1) & 0xff) | ((($2) & 0x07) << 8)
endm

macro bsf
	data 0x8000 | (($1) & 0xff) | ((($2) & 0x07) << 8)
endm

macro btfsc
	data 0x9800 | (($1) & 0xff) | ((($2) & 0x07) << 8)
endm

macro btfss
	data 0x9000 | (($1) & 0xff) | ((($2) & 0x07) << 8)
endm

macro btg
	data 0x3800 | (($1) & 0xff) | ((($2) & 0x07) << 8)
endm

macro tstfsz
	data 0x3300 | (($1) & 0xff)
endm

macro retlw
	data 0xb600 | (($1) & 0xff)
endm

macro lcall
	data 0xb700 | (($1) & 0xff)
endm

macro goto
	data 0xc000 | (($1) & 0x1fff)
endm

macro call
	data 0xe000 | ($(1) & 0x1fff)
endm

macro cpfseq
	data 0x3100 | (($1) & 0xff)
endm

macro cpfsgt
	data 0x3200 | (($1) & 0xff)
endm

macro cpfslt
	data 0x3000 | (($1) & 0xff)
endm

macro decfsz
	data 0x1600 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro dcfsnz
	data 0x2600 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro incfsz
	data 0x1e00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro infsnz
	data 0x2400 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro movfp
	data 0x6000 | (($1) & 0xff) | ((($2) & 0x1f) << 8)
endm

macro movlb
	data 0xb800 | (($1) & 0xff)
endm

macro movpf
	data 0x4000 | (($2) & 0xff) | ((($1) & 0x1f) << 8)
endm

macro movwf
	data 0x0100 | (($1) & 0xff)
endm

macro tablrd
	data 0xa800 | (($3) & 0xff) | ((($1) & 0x01) << 9) | ((($2) & 0x01) << 8)
endm

macro tablwt
	data 0xac00 | (($3) & 0xff) | ((($1) & 0x01) << 9) | ((($2) & 0x01) << 8)
endm

macro tlrd
	data 0xa000 | (($2) & 0xff) | ((($1) & 0x01) << 9)
endm

macro tlwt
	data 0xa400 | (($2) & 0xff) | ((($1) & 0x01) << 9)
endm

macro addlw
	data 0xb100 | (($1) & 0xff)
endm

macro andlw
	data 0xb500 | (($1) & 0xff)
endm

macro iorlw
	data 0xb300 | (($1) & 0xff)
endm

macro movlw
	data 0xb000 | (($1) & 0xff)
endm

macro sublw
	data 0xb200 | (($1) & 0xff)
endm

macro xorlw
	data 0xb400 | (($1) & 0xff)
endm

macro addwf
	data 0x0e00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro addwfc
	data 0x1000 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro andwf
	data 0x0a00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro clrf
	data 0x2800 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro comf
	data 0x1200 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro daw
	data 0x2e00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro decf
	data 0x0600 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro incf
	data 0x1400 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro iorwf
	data 0x0800 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro negw
	data 0x2c00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro rlcf
	data 0x1a00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro rlncf
	data 0x2200 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro rrcf
	data 0x1800 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro rrncf
	data 0x2000 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro setf
	data 0x2a00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro subwf
	data 0x0400 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro subwfb
	data 0x0200 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro swapf
	data 0x1c00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

macro xorwf
	data 0x0c00 | (($1) & 0xff) | ((($2) & 0x01) << 8)
endm

; ... The End ...

