;
; picmac.i
;
skipc macro ; skip if carry
btfss STATUS,C
endm
skipnc macro ; skip if not carry
btfsc STATUS,C
endm
skipz macro ; skip if zero
btfss STATUS,Z
endm
skipnz macro ; skip if not zero
btfsc STATUS,Z
endm
skpos macro ; skip if reg >= 0 (reg)
btfsc \1,7
endm
skneg macro ; skip if reg < 0 (reg)
btfss \1,7
endm
setc macro ; set carry
bsf STATUS,C
endm
clrc macro ; clear carry
bcf STATUS,C
endm
bc macro ;branch if carry
skipnc
goto \1
endm
bnc macro ;branch if no carry
skipc
goto \1
endm
bz macro ;branch if zero
skipnz
goto \1
endm
bnz macro ;branch if not zero
skipz
goto \1
endm
bpos macro ;branch if reg >= 0 (reg,dest_addr)
btfss \1,7
goto \2
endm
bneg macro ;branch if reg < 0 (reg,dest_addr)
btfsc \1,7
goto \2
endm
brset macro ;branch if bit set (reg,bit,dest_addr)
btfsc \1,\2
goto \3
endm
brclr macro ;branch if bit clear (reg,bit,dest_addr)
btfss \1,\2
goto \3
endm
;
; save W/STATUS (interrupt entry)
;
save_w_stat macro
movwf temp_w
swapf STATUS,W
movwf temp_s
endm
restore_w_stat macro
swapf temp_s,W
movwf STATUS
swapf temp_w,F
swapf temp_w,W
endm
syntax highlighted by Code2HTML, v. 0.9.1