diff src/comm.asm @ 582:b455b31ce022

work on 2.97 stable
author heinrichsweikamp
date Mon, 26 Feb 2018 16:40:28 +0100
parents 8b7ea27ea1fa
children c31e0292bc92
line wrap: on
line diff
--- a/src/comm.asm	Sun Feb 25 18:25:38 2018 +0100
+++ b/src/comm.asm	Mon Feb 26 16:40:28 2018 +0100
@@ -1,6 +1,6 @@
 ;=============================================================================
 ;
-;   File comm.asm									REFACTORED VERSION 2.94
+;   File comm.asm									REFACTORED VERSION 2.98
 ;
 ;   RS232 via USB
 ;
@@ -23,100 +23,104 @@
 #include "adc_lightsensor.inc"
 #include "shared_definitions.h"
 
-	extern  restart,option_reset_all
-    extern  option_check_all, gaslist_cleanup_list, get_first_gas_to_WREG, get_first_dil_to_WREG
-    extern  vault_decodata_into_eeprom
-
-#DEFINE timeout_comm_pre_mode   .240        ; Pre-loop
-#DEFINE timeout_comm_mode       .120        ; Download mode
-#DEFINE timeout_service_mode    .120        ; Service mode
-
-#DEFINE	comm_title_row		.0
-#DEFINE	comm_title_column_usb	.50
-#DEFINE	comm_title_column_ble	.25
-
-#DEFINE	comm_string_row	.30
-#DEFINE	comm_string_column	.40
+	extern	restart
+	extern	option_reset_all
+	extern	option_check_all
+	extern	gaslist_cleanup_list
+	extern	get_first_gas_to_WREG
+	extern	get_first_dil_to_WREG
+	extern	vault_decodata_into_eeprom
+	extern	color_image
 
 
-#DEFINE	comm_status1_row		.70
-#DEFINE	comm_status1_column	.10
-#DEFINE	comm_status2_row		.100
-#DEFINE	comm_status2_column	comm_status1_column
-#DEFINE	comm_status3_row		.130
-#DEFINE	comm_status3_column	comm_status1_column
+#DEFINE timeout_comm_pre_mode	.240	; Pre-loop
+#DEFINE timeout_comm_mode		.120	; Download mode
+#DEFINE timeout_service_mode	.120	; Service mode
+
+#DEFINE comm_title_row			.0
+#DEFINE comm_title_column_usb	.50
+#DEFINE comm_title_column_ble	.25
 
-#DEFINE	comm_warning_row		.160
-#DEFINE	comm_warning_column     .65
+#DEFINE comm_string_row			.30
+#DEFINE comm_string_column		.40
+
+#DEFINE comm_status1_row		.70
+#DEFINE comm_status1_column		.10
+#DEFINE comm_status2_row		.100
+#DEFINE comm_status2_column		comm_status1_column
+#DEFINE comm_status3_row		.130
+#DEFINE comm_status3_column		comm_status1_column
+
+#DEFINE comm_warning_row		.160
+#DEFINE comm_warning_column		.65
 
 comm code
 
 	; test for comm
 	global	comm_mode, comm_mode0
 comm_mode:
-    WAITMS d'1'
-    btfss   vusb_in                     ; USB plugged in?
-    return                              ; No, it was only a glitch
-    WAITMS d'1'
-    btfss   vusb_in                     ; USB plugged in?
-    return                              ; No, it was only a glitch
+	WAITMS	d'1'
+	btfss	vusb_in						; USB plugged in?
+	return								; No, it was only a glitch
+	WAITMS	d'1'
+	btfss	vusb_in						; USB plugged in?
+	return								; No, it was only a glitch
 comm_mode0:
-    call    TFT_ClearScreen
-    WIN_COLOR   color_greenish
-    btfsc   ble_available               ; ble available
-    bra     comm_mode0_ble
-    WIN_SMALL	comm_title_column_usb, comm_title_row
-	STRCPY_TEXT_PRINT	tUsbTitle		; USB Mode
-    bra     comm_mode0_common
+	call	TFT_ClearScreen
+	WIN_COLOR color_greenish
+	btfsc	ble_available				; ble available
+	bra		comm_mode0_ble
+	WIN_SMALL comm_title_column_usb, comm_title_row
+	STRCPY_TEXT_PRINT tUsbTitle			; USB Mode
+	bra		comm_mode0_common
 comm_mode0_ble:
-    WIN_SMALL	comm_title_column_ble, comm_title_row
-    STRCPY_TEXT_PRINT	tBleTitle		; BLE Mode
+	WIN_SMALL comm_title_column_ble, comm_title_row
+	STRCPY_TEXT_PRINT tBleTitle			; BLE Mode
 comm_mode0_common:
-    call	TFT_standard_color
-    WIN_TOP     .10
-    WIN_LEFT    .1
-    movlw   0xDE
-    movwf   TBLPTRL
-    movlw   0xEE
-    movwf   TBLPTRH
-    movlw   0x01
-    movwf   TBLPTRU
-    extern  color_image
-    call    color_image                 ; Show usb logo
-	WIN_SMALL	comm_status1_column, comm_status1_row
-	STRCPY_TEXT_PRINT	tUsbStarting	; Starting...
-    call	TFT_serial                  ; Show serial and firmware version
-    bcf     enable_screen_dumps         ; =1: Ignore vin_usb, wait for "l" command (Screen dump)
+	call	TFT_standard_color
+	WIN_TOP  .10
+	WIN_LEFT .1
+	movlw	0xDE
+	movwf	TBLPTRL
+	movlw	0xEE
+	movwf	TBLPTRH
+	movlw	0x01
+	movwf	TBLPTRU
+	call	color_image					; Show USB logo
+	WIN_SMALL comm_status1_column,comm_status1_row
+	STRCPY_TEXT_PRINT tUsbStarting		; Starting...
+	call	TFT_serial					; Show serial and firmware version
+	bcf		enable_screen_dumps			; =1: Ignore vin_usb, wait for "l" command (Screen dump)
 	bcf		switch_right
-    bcf     comm_service_enabled
-    bsf     menubit
-    bcf     battery_removed_in_usb      ; =1: The battery has been removed in USB
-    movlw   timeout_comm_pre_mode
-	movwf	timeout_counter
-	WIN_SMALL	comm_status1_column+.80, comm_status1_row
-	STRCPY_TEXT_PRINT	tUsbStartDone	; Done...
+	bcf		comm_service_enabled
+	bsf		menubit
+	bcf		battery_removed_in_usb		; =1: The battery has been removed in USB (properly not used for anything useful)
+	movlw	timeout_comm_pre_mode
+	movwf	comm_timeout
+	WIN_SMALL comm_status1_column+.80,comm_status1_row
+	STRCPY_TEXT_PRINT tUsbStartDone		; Done...
 	call	enable_rs232				; Also sets to speed_normal ...
 comm_mode1:
 	bcf		onesecupdate
 	bcf		LEDr
-	dcfsnz 	timeout_counter,F
-	bra		comm_service_exit           ; Timeout -> Exit
+	dcfsnz	comm_timeout,F
+	bra		comm_service_exit			; Timeout -> Exit
 comm_mode2:
 	rcall	comm_write_get_byte
 
 	movlw	0xAA						; start byte=0xAA?
 	cpfseq	RCREG1
 	bra		comm_mode2a
-	bra		comm_mode2b					; Startbyte for service mode found
+	bra		comm_mode2b					; Start byte for service mode found
 comm_mode2a:
 	movlw	0xBB						; start byte=0xBB?
 	cpfseq	RCREG1
 	bra		comm_mode2c
-	bra		comm_download_mode			; Startbyte for download mode found
+	bra		comm_download_mode			; Start byte for download mode found
 
 comm_mode2c:
-    btfss   vusb_in                     ; USB plugged in?
-    bra     comm_service_exit_nousb_delay   ; Disconnected -> Exit
+	btfss	vusb_in						; USB plugged in?
+	bra		comm_service_exit_nousb_delay	; Disconnected -> Exit
 comm_mode4a:
 	btfsc	switch_right				; Abort with right
 	bra		comm_service_exit
@@ -124,7 +128,7 @@
 	btfsc	onesecupdate
 	bra		comm_mode1
 
-    bra     comm_mode2					; Cycle
+	bra		comm_mode2					; Cycle
 
 comm_mode2b:
 	; Startbyte found
@@ -135,44 +139,44 @@
 
 	rcall	comm_write_get_byte			; first byte
 	rcall	comm_rs232_wait_tx			; Wait for UART
-    movff   RCREG1,TXREG1				; Echo
+	movff	RCREG1,TXREG1				; Echo
 	movlw	UPPER comm_service_key
 	cpfseq	RCREG1
-    bra     comm_mode1					; Wrong -> Restart
+	bra		comm_mode1					; Wrong -> Restart
 	rcall	comm_write_get_byte			; second byte
 	rcall	comm_rs232_wait_tx			; Wait for UART
-    movff   RCREG1,TXREG1				; Echo
+	movff	RCREG1,TXREG1				; Echo
 	movlw	HIGH (comm_service_key & 0xFFFF)
 	cpfseq	RCREG1
-    bra     comm_mode1					; Wrong -> Restart
+	bra		comm_mode1					; Wrong -> Restart
 	rcall	comm_write_get_byte			; third byte
 	rcall	comm_rs232_wait_tx			; Wait for UART
-    movff   RCREG1,TXREG1				; Echo
+	movff	RCREG1,TXREG1				; Echo
 	movlw	LOW comm_service_key
 	cpfseq	RCREG1
-    bra     comm_mode1					; Wrong -> Restart
+	bra		comm_mode1					; Wrong -> Restart
 
 	; Enable comm service mode
-	WIN_SMALL	comm_status2_column, comm_status2_row
-	STRCPY_TEXT_PRINT	tUsbServiceMode	; Service mode enabled
-    bsf     comm_service_enabled        ; Set flag...
-	bra		comm_download_mode0         ; ... but use common routine
+	WIN_SMALL comm_status2_column, comm_status2_row
+	STRCPY_TEXT_PRINT tUsbServiceMode	; Service mode enabled
+	bsf		comm_service_enabled		; Set flag...
+	bra		comm_download_mode0			; ... but use common routine
 
 comm_service_exit_nousb_delay:
-    WAITMS  d'200'
-    btfsc   vusb_in                     ; USB plugged in?
-    bra     comm_mode4a                 ; (Still) connected, return
-comm_service_exit_nousb:                ; Disconnected -> Exit
-	WIN_SMALL	comm_status3_column, comm_status3_row
-	STRCPY_TEXT_PRINT	tUsbClosed      ; Port closed
-    bra     comm_service_exit_common
+	WAITMS	d'200'
+	btfsc	vusb_in						; USB plugged in?
+	bra		comm_mode4a					; (Still) connected, return
+comm_service_exit_nousb:				; Disconnected -> Exit
+	WIN_SMALL comm_status3_column, comm_status3_row
+	STRCPY_TEXT_PRINT tUsbClosed		; Port closed
+	bra		comm_service_exit_common
 
 comm_service_exit:
 	WIN_SMALL	comm_status3_column, comm_status3_row
-	STRCPY_TEXT_PRINT	tUsbExit        ; Exited
+	STRCPY_TEXT_PRINT	tUsbExit		; Exited
 comm_service_exit_common:
 	rcall	comm_rs232_wait_tx			; Wait for UART
-	movlw	0xFF                        ; Reply FF
+	movlw	0xFF						; Reply FF
 	movwf	TXREG1						; Send Answer
 
 	; Wait 1 second
@@ -185,66 +189,66 @@
 	bra		$-2
 
 	call	disable_rs232
-    goto    restart
+	goto	restart
 
 ;-----------------------------------------------------------------------------
 
 comm_service_ll_bootloader:
-    bsf     LEDr
-	WIN_SMALL	comm_status3_column, comm_status3_row
-	STRCPY_TEXT_PRINT	tUsbLlBld               ; Low Level Bootloader started
-    WIN_TOP  	comm_warning_row
-	WIN_LEFT 	comm_warning_column
-    TFT_WRITE_PROM_IMAGE dive_warning2_block 	; Show Warning icon
-    goto    0x1FF0C
+	bsf		LEDr
+	WIN_SMALL comm_status3_column, comm_status3_row
+	STRCPY_TEXT_PRINT tUsbLlBld					; Low Level Bootloader started
+	WIN_TOP  comm_warning_row
+	WIN_LEFT comm_warning_column
+	TFT_WRITE_PROM_IMAGE dive_warning2_block	; Show Warning icon
+	goto	0x1FF0C
 
 ;-----------------------------------------------------------------------------
 ; send firmware to bootloader
 ;
 comm_send_firmware:
