;from Paul W. Webster
MOVF file,W
ANDLW fmask ; fmask for bit 0 is defined as 0x01
IORWF shadA,W ; add in desired outputs from shadow
MOVWF PORTA
Only changes port A on the last cycle. Note that you must call this routine (subroutine/ macro) *whenever* you write to an output bit, which you always do using a BSF or BCF on shadA, never PORTA.
;from Paul W. Webster
MOVF file,W
XORWF PORTA,W ; derive "difference" value.
ANDLW fmask ; fmask for bit 0 is defined as 0x01
XORWF PORTA,F ; Flip bit if not same.