+; -----------------------------------------------
+; --- extern declared SFRs
+; -----------------------------------------------
+ extern _STATUS
+ extern _FSR
+ extern _INDF
+ extern _PCLATH
+ extern _PCL
+
+C EQU 0
+DC EQU 1
+Z EQU 2
+IRP EQU 7
+
; -----------------------------------------------
; --- generic pointer access helpers
; -----------------------------------------------
; setup FSR to point to (STK00:STK01)
setup_fsr macro
movf STK01, W
- movwf FSR
+ movwf _FSR
; select indirectly addressed bank
- bcf STATUS, IRP
+ bcf _STATUS, IRP
btfsc STK00, 0
- bsf STATUS, IRP
+ bsf _STATUS, IRP
endm
; increment FSR, update IRP on bank crossings
; FIXME: update IRP if FSR is reset to 0...
inc_fsr macro
- incf FSR, F
+ incf _FSR, F
endm
; dispatch according to gptr type
select_routine macro dataptr, codeptr
; __data pointer tag: 0x00
xorlw GPTRTAG_DATA
- btfsc STATUS, Z
+ btfsc _STATUS, Z
goto dataptr
; __code pointer tag: 0x80
xorlw (GPTRTAG_DATA ^ GPTRTAG_CODE)
- btfsc STATUS, Z
+ btfsc _STATUS, Z
goto codeptr
endm
check_data macro dataptr
; __data pointer tag: 0x00
xorlw GPTRTAG_DATA
- btfsc STATUS, Z
+ btfsc _STATUS, Z
goto dataptr
endm