-    movlw   0x50							; send echo
-    movwf   TXREG1
-    rcall    comm_rs232_wait_tx				; Wait for UART
+	movlw	0x50							; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx				; Wait for UART
 
-    ; Read 5 bytes into buffer.
+	; Read 5 bytes into buffer.
 	lfsr	FSR2,buffer
 	movlw	.5								; counter
 	movwf	lo
-	movlw   0x55							; 5'ft byte checksum.
-	movwf   hi
+	movlw	0x55							; 5'ft byte checksum.
+	movwf	hi
 
 comm_send_firmware_loop:
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
+	btfsc	rs232_receive_overflow			; Got byte?
 	bra		comm_send_firmware_abort		; No, abort!
 	movf	RCREG1,W
-	movwf   POSTINC2						; Store checksum byte.
-	xorwf   hi,F							; Also xor into checksum
-	rlncf   hi,F							; And rotate it.
+	movwf	POSTINC2						; Store checksum byte.
+	xorwf	hi,F							; Also xor into checksum
+	rlncf	hi,F							; And rotate it.
 	decfsz	lo,F
 	bra		comm_send_firmware_loop
-	
+
 	; Check that 5ft byte checksum's checksum
-	movf    hi,W
-	bnz     comm_send_firmware_failed
+	movf	hi,W
+	bnz		comm_send_firmware_failed
 
-    movlw   0x4C							; send OK
-    movwf   TXREG1
-    rcall    comm_rs232_wait_tx				; Wait for UART
+	movlw	0x4C							; send OK
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx				; Wait for UART
 
 	; Passed: goto second stage verification.
 	; NOTE: Bootloader is Bank0. With buffer at address 0x200.
-    call    vault_decodata_into_eeprom		; Store last deco data (And Time/Date) into EEPROM
-	goto    0x1FDF0							; And pray...
+	call	vault_decodata_into_eeprom		; Store last deco data (And Time/Date) into EEPROM
+	goto	0x1FDF0							; And pray...
 
 comm_send_firmware_failed:
-	WIN_SMALL	comm_string_column, comm_string_row
-    call    TFT_warnings_color
-	STRCPY_PRINT    "Checksum failed"
+	WIN_SMALL comm_string_column, comm_string_row
+	call	TFT_warnings_color
+	STRCPY_PRINT "Checksum failed"
 
 comm_send_firmware_abort:
 
-    movlw   0xFF							; send ABORTED byte.
+	movlw	0xFF							; send ABORTED byte.
 	movwf	TXREG1
 	bra		comm_download_mode0				; Done.
 
@@ -252,139 +256,116 @@
 ; Reset to Dive 1 in logbook
 
 comm_reset_logbook_pointers:
-	clrf    EEADRH                      ; Make sure to select eeprom bank 0
-	clrf	EEDATA
-	write_int_eeprom	.4
-	write_int_eeprom	.5
-	write_int_eeprom	.6
-	write_int_eeprom	.2				; Also, delete total dive counter
-	write_int_eeprom	.3
-    write_int_eeprom    .16
-    write_int_eeprom    .17             ; And the backup counter, too
-	call	ext_flash_erase_logbook		; And complete logbook (!)
-	bra		comm_download_mode0			; Done.
+	call	eeprom_reset_logbook_pointers	; clear logbook pointers in EEPROM...
+	call	ext_flash_erase_logbook			; ... and complete logbook (!)
+	bra		comm_download_mode0				; done
 
 ;-----------------------------------------------------------------------------
-comm_reset_battery_gauge:           ; Resets battery gauge registers
-    call    reset_battery_pointer   ; Resets battery pointer 0x07-0x0C and battery_gauge:5
-    bra		comm_download_mode0		; Done.
+comm_reset_battery_gauge:					; Resets battery gauge registers
+	call	reset_battery_pointer			; Resets battery pointer 0x07-0x0C and battery_gauge:5
+	bra		comm_download_mode0				; Done.
 
 ;-----------------------------------------------------------------------------
 ; erases range in 4kB steps
 
 comm_erase_range4kb:
-    movlw   0x42						; send echo
-    movwf   TXREG1
-    rcall    comm_rs232_wait_tx			; Wait for UART
-
-    bcf     INTCON,GIE	; All interrups off!
-
-    rcall   comm_get_flash_address		; Get three bytes address or return
-    btfsc   rs232_recieve_overflow      ; Got Data?
-    bra     comm_download_mode0         ; No, Done.
-
-    rcall    comm_write_get_byte
-    btfsc   rs232_recieve_overflow      ; Got byte?
-    bra     comm_download_mode0         ; No, Done.
-    movff   RCREG1,lo
-
-    ; Got 4bytes: 3bytes address and 1 bytes (lo) amount of 4kB blocks
-
-comm_erase_range4kb1:
-    call    ext_flash_erase4kB          ; Erase block!
-
-    movlw   0x10
-    addwf   ext_flash_address+1,F
-    movlw   .0
-    addwfc  ext_flash_address+2,F       ; Increase address by .4096, or 0x1000
-    decfsz  lo,F
-    bra     comm_erase_range4kb1        ; Loop until lo=zero
-
-    bra     comm_download_mode0         ; Done (Sends the 4C OK too).
+	movlw	0x42							; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx				; Wait for UART
+	bcf		INTCON,GIE						; All interrupts off!
+	rcall	comm_get_flash_address			; Get three bytes address or return
+	btfsc	rs232_receive_overflow			; Got Data?
+	bra		comm_download_mode0				; No, Done.
+	rcall	comm_write_get_byte
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_download_mode0				; No, Done.
+	movff	RCREG1,lo
+	; Got 4 bytes: 3 bytes address and 1 byte (lo) amount of 4kB blocks
+comm_erase_range4kb_loop:
+	call	ext_flash_erase4kB				; Erase block!
+	movlw	0x10
+	addwf	ext_flash_address+1,F
+	movlw	.0
+	addwfc	ext_flash_address+2,F			; Increase address by .4096, or 0x1000
+	decfsz	lo,F
+	bra		comm_erase_range4kb_loop		; Loop until lo=zero
+	bra		comm_download_mode0				; Done (Sends the 4C OK too).
 
 ;-----------------------------------------------------------------------------
 
-comm_erase_4kb:				; Get 3 bytes start address
-	bcf		INTCON,GIE	; All interrups off!	
+comm_erase_4kb:								; Get 3 bytes start address
+	bcf		INTCON,GIE						; All interrupts off!
 
-	rcall	comm_get_flash_address		; Get three bytes address or return
-	btfsc	rs232_recieve_overflow      ; Got Data?
-	bra		comm_download_mode0         ; No, Done.
+	rcall	comm_get_flash_address			; Get three bytes address or return
+	btfsc	rs232_receive_overflow			; Got Data?
+	bra		comm_download_mode0				; No, Done.
 
-	call	ext_flash_erase4kB          ; Erase one block
-	bra		comm_download_mode0 		; Done.
+	call	ext_flash_erase4kB				; Erase one block
+	bra		comm_download_mode0				; Done.
 
 ;-----------------------------------------------------------------------------
 
-comm_write_range:						; Get 3 bytes start address
-    movlw   0x30                        ; send echo
+comm_write_range:							; Get 3 bytes start address
+	movlw	0x30							; send echo
 	movwf	TXREG1
-	rcall	comm_rs232_wait_tx			; Wait for UART
+	rcall	comm_rs232_wait_tx				; Wait for UART
 
-	bcf		INTCON,GIE                  ; All interrups off!
+	bcf		INTCON,GIE						; All interrupts off!
 
-	rcall	comm_get_flash_address		; Get three bytes address or return
-	btfsc	rs232_recieve_overflow      ; Got Data?
-	bra		comm_download_mode0  		; No, Done.
+	rcall	comm_get_flash_address			; Get three bytes address or return
+	btfsc	rs232_receive_overflow			; Got Data?
+	bra		comm_download_mode0				; No, Done.
 
 comm_write_range_loop:
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow      ; Got byte?
-	bra		comm_download_mode0         ; No, Done (and send OK byte too).
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_download_mode0				; No, Done (and send OK byte too).
 	movf	RCREG1,W
-;	bsf	NCTS	    ; Hold Bluetooth Chip (Requires PC/Android/iOS side to use flow control...)
-	call	ext_flash_byte_write_comms	; write one byte
-;	bcf	NCTS	    ; Release Bluetooth Chip (Requires PC/Android/iOS side to use flow control...)
-	call	incf_ext_flash_address_p1   ; increase address+1
+;	bsf		NCTS							; Hold Bluetooth Chip (Requires PC/Android/iOS side to use flow control...)
+	call	ext_flash_byte_write_comms		; write one byte
+;	bcf		NCTS							; Release Bluetooth Chip (Requires PC/Android/iOS side to use flow control...)
+	call	incf_ext_flash_address_p1		; increase address+1
 	bra	comm_write_range_loop
 
 ;-----------------------------------------------------------------------------
 
-comm_send_range:						; Get 3 bytes start address and 3 bytes amount
-    movlw   0x20                        ; send echo
-    movwf   TXREG1
-	rcall	comm_rs232_wait_tx			; Wait for UART
-
-	bcf		INTCON,GIE					; All interrups off!	
-
-	rcall	comm_get_flash_address		; Get three bytes address or return
-	btfsc	rs232_recieve_overflow		; Got Data?
-	bra		comm_download_mode0			; No, Done.
-
+comm_send_range:							; Get 3 bytes start address and 3 bytes amount
+	movlw	0x20							; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx				; Wait for UART
+	bcf		INTCON,GIE						; All interrupts off!
+	rcall	comm_get_flash_address			; Get three bytes address or return
+	btfsc	rs232_receive_overflow			; Got Data?
+	bra		comm_download_mode0				; No, Done.
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow		; Got byte?
-	bra		comm_download_mode0			; No, Done.
-    movff   RCREG1,up
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_download_mode0				; No, Done.
+	movff	RCREG1,up
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow		; Got byte?
-	bra		comm_download_mode0			; No, Done.
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_download_mode0				; No, Done.
 	movff	RCREG1,hi
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow		; Got byte?
-	bra		comm_download_mode0			; No, Done.
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_download_mode0				; No, Done.
 	movff	RCREG1,lo
-
-    ; If lo==0, we must precondition hi because there are to many bytes send !
-    movf    lo,W    
-    bnz     $+4
-    decf    hi,F
-
-    movlw   0x40
-    cpfslt  up                          ; Abort when up > 0x3F
-    bra		comm_download_mode0			; Abort
-
-    ; 6bytes received, send data
-    ; needs ext_flash_address:3 start address and up:hi:lo amount
-
+	; If lo==0, we must precondition hi because there are to many bytes send !
+	movf	lo,W
+	bnz		$+4
+	decf	hi,F
+	movlw	0x40
+	cpfslt	up								; Abort when up > 0x3F
+	bra		comm_download_mode0				; Abort
+	; 6 bytes received, send data
+	; needs ext_flash_address:3 start address and up:hi:lo amount
 	call	ext_flash_read_block_start
 	movwf	TXREG1
-
-	bra		comm_send_range24			; counter 24bit
+	bra		comm_send_range24				; counter 24bit
 comm_send_range24_loop:
-	call	ext_flash_read_block		; Read one byte
-	movwf	TXREG1						; Start new transmit
+	call	ext_flash_read_block			; Read one byte
+	movwf	TXREG1							; Start new transmit
 comm_send_range24:
-	rcall	comm_rs232_wait_tx			; Wait for UART
+	rcall	comm_rs232_wait_tx				; Wait for UART
 	decfsz	lo,F
 	bra		comm_send_range24_loop
 	decf	hi,F
@@ -396,22 +377,21 @@
 	cpfseq	up
 	bra		comm_send_range24_loop
 	call	ext_flash_read_block_stop
