LIST
; f18inc.inc  Utilities for PIC16f84 Bjorn Bringert
	NOLIST

; saves W and STATUS
push    MACRO SaveStatusTo, SaveWTo
        movwf SaveWTo           ; Copy W to TEMP register,
        swapf STATUS, W         ; Swap status to be saved into W
	movwf SaveStatusTo      ; Save status to STATUS_TEMP register
        ENDM

; loads W and STATUS
pull    MACRO   SaveStatusTo, SaveWTo
        swapf SaveStatusTo, W    ; Swap nibbles in STATUS_TEMP register
                                ; and place result into W
        movwf STATUS            ; Move W into STATUS register ; (sets bank to original state)
	swapf SaveWTo, F         ; Swap nibbles in W_TEMP and place result in W_TEMP
	swapf SaveWTo, W         ; Swap nibbles in W_TEMP and place result into W
        ENDM

; set f to a literal
; Status affected: None
movlf   MACRO file, literal
	movlw literal
	movwf file
        ENDM

; if (M(file) == literal) goto toAdr
bOnEqual MACRO file, literal, toAdr
        movf	file,W
	sublw	literal
	btfsc	STATUS,Z
        goto	toAdr
        ENDM

; if (M(file) != literal) skip next instr
skipIfNE MACRO file, literal
        movf    file,W
	sublw   literal
	btfsc	STATUS,Z
	ENDM


; EEPROM base address
EEPROM		equ	H'2100'

; reads a word from data EEPROM memory
; and puts it in W
; assumes that Bank 0 is selected
; Arguments:
; eeprom_adr (0x00-0x3f) in W
read_eeprom MACRO
	movwf	EEADR		; Address to read
	bsf	STATUS, RP0 	; Bank 1
	bsf	EECON1, RD 	; EE Read
	bcf	STATUS,RP0 	; Bank 0
	movf	EEDATA, W 	; W = EEDATA
	ENDM


	LIST

External Labels :

toAdr