;********************************************************************* list ; ; FILE: mne.inc ; nolist ; ; AUTHOR: kdk ; ; DESCRIPTION: Mnemonic Include File ; ; LOG: 05/23/96 Initial Version ; ; 06/24/96 Removed W register instructions ; ; W now volatile ; ; 07/04/96 Now using declare macro ; ; 07/09/98 Reformat ; ; ; ;********************************************************************* ifdef MACRO_DEFINITION ; ;--------------------------------------------------------------------- mTypeDeclare fWTemp,BYTE,1 ; ;--------------------------------------------------------------------- mMneSetup macro endm ; ;--------------------------------------------------------------------- add_fff macro f1,f2,f3 if (f1 < H'80') ; mov_fw f2 ; addwf f1,0 ; mov_wf f3 ; else ; movlw f1 ; movwf FSR ; mov_fw f2 ; addwf INDF,0 ; mov_wf f3 ; endif ; endm ; ;--------------------------------------------------------------------- add_flf macro f1,l,f2 if (f1 < H'80') ; movlw l ; addwf f1,0 ; mov_wf f2 ; else ; movlw f1 ; movwf FSR ; movlw l ; addwf INDF,0 ; mov_wf f2 ; endif ; endm ; ;--------------------------------------------------------------------- and_fff macro f1,f2,f3 if (f1 < H'80') ; mov_fw f2 ; andwf f1,0 ; mov_wf f3 ; else ; movlw f1 ; movwf FSR ; mov_fw f2 ; andwf INDF,0 ; mov_wf f3 ; endif ; endm ; ;--------------------------------------------------------------------- and_flf macro f1,l,f2 if (f1 < H'80') ; movlw l ; andwf f1,0 ; mov_wf f2 ; else ; movlw f1 ; movwf FSR ; movlw l ; andwf INDF,0 ; mov_wf f2 ; endif ; endm ; ;--------------------------------------------------------------------- bc_f macro f,b if (f < H'80') ; bcf f,b ; else ; movlw f ; movwf FSR ; bcf INDF,b ; endif ; endm ; ;--------------------------------------------------------------------- bs_f macro f,b if (f < H'80') ; bsf f,b ; else ; movlw f ; movwf FSR ; bsf INDF,b ; endif ; endm ; ;--------------------------------------------------------------------- btsc_f macro f,b if (f < H'80') ; btfsc f,b ; else ; movlw f ; movwf FSR ; btfsc INDF,b ; endif ; endm ; ;--------------------------------------------------------------------- btss_f macro f,b if (f < H'80') ; btfss f,b ; else ; movlw f ; movwf FSR ; btfss INDF,b ; endif ; endm ; ;--------------------------------------------------------------------- clr_f macro f if (f < H'80') ; clrf f ; else ; movlw f ; movwf FSR ; clrf INDF ; endif ; endm ; ;--------------------------------------------------------------------- clr_wdt macro clrwdt ; endm ; ;--------------------------------------------------------------------- com_f macro f if (f < H'80') ; comf f,1 ; else ; movlw f ; movwf FSR ; comf INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- dec_f macro f if (f < H'80') ; decf f,1 ; else ; movlw f ; movwf FSR ; decf INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- decsz_f macro f if (f < H'80') ; decfsz f,1 ; else ; movlw f ; movwf FSR ; decfsz INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- inc_f macro f if (f < H'80') ; incf f,1 ; else ; movlw f ; movwf FSR ; incf INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- incsz_f macro f if (f < H'80') ; incfsz f,1 ; else ; movlw f ; movwf FSR ; incfsz INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- ior_fff macro f1,f2,f3 if (f1 < H'80') ; mov_fw f2 ; iorwf f1,0 ; mov_wf f3 ; else ; movlw f1 ; movwf FSR ; mov_fw f2 ; iorwf INDF,0 ; mov_wf f3 ; endif ; endm ; ;--------------------------------------------------------------------- ior_flf macro f1,l,f2 if (f1 < H'80') ; movlw l ; iorwf f1,0 ; mov_wf f2 ; else ; movlw f1 ; movwf FSR ; movlw l ; iorwf INDF,0 ; mov_wf f2 ; endif ; endm ; ;--------------------------------------------------------------------- mov_ff macro f1,f2 mov_fw f1 ; mov_wf f2 ; endm ; ;--------------------------------------------------------------------- ; ; ; private macro, only to be used by mnemonic.inc ; ; ; mov_fw macro f if (f < H'80') ; movf f,0 ; else ; movlw f ; movwf FSR ; movf INDF,0 ; endif ; endm ; ;--------------------------------------------------------------------- mov_lf macro l,f movlw l ; mov_wf f ; endm ; ;--------------------------------------------------------------------- ; ; ; semi-private macro, only for public use after ret_lw ; ; ; mov_wf macro f if (f < H'80') ; movwf f ; else ; movwf fWTemp ; movlw f ; movwf FSR ; movf fWTemp,0 ; movwf INDF ; endif ; endm ; ;--------------------------------------------------------------------- ret macro return ; endm ; ;--------------------------------------------------------------------- ret_int macro retfie ; endm ; ;--------------------------------------------------------------------- ret_lw macro l retlw l ; endm ; ;--------------------------------------------------------------------- rl_f macro f if (f < H'80') ; rlf f,1 ; else ; movlw f ; movwf FSR ; rlf INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- rr_f macro f if (f < H'80') ; rrf f,1 ; else ; movlw f ; movwf FSR ; rrf INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- sl_f macro f bc_f STATUS,0 ; rl_f f ; endm ; ;--------------------------------------------------------------------- sr_f macro f bc_f STATUS,0 ; rr_f f ; endm ; ;--------------------------------------------------------------------- sub_fff macro f1,f2,f3 if (f1 < H'80') ; mov_fw f2 ; subwf f1,0 ; mov_wf f3 ; else ; movlw f1 ; movwf FSR ; mov_fw f2 ; subwf INDF,0 ; mov_wf f3 ; endif ; endm ; ;--------------------------------------------------------------------- sub_flf macro f1,l,f2 if (f1 < H'80') ; movlw l ; subwf f1,0 ; mov_wf f2 ; else ; movlw f1 ; movwf FSR ; movlw l ; subwf INDF,0 ; mov_wf f2 ; endif ; endm ; ;--------------------------------------------------------------------- sub_lff macro l,f1,f2 mov_lf l,fWTemp ; mov_fw f1 ; subwf fWTemp,0 ; mov_wf f2 ; endm ; ;--------------------------------------------------------------------- swap_f macro f if (f < H'80') ; swapf f,1 ; else ; movlw f ; movwf FSR ; swapf INDF,1 ; endif ; endm ; ;--------------------------------------------------------------------- xor_fff macro f1,f2,f3 if (f1 < H'80') ; mov_fw f2 ; xorwf f1,0 ; mov_wf f3 ; else ; movlw f1 ; movwf FSR ; mov_fw f2 ; xorwf INDF,0 ; mov_wf f3 ; endif ; endm ; ;--------------------------------------------------------------------- xor_flf macro f1,l,f2 if (f1 < H'80') ; movlw l ; xorwf f1,0 ; mov_wf f2 ; else ; movlw f1 ; movwf FSR ; movlw l ; xorwf INDF,0 ; mov_wf f2 ; endif ; endm ; ;--------------------------------------------------------------------- endif ; MACRO_DEFINITION ;*********************************************************************