-
-	bra		comm_download_mode0			; Done.
+	bra		comm_download_mode0				; Done.
 
 ;-----------------------------------------------------------------------------
 
 comm_get_flash_address:
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
+	btfsc	rs232_receive_overflow			; Got byte?
 	return									; No, return
 	movff	RCREG1,ext_flash_address+2
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
+	btfsc	rs232_receive_overflow			; Got byte?
 	return									; No, return
 	movff	RCREG1,ext_flash_address+1
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
+	btfsc	rs232_receive_overflow			; Got byte?
 	return									; No, return
 	movff	RCREG1,ext_flash_address+0
 	return
@@ -420,37 +400,37 @@
 
 comm_download_mode:
 	; Enable comm download mode
-	WIN_SMALL	comm_status2_column, comm_status2_row
-	STRCPY_TEXT_PRINT	tUsbDownloadMode; Download mode enabled
-	bsf		INTCON,GIE					; All interrups on
+	WIN_SMALL comm_status2_column, comm_status2_row
+	STRCPY_TEXT_PRINT tUsbDownloadMode	; Download mode enabled
+	bsf		INTCON,GIE					; All interrupts on
 	rcall	comm_rs232_wait_tx			; Wait for UART
-	movlw	0xBB                        ; Command Echo
+	movlw	0xBB						; Command Echo
 	movwf	TXREG1						; Send Answer
 comm_download_mode0:
-    bsf		INTCON,GIE					; All interrups on
+	bsf		INTCON,GIE					; All interrupts on
 	rcall	comm_rs232_wait_tx			; Wait for UART
-    movlw   0x4C                        ; 4C in service mode
-    btfss   comm_service_enabled
-	movlw	0x4D                        ; 4D in download mode
+	movlw	0x4C						; 4C in service mode
+	btfss	comm_service_enabled
+	movlw	0x4D						; 4D in download mode
 	movwf	TXREG1						; Send Answer
 	movlw	timeout_service_mode
-	movwf	timeout_counter 			; Timeout
+	movwf	comm_timeout				; Timeout
 	bcf		switch_right
 comm_download_mode1:
 	bcf		onesecupdate
-	dcfsnz 	timeout_counter,F
-	bra		comm_service_exit           ; Timeout -> Exit
+	dcfsnz	comm_timeout,F
+	bra		comm_service_exit			; Timeout -> Exit
 comm_download_mode2:
-	rcall	comm_write_get_byte         ; Check for a byte
-    btfsc   comm_service_enabled
-	btg     LEDr                        ; Blink in Service mode
-    btfss   vusb_in                     ; USB plugged in?
-    bra     comm_service_exit_nousb     ; Disconnected -> Exit
+	rcall	comm_write_get_byte			; Check for a byte
+	btfsc	comm_service_enabled
+	btg		LEDr						; Blink in Service mode
+	btfss	vusb_in						; USB plugged in?
+	bra		comm_service_exit_nousb		; Disconnected -> Exit
 	btfsc	switch_right				; Abort with right
 	bra		comm_service_exit
 	btfsc	onesecupdate
 	bra		comm_download_mode1
-	btfsc	rs232_recieve_overflow
+	btfsc	rs232_receive_overflow
 	bra		comm_download_mode2			; Wait for command byte
 
 	; command received!
@@ -471,22 +451,22 @@
 	cpfseq	RCREG1
 	bra		$+4
 	bra		comm_set_custom_text		; Send a opt_name_length byte string of custom text.
-	movlw	"f" ; 0x66
+	movlw	"f" 						; 0x66
 	cpfseq	RCREG1
 	bra		$+4
 	bra		comm_send_dive				; Send header and profile for one dive
 	movlw	"i"
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_identify               ; Send firmware, serial, etc.
+	bra		comm_identify				; Send firmware, serial, etc.
 	movlw	"j"
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_hardware_descriptor    ; Send hardware descriptor byte
+	bra		comm_hardware_descriptor	; Send hardware descriptor byte
 	movlw	0x60
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_feature_and_hardware   ; Send more detailed informations
+	bra		comm_feature_and_hardware	; Send more detailed informations
 	movlw	"n"
 	cpfseq	RCREG1
 	bra		$+4
@@ -498,28 +478,27 @@
 	movlw	"l"
 	cpfseq	RCREG1
 	bra		$+4
-    call	TFT_dump_screen             ; Dump the screen contents
+	call	TFT_dump_screen				; Dump the screen contents
 	movlw	"r"
 	cpfseq	RCREG1
 	bra		$+4
-    bra     comm_read_setting           ; Read a setting (And send via USB)
+	bra		comm_read_setting			; Read a setting (And send via USB)
 	movlw	"w"
 	cpfseq	RCREG1
 	bra		$+4
-    bra     comm_write_setting          ; Write a setting (Into RAM)
+	bra		comm_write_setting			; Write a setting (Into RAM)
 	movlw	"x"
 	cpfseq	RCREG1
 	bra		$+4
-    bra     comm_option_reset_all       ; Reset all options to factory default.
-
+	bra		comm_option_reset_all		; Reset all options to factory default.
 
-    btfss   comm_service_enabled        ; Done for Download mode
-	bra		comm_download_mode0         ; Loop with timeout reset
+	btfss	comm_service_enabled		; Done for Download mode
+	bra		comm_download_mode0			; Loop with timeout reset
 
 	movlw	0x20
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_send_range             ; send hi:lo:temp1 bytes starting from ext_flash_address:3
+	bra		comm_send_range				; send hi:lo:ext_flash_rw bytes starting from ext_flash_address:3
 	movlw	0x22
 	cpfseq	RCREG1
 	bra		$+4
@@ -527,32 +506,32 @@
 	movlw	0x23
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_reset_battery_gauge    ; Resets battery gauge registers
+	bra		comm_reset_battery_gauge	; Resets battery gauge registers
 	movlw	0x30
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_write_range            ; write bytes starting from ext_flash_address:3 (Stop when timeout)
+	bra		comm_write_range			; write bytes starting from ext_flash_address:3 (Stop when timeout)
 	movlw	0x40
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_erase_4kb              ; erases 4kB block from ext_flash_address:3 (Warning: No confirmation or built-in security here...)
+	bra		comm_erase_4kb				; erases 4kB block from ext_flash_address:3 (Warning: No confirmation or built-in security here...)
 	movlw	0x42
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_erase_range4kb         ; erases range in 4kB steps (Get 3 bytes address and 1byte amount of 4kB blocks)
+	bra		comm_erase_range4kb			; erases range in 4kB steps (Get 3 bytes address and 1byte amount of 4kB blocks)
 	movlw	0x50
 	cpfseq	RCREG1
 	bra		$+4
-	bra		comm_send_firmware          ; send firmware to bootloader
+	bra		comm_send_firmware			; send firmware to bootloader
 ;	movlw	"t"
 ;	cpfseq	RCREG1
 ;	bra		$+4
-;    goto    testloop                   ; Start raw-data testloop
+;	goto	testloop					; Start raw-data testloop
 	movlw	0xC1
 	cpfseq	RCREG1
 	bra		$+4
-	bra 	comm_service_ll_bootloader  ; Start low-level bootloader
-    bra		comm_download_mode0         ; Loop with timeout reset
+	bra		comm_service_ll_bootloader	; Start low-level bootloader
+	bra		comm_download_mode0			; Loop with timeout reset
 
 ;-----------------------------------------------------------------------------
 
@@ -585,7 +564,7 @@
 	bra		comm_download_mode0			; Done. Loop with timeout reset
 
 comm_send_compact_headers4:
-    movlw   .13
+	movlw	.13
 	movwf	lo							; Counter
 	rcall	comm_rs232_wait_tx			; Wait for UART
 	call	ext_flash_read_block_start	; 1st byte
@@ -600,23 +579,23 @@
 	bra		comm_send_compact_headers_loop
 	call	ext_flash_read_block_stop
 
-    ; Offset to total dive counter
+	; Offset to total dive counter
 	movlw	.80
 	movwf	ext_flash_address+0
-    call	ext_flash_read_block_start	; 1st byte
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx			; Wait for UART
+	call	ext_flash_read_block_start	; 1st byte
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; Wait for UART
 	call	ext_flash_read_block		; 2nd byte
 	movwf	TXREG1
-    call	ext_flash_read_block_stop
-    rcall	comm_rs232_wait_tx			; Wait for UART
+	call	ext_flash_read_block_stop
+	rcall	comm_rs232_wait_tx			; Wait for UART
 
-    ; Offset to Logbook-Profile version
+	; Offset to Logbook-Profile version
 	movlw	.8
 	movwf	ext_flash_address+0
-    call	ext_flash_byte_read         ; Get byte
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx			; Wait for UART
+	call	ext_flash_byte_read			; Get byte
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; Wait for UART
 	bra		comm_send_compact_headers2	; continue
 
 
@@ -635,7 +614,6 @@
 	movwf	ext_flash_address+2
 	movlw	0xF0
 	movwf	ext_flash_address+1
-
 comm_send_headers2:
 	clrf	ext_flash_address+0
 	; Adjust address for next dive
@@ -643,14 +621,12 @@
 	addwf	ext_flash_address+1
 	movlw	0x00
 	addwfc	ext_flash_address+2
-
 	movlw	0x30
 	cpfseq	ext_flash_address+2			; All 256 dive send?
 	bra		comm_send_headers4			; No, continue
 	bra		comm_download_mode0			; Done. Loop with timeout reset
-
 comm_send_headers4:
-	clrf	lo							; Counter	
+	clrf	lo							; Counter
 	rcall	comm_rs232_wait_tx			; Wait for UART
 	call	ext_flash_read_block_start	; 1st byte
 	movwf	TXREG1
@@ -667,181 +643,181 @@
 
 ;-----------------------------------------------------------------------------
 
-comm_option_reset_all:       			; Reset all options to factory default.
+comm_option_reset_all:					; Reset all options to factory default.
 	movlw	"x"							; send echo
 	movwf	TXREG1
-    call    option_reset_all
-    bra		comm_download_mode0			; Done. back to loop with timeout reset
+	call	option_reset_all
+	bra		comm_download_mode0			; Done. back to loop with timeout reset
 
 ;-----------------------------------------------------------------------------
 
 comm_write_get_byte:
-    goto	rs232_get_byte                  ; returns...
+	goto	rs232_get_byte				; returns...
 
 comm_rs232_wait_tx:
-    goto    rs232_wait_tx					; returns...
+	goto	rs232_wait_tx				; returns...
 
 comm_set_time:
-	movlw	"b"								; send echo
+	movlw	"b"							; send echo
 	movwf	TXREG1
 
-	rcall	comm_rs232_wait_tx				; wait for UART
+	rcall	comm_rs232_wait_tx			; wait for UART
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0             ; No, abort
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort
 	movff	RCREG1, hours
 	movlw	d'24'
 	cpfslt	hours
 	clrf	hours
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0             ; No, abort
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort
 	movff	RCREG1, mins
 	movlw	d'60'
 	cpfslt	mins
 	clrf	mins
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0             ; No, abort
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort
 	movff	RCREG1, secs
 	movlw	d'60'
 	cpfslt	secs
 	clrf	secs
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0             ; No, abort
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort
 	movff	RCREG1, month
 	movlw	d'13'
 	cpfslt	month
 	movwf	month
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0             ; No, abort
-	call	comm_check_day                  ; Check day
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort
+	call	comm_check_day				; Check day
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0             ; No, abort
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort
 	movff	RCREG1, year
 	movlw	d'100'
 	cpfslt	year
 	clrf	year
 	; All ok, set RTCC
-	call	rtc_set_rtc                     ; writes mins,sec,hours,day,month and year to rtc module
-    bra		comm_download_mode0             ; Done. back to loop with timeout reset
+	call	rtc_set_rtc					; writes mins,sec,hours,day,month and year to RTC module
+	bra		comm_download_mode0			; Done. back to loop with timeout reset
 
 ;-----------------------------------------------------------------------------
-; Set OSTC3 custom text string (opt_name_length ascii chars).
+; Set OSTC3 custom text string (opt_name_length ASCII chars).
 ;
 
 comm_set_custom_text:
-    movlw	"c"								; send echo
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    lfsr	FSR2,opt_name
-    movlw	opt_name_length
-    movwf	lo								; counter
+	movlw	"c"							; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	lfsr	FSR2,opt_name
+	movlw	opt_name_length
+	movwf	lo							; counter
 comm_set_ctext_loop:
