diff src/isr.asm @ 582:b455b31ce022

work on 2.97 stable
author heinrichsweikamp
date Mon, 26 Feb 2018 16:40:28 +0100
parents c8ea60294175
children ca4556fb60b9
line wrap: on
line diff
--- a/src/isr.asm	Sun Feb 25 18:25:38 2018 +0100
+++ b/src/isr.asm	Mon Feb 26 16:40:28 2018 +0100
@@ -1,6 +1,6 @@
 ;=============================================================================
 ;
-;   File isr.asm									REFACTORED VERSION V2.92
+;   File isr.asm									REFACTORED VERSION V2.98
 ;
 ;   INTERUPT subroutines
 ;
@@ -10,391 +10,392 @@
 ;  2011-05-24 : [jDG] Cleanups from initial Matthias code.
 
 #include "hwos.inc"
-#include "shared_definitions.h"         ; Mailbox from/to p2_deco.c
+#include "shared_definitions.h"			; Mailbox from/to p2_deco.c
 #include "ms5541.inc"
 #include "adc_lightsensor.inc"
 #include "eeprom_rs232.inc"
 
 ;=============================================================================
 
-	extern start
+	extern	start
 
-isr_high    CODE    0x0008              ; High Priority Interrups
-		bra		HighInt
-		nop	
-		nop
-		nop
-		nop
-		nop
-		nop
-		bra		HighInt
+isr_high	CODE	0x0008				; High Priority Interrupts
+	bra		HighInt
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	bra		HighInt
 
-isr_low     CODE    0x00018             ; Low Priority Interrups
+isr_low		CODE	0x00018				; Low Priority Interrupts
 ;	*** low priority interrupts not used
-		retfie FAST						; Restores BSR, STATUS and WREG
+	retfie	FAST						; Restores BSR, STATUS and WREG
 
 HighInt:
-        movff   PRODL,isr_prod+0
-        movff   PRODH,isr_prod+1
+	movff	PRODL,isr_prod+0
+	movff	PRODH,isr_prod+1
 
-; Buttons
-		btfsc	PIR1,TMR1IF             ; Timer1 INT (Button hold-down Timer)
-		rcall	timer1int
-		btfsc	INTCON,INT0IF			; Buttons
-		rcall	isr_switch_right
-		btfsc	INTCON3,INT1IF			; Buttons
-		rcall	isr_switch_left
+	; Buttons
+	btfsc	PIR1,TMR1IF					; Timer1 INT (Button hold-down Timer)
+	rcall	timer1int
+	btfsc	INTCON,INT0IF				; Buttons
+	rcall	isr_switch_right
+	btfsc	INTCON3,INT1IF				; Buttons
+	rcall	isr_switch_left
 
-; IR/S8-Linktimer1int
-        btfsc   PIR3,RC2IF              ; UART2
-        rcall   isr_uart2               ; IR/S8-Link
-		btfsc	PIR2,TMR3IF				; Timer 3
-		rcall	isr_timer3				; IR-Link Timeout
+	; IR/S8 link timer int
+	btfsc	PIR3,RC2IF					; UART2
+	rcall	isr_uart2					; IR/S8-Link
+	btfsc	PIR2,TMR3IF					; Timer 3
+	rcall	isr_timer3					; IR-Link Timeout
 
-; Pressure sensor and others
-		btfsc	PIR5,TMR7IF				; Timer 7
-		rcall	isr_tmr7        		; Every 62,5ms
+	; Pressure sensor and others
+	btfsc	PIR5,TMR7IF					; Timer 7
+	rcall	isr_tmr7					; Every 62,5ms
 
-; RTCC
-		btfsc	PIR3,RTCCIF				; Real-time-clock interrupt
-		rcall	isr_rtcc                ; May return in bank common!
+	; RTCC
+	btfsc	PIR3,RTCCIF					; Real-time-clock interrupt
+	rcall	isr_rtcc					; May return in bank common!
 
-        movff   isr_prod+1,PRODH
-        movff   isr_prod+0,PRODL
-		retfie FAST						; Restores BSR, STATUS and WREG
+	movff	isr_prod+1,PRODH
+	movff	isr_prod+0,PRODL
+	retfie	FAST						; Restores BSR, STATUS and WREG
 
 isr_set_speed_to_normal:
-	; Set Speed to normal
-		movlw	b'01110010'
-		movwf	OSCCON				; 16MHz INTOSC
-		movlw	b'00000000'			
-		movwf	OSCTUNE				; 4x PLL Disable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
-		movlw	b'00001101'			; 1:2 Postscaler, 1:4 Prescaler, Timer 2 start -> 1960Hz (no-flicker)
-		movwf	T2CON
-		btfss	OSCCON,HFIOFS
-		bra		$-2					; Wait until clock is stable
-		return
+	; Set speed to normal
+	movlw	b'01110010'
+	movwf	OSCCON						; 16MHz INTOSC
+	movlw	b'00000000'
+	movwf	OSCTUNE						; 4x PLL Disable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
+	movlw	b'00001101'					; 1:2 Postscaler, 1:4 Prescaler, Timer 2 start -> 1960Hz (no-flicker)
+	movwf	T2CON
+	btfss	OSCCON,HFIOFS
+	bra		$-2							; Wait until clock is stable
+	return
 
-isr_dimm_tft:				; Adjust until max_CCPR1L=CCPR1L !
-        banksel     common
-		btfsc		tft_is_dimming			; Ignore while dimming
-		return
-        banksel     isr_backup
-		movf		max_CCPR1L,W
-		cpfsgt		CCPR1L					; CCPR1L>max_CCPR1L?
-		bra			isr_dimm_tft2			; No, dimm up
+isr_dimm_tft:							; Adjust until max_CCPR1L=CCPR1L !
+	banksel	common
+	btfsc	tft_is_dimming				; Ignore while dimming
+	return
+	banksel	isr_backup
+	movf	max_CCPR1L,W
+	cpfsgt	CCPR1L						; CCPR1L>max_CCPR1L?
+	bra		isr_dimm_tft2				; No, dimm up
 	; dimm down
-		decf		CCPR1L,F				; -1
-		return
+	decf	CCPR1L,F					; -1
+	return
 isr_dimm_tft2:
-		movf		max_CCPR1L,W
-		sublw		ambient_light_min_eco
-		cpfsgt		CCPR1L					; CCPR1L>max_CCPR1L-ambient_light_min_eco?
-		bra			isr_dimm_tft3			; No, dimm up slow
-		; dimm up faster
-		movlw		.10
-		addwf		CCPR1L,F
+	movf	max_CCPR1L,W
+	sublw	ambient_light_min_eco
+	cpfsgt	CCPR1L						; CCPR1L>max_CCPR1L-ambient_light_min_eco?
+	bra		isr_dimm_tft3				; No, dimm up slow
+	; dimm up faster
+	movlw	.10
+	addwf	CCPR1L,F
 isr_dimm_tft3:
-		incf		CCPR1L,F				; +1
-		return
-        nop
-        nop         ; block flash here
+	incf	CCPR1L,F					; +1
+	return
+	nop
+	nop									; block flash here
 
-isr_restore CODE    0x00080             ; Restore first flash page from EEPROM
+isr_restore	CODE	0x00080				; Restore first flash page from EEPROM
 restore_flash_0x00080:
-        goto    restore_flash
+	goto	restore_flash
 
-isr_routines;	CODE
+isr_routines							;	CODE
 ;=============================================================================
 
-isr_uart2:               ; IR/S8-Link
-        banksel RCREG2
-        movf    RCREG2,W
-    	bcf		RCSTA2,CREN		; Clear receiver status
-    	bsf		RCSTA2,CREN
-        banksel isr_backup
-        incf    ir_s8_counter,F            ; Increase counter
-        movff   ir_s8_counter,isr1_temp    ; Copy
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.0
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.1
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.2
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.3
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.4
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.5
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.6
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.7
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.8
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.9
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.10
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.11
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.12
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.13
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.14
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.15
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.16
-        dcfsnz  isr1_temp,F
-        movwf   ir_s8_buffer+.17
+isr_uart2:								; IR/S8-Link
+	banksel	RCREG2
+	movf	RCREG2,W
+	bcf		RCSTA2,CREN					; Clear receiver status
+	bsf		RCSTA2,CREN
+	banksel	isr_backup
+	incf	ir_s8_counter,F				; Increase counter
+	movff	ir_s8_counter,isr1_temp		; Copy
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.0
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.1
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.2
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.3
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.4
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.5
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.6
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.7
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.8
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.9
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.10
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.11
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.12
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.13
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.14
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.15
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.16
+	dcfsnz	isr1_temp,F
+	movwf	ir_s8_buffer+.17
 