-    rcall	comm_write_get_byte
-    btfsc	rs232_recieve_overflow          ; Got byte?
-    bra		comm_set_ctext_loop_done        ; no, abort
-    movff	RCREG1,POSTINC2                 ; Store character
-    decfsz	lo,F
-    bra		comm_set_ctext_loop
+	rcall	comm_write_get_byte
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_set_ctext_loop_done	; no, abort
+	movff	RCREG1,POSTINC2				; Store character
+	decfsz	lo,F
+	bra		comm_set_ctext_loop
 comm_set_ctext_loop_done:
-    tstfsz  lo                              ; Got opt_name_length bytes?
-    bra		comm_set_ctext_loop_done2       ; no, clear remaining chars
-    bra		comm_download_mode0             ; Done. Loop with timeout reset
+	tstfsz	lo							; Got opt_name_length bytes?
+	bra		comm_set_ctext_loop_done2	; no, clear remaining chars
+	bra		comm_download_mode0			; Done. Loop with timeout reset
 comm_set_ctext_loop_done2:
-    clrf    POSTINC2
-    decfsz	lo,F
-    bra		comm_set_ctext_loop_done2
-    bra		comm_download_mode0             ; Done. Loop with timeout reset
+	clrf	POSTINC2
+	decfsz	lo,F
+	bra		comm_set_ctext_loop_done2
+	bra		comm_download_mode0			; Done. Loop with timeout reset
 
 ;-----------------------------------------------------------------------------
 ; Reply Serial (2 bytes low:high), firmware (major.minor) and custom text.
 ;
-  
+
 comm_identify:
-    movlw	"i"								; send echo
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
+	movlw	"i"							; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
 
-    ;---- Read serial from internal EEPROM address 0000
+	;---- Read serial from internal EEPROM address 0000
 	clrf	EEADRH
-	clrf	EEADR                       ; Get Serial number LOW
-	call	read_eeprom                 ; read byte
+	clrf	EEADR						; Get Serial number LOW
+	call	read_eeprom					; read byte
 	movff	EEDATA,lo
-	incf	EEADR,F                     ; Get Serial number HIGH
-	call	read_eeprom                 ; read byte
+	incf	EEADR,F						; Get Serial number HIGH
+	call	read_eeprom					; read byte
 	movff	EEDATA,hi
 
-    ;---- Emit serial number
-	movff   lo,TXREG1
+	;---- Emit serial number
+	movff	lo,TXREG1
 	rcall	comm_rs232_wait_tx
-	movff   hi,TXREG1
+	movff	hi,TXREG1
 	rcall	comm_rs232_wait_tx
 
-	;---- Emit fiwmware hi.lo
-	movlw   softwareversion_x
-	movwf   TXREG1
+	;---- Emit firmware hi.lo
+	movlw	softwareversion_x
+	movwf	TXREG1
 	rcall	comm_rs232_wait_tx
-	movlw   softwareversion_y
-	movwf   TXREG1
+	movlw	softwareversion_y
+	movwf	TXREG1
 	rcall	comm_rs232_wait_tx
 
 	;---- Emit custom text
-	movlw   opt_name_length
-	movwf   hi
-	lfsr    FSR2,opt_name
+	movlw	opt_name_length
+	movwf	hi
+	lfsr	FSR2,opt_name
 
 common_identify_loop:
-    movff   POSTINC2,TXREG1
+	movff	POSTINC2,TXREG1
 	rcall	comm_rs232_wait_tx
 	decfsz	hi,F
 	bra		common_identify_loop
 
-    bra     comm_download_mode0             ; Done.
+	bra		comm_download_mode0			; Done.
 
 ;-----------------------------------------------------------------------------
 ; Reply hardware descriptor byte
 ;
 
 comm_hardware_descriptor:
-    movlw	"j"								; send echo
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    movff   hardware_flag,TXREG1
-    bra     comm_download_mode0             ; Done.
+	movlw	"j"							; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	movff	hardware_flag,TXREG1
+	bra		comm_download_mode0			; Done.
 
 comm_feature_and_hardware:
-    movlw	0x60							; send echo
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    movlw	0x00	; Hardware high byte
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    movff	hardware_flag,TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    movlw	0x00	; Feature high Byte
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    movlw	0x00	; Feature low Byte
-    movwf	TXREG1
-    rcall	comm_rs232_wait_tx				; wait for UART
-    movlw	0x00	; Model descriptor byte
-    movwf	TXREG1
-    bra     comm_download_mode0             ; Done.
-   
+	movlw	0x60						; send echo
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	movlw	0x00						; Hardware high byte
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	movff	hardware_flag,TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	movlw	0x00						; Feature high Byte
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	movlw	0x00						; Feature low Byte
+	movwf	TXREG1
+	rcall	comm_rs232_wait_tx			; wait for UART
+	movlw	0x00						; Model descriptor byte
+	movwf	TXREG1
+	bra		comm_download_mode0			 ; Done.
+
 ;-----------------------------------------------------------------------------
 
 comm_send_dive:
-	movlw	"f"; 0x66						; send echo
+	movlw	"f"; 0x66					; send echo
 	movwf	TXREG1
-	
+
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_download_mode0				; No, abort!
-	movff	RCREG1,lo						; Store dive number (0-255)
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_download_mode0			; No, abort!
+	movff	RCREG1,lo					; Store dive number (0-255)
 ; First, send the header (again)
 	; Set ext_flash_address:3 to TOC entry of this dive
 	; 1st: 200000h-200FFFh -> lo=0
@@ -853,56 +829,56 @@
 	movlw	0x20
 	movwf	ext_flash_address+2
 	movlw	.16
-	mulwf	lo								; lo*16 = offset to 0x2000 (up:hi)
+	mulwf	lo							; lo*16 = offset to 0x2000 (up:hi)
 	movf	PRODL,W
 	addwf	ext_flash_address+1,F
 	movf	PRODH,W
 	addwfc	ext_flash_address+2,F
 
-	incf_ext_flash_address	d'2'				; Skip 0xFA, 0xFA
-	call		ext_flash_byte_read_plus		; Read start address of profile
-	movff		temp1,ext_flash_log_pointer+0
-	call		ext_flash_byte_read_plus		; Read start address of profile
-	movff		temp1,ext_flash_log_pointer+1
-	call		ext_flash_byte_read_plus		; Read start address of profile
-	movff		temp1,ext_flash_log_pointer+2
-	call		ext_flash_byte_read_plus		; Read end address of profile
-	movff		temp1,convert_value_temp+0
-	call		ext_flash_byte_read_plus		; Read end address of profile
-	movff		temp1,convert_value_temp+1
-	call		ext_flash_byte_read_plus		; Read end address of profile
-	movff		temp1,convert_value_temp+2
-	decf_ext_flash_address	d'8'				; Back again to first 0xFA in header
+	incf_ext_flash_address d'2'			; Skip 0xFA, 0xFA
+	call	ext_flash_byte_read_plus	; Read start address of profile
+	movff	ext_flash_rw,ext_flash_log_pointer+0
+	call	ext_flash_byte_read_plus	; Read start address of profile
+	movff	ext_flash_rw,ext_flash_log_pointer+1
+	call	ext_flash_byte_read_plus	; Read start address of profile
+	movff	ext_flash_rw,ext_flash_log_pointer+2
+	call	ext_flash_byte_read_plus	; Read end address of profile
+	movff	ext_flash_rw,ext_flash_end_pointer+0
+	call	ext_flash_byte_read_plus	; Read end address of profile
+	movff	ext_flash_rw,ext_flash_end_pointer+1
+	call	ext_flash_byte_read_plus	; Read end address of profile
+	movff	ext_flash_rw,ext_flash_end_pointer+2
+	decf_ext_flash_address	d'8'		; Back again to first 0xFA in header
 
-    movf        ext_flash_log_pointer+0,W
-    cpfseq      convert_value_temp+0            ; Equal?
-    bra         comm_send_dive1                 ; No, Send header
+	movf	ext_flash_log_pointer+0,W
+	cpfseq	ext_flash_end_pointer+0		; Equal?
+	bra		comm_send_dive1				; No, Send header
 
-    movf        ext_flash_log_pointer+1,W
-    cpfseq      convert_value_temp+1            ; Equal?
-    bra         comm_send_dive1                 ; No, Send header
+	movf	ext_flash_log_pointer+1,W
+	cpfseq	ext_flash_end_pointer+1		; Equal?
+	bra		comm_send_dive1				; No, Send header
 
-    movf        ext_flash_log_pointer+2,W
-    cpfseq      convert_value_temp+2            ; Equal?
-    bra         comm_send_dive1                 ; No, Send header
+	movf	ext_flash_log_pointer+2,W
+	cpfseq	ext_flash_end_pointer+2		; Equal?
+	bra		comm_send_dive1				; No, Send header
 
-    ; Start=End -> Not good, abort
-    bra		comm_download_mode0                 ; Done. Loop with timeout reset
+	; Start=End -> Not good, abort
+	bra		comm_download_mode0			; Done. Loop with timeout reset
 
 comm_send_dive1:
 	; Send header
-	clrf	hi									; Counter	
-	rcall	comm_rs232_wait_tx					; Wait for UART
-	call	ext_flash_read_block_start			; 1st byte
+	clrf	hi							; Counter
+	rcall	comm_rs232_wait_tx			; Wait for UART
+	call	ext_flash_read_block_start	; 1st byte
 	movwf	TXREG1
-	bra	comm_send_dive_header
+	bra		comm_send_dive_header
 comm_send_dive_header2:
-	call	ext_flash_read_block				; Read one byte
-	movwf	TXREG1								; Start new transmit
+	call	ext_flash_read_block		; Read one byte
+	movwf	TXREG1						; Start new transmit
 comm_send_dive_header:
-	rcall	comm_rs232_wait_tx					; Wait for UART
+	rcall	comm_rs232_wait_tx			; Wait for UART
 	decfsz	hi,F
-	bra	comm_send_dive_header2
+	bra		comm_send_dive_header2
 	call	ext_flash_read_block_stop
 
 	; Set address for profile
@@ -910,642 +886,636 @@
 	movff	ext_flash_log_pointer+1,ext_flash_address+1
 	movff	ext_flash_log_pointer+2,ext_flash_address+2
 
-	movlw	.6									; Skip 6byte short header in profile - only for internal use
-	call	incf_ext_flash_address0_0x20		; increases bytes in ext_flash_address:3 with 0x200000 bank switching
+	movlw	.6								; Skip 6byte short header in profile - only for internal use
+	call	incf_ext_flash_address0_0x20	; increases bytes in ext_flash_address:3 with 0x200000 bank switching
 
 	; Set address for short header/compact header, Byte 0
-	
+
 comm_send_dive_profile:
-	call	ext_flash_byte_read_plus_0x20		; Read one byte into temp1, takes care of banking at 0x200000
-	rcall	comm_rs232_wait_tx					; Wait for UART
-	movff	temp1,TXREG1						; Send a byte
-	
+	call	ext_flash_byte_read_plus_0x20	; Read one byte into ext_flash_rw, takes care of banking at 0x200000
+	rcall	comm_rs232_wait_tx				; Wait for UART
+	movff	ext_flash_rw,TXREG1				; Send a byte
+
 	; 24bit compare with end address
-	movff	convert_value_temp+0,WREG
+	movff	ext_flash_end_pointer+0,WREG
 	cpfseq	ext_flash_address+0
-	bra	comm_send_dive_profile
-	movff	convert_value_temp+1,WREG
+	bra		comm_send_dive_profile
+	movff	ext_flash_end_pointer+1,WREG
 	cpfseq	ext_flash_address+1
-	bra	comm_send_dive_profile
-	movff	convert_value_temp+2,WREG
+	bra		comm_send_dive_profile
+	movff	ext_flash_end_pointer+2,WREG
 	cpfseq	ext_flash_address+2
-	bra	comm_send_dive_profile
-	
-	rcall   comm_read_setting_wait          	; Wait for UART
-	bra	comm_download_mode0						; Done. Loop with timeout reset
+	bra		comm_send_dive_profile
+
+	rcall	comm_read_setting_wait		; Wait for UART
+	bra		comm_download_mode0			; Done. Loop with timeout reset
 
 ;-----------------------------------------------------------------------------
 
 comm_read_setting:
-    movlw   "r"
+	movlw	"r"
 	movwf	TXREG1
 	rcall	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_read_abort                 ; No, abort!
-	rcall   comm_read_setting_wait          ; Wait for UART
-    movlw   0x0F
-    cpfsgt  RCREG1                          ; 0x00-0x0F: unused
-    bra		comm_read_abort                 ; abort!
-    subwf   RCREG1,W                        ; Subtract unused commands
-    dcfsnz  WREG
-    bra     comm_read_gas1                  ; RCREG1=0x10
-    dcfsnz  WREG
-    bra     comm_read_gas2                  ; RCREG1=0x11
-    dcfsnz  WREG
-    bra     comm_read_gas3                  ; RCREG1=0x12
-    dcfsnz  WREG
-    bra     comm_read_gas4                  ; RCREG1=0x13
-    dcfsnz  WREG
-    bra     comm_read_gas5                  ; RCREG1=0x14
-    dcfsnz  WREG
-    bra     comm_read_dil1                  ; RCREG1=0x15
-    dcfsnz  WREG
-    bra     comm_read_dil2                  ; RCREG1=0x16
-    dcfsnz  WREG
-    bra     comm_read_dil3                  ; RCREG1=0x17
-    dcfsnz  WREG
-    bra     comm_read_dil4                  ; RCREG1=0x18
-    dcfsnz  WREG
-    bra     comm_read_dil5                  ; RCREG1=0x19
-    dcfsnz  WREG
-    bra     comm_read_sp1                   ; RCREG1=0x1A
-    dcfsnz  WREG
-    bra     comm_read_sp2                   ; RCREG1=0x1B
-    dcfsnz  WREG
-    bra     comm_read_sp3                   ; RCREG1=0x1C
-    dcfsnz  WREG
-    bra     comm_read_sp4                   ; RCREG1=0x1D
-    dcfsnz  WREG
-    bra     comm_read_sp5                   ; RCREG1=0x1E
-    dcfsnz  WREG
-    movff   opt_ccr_mode, TXREG1            ; RCREG1=0x1F
-    dcfsnz  WREG
-    movff   opt_dive_mode, TXREG1           ; RCREG1=0x20
-    dcfsnz  WREG
-    movff   char_I_deco_model, TXREG1       ; RCREG1=0x21
-    dcfsnz  WREG
-    movff   char_I_ppO2_max, TXREG1         ; RCREG1=0x22		MODIFIED ## V2.94
-    dcfsnz  WREG
-    movff   char_I_ppO2_min, TXREG1         ; RCREG1=0x23		MODIFIED ## V2.94
-    dcfsnz  WREG
-    movff   char_I_extra_time, TXREG1       ; RCREG1=0x24
-    dcfsnz  WREG
-    movff   opt_GF_low, TXREG1              ; RCREG1=0x25
-    dcfsnz  WREG
-    movff   opt_GF_high, TXREG1             ; RCREG1=0x26
-    dcfsnz  WREG
-    movff   opt_aGF_low, TXREG1             ; RCREG1=0x27
-    dcfsnz  WREG
-    movff   opt_aGF_high, TXREG1            ; RCREG1=0x28
-    dcfsnz  WREG
-    movff   opt_enable_aGF, TXREG1          ; RCREG1=0x29
-    dcfsnz  WREG
-    movff   opt_sat_multiplier_non_gf, TXREG1; RCREG1=0x2A
-    dcfsnz  WREG
-    movff   opt_desat_multiplier_non_gf, TXREG1; RCREG1=0x2B
-    dcfsnz  WREG
-    movff   opt_last_stop, TXREG1           ; RCREG1=0x2C
-    dcfsnz  WREG
-    movff   opt_brightness, TXREG1          ; RCREG1=0x2D
-    dcfsnz  WREG
-    movff   opt_units, TXREG1               ; RCREG1=0x2E
-    dcfsnz  WREG
-    movff   opt_sampling_rate, TXREG1       ; RCREG1=0x2F
-    dcfsnz  WREG
-    movff   opt_salinity, TXREG1            ; RCREG1=0x30
-    dcfsnz  WREG
-    movff   opt_dive_color_scheme, TXREG1   ; RCREG1=0x31
-    dcfsnz  WREG
-    movff	opt_language, TXREG1            ; RCREG1=0x32
-    dcfsnz  WREG
-    movff   opt_dateformat, TXREG1          ; RCREG1=0x33
-    dcfsnz  WREG
-    movff   opt_compass_gain, TXREG1        ; RCREG1=0x34
-    dcfsnz  WREG
-    movff   opt_pressure_adjust, TXREG1     ; RCREG1=0x35
-    dcfsnz  WREG
-    movff   opt_enable_safetystop, TXREG1   ; RCREG1=0x36
-    dcfsnz  WREG
-    movff   opt_calibration_O2_ratio, TXREG1; RCREG1=0x37
-    dcfsnz  WREG
-    clrf    TXREG1				            ; RCREG1=0x38   NOT USED ANYMORE (opt_sensor_fallback)	## voting logic
-    dcfsnz  WREG
-    movff   opt_flip_screen, TXREG1         ; RCREG1=0x39
-    dcfsnz  WREG
-    movff   opt_cR_button_left, TXREG1      ; RCREG1=0x3A
-    dcfsnz  WREG
-    movff   opt_cR_button_right, TXREG1     ; RCREG1=0x3B
-    dcfsnz  WREG
-    movff   char_I_bottom_usage, TXREG1     ; RCREG1=0x3C
-    dcfsnz  WREG
-    movff   char_I_deco_usage, TXREG1       ; RCREG1=0x3D
-    dcfsnz  WREG
-    movff   opt_modwarning, TXREG1          ; RCREG1=0x3E
-    dcfsnz  WREG
-    movff   opt_vsitextv2, TXREG1           ; RCREG1=0x3F
-    dcfsnz  WREG
-    movff   opt_vsigraph, TXREG1            ; RCREG1=0x40
-    dcfsnz  WREG
-    movff   opt_showppo2, TXREG1            ; RCREG1=0x41
-    dcfsnz  WREG
-    movff   opt_temperature_adjust, TXREG1  ; RCREG1=0x42
-    dcfsnz  WREG
-    movff   opt_safety_stop_length, TXREG1  ; RCREG1=0x43
-    dcfsnz  WREG
-    movff   opt_safety_stop_start, TXREG1   ; RCREG1=0x44
-    dcfsnz  WREG
-    movff   opt_safety_stop_end, TXREG1     ; RCREG1=0x45
-    dcfsnz  WREG
-    movff   opt_safety_stop_reset, TXREG1   ; RCREG1=0x46
-    dcfsnz  WREG
-    clrf    TXREG1			    			; RCREG1=0x47, ignore conservatism for standard hwOS
-    dcfsnz  WREG
-    movff   opt_diveTimeout, TXREG1	    	; RCREG1=0x48
-    dcfsnz  WREG
-    movff   button_polarity, TXREG1	    	; RCREG1=0x49
-    dcfsnz  WREG
-    movff   char_I_PSCR_drop, TXREG1	    ; RCREG1=0x4A
-    dcfsnz  WREG
-    movff   char_I_PSCR_lungratio, TXREG1	; RCREG1=0x4B
-    dcfsnz  WREG
-    movff   char_I_ppO2_max_deco, TXREG1    ; RCREG1=0x4C	MODIFIED ## V2.94
-	
-	; NEW
-    dcfsnz  WREG
-    movff   char_I_ppO2_min_loop, TXREG1	; RCREG1=0x4D	## CCR/pSCR min ppO2	MODIFIED ## V2.94
-    dcfsnz  WREG
-    movff   char_I_tank_size+0, TXREG1		; RCREG1=0x4E	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_size+1, TXREG1		; RCREG1=0x4F	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_size+2, TXREG1		; RCREG1=0x50	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_size+3, TXREG1		; RCREG1=0x51	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_size+4, TXREG1		; RCREG1=0x52	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_pres_fill+0, TXREG1	; RCREG1=0x53	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_pres_fill+1, TXREG1	; RCREG1=0x54	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_pres_fill+2, TXREG1	; RCREG1=0x55	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_pres_fill+3, TXREG1	; RCREG1=0x56	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_tank_pres_fill+4, TXREG1	; RCREG1=0x57	## bailout gas needs
-	dcfsnz  WREG
-    movff   char_I_cc_max_frac_o2, TXREG1	; RCREG1=0x58	## CCR max ppO2 limiter
-	dcfsnz  WREG
-    movff   opt_sim_setpoint_number, TXREG1	; RCREG1=0x59	## deco calculator enhancement
-	dcfsnz  WREG
-    movff   opt_calc_asc_gasvolume, TXREG1	; RCREG1=0x5A	## bailout gas needs 
-	dcfsnz  WREG
-    movff   opt_sim_use_aGF, TXREG1			; RCREG1=0x5B	## deco calculator enhancement
-	dcfsnz  WREG
-    movff   char_I_altitude_wait, TXREG1	; RCREG1=0x5C	## no fly altitude
-	dcfsnz  WREG
-    movff   opt_enable_IBCD, TXREG1			; RCREG1=0x5D	## IBCD
-        dcfsnz  WREG
-    movff   opt_sat_multiplier_gf, TXREG1; RCREG1=0x5E
-        dcfsnz  WREG
-    movff   opt_desat_multiplier_gf, TXREG1; RCREG1=0x5F
+	btfsc	rs232_receive_overflow		; Got byte?
+	bra		comm_read_abort				; No, abort!
+	rcall	comm_read_setting_wait		; Wait for UART
+	movlw	0x0F
+	cpfsgt	RCREG1						; 0x00-0x0F: unused
+	bra		comm_read_abort				; abort!
+	subwf	RCREG1,W					; Subtract unused commands
+	dcfsnz	WREG
+	bra		comm_read_gas1				; RCREG1=0x10
+	dcfsnz	WREG
+	bra		comm_read_gas2				; RCREG1=0x11
+	dcfsnz	WREG
+	bra		comm_read_gas3				; RCREG1=0x12
+	dcfsnz	WREG
+	bra		comm_read_gas4				; RCREG1=0x13
+	dcfsnz	WREG
+	bra		comm_read_gas5				; RCREG1=0x14
+	dcfsnz	WREG
+	bra		comm_read_dil1				; RCREG1=0x15
+	dcfsnz	WREG
+	bra		comm_read_dil2				; RCREG1=0x16
+	dcfsnz	WREG
+	bra		comm_read_dil3				; RCREG1=0x17
+	dcfsnz	WREG
+	bra		comm_read_dil4				; RCREG1=0x18
+	dcfsnz	WREG
+	bra		comm_read_dil5				; RCREG1=0x19
+	dcfsnz	WREG
+	bra		comm_read_sp1				; RCREG1=0x1A
+	dcfsnz	WREG
+	bra		comm_read_sp2				; RCREG1=0x1B
+	dcfsnz	WREG
+	bra		comm_read_sp3				; RCREG1=0x1C
+	dcfsnz	WREG
+	bra		comm_read_sp4				; RCREG1=0x1D
+	dcfsnz	WREG
+	bra		comm_read_sp5				; RCREG1=0x1E
+	dcfsnz	WREG
+	movff	opt_ccr_mode, TXREG1		; RCREG1=0x1F
+	dcfsnz	WREG
+	movff	opt_dive_mode, TXREG1		; RCREG1=0x20
+	dcfsnz	WREG
+	movff	char_I_deco_model, TXREG1	; RCREG1=0x21
+	dcfsnz	WREG
+	movff	char_I_ppO2_max, TXREG1		; RCREG1=0x22
+	dcfsnz	WREG
+	movff	char_I_ppO2_min, TXREG1		; RCREG1=0x23
+	dcfsnz	WREG
+	movff	char_I_extra_time, TXREG1	; RCREG1=0x24
+	dcfsnz	WREG
+	movff	opt_GF_low, TXREG1			; RCREG1=0x25
+	dcfsnz	WREG
+	movff	opt_GF_high, TXREG1			; RCREG1=0x26
+	dcfsnz	WREG
+	movff	opt_aGF_low, TXREG1			; RCREG1=0x27
+	dcfsnz	WREG
+	movff	opt_aGF_high, TXREG1		; RCREG1=0x28
+	dcfsnz	WREG
+	movff	opt_enable_aGF, TXREG1		; RCREG1=0x29
+	dcfsnz	WREG
+	movff	opt_sat_multiplier_non_gf, TXREG1	; RCREG1=0x2A
+	dcfsnz	WREG
+	movff	opt_desat_multiplier_non_gf, TXREG1	; RCREG1=0x2B
+	dcfsnz	WREG
+	movff	opt_last_stop, TXREG1		; RCREG1=0x2C
+	dcfsnz	WREG
+	movff	opt_brightness, TXREG1		; RCREG1=0x2D
+	dcfsnz	WREG
+	movff	opt_units, TXREG1			; RCREG1=0x2E
+	dcfsnz	WREG
+	movff	opt_sampling_rate, TXREG1	; RCREG1=0x2F
+	dcfsnz	WREG
+	movff	opt_salinity, TXREG1		; RCREG1=0x30
+	dcfsnz	WREG
+	movff	opt_dive_color_scheme, TXREG1	; RCREG1=0x31
+	dcfsnz	WREG
+	movff	opt_language, TXREG1		; RCREG1=0x32
+	dcfsnz	WREG
+	movff	opt_dateformat, TXREG1		; RCREG1=0x33
+	dcfsnz	WREG
+	movff	opt_compass_gain, TXREG1	; RCREG1=0x34
+	dcfsnz	WREG
+	movff	opt_pressure_adjust, TXREG1	; RCREG1=0x35
+	dcfsnz	WREG
+	movff	opt_enable_safetystop, TXREG1	; RCREG1=0x36
+	dcfsnz	WREG
+	movff	opt_calibration_O2_ratio, TXREG1; RCREG1=0x37
+	dcfsnz	WREG
+	clrf	TXREG1						; RCREG1=0x38	NOT USED ANYMORE (ex opt_sensor_fallback)
+	dcfsnz	WREG
+	movff	opt_flip_screen, TXREG1		; RCREG1=0x39
+	dcfsnz	WREG
+	movff	opt_cR_button_left, TXREG1	; RCREG1=0x3A
+	dcfsnz	WREG
+	movff	opt_cR_button_right, TXREG1	; RCREG1=0x3B
+	dcfsnz	WREG
+	movff	char_I_bottom_usage, TXREG1	; RCREG1=0x3C
+	dcfsnz	WREG
+	movff	char_I_deco_usage, TXREG1	; RCREG1=0x3D
+	dcfsnz	WREG
+	movff	opt_modwarning, TXREG1		; RCREG1=0x3E
+	dcfsnz	WREG
+	movff	opt_vsitextv2, TXREG1		; RCREG1=0x3F
+	dcfsnz	WREG
+	movff	opt_vsigraph, TXREG1		; RCREG1=0x40
+	dcfsnz	WREG
+	movff	opt_showppo2, TXREG1		; RCREG1=0x41
+	dcfsnz	WREG
+	movff	opt_temperature_adjust, TXREG1	; RCREG1=0x42
+	dcfsnz	WREG
+	movff	opt_safety_stop_length, TXREG1	; RCREG1=0x43
+	dcfsnz	WREG
+	movff	opt_safety_stop_start, TXREG1	; RCREG1=0x44
+	dcfsnz	WREG
+	movff	opt_safety_stop_end, TXREG1		; RCREG1=0x45
+	dcfsnz	WREG
+	movff	opt_safety_stop_reset, TXREG1	; RCREG1=0x46
+	dcfsnz	WREG
+	clrf	TXREG1							; RCREG1=0x47, ignore conservatism for standard hwOS
+	dcfsnz	WREG
+	movff	opt_diveTimeout, TXREG1			; RCREG1=0x48
+	dcfsnz	WREG
+	movff	button_polarity, TXREG1			; RCREG1=0x49
+	dcfsnz	WREG
+	movff	char_I_PSCR_drop, TXREG1		; RCREG1=0x4A
+	dcfsnz	WREG
+	movff	char_I_PSCR_lungratio, TXREG1	; RCREG1=0x4B
+	dcfsnz	WREG
+	movff	char_I_ppO2_max_deco, TXREG1	; RCREG1=0x4C
+	dcfsnz	WREG
+	movff	char_I_ppO2_min_loop, TXREG1	; RCREG1=0x4D
+	dcfsnz	WREG
+	movff	char_I_tank_size+0, TXREG1		; RCREG1=0x4E
+	dcfsnz	WREG
+	movff	char_I_tank_size+1, TXREG1		; RCREG1=0x4F
+	dcfsnz	WREG
+	movff	char_I_tank_size+2, TXREG1		; RCREG1=0x50
+	dcfsnz	WREG
+	movff	char_I_tank_size+3, TXREG1		; RCREG1=0x51
+	dcfsnz	WREG
+	movff	char_I_tank_size+4, TXREG1		; RCREG1=0x52
+	dcfsnz	WREG
+	movff	char_I_tank_pres_fill+0, TXREG1	; RCREG1=0x53
+	dcfsnz	WREG
+	movff	char_I_tank_pres_fill+1, TXREG1	; RCREG1=0x54
+	dcfsnz	WREG
+	movff	char_I_tank_pres_fill+2, TXREG1	; RCREG1=0x55
+	dcfsnz	WREG
+	movff	char_I_tank_pres_fill+3, TXREG1	; RCREG1=0x56
+	dcfsnz	WREG
+	movff	char_I_tank_pres_fill+4, TXREG1	; RCREG1=0x57
+	dcfsnz	WREG
+	movff	char_I_cc_max_frac_o2, TXREG1	; RCREG1=0x58
+	dcfsnz	WREG
+	movff	opt_sim_setpoint_number, TXREG1	; RCREG1=0x59
+	dcfsnz	WREG
+	movff	opt_calc_asc_gasvolume, TXREG1	; RCREG1=0x5A
+	dcfsnz	WREG
+	movff	opt_sim_use_aGF, TXREG1			; RCREG1=0x5B
+	dcfsnz	WREG
+	movff	char_I_altitude_wait, TXREG1	; RCREG1=0x5C
+	dcfsnz	WREG
+	movff	opt_enable_IBCD, TXREG1			; RCREG1=0x5D
+	dcfsnz	WREG
+	movff	opt_sat_multiplier_gf, TXREG1	; RCREG1=0x5E
+	dcfsnz	WREG
+	movff	opt_desat_multiplier_gf, TXREG1; RCREG1=0x5F
 