-        clrf    TMR3L                   ; Preload timer
-        movlw   .253
-        movwf   TMR3H
-        bsf     T3CON,TMR3ON            ; (Re)Start Timeout counter
-        return
+	clrf	TMR3L						; Preload timer
+	movlw	.253
+	movwf	TMR3H
+	bsf		T3CON,TMR3ON				; (Re)Start Timeout counter
+	return
 
-isr_timer3:             ; IR/S8-Link Timeout
-		bcf		T3CON,TMR3ON			; Stop Timer3
-    	banksel isr_backup              ; Select Bank0 for ISR data.
-        movlw   .15
-        cpfseq  ir_s8_counter              ; Got exact 15bytes?
-        bra     isr_timer3_1            ; No, test for 16bytes
-        bra     isr_timer3_ir           ; Got 15 bytes, compute local checksum
+isr_timer3:								; IR/S8-Link Timeout
+	bcf		T3CON,TMR3ON				; Stop Timer3
+	banksel	isr_backup					; Select Bank0 for ISR data.
+	movlw	.15
+	cpfseq	ir_s8_counter				; Got exact 15bytes?
+	bra		isr_timer3_1				; No, test for 16bytes
+	bra		isr_timer3_ir				; Got 15 bytes, compute local checksum
 isr_timer3_1:
-        movlw   .16
-        cpfseq  ir_s8_counter              ; Got exact 16bytes?
-        bra     isr_timer3_2            ; No, test for 17bytes
-        tstfsz  ir_s8_buffer+.15           ; Last byte=0x00
-        bra     isr_timer3_exit         ; No, exit
-        bra     isr_timer3_ir           ; Got 16 bytes, compute local checksum
+	movlw	.16
+	cpfseq	ir_s8_counter				; Got exact 16bytes?
+	bra		isr_timer3_2				; No, test for 17bytes
+	tstfsz	ir_s8_buffer+.15			; Last byte=0x00
+	bra		isr_timer3_exit				; No, exit
+	bra		isr_timer3_ir				; Got 16 bytes, compute local checksum
 isr_timer3_2:
-        movlw   .17
-        cpfseq  ir_s8_counter              ; Got exact 17bytes?
-        bra     isr_timer3_exit         ; No, exit
-        bra     isr_timer3_s8           ; S8 data
+	movlw	.17
+	cpfseq	ir_s8_counter				; Got exact 17bytes?
+	bra		isr_timer3_exit				; No, exit
+	bra		isr_timer3_s8				; S8 data
 
-isr_timer3_ir:  ; IR input
-        movff   ir_s8_buffer+.0,PRODL
-        clrf    PRODH
-        movf    ir_s8_buffer+.1,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.2,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.3,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.4,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.5,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.6,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.7,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.8,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.9,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.10,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.11,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.12,W
-        rcall   isr_timer3_checksum
+isr_timer3_ir:							; IR input
+	movff	ir_s8_buffer+.0,PRODL
+	clrf	PRODH
+	movf	ir_s8_buffer+.1,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.2,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.3,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.4,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.5,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.6,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.7,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.8,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.9,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.10,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.11,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.12,W
+	rcall	isr_timer3_checksum
 
-            ; Compare checksum
-        movf    ir_s8_buffer+.13,W
-        cpfseq  PRODL                   ; Checksum ok?
-        bra     isr_timer3_exit         ; No, exit
-        movf    ir_s8_buffer+.14,W
-        cpfseq  PRODH                   ; Checksum ok?
-        bra     isr_timer3_exit         ; No, exit
+	; Compare checksum
+	movf	ir_s8_buffer+.13,W
+	cpfseq	PRODL						; Checksum ok?
+	bra		isr_timer3_exit				; No, exit
+	movf	ir_s8_buffer+.14,W
+	cpfseq	PRODH						; Checksum ok?
+	bra		isr_timer3_exit				; No, exit
 
-           ; Checksum OK, copy results
-        movff   ir_s8_buffer+.1,hud_status_byte
-        movff   ir_s8_buffer+.2,o2_mv_sensor1+0
-        movff   ir_s8_buffer+.3,o2_mv_sensor1+1
-        movff   ir_s8_buffer+.4,o2_mv_sensor2+0
-        movff   ir_s8_buffer+.5,o2_mv_sensor2+1
-        movff   ir_s8_buffer+.6,o2_mv_sensor3+0
-        movff   ir_s8_buffer+.7,o2_mv_sensor3+1
-        movff   ir_s8_buffer+.8,o2_ppo2_sensor1
-        movff   ir_s8_buffer+.9,o2_ppo2_sensor2
-        movff   ir_s8_buffer+.10,o2_ppo2_sensor3
-        movff   ir_s8_buffer+.11,hud_battery_mv+0
-        movff   ir_s8_buffer+.12,hud_battery_mv+1
+	; Checksum OK, copy results
+	movff	ir_s8_buffer+.1,hud_status_byte
+	movff	ir_s8_buffer+.2,o2_mv_sensor1+0
+	movff	ir_s8_buffer+.3,o2_mv_sensor1+1
+	movff	ir_s8_buffer+.4,o2_mv_sensor2+0
+	movff	ir_s8_buffer+.5,o2_mv_sensor2+1
+	movff	ir_s8_buffer+.6,o2_mv_sensor3+0
+	movff	ir_s8_buffer+.7,o2_mv_sensor3+1
+	movff	ir_s8_buffer+.8,o2_ppo2_sensor1
+	movff	ir_s8_buffer+.9,o2_ppo2_sensor2
+	movff	ir_s8_buffer+.10,o2_ppo2_sensor3
+	movff	ir_s8_buffer+.11,hud_battery_mv+0
+	movff	ir_s8_buffer+.12,hud_battery_mv+1
 
-        movlw   ir_timeout_value        ; multiples of 62,5ms
-        movwf   ir_S8_timeout              ; Reload timeout
+	movlw	ir_timeout_value			; multiples of 62,5ms
+	movwf	ir_s8_timeout				; Reload timeout
 
-        banksel hud_status_byte
-        bsf     hud_connection_ok       ; Set manually for hwHUD w/o the HUD module...
-        banksel isr_backup              ; Select Bank0 for ISR data.
- 
+	banksel	hud_status_byte
+	bsf		hud_connection_ok			; Set manually for hwHUD w/o the HUD module...
+	banksel	isr_backup					; Select Bank0 for ISR data.
+
 isr_timer3_exit:
-        clrf    ir_s8_counter              ; Clear pointer
-	    bcf		PIR2,TMR3IF				; Clear flag
-        return
+	clrf	ir_s8_counter				; Clear pointer
+	bcf		PIR2,TMR3IF					; Clear flag
+	return
 
 isr_timer3_checksum:
-        addwf   PRODL,F
-        movlw   .0
-        addwfc  PRODH,F
-        return
+	addwf	PRODL,F
+	movlw	.0
+	addwfc	PRODH,F
+	return
 
-isr_timer3_s8:  ; S8 input
-        movff   ir_s8_buffer+.0,PRODL
-        clrf    PRODH
-        movf    ir_s8_buffer+.1,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.2,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.3,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.4,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.5,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.6,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.7,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.8,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.9,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.10,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.11,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.12,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.13,W
-        rcall   isr_timer3_checksum
-        movf    ir_s8_buffer+.14,W
-        rcall   isr_timer3_checksum
+isr_timer3_s8:							; S8 input
+	movff	ir_s8_buffer+.0,PRODL
+	clrf	PRODH
+	movf	ir_s8_buffer+.1,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.2,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.3,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.4,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.5,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.6,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.7,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.8,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.9,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.10,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.11,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.12,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.13,W
+	rcall	isr_timer3_checksum
+	movf	ir_s8_buffer+.14,W
+	rcall	isr_timer3_checksum
 
-            ; Compare checksum
-        movf    ir_s8_buffer+.15,W
-        cpfseq  PRODL                   ; Checksum ok?
-        bra     isr_timer3_exit         ; No, exit
-        movf    ir_s8_buffer+.16,W
-        cpfseq  PRODH                   ; Checksum ok?
-        bra     isr_timer3_exit         ; No, exit
+	; Compare checksum
+	movf	ir_s8_buffer+.15,W
+	cpfseq	PRODL						; Checksum ok?
+	bra		isr_timer3_exit				; No, exit
+	movf	ir_s8_buffer+.16,W
+	cpfseq	PRODH						; Checksum ok?
+	bra		isr_timer3_exit				; No, exit
 
-           ; Checksum OK, copy results
-        movff   ir_s8_buffer+.3,hud_status_byte
-        movff   ir_s8_buffer+.13,hud_battery_mv+0
-        movff   ir_s8_buffer+.14,hud_battery_mv+1
+	; Checksum OK, copy results
+	movff	ir_s8_buffer+.3,hud_status_byte
+	movff	ir_s8_buffer+.13,hud_battery_mv+0
+	movff	ir_s8_buffer+.14,hud_battery_mv+1
 