-	
-    
+
 comm_read_abort:
 comm_read_done:
-    bra		comm_download_mode0             ; Done. Loop with timeout reset
+	bra		comm_download_mode0				; Done. Loop with timeout reset
 
 comm_read_setting_wait:
-    bra    comm_rs232_wait_tx				; Wait for UART (and return!)
+	bra	comm_rs232_wait_tx					; Wait for UART (and return!)
 
 comm_read_gas1:
-    movff   opt_gas_O2_ratio+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_He_ratio+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_type+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_OC_bail_gas_change+0,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_gas_O2_ratio+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_He_ratio+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_type+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_OC_bail_gas_change+0,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_gas2:
-    movff   opt_gas_O2_ratio+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_He_ratio+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_type+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_OC_bail_gas_change+1,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_gas_O2_ratio+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_He_ratio+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_type+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_OC_bail_gas_change+1,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_gas3:
-    movff   opt_gas_O2_ratio+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_He_ratio+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_type+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_OC_bail_gas_change+2,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_gas_O2_ratio+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_He_ratio+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_type+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_OC_bail_gas_change+2,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_gas4:
-    movff   opt_gas_O2_ratio+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_He_ratio+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_type+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_OC_bail_gas_change+3,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_gas_O2_ratio+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_He_ratio+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_type+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_OC_bail_gas_change+3,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_gas5:
-    movff   opt_gas_O2_ratio+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_He_ratio+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_gas_type+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_OC_bail_gas_change+4,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_gas_O2_ratio+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_He_ratio+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_gas_type+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_OC_bail_gas_change+4,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 
 comm_read_dil1:
-    movff   opt_dil_O2_ratio+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_He_ratio+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_type+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_dil_change+0,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_dil_O2_ratio+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_He_ratio+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_type+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_dil_change+0,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_dil2:
-    movff   opt_dil_O2_ratio+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_He_ratio+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_type+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_dil_change+1,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_dil_O2_ratio+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_He_ratio+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_type+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_dil_change+1,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_dil3:
-    movff   opt_dil_O2_ratio+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_He_ratio+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_type+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_dil_change+2,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_dil_O2_ratio+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_He_ratio+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_type+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_dil_change+2,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_dil4:
-    movff   opt_dil_O2_ratio+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_He_ratio+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_type+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_dil_change+3,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_dil_O2_ratio+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_He_ratio+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_type+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_dil_change+3,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_dil5:
-    movff   opt_dil_O2_ratio+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_He_ratio+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   opt_dil_type+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_dil_change+4,TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	opt_dil_O2_ratio+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_He_ratio+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	opt_dil_type+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_dil_change+4,TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 
 comm_read_sp1:
-    movff   char_I_setpoint_cbar+0, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_setpoint_change+0, TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	char_I_setpoint_cbar+0, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_setpoint_change+0, TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_sp2:
-    movff   char_I_setpoint_cbar+1, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_setpoint_change+1, TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	char_I_setpoint_cbar+1, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_setpoint_change+1, TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_sp3:
-    movff   char_I_setpoint_cbar+2, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_setpoint_change+2, TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	char_I_setpoint_cbar+2, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_setpoint_change+2, TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_sp4:
-    movff   char_I_setpoint_cbar+3, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_setpoint_change+3, TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	char_I_setpoint_cbar+3, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_setpoint_change+3, TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 comm_read_sp5:
-    movff   char_I_setpoint_cbar+4, TXREG1
-    rcall   comm_read_setting_wait          ; Wait for UART
-    movff   char_I_setpoint_change+4, TXREG1
-    bra		comm_read_done                  ; Done. Wait for UART and loop with timeout reset
+	movff	char_I_setpoint_cbar+4, TXREG1
+	rcall	comm_read_setting_wait			; Wait for UART
+	movff	char_I_setpoint_change+4, TXREG1
+	bra		comm_read_done					; Done. Wait for UART and loop with timeout reset
 
 
 ;-----------------------------------------------------------------------------
 comm_write_gas1:
-    movff   RCREG1,opt_gas_O2_ratio+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_He_ratio+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_type+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_OC_bail_gas_change+0
-    bra		comm_write_abort             ; Done. Loop with timeout reset
+	movff	RCREG1,opt_gas_O2_ratio+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_He_ratio+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_type+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_OC_bail_gas_change+0
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_gas2:
-    movff   RCREG1,opt_gas_O2_ratio+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_He_ratio+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_type+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_OC_bail_gas_change+1
-    bra		comm_write_abort             ; Done. Loop with timeout reset
+	movff	RCREG1,opt_gas_O2_ratio+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_He_ratio+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_type+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_OC_bail_gas_change+1
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_gas3:
-    movff   RCREG1,opt_gas_O2_ratio+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_He_ratio+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_type+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_OC_bail_gas_change+2
-    bra		comm_write_abort             ; Done. Loop with timeout reset
+	movff	RCREG1,opt_gas_O2_ratio+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_He_ratio+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_type+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_OC_bail_gas_change+2
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_gas4:
-    movff   RCREG1,opt_gas_O2_ratio+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_He_ratio+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_type+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_OC_bail_gas_change+3
-    bra		comm_write_abort             ; Done. Loop with timeout reset
+	movff	RCREG1,opt_gas_O2_ratio+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_He_ratio+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_type+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_OC_bail_gas_change+3
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_gas5:
-    movff   RCREG1,opt_gas_O2_ratio+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_He_ratio+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_gas_type+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_OC_bail_gas_change+4
-    bra		comm_write_abort             ; Done. Loop with timeout reset
+	movff	RCREG1,opt_gas_O2_ratio+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_He_ratio+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_gas_type+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_OC_bail_gas_change+4
+	bra		comm_write_abort				; Done. Loop with timeout reset
 
 
 comm_write_setting:
-    movlw   "w"
+	movlw	"w"
 	movwf	TXREG1
-	rcall	comm_write_get_byte              ; "Byte 2"
-	btfsc	rs232_recieve_overflow			 ; Got byte?
-	bra		comm_write_abort                 ; No, abort!
-    movff   RCREG1,temp1                     ; Copy
-    rcall	comm_write_get_byte              ; "Byte 3"
-	rcall	comm_read_setting_wait           ; Wait for UART
-    movlw   0x0F
-    cpfsgt  temp1                            ; 0x00-0x0F: unused
-    bra		comm_write_abort                 ; abort!
-    subwf   temp1,W                          ; Subtract unused commands
-    dcfsnz  WREG
-    bra     comm_write_gas1                  ; RCREG1=0x10
-    dcfsnz  WREG
-    bra     comm_write_gas2                  ; RCREG1=0x11
-    dcfsnz  WREG
-    bra     comm_write_gas3                  ; RCREG1=0x12
-    dcfsnz  WREG
-    bra     comm_write_gas4                  ; RCREG1=0x13
-    dcfsnz  WREG
-    bra     comm_write_gas5                  ; RCREG1=0x14
-    dcfsnz  WREG
-    bra     comm_write_dil1                  ; RCREG1=0x15
-    dcfsnz  WREG
-    bra     comm_write_dil2                  ; RCREG1=0x16
-    dcfsnz  WREG
-    bra     comm_write_dil3                  ; RCREG1=0x17
-    dcfsnz  WREG
-    bra     comm_write_dil4                  ; RCREG1=0x18
-    dcfsnz  WREG
-    bra     comm_write_dil5                  ; RCREG1=0x19
-    dcfsnz  WREG
-    bra     comm_write_sp1                   ; RCREG1=0x1A
-    dcfsnz  WREG
-    bra     comm_write_sp2                   ; RCREG1=0x1B
-    dcfsnz  WREG
-    bra     comm_write_sp3                   ; RCREG1=0x1C
-    dcfsnz  WREG
-    bra     comm_write_sp4                   ; RCREG1=0x1D
-    dcfsnz  WREG
-    bra     comm_write_sp5                   ; RCREG1=0x1E
-    dcfsnz  WREG
-    movff   RCREG1, opt_ccr_mode             ; RCREG1=0x1F
-    dcfsnz  WREG
-    movff   RCREG1, opt_dive_mode            ; RCREG1=0x20
-    dcfsnz  WREG
-    movff   RCREG1, char_I_deco_model       ; RCREG1=0x21
-    dcfsnz  WREG
-    movff   RCREG1, char_I_ppO2_max         ; RCREG1=0x22	MODIFIED ## V2.94
-    dcfsnz  WREG
-    movff   RCREG1, char_I_ppO2_min         ; RCREG1=0x23	MODIFIED ## V2.94
-    dcfsnz  WREG
-    movff   RCREG1, char_I_extra_time       ; RCREG1=0x24
-    dcfsnz  WREG
-    movff   RCREG1, opt_GF_low              ; RCREG1=0x25
-    dcfsnz  WREG
-    movff   RCREG1, opt_GF_high             ; RCREG1=0x26
-    dcfsnz  WREG
-    movff   RCREG1, opt_aGF_low             ; RCREG1=0x27
-    dcfsnz  WREG
-    movff   RCREG1, opt_aGF_high            ; RCREG1=0x28
-    dcfsnz  WREG
-    movff   RCREG1, opt_enable_aGF          ; RCREG1=0x29
-    dcfsnz  WREG
-    movff   RCREG1, opt_sat_multiplier_non_gf; RCREG1=0x2A
-    dcfsnz  WREG
-    movff   RCREG1, opt_desat_multiplier_non_gf; RCREG1=0x2B
-    dcfsnz  WREG
-    movff   RCREG1, opt_last_stop           ; RCREG1=0x2C
-    dcfsnz  WREG
-    movff   RCREG1, opt_brightness          ; RCREG1=0x2D
-    dcfsnz  WREG
-    movff   RCREG1, opt_units               ; RCREG1=0x2E
-    dcfsnz  WREG
-    movff   RCREG1, opt_sampling_rate       ; RCREG1=0x2F
-    dcfsnz  WREG
-    movff   RCREG1, opt_salinity            ; RCREG1=0x30
-    dcfsnz  WREG
-    movff   RCREG1, opt_dive_color_scheme   ; RCREG1=0x31
-    dcfsnz  WREG
-    movff   RCREG1, opt_language			; RCREG1=0x32
-    dcfsnz  WREG
-    movff   RCREG1, opt_dateformat          ; RCREG1=0x33
-    dcfsnz  WREG
-    movff   RCREG1, opt_compass_gain        ; RCREG1=0x34
-    dcfsnz  WREG
-    movff   RCREG1, opt_pressure_adjust     ; RCREG1=0x35
-    dcfsnz  WREG
-    movff   RCREG1, opt_enable_safetystop   ; RCREG1=0x36
-    dcfsnz  WREG
-    movff   RCREG1, opt_calibration_O2_ratio; RCREG1=0x37
-    dcfsnz  WREG
-    nop									    ; RCREG1=0x38    NOT USED ANYMORE (opt_sensor_fallback)	## voting logic	
-    dcfsnz  WREG
-    movff   RCREG1, opt_flip_screen         ; RCREG1=0x39
-    dcfsnz  WREG
-    movff   RCREG1, opt_cR_button_left      ; RCREG1=0x3A
-    dcfsnz  WREG
-    movff   RCREG1, opt_cR_button_right     ; RCREG1=0x3B
-    dcfsnz  WREG
-    movff   RCREG1, char_I_bottom_usage     ; RCREG1=0x3C
-    dcfsnz  WREG
-    movff   RCREG1, char_I_deco_usage       ; RCREG1=0x3D
-    dcfsnz  WREG
-    movff   RCREG1, opt_modwarning          ; RCREG1=0x3E
-    dcfsnz  WREG
-    movff   RCREG1, opt_vsitextv2           ; RCREG1=0x3F
-    dcfsnz  WREG
-    movff   RCREG1, opt_vsigraph            ; RCREG1=0x40
-    dcfsnz  WREG
-    movff   RCREG1, opt_showppo2            ; RCREG1=0x41
-    dcfsnz  WREG
-    movff   RCREG1, opt_temperature_adjust  ; RCREG1=0x42
-    dcfsnz  WREG
-    movff   RCREG1, opt_safety_stop_length  ; RCREG1=0x43
-    dcfsnz  WREG
-    movff   RCREG1, opt_safety_stop_start   ; RCREG1=0x44
-    dcfsnz  WREG
-    movff   RCREG1, opt_safety_stop_end     ; RCREG1=0x45
-    dcfsnz  WREG
-    movff   RCREG1, opt_safety_stop_reset   ; RCREG1=0x46
-    dcfsnz  WREG
-    nop					    				; RCREG1=0x47, ignore conservatism for standard hwOS
-    dcfsnz  WREG
-    movff   RCREG1, opt_diveTimeout	    	; RCREG1=0x48
-    dcfsnz  WREG
-    bra	    comm_write_button_polarity	    ; RCREG1=0x49
-    dcfsnz  WREG
-    movff   RCREG1, char_I_PSCR_drop	    ; RCREG1=0x4A
-    dcfsnz  WREG
-    movff   RCREG1, char_I_PSCR_lungratio	; RCREG1=0x4B
-    dcfsnz  WREG
-    movff   RCREG1, char_I_ppO2_max_deco    ; RCREG1=0x4C	MODIFIED V2.94
+	rcall	comm_write_get_byte				; "Byte 2"
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_write_abort				; No, abort!
+	movff	RCREG1,lo						; Copy
+	rcall	comm_write_get_byte				; "Byte 3"
+	rcall	comm_read_setting_wait			; Wait for UART
+	movlw	0x0F
+	cpfsgt	lo								; 0x00-0x0F: unused
+	bra		comm_write_abort				; abort!
+	subwf	lo,W							; Subtract unused commands
+	dcfsnz	WREG
+	bra		comm_write_gas1					; RCREG1=0x10
+	dcfsnz	WREG
+	bra		comm_write_gas2					; RCREG1=0x11
+	dcfsnz	WREG
+	bra		comm_write_gas3					; RCREG1=0x12
+	dcfsnz	WREG
+	bra		comm_write_gas4					; RCREG1=0x13
+	dcfsnz	WREG
+	bra		comm_write_gas5					; RCREG1=0x14
+	dcfsnz	WREG
+	bra		comm_write_dil1					; RCREG1=0x15
+	dcfsnz	WREG
+	bra		comm_write_dil2					; RCREG1=0x16
+	dcfsnz	WREG
+	bra		comm_write_dil3					; RCREG1=0x17
+	dcfsnz	WREG
+	bra		comm_write_dil4					; RCREG1=0x18
+	dcfsnz	WREG
+	bra		comm_write_dil5					; RCREG1=0x19
+	dcfsnz	WREG
+	bra		comm_write_sp1					; RCREG1=0x1A
+	dcfsnz	WREG
+	bra		comm_write_sp2					; RCREG1=0x1B
+	dcfsnz	WREG
+	bra		comm_write_sp3					; RCREG1=0x1C
+	dcfsnz	WREG
+	bra		comm_write_sp4					; RCREG1=0x1D
+	dcfsnz	WREG
+	bra		comm_write_sp5					; RCREG1=0x1E
+	dcfsnz	WREG
+	movff	RCREG1, opt_ccr_mode			; RCREG1=0x1F
+	dcfsnz	WREG
+	movff	RCREG1, opt_dive_mode			; RCREG1=0x20
+	dcfsnz	WREG
+	movff	RCREG1, char_I_deco_model		; RCREG1=0x21
+	dcfsnz	WREG
+	movff	RCREG1, char_I_ppO2_max			; RCREG1=0x22
+	dcfsnz	WREG
+	movff	RCREG1, char_I_ppO2_min			; RCREG1=0x23
+	dcfsnz	WREG
+	movff	RCREG1, char_I_extra_time		; RCREG1=0x24
+	dcfsnz	WREG
+	movff	RCREG1, opt_GF_low				; RCREG1=0x25
+	dcfsnz	WREG
+	movff	RCREG1, opt_GF_high				; RCREG1=0x26
+	dcfsnz	WREG
+	movff	RCREG1, opt_aGF_low				; RCREG1=0x27
+	dcfsnz	WREG
+	movff	RCREG1, opt_aGF_high			; RCREG1=0x28
+	dcfsnz	WREG
+	movff	RCREG1, opt_enable_aGF			; RCREG1=0x29
+	dcfsnz	WREG
+	movff	RCREG1, opt_sat_multiplier_non_gf	; RCREG1=0x2A
+	dcfsnz	WREG
+	movff	RCREG1, opt_desat_multiplier_non_gf	; RCREG1=0x2B
+	dcfsnz	WREG
+	movff	RCREG1, opt_last_stop			; RCREG1=0x2C
+	dcfsnz	WREG
+	movff	RCREG1, opt_brightness			; RCREG1=0x2D
+	dcfsnz	WREG
+	movff	RCREG1, opt_units				; RCREG1=0x2E
+	dcfsnz	WREG
+	movff	RCREG1, opt_sampling_rate		; RCREG1=0x2F
+	dcfsnz	WREG
+	movff	RCREG1, opt_salinity			; RCREG1=0x30
+	dcfsnz	WREG
+	movff	RCREG1, opt_dive_color_scheme	; RCREG1=0x31
+	dcfsnz	WREG
+	movff	RCREG1, opt_language			; RCREG1=0x32
+	dcfsnz	WREG
+	movff	RCREG1, opt_dateformat			; RCREG1=0x33
+	dcfsnz	WREG
+	movff	RCREG1, opt_compass_gain		; RCREG1=0x34
+	dcfsnz	WREG
+	movff	RCREG1, opt_pressure_adjust		; RCREG1=0x35
+	dcfsnz	WREG
+	movff	RCREG1, opt_enable_safetystop	; RCREG1=0x36
+	dcfsnz	WREG
+	movff	RCREG1, opt_calibration_O2_ratio; RCREG1=0x37
+	dcfsnz	WREG
+	nop										; RCREG1=0x38	NOT USED ANYMORE (ex opt_sensor_fallback)
+	dcfsnz	WREG
+	movff	RCREG1, opt_flip_screen			; RCREG1=0x39
+	dcfsnz	WREG
+	movff	RCREG1, opt_cR_button_left		; RCREG1=0x3A
+	dcfsnz	WREG
+	movff	RCREG1, opt_cR_button_right		; RCREG1=0x3B
+	dcfsnz	WREG
+	movff	RCREG1, char_I_bottom_usage		; RCREG1=0x3C
+	dcfsnz	WREG
+	movff	RCREG1, char_I_deco_usage		; RCREG1=0x3D
+	dcfsnz	WREG
+	movff	RCREG1, opt_modwarning			; RCREG1=0x3E
+	dcfsnz	WREG
+	movff	RCREG1, opt_vsitextv2			; RCREG1=0x3F
+	dcfsnz	WREG
+	movff	RCREG1, opt_vsigraph			; RCREG1=0x40
+	dcfsnz	WREG
+	movff	RCREG1, opt_showppo2			; RCREG1=0x41
+	dcfsnz	WREG
+	movff	RCREG1, opt_temperature_adjust	; RCREG1=0x42
+	dcfsnz	WREG
+	movff	RCREG1, opt_safety_stop_length	; RCREG1=0x43
+	dcfsnz	WREG
+	movff	RCREG1, opt_safety_stop_start	; RCREG1=0x44
+	dcfsnz	WREG
+	movff	RCREG1, opt_safety_stop_end		; RCREG1=0x45
+	dcfsnz	WREG
+	movff	RCREG1, opt_safety_stop_reset	; RCREG1=0x46
+	dcfsnz	WREG
+	nop										; RCREG1=0x47, ignore conservatism for standard hwOS
+	dcfsnz	WREG
+	movff	RCREG1, opt_diveTimeout			; RCREG1=0x48
+	dcfsnz	WREG
+	bra		comm_write_button_polarity		; RCREG1=0x49
+	dcfsnz	WREG
+	movff	RCREG1, char_I_PSCR_drop		; RCREG1=0x4A
+	dcfsnz	WREG
+	movff	RCREG1, char_I_PSCR_lungratio	; RCREG1=0x4B
+	dcfsnz	WREG
+	movff	RCREG1, char_I_ppO2_max_deco	; RCREG1=0x4C
+	dcfsnz	WREG
+	movff	RCREG1, char_I_ppO2_min_loop	; RCREG1=0x4D
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_size+0		; RCREG1=0x4E
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_size+1		; RCREG1=0x4F
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_size+2		; RCREG1=0x50
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_size+3		; RCREG1=0x51
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_size+4		; RCREG1=0x52
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_pres_fill+0	; RCREG1=0x53
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_pres_fill+1	; RCREG1=0x54
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_pres_fill+2	; RCREG1=0x55
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_pres_fill+3	; RCREG1=0x56
+	dcfsnz	WREG
+	movff	RCREG1, char_I_tank_pres_fill+4	; RCREG1=0x57
+	dcfsnz	WREG
+	movff	RCREG1, char_I_cc_max_frac_o2	; RCREG1=0x58
+	dcfsnz	WREG
+	movff	RCREG1, opt_sim_setpoint_number	; RCREG1=0x59
+	dcfsnz	WREG
+	movff	RCREG1, opt_calc_asc_gasvolume	; RCREG1=0x5A
+	dcfsnz	WREG
+	movff	RCREG1, opt_sim_use_aGF			; RCREG1=0x5B
+	dcfsnz	WREG
+	movff	RCREG1, char_I_altitude_wait	; RCREG1=0x5C
+	dcfsnz	WREG
+	movff	RCREG1, opt_enable_IBCD			; RCREG1=0x5D
+	dcfsnz	WREG
+	movff	RCREG1, opt_sat_multiplier_gf	; RCREG1=0x5E
+	dcfsnz	WREG
+	movff	RCREG1, opt_desat_multiplier_gf	; RCREG1=0x5F
 