-        banksel common
-        btfsc   new_s8_data_available       ; =1: Old data already processed?
-        bra     isr_timer3_skip             ; No, skip copying new results
+	banksel	common
+	btfsc	new_s8_data_available		; =1: Old data already processed?
+	bra		isr_timer3_skip				; No, skip copying new results
 
-        movff	ir_s8_buffer+.6,s8_rawdata_sensor1+2
-        movff	ir_s8_buffer+.5,s8_rawdata_sensor1+1
-        movff	ir_s8_buffer+.4,s8_rawdata_sensor1+0
-        movff	ir_s8_buffer+.9,s8_rawdata_sensor2+2
-        movff	ir_s8_buffer+.8,s8_rawdata_sensor2+1
-        movff	ir_s8_buffer+.7,s8_rawdata_sensor2+0
-        movff	ir_s8_buffer+.12,s8_rawdata_sensor3+2
-        movff	ir_s8_buffer+.11,s8_rawdata_sensor3+1
-        movff	ir_s8_buffer+.10,s8_rawdata_sensor3+0
-        banksel common
-        bsf     new_s8_data_available       ; set flag
+	movff	ir_s8_buffer+.6,s8_rawdata_sensor1+2
+	movff	ir_s8_buffer+.5,s8_rawdata_sensor1+1
+	movff	ir_s8_buffer+.4,s8_rawdata_sensor1+0
+	movff	ir_s8_buffer+.9,s8_rawdata_sensor2+2
+	movff	ir_s8_buffer+.8,s8_rawdata_sensor2+1
+	movff	ir_s8_buffer+.7,s8_rawdata_sensor2+0
+	movff	ir_s8_buffer+.12,s8_rawdata_sensor3+2
+	movff	ir_s8_buffer+.11,s8_rawdata_sensor3+1
+	movff	ir_s8_buffer+.10,s8_rawdata_sensor3+0
+	banksel	common
+	bsf		new_s8_data_available		; set flag
 
 isr_timer3_skip:
-        banksel ir_S8_timeout
-        movlw   ir_timeout_value        ; multiples of 62,5ms
-        movwf   ir_S8_timeout           ; Reload timeout
-        bra     isr_timer3_exit         ; Exit
+	banksel	ir_s8_timeout
+	movlw	ir_timeout_value			; multiples of 62,5ms
+	movwf	ir_s8_timeout				; Reload timeout
+	bra		isr_timer3_exit				; Exit
 
 
 ;=============================================================================
 
-isr_tmr7:       					; each 62,5ms
-	bcf		PIR5,TMR7IF			; clear flag
-	banksel 0xF16					; Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM.
+isr_tmr7:								; each 62,5ms
+	bcf		PIR5,TMR7IF					; clear flag
+	banksel	0xF16						; Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM.
 	movlw	.248
-    	movwf	TMR7H					; -> Rollover after 2048 cycles -> 62,5ms
+	movwf	TMR7H						; -> Rollover after 2048 cycles -> 62,5ms
 
-        banksel common
+	banksel	common
 	call	get_analog_switches			; Get analog readings
 	btfss	INTCON3,INT1IE
-	bra	isr_tmr7_a
+	bra		isr_tmr7_a
 	btfsc	analog_sw2_pressed
 	rcall	isr_switch_left
 isr_tmr7_a:
-	banksel common
+	banksel	common
 	btfss	INTCON,INT0IE
-	bra	isr_tmr7_b
+	bra		isr_tmr7_b
 	btfsc	analog_sw1_pressed
 	rcall	isr_switch_right
 isr_tmr7_b:
-        banksel common
-	btfss	no_sensor_int		; No sensor interrupt (because it's addressed during sleep)
-	bra	isr_tmr7_c		; No, continue
-	banksel isr_backup              ; Back to Bank0 ISR data
-	return						
+	banksel	common
+	btfss	no_sensor_int				; No sensor interrupt (because it's addressed during sleep)
+	bra		isr_tmr7_c					; No, continue
+	banksel	isr_backup					; Back to Bank0 ISR data
+	return
 isr_tmr7_c:
 	banksel	isr_backup
 	movf	max_CCPR1L,W				; Dimm value
-	cpfseq	CCPR1L					; = current PWM value?
+	cpfseq	CCPR1L						; = current PWM value?
 	rcall	isr_dimm_tft				; No, adjust until max_CCPR1L=CCPR1L !
-		
-        banksel isr_backup
-        decfsz  ir_S8_timeout,F            ; IR Data still valid?
-        bra     isr_tmr7_2              ; Yes, continue
-        ; timeout, clear IR-Data
+
+	banksel	isr_backup
+	decfsz	ir_s8_timeout,F				; IR Data still valid?
+	bra		isr_tmr7_2					; Yes, continue
+	; timeout, clear IR-Data
 
-        movlw   ir_timeout_value        ; multiples of 62,5ms
-        movwf   ir_S8_timeout              ; Reload timeout
+	movlw	ir_timeout_value			; multiples of 62,5ms
+	movwf	ir_s8_timeout				; Reload timeout
 
-        banksel common
-        btfss   analog_o2_input
-        bra     isr_tmr7_1a             ; Always with normal ostc3 hardware
-        btfss   s8_digital
-        bra     isr_tmr7_2              ; only when digital
+	banksel	common
+	btfss	analog_o2_input
+	bra		isr_tmr7_1a					; Always with normal ostc3 hardware
+	btfss	s8_digital
+	bra		isr_tmr7_2					; only when digital
 isr_tmr7_1a:
-        clrf    o2_mv_sensor1+0		; S8/IR timeout clears all analog input readings to zero -> Fallback will be triggered when sensor mode was used
-        clrf    o2_mv_sensor1+1
-        clrf    o2_mv_sensor2+0
-        clrf    o2_mv_sensor2+1
-        clrf    o2_mv_sensor3+0
-        clrf    o2_mv_sensor3+1
-        banksel hud_battery_mv
-        clrf    hud_battery_mv+0
-        clrf    hud_battery_mv+1
-        banksel hud_status_byte
-        clrf    hud_status_byte
-        clrf    o2_ppo2_sensor1		; For IR/S8 HUD
-        clrf    o2_ppo2_sensor2
-        clrf    o2_ppo2_sensor3
+	clrf	o2_mv_sensor1+0				; S8/IR timeout clears all analog input readings to zero -> Fallback will be triggered when sensor mode was used
+	clrf	o2_mv_sensor1+1
+	clrf	o2_mv_sensor2+0
+	clrf	o2_mv_sensor2+1
+	clrf	o2_mv_sensor3+0
+	clrf	o2_mv_sensor3+1
+	banksel	hud_battery_mv
+	clrf	hud_battery_mv+0
+	clrf	hud_battery_mv+1
+	banksel	hud_status_byte
+	clrf	hud_status_byte
+	clrf	o2_ppo2_sensor1				; for IR/S8 UD
+	clrf	o2_ppo2_sensor2
+	clrf	o2_ppo2_sensor3
+
 	banksel	common
-	bsf     new_s8_data_available   ; set flag to update in surface mode
-	
+	bsf		new_s8_data_available		; set flag to update in surface mode
+
 isr_tmr7_2:
-        banksel common
-		btfss	no_sensor_int			; No sensor interrupt (because it's addressed during sleep)
-		bra		isr_sensor_state2		; No, continue
-		banksel isr_backup              ; Back to Bank0 ISR data
-		return						
+	banksel	common
+	btfss	no_sensor_int				; No sensor interrupt (because it's addressed during sleep)
+	bra		isr_sensor_state2			; No, continue
+	banksel	isr_backup					; Back to Bank0 ISR data
+	return
 
 isr_sensor_state2:
-		banksel	common
-        movff   sensor_state_counter,WREG
-        btfss   WREG,0                  ; every 1/4 second
-        bsf     quarter_second_update   ; Set flag
-        banksel isr_backup              ; Back to Bank0 ISR data
-		movlw	d'2'
-		cpfseq	speed_setting           ; Set to normal in case it's not already in normal speed mode
-		rcall	isr_set_speed_to_normal
-	
-		incf	sensor_state_counter,F	; counts to eight for state maschine
+	banksel	common
+	movff	sensor_state_counter,WREG
+	btfss	WREG,0						; every 1/4 second
+	bsf		quarter_second_update		; Set flag
+	banksel	isr_backup					; Back to Bank0 ISR data
+	movlw	d'2'
+	cpfseq	speed_setting				; Set to normal in case it's not already in normal speed mode
+	rcall	isr_set_speed_to_normal
+
+	incf	sensor_state_counter,F		; counts to eight for state machine
 
 ; State 1: Clear flags and average registers, get temperature (51us) and start pressure integration (73,5us)
 ; State 2: Get pressure (51us), start temperature integration (73,5us) and calculate temperature compensated pressure (233us)
@@ -404,590 +405,548 @@
 ; State 6: Get pressure (51us), start temperature integration (73,5us) and calculate temperature compensated pressure (233us)
 ; State 7: Get temperature (51us) and start pressure integration (73,5us)
 ; State 8: Get pressure (51us), start temperature integration (73,5us), calculate temperature compensated pressure (233us) and build average for half-second update of tempperature and pressure
-	
-		movff	sensor_state_counter,WREG		; WREG used as temp here...
-		dcfsnz	WREG,F
-		bra		sensor_int_state1_plus_restart	; Do State 1
-		dcfsnz	WREG,F
-		bra		sensor_int_state2				; Do State 2
-		dcfsnz	WREG,F
-		bra		sensor_int_state1				; Do State 3
-		dcfsnz	WREG,F
-		bra		sensor_int_state2				; Do State 4
-		dcfsnz	WREG,F
-		bra		sensor_int_state1				; Do State 5
-		dcfsnz	WREG,F
-		bra		sensor_int_state2				; Do State 6
-		dcfsnz	WREG,F
-		bra		sensor_int_state1				; Do State 7
-;		bra		sensor_int2_plus_average		; Do State 8
+
+	movff	sensor_state_counter,WREG		; WREG used as temp here...
+	dcfsnz	WREG,F
+	bra		sensor_int_state1_plus_restart	; Do State 1
+	dcfsnz	WREG,F
+	bra		sensor_int_state2				; Do State 2
+	dcfsnz	WREG,F
+	bra		sensor_int_state1				; Do State 3
+	dcfsnz	WREG,F
+	bra		sensor_int_state2				; Do State 4
+	dcfsnz	WREG,F
+	bra		sensor_int_state1				; Do State 5
+	dcfsnz	WREG,F
+	bra		sensor_int_state2				; Do State 6
+	dcfsnz	WREG,F
+	bra		sensor_int_state1				; Do State 7
+;	bra		sensor_int2_plus_average		; Do State 8
 ;sensor_int2_plus_average:
-		; First, do state2:
-		call		get_pressure_value		; State2: Get pressure (51us)
-		call		get_temperature_start	; and start temperature integration (73,5us)
-		call		calculate_compensation	; calculate temperature compensated pressure (27us)
+	; First, do state2:
+	call	get_pressure_value			; State2: Get pressure (51us)
+	call	get_temperature_start		; and start temperature integration (73,5us)
+	call	calculate_compensation		; calculate temperature compensated pressure (27us)
 ; Build average
-		bcf			STATUS,C            ; clear carry bit.
-		rrcf		amb_pressure_avg+1  ; amb_pressure sum / 2
-		rrcf		amb_pressure_avg+0
-		bcf			STATUS,C            ; clear carry bit, twice.
-		rrcf		amb_pressure_avg+1  ; amb_pressure sum / 4
-		rrcf		amb_pressure_avg+0
+	bcf		STATUS,C					; clear carry bit.
+	rrcf	amb_pressure_avg+1			; amb_pressure sum / 2
+	rrcf	amb_pressure_avg+0
+	bcf		STATUS,C					; clear carry bit, twice.
+	rrcf	amb_pressure_avg+1			; amb_pressure sum / 4
+	rrcf	amb_pressure_avg+0
 
-		movff		amb_pressure_avg+1,amb_pressure+1	; copy into actual register
-		movff		amb_pressure_avg+0,amb_pressure+0
+	movff	amb_pressure_avg+1,amb_pressure+1	; copy into actual register
+	movff	amb_pressure_avg+0,amb_pressure+0
 
-        bcf			STATUS,C
-        btfsc       temperature_avg+1,7 ; Copy sign bit to carry
-        bsf         STATUS,C
-		rrcf		temperature_avg+1   ; Signed temperature /2
-		rrcf		temperature_avg+0
-        bcf			STATUS,C
-        btfsc       temperature_avg+1,7 ; Copy sign bit to carry
-        bsf         STATUS,C
-		rrcf		temperature_avg+1   ; Signed temperature /4
-		rrcf		temperature_avg+0
+	bcf		STATUS,C
+	btfsc	temperature_avg+1,7			; Copy sign bit to carry
+	bsf		STATUS,C
+	rrcf	temperature_avg+1			; Signed temperature /2
+	rrcf	temperature_avg+0
+	bcf		STATUS,C
+	btfsc	temperature_avg+1,7			; Copy sign bit to carry
+	bsf		STATUS,C
+	rrcf	temperature_avg+1			; Signed temperature /4
+	rrcf	temperature_avg+0
 
-		movff		temperature_avg+1,temperature+1     ; copy into actual register
-		movff		temperature_avg+0,temperature+0
+	movff	temperature_avg+1,temperature+1		; copy into actual register
+	movff	temperature_avg+0,temperature+0
 
-		banksel 	common                  ; flag1 is in Bank1
-        bcf         temp_changed			; Clear flag for temperature update
-        bcf         pressure_refresh        ; Clear flag for pressure update
-        banksel 	isr_backup              ; Back to Bank0 ISR data
+	banksel	common						; flag1 is in Bank1
+	bcf		temp_changed				; Clear flag for temperature update
+	bcf		pressure_refresh			; Clear flag for pressure update
+	banksel	isr_backup					; Back to Bank0 ISR data
 
-        ; Temp changed?
-        movf	temperature+0,W
-        cpfseq	last_temperature+0
-        bra     isr_sensor_state2_2         ; Yes
-        movf	temperature+1,W
-        cpfseq	last_temperature+1
-        bra     isr_sensor_state2_2         ; Yes
+	; Temp changed?
+	movf	temperature+0,W
+	cpfseq	last_temperature+0
+	bra		isr_sensor_state2_2			; Yes
+	movf	temperature+1,W
+	cpfseq	last_temperature+1
+	bra		isr_sensor_state2_2			; Yes
 
-        bra     isr_sensor_state2_3         ; no change
+	bra		isr_sensor_state2_3			; no change
 
 isr_sensor_state2_2:
-        banksel 	common                  ; flag1 is in Bank1
-        bsf		temp_changed			    ; Yes
-        banksel 	isr_backup              ; Back to Bank0 ISR data
+	banksel	common						; flag1 is in Bank1
+	bsf		temp_changed				; Yes
+	banksel	isr_backup					; Back to Bank0 ISR data
 isr_sensor_state2_3:
-        movff   temperature+0,last_temperature+0    ; Copy for compare
-        movff   temperature+1,last_temperature+1
+	movff	temperature+0,last_temperature+0	; Copy for compare
+	movff	temperature+1,last_temperature+1
 
-    	movf	amb_pressure+0,W
-    	cpfseq	last_pressure+0
-        bra     isr_sensor_state2_4         ; Yes
-    	movf	amb_pressure+1,W
-    	cpfseq	last_pressure+1
-        bra     isr_sensor_state2_4         ; Yes
+	movf	amb_pressure+0,W
+	cpfseq	last_pressure+0
+	bra		isr_sensor_state2_4			; Yes
+	movf	amb_pressure+1,W
+	cpfseq	last_pressure+1
+	bra		isr_sensor_state2_4			; Yes
 
-        bra     isr_sensor_state2_5         ; No change
+	bra		isr_sensor_state2_5			; No change
 isr_sensor_state2_4:
-        banksel 	common                  ; flag1 is in Bank1
-    	bsf		pressure_refresh			; Yes
-        banksel 	isr_backup              ; Back to Bank0 ISR data
+	banksel	common						; flag1 is in Bank1
+	bsf		pressure_refresh			; Yes
+	banksel	isr_backup					; Back to Bank0 ISR data
 isr_sensor_state2_5:
-        movff   amb_pressure+0,last_pressure+0    ; Copy for compare
-        movff   amb_pressure+1,last_pressure+1
+	movff	amb_pressure+0,last_pressure+0	; Copy for compare
+	movff	amb_pressure+1,last_pressure+1
 
-		clrf		sensor_state_counter	; Then reset State counter
-        banksel 	common                  ; flag2 is in Bank1
-		btfss		simulatormode_active	; are we in simulator mode?
-		bra			comp_air_pressure		; no
-        ; Always set pressure_refresh flag in simulator mode
-    	bsf         pressure_refresh        ; Yes
-        banksel 	isr_backup              ; Back to Bank0 ISR data
-		movlw		LOW		d'1000'			; yes, so simulate 1000mbar surface pressure
-		movwf		last_surfpressure+0
-		movlw		HIGH	d'1000'
-		movwf		last_surfpressure+1
+	clrf	sensor_state_counter		; Then reset State counter
+	banksel	common						; flag2 is in Bank1
+	btfss	simulatormode_active		; are we in simulator mode?
+	bra		comp_air_pressure			; no
+	; Always set pressure_refresh flag in simulator mode
+	bsf		pressure_refresh			; Yes
+	banksel	isr_backup					; Back to Bank0 ISR data
+	movlw	LOW  d'1000'				; yes, so simulate 1000mbar surface pressure
+	movwf	last_surfpressure+0
+	movlw	HIGH d'1000'
+	movwf	last_surfpressure+1
 
 comp_air_pressure:
-        banksel 	isr_backup              ; Back to Bank0 ISR data
-		movf		last_surfpressure+0,W		; compensate airpressure
-		subwf   	amb_pressure+0,W             
-		movwf   	rel_pressure+0				; rel_pressure stores depth!
+	banksel	isr_backup					; Back to Bank0 ISR data
+	movf	last_surfpressure+0,W		; compensate air pressure
+	subwf	amb_pressure+0,W
+	movwf	rel_pressure+0				; rel_pressure stores depth!
 
-		movf		last_surfpressure+1,W
-		subwfb  	amb_pressure+1,W
-		movwf   	rel_pressure+1
-		btfss		STATUS,N					; result is below zero?
-		bra			sensor_int_state_exit
-		clrf		rel_pressure+0				; Yes, do not display negative depths
-		clrf		rel_pressure+1				; e.g. when surface air pressure dropped during the dive
-		bra			sensor_int_state_exit
+	movf	last_surfpressure+1,W
+	subwfb	amb_pressure+1,W
+	movwf	rel_pressure+1
+	btfss	STATUS,N					; result is below zero?
+	bra		sensor_int_state_exit
+	clrf	rel_pressure+0				; Yes, do not display negative depths
+	clrf	rel_pressure+1				; e.g. when surface air pressure dropped during the dive
+	bra		sensor_int_state_exit
 
 sensor_int_state1_plus_restart:
-		clrf		amb_pressure_avg+0  ; pressure average registers
-		clrf		amb_pressure_avg+1
-		clrf		temperature_avg+0
-		clrf		temperature_avg+1
+	clrf	amb_pressure_avg+0			; pressure average registers
+	clrf	amb_pressure_avg+1
+	clrf	temperature_avg+0
+	clrf	temperature_avg+1
 
 sensor_int_state1:
-		call		get_temperature_value	; State 1: Get temperature
-		call		get_pressure_start	 	; and start pressure integration.
-		bra			sensor_int_state_exit
+	call	get_temperature_value		; State 1: Get temperature
+	call	get_pressure_start			; and start pressure integration.
+	bra		sensor_int_state_exit
 
 sensor_int_state2:
-		call		get_pressure_value		; State2: Get pressure (51us)
-		call		get_temperature_start	; and start temperature integration (73,5us)
-		call		calculate_compensation	; calculate temperature compensated pressure (233us)
-;		bra			sensor_int_state_exit
+	call	get_pressure_value			; State2: Get pressure (51us)
+	call	get_temperature_start		; and start temperature integration (73,5us)
+	call	calculate_compensation		; calculate temperature compensated pressure (233us)
+	;bra	sensor_int_state_exit
+
 sensor_int_state_exit:
-		rcall		isr_restore_clock		; Restore clock
-		return
+	rcall	isr_restore_clock			; Restore clock
+	return
+
 ;=============================================================================
 
-
-
 isr_rtcc:								; each second
-		bcf		PIR3,RTCCIF				; clear flag
-		banksel 0xF16					; Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM.
-		bsf		RTCCFG,RTCPTR1
-		bsf		RTCCFG,RTCPTR0			; year
-		movff	RTCVALL,year			; format is BCD!
-		movff	RTCVALH,day				; dummy read
-		movff	RTCVALL,day				; format is BCD!
-		movff	RTCVALH,month			; format is BCD!
-		movff	RTCVALL,hours			; format is BCD!
-		movff	RTCVALH,secs			; format is BCD!
-		movff	RTCVALL,secs			; format is BCD!
-		movff	RTCVALH,mins			; format is BCD!
-        banksel isr_backup              ; Back to Bank0 ISR data
-        
-		; Convert BCD to DEC and set registers
-		movff	mins, isr1_temp
-		rcall	isr_rtcc_convert		; Converts to dec with result in WREG
-		movff	WREG,mins
-		movff	secs, isr1_temp
-		rcall	isr_rtcc_convert		; Converts to dec with result in WREG
-		movff	WREG,secs
-		movff	hours, isr1_temp
-		rcall	isr_rtcc_convert		; Converts to dec with result in WREG
-		movff	WREG,hours
-		movff	month, isr1_temp
-		rcall	isr_rtcc_convert		; Converts to dec with result in WREG
-		movff	WREG,month
-		movff	day, isr1_temp
-		rcall	isr_rtcc_convert		; Converts to dec with result in WREG
-		movff	WREG,day
-		movff	year, isr1_temp
-		rcall	isr_rtcc_convert		; Converts to dec with result in WREG
-		movff	WREG,year
+	bcf		PIR3,RTCCIF					; clear flag
+	banksel	0xF16						; Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM.
+	bsf		RTCCFG,RTCPTR1
+	bsf		RTCCFG,RTCPTR0				; year
+	movff	RTCVALL,year				; format is BCD!
+	movff	RTCVALH,day					; dummy read
+	movff	RTCVALL,day					; format is BCD!
+	movff	RTCVALH,month				; format is BCD!
+	movff	RTCVALL,hours				; format is BCD!
+	movff	RTCVALH,secs				; format is BCD!
+	movff	RTCVALL,secs				; format is BCD!
+	movff	RTCVALH,mins				; format is BCD!
+	banksel	isr_backup					; Back to Bank0 ISR data
+
+	; Convert BCD to DEC and set registers
+	movff	mins, isr1_temp
+	rcall	isr_rtcc_convert			; Converts to dec with result in WREG
+	movff	WREG,mins
+	movff	secs, isr1_temp
+	rcall	isr_rtcc_convert			; Converts to dec with result in WREG
+	movff	WREG,secs
+	movff	hours, isr1_temp
+	rcall	isr_rtcc_convert			; Converts to dec with result in WREG
+	movff	WREG,hours
+	movff	month, isr1_temp
+	rcall	isr_rtcc_convert			; Converts to dec with result in WREG
+	movff	WREG,month
+	movff	day, isr1_temp
+	rcall	isr_rtcc_convert			; Converts to dec with result in WREG
+	movff	WREG,day
+	movff	year, isr1_temp
+	rcall	isr_rtcc_convert			; Converts to dec with result in WREG
+	movff	WREG,year
 
 	; Place once/second tasks for ISR here (Be sure of the right bank!)
-		banksel common                  ; flag1 is in Bank1
-		btfss	sleepmode				; in Sleepmode?
-		call	get_ambient_level		; No, get ambient light level and set max_CCPR1L
+	banksel	common						; flag1 is in Bank1
+	btfss	sleepmode					; in Sleepmode?
+	call	get_ambient_level			; No, get ambient light level and set max_CCPR1L
 
-		rcall	isr_battery_gauge		; Add amount of battery consumption to battery_gauge:6
+	rcall	isr_battery_gauge			; Add amount of battery consumption to battery_gauge:6
 
-		; update uptime
-		banksel	uptime+0
-		incf	uptime+0,F
-		movlw	.0
-		addwfc	uptime+1,F
-		addwfc	uptime+2,F
-		addwfc	uptime+3,F
-		
-		banksel common                  ; flag1 is in Bank1
-		bsf		onesecupdate		; A new second has begun
-		btfsc	divemode			; in divemode?
-		rcall	isr_divemode_1sec		; Yes, do some divemode stuff in bank common
+	; update uptime
+	banksel	uptime+0
+	incf	uptime+0,F
+	movlw	.0
+	addwfc	uptime+1,F
+	addwfc	uptime+2,F
+	addwfc	uptime+3,F
+
+	banksel	common						; flag1 is in Bank1
+	bsf		onesecupdate				; A new second has begun
+	btfsc	divemode					; in divemode?
+	rcall	isr_divemode_1sec			; Yes, do some divemode stuff in bank common
 
-		btfss	divemode			; in divemode?
-		rcall	isr_update_lastdive_time	; No, update the lastdive timer
+	btfss	divemode					; in divemode?
+	rcall	isr_update_lastdive_time	; No, update the lastdive timer
 
-		tstfsz  secs                    ; Secs == 0 ?
-		return                          ; No, Done.
+	tstfsz	secs						; secs == 0 ?
+	return								; No, Done.
 
-		bsf		oneminupdate			; A new minute has begun
+	bsf		oneminupdate				; A new minute has begun
 
-		btfss	divemode				; In Divemode?
-		rcall	check_nofly_desat_time	; No, so reduce NoFly and Desat and increase interval
+	btfss	divemode					; In Divemode?
+	rcall	check_nofly_desat_time		; No, so increase interval
 
-        ; Check if a new hour has just begun
-		tstfsz	mins					; mins=0?
-		bra		isr_rtcc2				; No
-		bsf		onehourupdate			; Yes, set flag
-		
+	; Check if a new hour has just begun
+	tstfsz	mins						; mins == 0?
+	bra		isr_rtcc2					; No
+	bsf		onehourupdate				; Yes, set flag
+
 isr_rtcc2:
-		banksel isr_backup              ; Back to Bank0 ISR data
-		return							; Done.
+	banksel	isr_backup					; Back to Bank0 ISR data
+	return								; Done.
 
-isr_update_lastdive_time:
-    		; update uptime
-		banksel	lastdive_time+0
-		incf	lastdive_time+0,F
-		movlw	.0
-		addwfc	lastdive_time+1,F
-		addwfc	lastdive_time+2,F
-		addwfc	lastdive_time+3,F
-		banksel	common
-		return
-    
-isr_battery_gauge:	
-	    banksel isr_backup              ; Bank0 ISR data
-		movlw	current_sleepmode		; 100ľA/3600 -> nAs	(Sleepmode current)
-		movwf	isr1_temp				; Store value (low byte)
-		clrf	isr2_temp				; High byte
-		
-		banksel common                  ; flag1 is in Bank1
-		btfss	sleepmode				; in Sleepmode?
-		rcall	isr_battery_gauge2		; No, compute current consumtion value into isr1_temp and isr2_temp
+isr_update_lastdive_time:				; called every second when not in divemode
+	; update uptime
+	banksel	lastdive_time+0
+	incf	lastdive_time+0,F
+	movlw	.0
+	addwfc	lastdive_time+1,F
+	addwfc	lastdive_time+2,F
+	addwfc	lastdive_time+3,F
+	banksel	common
+	return
+
+isr_battery_gauge:
+	banksel	isr_backup					; Bank0 ISR data
+	movlw	current_sleepmode			; 100ľA/3600 -> nAs	(Sleepmode current)
+	movwf	isr1_temp					; Store value (low byte)
+	clrf	isr2_temp					; High byte
 
-	    banksel isr_backup              ; Bank0 ISR data
-		movf	isr1_temp,W				; 48Bit add of isr1_temp and isr2_temp into battery_gauge:6
-		addwf	battery_gauge+0,F
-		movf	isr2_temp,W
-		addwfc	battery_gauge+1,F
-		movlw	.0
-		addwfc	battery_gauge+2,F
-		addwfc	battery_gauge+3,F
-		addwfc	battery_gauge+4,F
-		addwfc	battery_gauge+5,F
-		return
-		
+	banksel	common						; flag1 is in Bank1
+	btfss	sleepmode					; in Sleepmode?
+	rcall	isr_battery_gauge2			; No, compute current consumption value into isr1_temp and isr2_temp
+
+	banksel	isr_backup					; Bank0 ISR data
+	movf	isr1_temp,W					; 48Bit add of isr1_temp and isr2_temp into battery_gauge:6
+	addwf	battery_gauge+0,F
+	movf	isr2_temp,W
+	addwfc	battery_gauge+1,F
+	movlw	.0
+	addwfc	battery_gauge+2,F
+	addwfc	battery_gauge+3,F
+	addwfc	battery_gauge+4,F
+	addwfc	battery_gauge+5,F
+	return
+
 isr_battery_gauge2:
-	; set consumtion rate in nAs for an one second interval
+	; set consumption rate in nAs for an one second interval
 	; Example:
-	; movlw	LOW		.55556			; 0,2A/3600*1e9s = nAs
-	; movwf	isr1_temp				; Low byte
-	; movlw	HIGH	.55556			; 0,2A/3600*1e9s = nAs
-	; movwf	isr2_temp				; High byte
+	; movlw	LOW  .55556					; 0,2A/3600*1e9s = nAs
+	; movwf	isr1_temp					; Low byte
+	; movlw	HIGH .55556					; 0,2A/3600*1e9s = nAs
+	; movwf	isr2_temp					; High byte
 
 	; Current consumption for LED backlight is 47*CCPR1L+272
-		movf	CCPR1L,W
-		mullw	current_backlight_multi
-		movlw	LOW		current_backlight_offset
-		addwf	PRODL,F
-		movlw	HIGH	current_backlight_offset
-		addwfc	PRODH,F
-		movff	PRODL,isr1_temp
-		movff	PRODH,isr2_temp			; isr1_temp and isr2_temp hold value for backlight
+	movf	CCPR1L,W
+	mullw	current_backlight_multi
+	movlw	LOW  current_backlight_offset
+	addwf	PRODL,F
+	movlw	HIGH current_backlight_offset
+	addwfc	PRODH,F
+	movff	PRODL,isr1_temp
+	movff	PRODH,isr2_temp				; isr1_temp and isr2_temp hold value for backlight
 
 	; Add current for CPU and GPU 
 	; speed_setting=1: ECO (3,1mA -> 861nAs), =2: NORMAL (5,50mA -> 1528nAs) or =3: FASTEST (8,04mA -> 2233nAs)
-        banksel isr_backup              ; Bank0 ISR data
-		movlw	.1
-		cpfseq	speed_setting
-		bra		isr_battery_gauge3
-		movlw	LOW		current_speed_eco
-		addwf	isr1_temp,F
-		movlw	HIGH	current_speed_eco
-		addwfc	isr2_temp,F
-		bra		isr_battery_gauge5
+	banksel	isr_backup					; Bank0 ISR data
+	movlw	.1
+	cpfseq	speed_setting
+	bra		isr_battery_gauge3
+	movlw	LOW  current_speed_eco
+	addwf	isr1_temp,F
+	movlw	HIGH current_speed_eco
+	addwfc	isr2_temp,F
+	bra		isr_battery_gauge5
 isr_battery_gauge3:
-		movlw	.2
-		cpfseq	speed_setting
-		bra		isr_battery_gauge4
-		movlw	LOW		current_speed_normal
-		addwf	isr1_temp,F
-		movlw	HIGH	current_speed_normal
-		addwfc	isr2_temp,F
-		bra		isr_battery_gauge5
+	movlw	.2
+	cpfseq	speed_setting
+	bra		isr_battery_gauge4
+	movlw	LOW  current_speed_normal
+	addwf	isr1_temp,F
+	movlw	HIGH current_speed_normal
+	addwfc	isr2_temp,F
+	bra		isr_battery_gauge5
 isr_battery_gauge4:
-		movlw	LOW		current_speed_fastest
-		addwf	isr1_temp,F
-		movlw	HIGH	current_speed_fastest
-		addwfc	isr2_temp,F
+	movlw	LOW  current_speed_fastest
+	addwf	isr1_temp,F
+	movlw	HIGH current_speed_fastest
+	addwfc	isr2_temp,F
 isr_battery_gauge5:
-    ; Add current if IR reciever is on
-        btfss   ir_power                    ; IR enabled?
-        bra     isr_battery_gauge6          ; no
-		movlw	LOW		current_ir_reciever
-		addwf	isr1_temp,F
-		movlw	HIGH	current_ir_reciever
-		addwfc	isr2_temp,F
+	; Add current if IR receiver is on
+	btfss	ir_power					; IR enabled?
+	bra		isr_battery_gauge6			; no
+	movlw	LOW  current_ir_receiver
+	addwf	isr1_temp,F
+	movlw	HIGH current_ir_receiver
+	addwfc	isr2_temp,F
 isr_battery_gauge6:
-    ; Add current for compass/accelerometer
-        btfss   compass_enabled             ; compass active?
-        bra     isr_battery_gauge7          ; no
-		movlw	LOW		current_compass
-		addwf	isr1_temp,F
-		movlw	HIGH	current_compass
-		addwfc	isr2_temp,F
+	; Add current for compass/accelerometer
+	btfss	compass_enabled				; compass active?
+	bra		isr_battery_gauge7			; no
+	movlw	LOW  current_compass
+	addwf	isr1_temp,F
+	movlw	HIGH current_compass
+	addwfc	isr2_temp,F
 isr_battery_gauge7:
-		return
+	return
 
 isr_divemode_1sec:
-		incf		samplesecs,F			; "samplingrate" diving seconds done 
-		decf		samplesecs_value,W		; holds "samplingrate" value  (minus 1 into WREG)
-		cpfsgt		samplesecs				; Done?
-		bra			isr_divemode_1sec2		; no
+	incf	samplesecs,F				; "samplingrate" diving seconds done 
+	decf	samplesecs_value,W			; holds "samplingrate" value (minus 1 into WREG)
+	cpfsgt	samplesecs					; Done?
+	bra		isr_divemode_1sec2			; no
 
-		clrf		samplesecs				; clear counter...
-		bsf			store_sample			; ...and set bit for profile storage
+	clrf	samplesecs					; clear counter...
+	bsf		store_sample				; ...and set bit for profile storage
 isr_divemode_1sec2:
-; Increase re-setable average depth divetime counter
-		infsnz      average_divesecs+0,F	; increase stopwatch registers
-		incf		average_divesecs+1,F	; increase stopwatch registers
-; Increase total divetime (Regardless of start_dive_threshold)
-		infsnz		total_divetime_seconds+0,F
-		incf        total_divetime_seconds+1,F	; Total dive time (Regardless of start_dive_threshold)
-	
-		btfss		divemode2				; displayed divetime is running?
-		return								; No (e.g. too shallow)
+	; Increase re-setable average depth divetime counter
+	infsnz	average_divesecs+0,F		; increase stopwatch registers
+	incf	average_divesecs+1,F		; increase stopwatch registers
+	; Increase total divetime (Regardless of start_dive_threshold)
+	infsnz	total_divetime_seconds+0,F
+	incf	total_divetime_seconds+1,F	; Total dive time (Regardless of start_dive_threshold)
+
+	btfss	divemode2					; displayed divetime is running?
+	return								; No (e.g. too shallow)
 
-; increase divetime registers (Displayed dive time)
-		incf		divesecs,F				
-		movlw		d'59'
-		cpfsgt		divesecs
-		bra			isr_divemode_1sec2a
+	; increase divetime registers (Displayed dive time)
+	incf	divesecs,F
+	movlw	d'59'
+	cpfsgt	divesecs
+	bra		isr_divemode_1sec2a
+
+	clrf	divesecs
+	bsf		realdive					; this bit is always set (again) if the dive is longer then one minute
+	infsnz	divemins+0,F
+	incf	divemins+1,F				; increase divemins
 
-		clrf		divesecs
-		bsf			realdive				; this bit is always set (again) if the dive is longer then one minute
-		infsnz		divemins+0,F
-        incf		divemins+1,F			; increase divemins
-		
-isr_divemode_1sec2a:	
-		btfss		FLAG_apnoe_mode			; Are we in Apnoe mode?
-		return								; No
-		
-		incf		apnoe_secs,F			; increase descent registers
-		movlw		d'59'
-		cpfsgt		apnoe_secs				; full minute?
-		return								; No
-		clrf		apnoe_secs
-		incf		apnoe_mins,F			; increase descent mins
-		return
+isr_divemode_1sec2a:
+	btfss	FLAG_apnoe_mode				; Are we in Apnoe mode?
+	return								; No
+
+	incf	apnoe_secs,F				; increase descent registers
+	movlw	d'59'
+	cpfsgt	apnoe_secs					; full minute?
+	return								; No
+	clrf	apnoe_secs
+	incf	apnoe_mins,F				; increase descent mins
+	return
 
 ;=============================================================================
-; BCD to Binary convertion.
+; BCD to Binary conversion.
 ; Input: isr1_temp = Value in BCD
 ; Output WREG = value in binary.
 isr_rtcc_convert:
-        swapf   isr1_temp, W
-        andlw   0x0F           		  	; W= tens
-        rlncf   WREG, W         		; W= 2*tens
-        subwf   isr1_temp, F          	; 16*tens + ones - 2*tens
-        subwf   isr1_temp, F          	; 14*tens + ones - 2*tens
-        subwf   isr1_temp, W          	; 12*tens + ones - 2*tens
-		return
+	swapf	isr1_temp, W
+	andlw	0x0F						; W = tens
+	rlncf	WREG, W						; W = 2*tens
+	subwf	isr1_temp, F				; 16*tens + ones - 2*tens
+	subwf	isr1_temp, F				; 14*tens + ones - 2*tens
+	subwf	isr1_temp, W				; 12*tens + ones - 2*tens
+	return
 
 ;=============================================================================
 
-isr_switch_right:						; 
-        bcf     INTCON,INT0IE           ; Disable INT0
-		banksel common                  ; flag1 is in Bank1
-        btfss   flip_screen             ; 180° flipped?
-		bsf		switch_right            ; Set flag
-        btfsc   flip_screen             ; 180° flipped?
-		bsf		switch_left				; Set flag
-        bra     isr_switch_common       ; Continue...
+isr_switch_right:
+	bcf		INTCON,INT0IE				; Disable INT0
+	banksel	common						; flag1 is in Bank1
+	btfss	flip_screen					; 180° flipped?
+	bsf		switch_right				; Set flag
+	btfsc	flip_screen					; 180° flipped?
+	bsf		switch_left					; Set flag
+	bra		isr_switch_common			; Continue...
 
-isr_switch_left:						; 
-        bcf     INTCON3,INT1IE          ; Disable INT1
-		banksel common                  ; flag1 is in Bank1
-        btfss   flip_screen             ; 180° flipped?
-		bsf		switch_left				; Set flag
-        btfsc   flip_screen             ; 180° flipped?
-		bsf		switch_right            ; Set flag
+isr_switch_left:
+	bcf		INTCON3,INT1IE				; Disable INT1
+	banksel	common						; flag1 is in Bank1
+	btfss	flip_screen					; 180° flipped?
+	bsf		switch_left					; Set flag
+	btfsc	flip_screen					; 180° flipped?
+	bsf		switch_right				; Set flag
 isr_switch_common:
-        ; load timer1 for first press
-        clrf    TMR1L
-        movlw   TMR1H_VALUE_FIRST       ; in steps of 7,8125ms
-        movwf   TMR1H
-        bsf     T1CON,TMR1ON            ; Start Timer 1
-		banksel isr_backup              ; Select Bank0 for ISR data.
-		bcf		INTCON3,INT1IF			; Clear flag
-		bcf		INTCON,INT0IF			; Clear flag
-		return
+	; load timer1 for first press
+	clrf	TMR1L
+	movlw	TMR1H_VALUE_FIRST			; in steps of 7,8125ms
+	movwf	TMR1H
+	bsf		T1CON,TMR1ON				; Start Timer 1
+	banksel	isr_backup					; Select Bank0 for ISR data.
+	bcf		INTCON3,INT1IF				; Clear flag
+	bcf		INTCON,INT0IF				; Clear flag
+	return
 
 timer1int:
-   	bcf	PIR1,TMR1IF             ; Clear flag
-        banksel common                  ; flag1 is in Bank1
-	bcf	INTCON,INT0IF		; Clear flag
-	bcf	INTCON3,INT1IF		; Clear flag
+	bcf		PIR1,TMR1IF					; Clear flag
+	banksel	common						; flag1 is in Bank1
+	bcf		INTCON,INT0IF				; Clear flag
+	bcf		INTCON3,INT1IF				; Clear flag
 	; digital
-        btfss   switch_left1            ; Left button hold-down?
-        bra     timer1int_left          ; Yes
-        btfss   switch_right2           ; Right button hold-down?
-        bra     timer1int_right         ; Yes
-	
+	btfss	switch_left1				; Left button hold-down?
+	bra		timer1int_left				; Yes
+	btfss	switch_right2				; Right button hold-down?
+	bra		timer1int_right				; Yes
+
 	; Analog
-	btfsc	analog_sw2_pressed      ; Left button hold-down?
-	bra     timer1int_left          ; Yes
-	btfsc	analog_sw1_pressed      ; Right button hold-down?
-	bra     timer1int_right         ; Yes
-	
-        ; No button hold-down, stop Timer 1
-        bcf     T1CON,TMR1ON            ; Stop Timer 1
-        bsf     INTCON,INT0IE           ; Enable INT0
-        bsf     INTCON3,INT1IE          ; Enable INT1
+	btfsc	analog_sw2_pressed			; Left button hold-down?
+	bra		timer1int_left				; Yes
+	btfsc	analog_sw1_pressed			; Right button hold-down?
+	bra		timer1int_right				; Yes
+
+	; No button hold-down, stop Timer 1
+	bcf		T1CON,TMR1ON				; Stop Timer 1
+	bsf		INTCON,INT0IE				; Enable INT0
+	bsf		INTCON3,INT1IE				; Enable INT1
 	return
 
 timer1int_left:
-        btfss   flip_screen             ; 180° flipped?
-		bsf		switch_left				; (Re-)Set flag
-        btfsc   flip_screen             ; 180° flipped?
-		bsf		switch_right            ; (Re-)Set flag
-        bra     timer1int_common        ; Continue
+	btfss	flip_screen					; 180° flipped?
+	bsf		switch_left					; (Re-)Set flag
+	btfsc	flip_screen					; 180° flipped?
+	bsf		switch_right				; (Re-)Set flag
+	bra		timer1int_common			; Continue
 timer1int_right:
-        btfss   flip_screen             ; 180° flipped?
-		bsf		switch_right            ; Set flag
-        btfsc   flip_screen             ; 180° flipped?
-		bsf		switch_left				; Set flag
+	btfss	flip_screen					; 180° flipped?
+	bsf		switch_right				; Set flag
+	btfsc	flip_screen					; 180° flipped?
+	bsf		switch_left					; Set flag
 timer1int_common:
-        ; load timer1 for next press
-        clrf    TMR1L
-        movlw   TMR1H_VALUE_CONT        ; Surface mode
-        btfsc   divemode
-        movlw   TMR1H_VALUE_CONT_DIVE   ; Dive mode
-        movwf   TMR1H
-        return                          ; Return from timer1int with timer1 kept running
+	; load timer1 for next press
+	clrf	TMR1L
+	movlw	TMR1H_VALUE_CONT			; Surface mode
+	btfsc	divemode
+	movlw	TMR1H_VALUE_CONT_DIVE		; Dive mode
+	movwf	TMR1H
+	return								; Return from timer1int with timer1 kept running
 
 ;=============================================================================
 
-check_nofly_desat_time:
-
-	; DELETE - no-fly time is now re-computed every second	## no fly
-		; ; REPLACE	## no fly
-    	; ; movf    nofly_time+0,W            ; Is nofly null ?
-    	; ; iorwf   nofly_time+1,W
-		; ; BY
-		; banksel	int_O_nofly_time
-		; movf    int_O_nofly_time+0,W		; Is nofly null ?
-		; iorwf   int_O_nofly_time+1,W
-		
-    	; bz     	check_nofly_desat_time2     ; yes...
-
-		; movlw	d'1'
-		; ; REPLACE	## no fly
-		; ; subwf	nofly_time+0,F
-		; ; BY
-		; subwf	int_O_nofly_time+0,F
-		
-		; movlw	d'0'
-
-		; ; REPLACE	## no fly
-		; ; subwfb	nofly_time+1,F          ; reduce by one
-		; ; BY
-		; subwfb	int_O_nofly_time+1,F		; reduce by one
+check_nofly_desat_time:					; called every minute when not in divemode
+	banksel	int_O_desaturation_time
+	movf	int_O_desaturation_time+0,W	; Is Desat null ?
+	iorwf	int_O_desaturation_time+1,W
+	bz		check_nofly_desat_time_1	; yes...
 
-check_nofly_desat_time2:
-		; REPLACE
-    	; movf    desaturation_time+0,W     ; Is Desat null ?
-    	; iorwf   desaturation_time+1,W
-		; BY
-		banksel	int_O_desaturation_time
-		movf    int_O_desaturation_time+0,W	; Is Desat null ?
-		iorwf   int_O_desaturation_time+1,W
-		
-    	bz     	check_nofly_desat_time3		; yes...
-
-	; DELETE - desat-time is now re-computed every second	## no fly
-		; movlw	d'1'
-		; ; REPLACE	## no fly
-		; ; subwf	desaturation_time+0,F
-		; ; BY
-		; subwf	int_O_desaturation_time+0,F
-		
-		; movlw	d'0'
-		
-		; ; REPLACE	## no fly
-		; ; subwfb	desaturation_time+1,F	   	; reduce by one...
-		; ; by
-		; subwfb	int_O_desaturation_time+1,F		; reduce by one...
-		banksel	common
+	; int_O_desaturation_time is only computed while in start, surface mode, menue_tree or ghostwriter.
+	; So the ISR may clock surface_interval past the actual surface interval time. But TFT_surface_lastdive
+	; will check int_O_desaturation_time and in case int_O_desaturation_time is zero it will not show
+	; surface_interval but lastdive_time instead. So this glitch remains invisible.
 
 	; Increase surface interval timer
-        infsnz  surface_interval+0,F
-        incf    surface_interval+1,F
-		return								; Done
+	banksel	common
+	infsnz	surface_interval+0,F
+	incf	surface_interval+1,F
+	return								; Done
 
-check_nofly_desat_time3:
-		; NEW	## no fly
-		banksel	common
-		
-		clrf	surface_interval+0
-		clrf	surface_interval+1			; Clear surface interval timer
-		return								; Done.
+check_nofly_desat_time_1:
+	banksel	common
+	clrf	surface_interval+0
+	clrf	surface_interval+1			; Clear surface interval timer
+	return								; Done.
 
 ;=============================================================================
 
 isr_restore_clock:
-		banksel	isr_backup
-		movlw	d'1'
-		cpfseq	speed_setting
-		bra		isr_restore_speed2
-	; Reset to eco	
-		movlw	b'00000000'			
-		movwf	OSCTUNE				; 4x PLL Disable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
-		movlw	b'00110010'
-		movwf	OSCCON				; 1MHz INTOSC
-		movlw	T2CON_ECO
-		movwf	T2CON
-		bra		isr_restore_exit
+	banksel	isr_backup
+	movlw	d'1'
+	cpfseq	speed_setting
+	bra		isr_restore_speed2
+	; Reset to eco
+	movlw	b'00000000'
+	movwf	OSCTUNE						; 4x PLL Disable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
+	movlw	b'00110010'
+	movwf	OSCCON						; 1MHz INTOSC
+	movlw	T2CON_ECO
+	movwf	T2CON
+	bra		isr_restore_exit
 isr_restore_speed2:
-		movlw	d'2'
-		cpfseq	speed_setting
-		bra		isr_restore_speed3
+	movlw	d'2'
+	cpfseq	speed_setting
+	bra		isr_restore_speed3
 	; Reset to normal
-		movlw	b'01110010'
-		movwf	OSCCON				; 16MHz INTOSC
-		movlw	b'00000000'
-		movwf	OSCTUNE				; 4x PLL Disable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
-		movlw	T2CON_NORMAL
-		movwf	T2CON
-		bra		isr_restore_exit
+	movlw	b'01110010'
+	movwf	OSCCON						; 16MHz INTOSC
+	movlw	b'00000000'
+	movwf	OSCTUNE						; 4x PLL Disable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
+	movlw	T2CON_NORMAL
+	movwf	T2CON
+	bra		isr_restore_exit
 
 isr_restore_speed3:
 	; Reset to fastest
-		movlw	b'01110010'			; 16MHz INTOSC
-		movwf	OSCCON				
-		movlw	b'01000000'			
-		movwf	OSCTUNE				; 4x PLL Enable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
-		movlw	T2CON_FASTEST
-		movwf	T2CON
-;		bra		isr_restore_exit
+	movlw	b'01110010'					; 16MHz INTOSC
+	movwf	OSCCON
+	movlw	b'01000000'
+	movwf	OSCTUNE						; 4x PLL Enable (Bit6) - only works with 8 or 16MHz (=32 or 64MHz)
+	movlw	T2CON_FASTEST
+	movwf	T2CON
+	;bra	isr_restore_exit
+
 isr_restore_exit:
-		btfss	OSCCON,HFIOFS
-		bra		isr_restore_exit	; loop until PLL is stable
-		return
+	btfss	OSCCON,HFIOFS
+	bra		isr_restore_exit			; loop until PLL is stable
+	return
 
 
-restore_flash:      ; Restore first flash page from eeprom
-        banksel     common
-    	; Start address in internal flash
-    	movlw   0x00
-        movwf   TBLPTRL
-        movwf   TBLPTRH
-        movwf   TBLPTRU
+restore_flash:							; Restore first flash page from eeprom
+	banksel	common
+	; Start address in internal flash
+	movlw	0x00
+	movwf	TBLPTRL
+	movwf	TBLPTRH
+	movwf	TBLPTRU
 
-    	movlw	b'10010100'		; Setup erase
-    	rcall 	Write			; Write!
+	movlw	b'10010100'					; Setup erase
+	rcall	Write						; Write!
 
-        movlw	.128
-        movwf	lo              ; Byte counter
-        clrf    EEADR
-        movlw   .3
-        movwf   EEADRH          ; Setup backup address
+	movlw	.128
+	movwf	lo							; Byte counter
+	clrf	EEADR
+	movlw	.3
+	movwf	EEADRH						; Setup backup address
 
-        TBLRD*-					; Dummy read to be in 128 byte block
+	TBLRD*-								; Dummy read to be in 128 byte block
 restore_flash_loop:
-        call    read_eeprom
-        incf    EEADR,F
-        movff	EEDATA,TABLAT	; put 1 byte
-        tblwt+*					; Table Write with Pre-Increment
-        decfsz 	lo,F            ; 128byte done?
-        bra 	restore_flash_loop ; No
+	call	read_eeprom
+	incf	EEADR,F
+	movff	EEDATA,TABLAT				; put 1 byte
+	tblwt+*								; Table Write with Pre-Increment
+	decfsz	lo,F						; 128byte done?
+	bra		restore_flash_loop			; No
 
-    	movlw	b'10000100'		; Setup writes
-    	rcall 	Write			; Write!
+	movlw	b'10000100'					; Setup writes
+	rcall	Write						; Write!
 
-        reset           ; Done, reset CPU
+	reset								; Done, reset CPU
 
 Write:
-        movwf 	EECON1				; Type of memory to write in
-        movlw 	0x55
-        movwf 	EECON2
-        movlw 	0xAA
-        movwf 	EECON2
-        bsf 	EECON1,WR			; Write
-        nop
-        nop		
-        return
+	movwf	EECON1						; Type of memory to write in
+	movlw	0x55
+	movwf	EECON2
+	movlw	0xAA
+	movwf	EECON2
+	bsf		EECON1,WR					; Write
+	nop
+	nop
+	return
 
-
-		END
+	END