-	; NEW
-    dcfsnz  WREG
-    movff   RCREG1, char_I_ppO2_min_loop	; RCREG1=0x4D	## CCR/pSCR min ppO2 limiter	MODIFIED ## V2.94
-    dcfsnz  WREG
-    movff   RCREG1, char_I_tank_size+0		; RCREG1=0x4E	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_size+1		; RCREG1=0x4F	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_size+2		; RCREG1=0x50	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_size+3		; RCREG1=0x51	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_size+4		; RCREG1=0x52	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_pres_fill+0	; RCREG1=0x53	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_pres_fill+1	; RCREG1=0x54	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_pres_fill+2	; RCREG1=0x55	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_pres_fill+3	; RCREG1=0x56	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_tank_pres_fill+4	; RCREG1=0x57	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, char_I_cc_max_frac_o2	; RCREG1=0x58	## CCR max ppO2 limiter
-	dcfsnz  WREG
-    movff   RCREG1, opt_sim_setpoint_number	; RCREG1=0x59	## deco calculator enhancement
-	dcfsnz  WREG
-    movff   RCREG1, opt_calc_asc_gasvolume	; RCREG1=0x5A	## bailout gas needs
-	dcfsnz  WREG
-    movff   RCREG1, opt_sim_use_aGF		; RCREG1=0x5B	## deco calculator enhancement
-	dcfsnz  WREG
-    movff   RCREG1, char_I_altitude_wait	; RCREG1=0x5C	## no fly altitude
-	dcfsnz  WREG
-    movff   RCREG1, opt_enable_IBCD		; RCREG1=0x5D	## TBCD
-        dcfsnz  WREG
-    movff   RCREG1, opt_sat_multiplier_gf	; RCREG1=0x5E
-	dcfsnz  WREG
-    movff   RCREG1, opt_desat_multiplier_gf	; RCREG1=0x5F
 
-	
-	
 comm_write_abort:
-    ; Check Options, gases and diluents
-    call    option_check_all                ; Check all options (and reset if not within their min/max boundaries)
-    bsf     ccr_diluent_setup               ; =1: Setting up Diluents ("Gas6-10")
-    call    gaslist_cleanup_list            ; Takes care that only one gas can be first and first has 0m change depth
-    bcf     ccr_diluent_setup               ; =1: Setting up Diluents ("Gas6-10")
-    call    gaslist_cleanup_list            ; Takes care that only one gas can be first and first has 0m change depth
-    call    get_first_gas_to_WREG           ; Makes sure at least one Gas is "First"
-    call    get_first_dil_to_WREG           ; Makes sure at least one Diluent is "First"
-    goto    comm_download_mode0             ; Done. Loop with timeout reset
+	; Check Options, gases and diluents
+	call	option_check_all				; Check all options (and reset if not within their min/max boundaries)
+	bsf		ccr_diluent_setup				; =1: Setting up Diluents ("Gas6-10")
+	call	gaslist_cleanup_list			; Takes care that only one gas can be first and first has 0m change depth
+	bcf		ccr_diluent_setup				; =1: Setting up Diluents ("Gas6-10")
+	call	gaslist_cleanup_list			; Takes care that only one gas can be first and first has 0m change depth
+	call	get_first_gas_to_WREG			; Makes sure at least one Gas is "First"
+	call	get_first_dil_to_WREG			; Makes sure at least one Diluent is "First"
+	goto	comm_download_mode0				; Done. Loop with timeout reset
 
 comm_write_dil1:
-    movff   RCREG1,opt_dil_O2_ratio+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_He_ratio+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_type+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_dil_change+0
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,opt_dil_O2_ratio+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_He_ratio+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_type+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_dil_change+0
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_dil2:
-    movff   RCREG1,opt_dil_O2_ratio+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_He_ratio+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_type+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_dil_change+1
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,opt_dil_O2_ratio+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_He_ratio+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_type+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_dil_change+1
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_dil3:
-    movff   RCREG1,opt_dil_O2_ratio+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_He_ratio+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_type+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_dil_change+2
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,opt_dil_O2_ratio+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_He_ratio+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_type+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_dil_change+2
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_dil4:
-    movff   RCREG1,opt_dil_O2_ratio+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_He_ratio+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_type+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_dil_change+3
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,opt_dil_O2_ratio+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_He_ratio+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_type+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_dil_change+3
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_dil5:
-    movff   RCREG1,opt_dil_O2_ratio+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_He_ratio+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,opt_dil_type+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_dil_change+4
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,opt_dil_O2_ratio+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_He_ratio+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,opt_dil_type+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_dil_change+4
+	bra		comm_write_abort				; Done. Loop with timeout reset
 
 comm_write_sp1:
-    movff   RCREG1,char_I_setpoint_cbar+0
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_setpoint_change+0
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,char_I_setpoint_cbar+0
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_setpoint_change+0
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_sp2:
-    movff   RCREG1,char_I_setpoint_cbar+1
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_setpoint_change+1
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,char_I_setpoint_cbar+1
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_setpoint_change+1
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_sp3:
-    movff   RCREG1,char_I_setpoint_cbar+2
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_setpoint_change+2
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,char_I_setpoint_cbar+2
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_setpoint_change+2
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_sp4:
-    movff   RCREG1,char_I_setpoint_cbar+3
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_setpoint_change+3
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,char_I_setpoint_cbar+3
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_setpoint_change+3
+	bra		comm_write_abort				; Done. Loop with timeout reset
 comm_write_sp5:
-    movff   RCREG1,char_I_setpoint_cbar+4
-    rcall	comm_write_get_byte
-    movff   RCREG1,char_I_setpoint_change+4
-    bra		comm_write_abort             	; Done. Loop with timeout reset
+	movff	RCREG1,char_I_setpoint_cbar+4
+	rcall	comm_write_get_byte
+	movff	RCREG1,char_I_setpoint_change+4
+	bra		comm_write_abort				; Done. Loop with timeout reset
 
 ;-----------------------------------------------------------------------------
 
@@ -1553,25 +1523,25 @@
 	movlw	"n"								; send echo
 	movwf	TXREG1
 	rcall	comm_rs232_wait_tx				; Wait for UART
-	WIN_SMALL	comm_string_column, comm_string_row
+	WIN_SMALL comm_string_column, comm_string_row
 	movlw	.16
 	movwf	lo								; counter
 comm_send_string_loop:
 	call	comm_write_get_byte
-	btfsc	rs232_recieve_overflow			; Got byte?
-	bra		comm_send_string_abort          ; No, abort!
+	btfsc	rs232_receive_overflow			; Got byte?
+	bra		comm_send_string_abort			; No, abort!
 	movff	RCREG1,POSTINC2					; Store character
 	decfsz	lo,F
 	bra		comm_send_string_loop
 comm_send_string_abort:
 	STRCAT_PRINT ""							; Show the text
-    goto    comm_download_mode0             ; Done. Loop with timeout reset
+	goto	comm_download_mode0				; Done. Loop with timeout reset
 
 ;-----------------------------------------------------------------------------
 
 comm_check_day:
-	movff	RCREG1, day
-	movff	month,lo		; new month
+	movff	RCREG1,day
+	movff	month,lo						; new month
 	dcfsnz	lo,F
 	movlw	.31
 	dcfsnz	lo,F
@@ -1596,23 +1566,23 @@
 	movlw	.30
 	dcfsnz	lo,F
 	movlw	.31
-	cpfsgt	day				; day ok?
-	return					; OK
-	movlw	.1				; not OK, set to 1st
+	cpfsgt	day								; day ok?
+	return									; OK
+	movlw	.1								; not OK, set to 1st
 	movwf	day
-	return	
+	return
 
 comm_write_button_polarity:
 	; Store RCREG1 into EEPROM .897
-	movlw	LOW	.897
+	movlw	LOW  .897
 	movwf	EEADR
-	movlw	HIGH	.897
+	movlw	HIGH .897
 	movwf	EEADRH
 	movff	RCREG1,EEDATA
-	movff	EEDATA,button_polarity	    ; 0xFF (Both normal), 0x00 (Both inverted), 0x01 (Left inverted only), 0x02 (Right inverted only) 
-	call    write_eeprom                ; EEDATA into EEPROM@EEADR
-	clrf	EEADRH			    		; Reset EEADRH
-	goto	comm_download_mode0         ; Done. Loop with timeout reset
-	
+	movff	EEDATA,button_polarity			; 0xFF (Both normal), 0x00 (Both inverted), 0x01 (Left inverted only), 0x02 (Right inverted only) 
+	call	write_eeprom					; EEDATA into EEPROM@EEADR
+	clrf	EEADRH							; Reset EEADRH
+	goto	comm_download_mode0				; Done. Loop with timeout reset
+
 ;----------------------------------------------------------------------------
-        END
\ No newline at end of file
+	END
\ No newline at end of file