diff src/simulator.asm @ 582:b455b31ce022

work on 2.97 stable
author heinrichsweikamp
date Mon, 26 Feb 2018 16:40:28 +0100
parents b7eb98dbd800
children e1f0f5e3d4e4
line wrap: on
line diff
--- a/src/simulator.asm	Sun Feb 25 18:25:38 2018 +0100
+++ b/src/simulator.asm	Mon Feb 26 16:40:28 2018 +0100
@@ -1,118 +1,119 @@
 ;=============================================================================
 ;
-;   File simulator.asm								REFACTORED VERSION V2.95a1
+;   File simulator.asm								REFACTORED VERSION V2.98
 ;
 ;   Decoplan interface to C model code.
 ;
 ;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
 ;=============================================================================
 ; HISTORY
-;  2011-07-09 : [jDG] Creation...
+; 2011-07-09 : [jDG] Creation...
 
-#include "hwos.inc"						; Mandatory include
-#include "convert.inc"                  ; output_*
-#include "shared_definitions.h"         ; Mailbox from/to p2_deco.c
-#include "strings.inc"                  ; STRCPY,...
-#include "tft.inc"                      ; WIN_LEFT,...
-#include "wait.inc"                     ; speed_*
+#include "hwos.inc"					; Mandatory include
+#include "convert.inc"				; output_*
+#include "shared_definitions.h"		; Mailbox from/to p2_deco.c
+#include "strings.inc"				; STRCPY,...
+#include "tft.inc"					; WIN_LEFT,...
+#include "wait.inc"					; speed_*
 #include "start.inc"
 #include "divemode.inc"
 #include "math.inc"
 #include "eeprom_rs232.inc"
 #include "tft_outputs.inc"
 #include "gaslist.inc"
+#include "isr.inc"
 
-gui     CODE
+gui		CODE
 
-    extern  deco_clear_tissue
-    extern  deco_push_tissues_to_vault
-    extern  deco_calc_dive_interval
-    extern  deco_calc_hauptroutine
-    extern  deco_pull_tissues_from_vault
-    extern  TFT_display_decotype_surface1
-	extern	get_first_dil_to_WREG
-	extern	get_first_gas_to_WREG
-	extern	setup_dil_registers
-	extern	setup_gas_registers
-	extern	deco_setup_cc_diluents
-	extern	deco_setup_oc_gases
+	extern deco_clear_tissue
+	extern deco_push_tissues_to_vault
+	extern deco_calc_dive_interval
+	extern deco_calc_hauptroutine
+	extern deco_pull_tissues_from_vault
+	extern TFT_display_decotype_surface1
+	extern get_first_dil_to_WREG
+	extern get_first_gas_to_WREG
+	extern setup_dil_registers
+	extern setup_gas_registers
+	extern deco_setup_cc_diluents
+	extern deco_setup_oc_gases
+	extern log_screendump_and_onesecond
+	extern logbook_preloop_tasks
+	extern do_return_demo_planner
 
 
-    extern  log_screendump_and_onesecond, logbook_preloop_tasks
-    extern  do_planner_menu
-
-;---- Private temp variables -------------------------------------------------
+;---- Private local variables -------------------------------------------------
 
-	CBLOCK  tmp+0x12                ; Reserved space for word processor and convert
-		decoplan_index              ; within each page
-		decoplan_gindex             ; global index
-		decoplan_last               ; Depth of last stop (CF#29)
-		decoplan_flags              ; Various private flags.
-		decoplan_page               ; page number
-		decoplan_warnings			; deco engine warnings (ex reserved to tmp+0x18...)
-	ENDC
-		
+	CBLOCK local1				; max size is 16 Byte !!!
+		decoplan_index			; within each page
+		decoplan_gindex			; global index
+		decoplan_last			; Depth of last stop (CF#29)
+		decoplan_flags			; Various private flags.
+		decoplan_page			; page number
+		decoplan_warnings		; deco engine warnings
+		gas_counter				; counter for looping through the gases
+		row_pos					; used for positioning of graphic elements
+	ENDC						; used: 8 byte, remaining: 8 byte
+
 ;---- Defines ----------------------------------------------------------------
 
 #define decoplan_last_ceiling_shown	decoplan_flags,0
-#define	decoplan_abort				decoplan_flags,1
+#define decoplan_abort				decoplan_flags,1
 
 ;---- Demo deco planner ------------------------------------------------------
-	global  do_demo_planner
 
+	global	do_demo_planner
 do_demo_planner:
 	btfsc	FLAG_gauge_mode				; =1: In Gauge mode
-	goto	do_planner_menu
+	goto	do_return_demo_planner
 	btfsc	FLAG_apnoe_mode				; =1: In Apnea mode
-	goto	do_planner_menu
+	goto	do_return_demo_planner
 	bcf		decoplan_abort				; initialize (clear) abort flag
 	bcf		is_bailout					; clear bailout condition (may have remained set from last invocation)
 	rcall	deco_planer
 	btfss	decoplan_abort				; skip recall deco_show_plan if calculations were aborted
 	rcall	deco_show_plan
-	goto	do_planner_menu
+	goto	do_return_demo_planner
 
 
 	global	deco_setup
 deco_setup:
-	banksel	common
 	btfsc	FLAG_ccr_mode
 	bra		deco_setup_cc
 	btfsc	FLAG_pscr_mode
 	bra		deco_setup_cc
 deco_setup_oc:
-	call    get_first_gas_to_WREG			; gets first gas (1-5) into WREG
-    call	setup_gas_registers				; with WREG=Gas 1-5
+	call	get_first_gas_to_WREG			; gets first gas (1-5) into WREG
+	call	setup_gas_registers				; with WREG=Gas 1-5
 	call	deco_setup_oc_gases				; setup OC/Bailout Gases and configure for OC deco calculation
 	bra		deco_setup_cont
 deco_setup_cc:
-    call    get_first_dil_to_WREG           ; gets first gas (1-5) into WREG
-    call	setup_dil_registers				; with WREG=Gas 1-5
+	call	get_first_dil_to_WREG			; gets first gas (1-5) into WREG
+	call	setup_dil_registers				; with WREG=Gas 1-5
 	call	deco_setup_cc_diluents			; setup CCR/pSCR diluents and configure for CCR/pSCR deco calculation
 deco_setup_cont:
-	; use ambient conditions for simulation ## V2.94
-	#include    "isr.inc"
+	; use ambient conditions for simulation
 	SAFE_2BYTE_COPY last_surfpressure_30min, int_I_pres_surface	; copy surface pressure to deco routine
-	
+
 	movlw	deco_distance
 	movff	WREG,char_I_deco_distance
 
 	movff	opt_last_stop,char_I_depth_last_deco
 	movff	opt_GF_low,char_I_GF_Low_percentage
 	movff	opt_GF_high,char_I_GF_High_percentage
-	
+
 	; overwrite GF if aGF is wanted
 	bsf		use_agf
 	TSTOSS	opt_sim_use_aGF
 	bcf		use_agf
 
-	btfsc	use_agf					; =1: Use aGF
+	btfsc	use_agf							; =1: Use aGF
 	movff	opt_aGF_low,char_I_GF_Low_percentage
-	btfsc	use_agf					; =1: Use aGF
+	btfsc	use_agf							; =1: Use aGF
 	movff	opt_aGF_high,char_I_GF_High_percentage
 
 	bcf		is_bailout
-	
+
 	; setup char_I_const_ppO2 for CC modes
 	clrf	WREG
 	btfsc	FLAG_pscr_mode
@@ -120,256 +121,248 @@
 	btfss	FLAG_ccr_mode
 	return									; done if not in CCR mode
 	movff	opt_sim_setpoint_number,WREG	; configure CCR computations to selected setpoint
-	decf    WREG,W							; 1-5 -> 0-4
-	lfsr    FSR1,char_I_setpoint_cbar		; load base address of setpoint list
-	movff   PLUSW1,char_I_const_ppO2		; setup setpoint
+	decf	WREG,W							; 1-5 -> 0-4
+	lfsr	FSR1,char_I_setpoint_cbar		; load base address of setpoint list
+	movff	PLUSW1,char_I_const_ppO2		; setup setpoint
 	return
-	
+
 ;=============================================================================
 ; Launch deco planning
-; 
-		global  deco_planer
+;
+		global	deco_planer
 deco_planer:
-        call    speed_fastest				; Quick !
-		call    deco_push_tissues_to_vault
-        rcall   deco_setup					; Setup all model parameters.
+	call	speed_fastest					; Quick !
+	call	deco_push_tissues_to_vault		; C-code: back-up state of the real tissues
+	banksel	common
+	rcall	deco_setup						; Setup all model parameters.
 
 ;---- Specific settings ------------------------------------------------------
 
-		; configure the deco engine for normal plan, CNS & gas volume calculation and no delayed ascent
-		movff	char_O_deco_status,WREG		; bank-safe copy
-		bcf		WREG,DECO_PLAN_FLAG			; normal plan mode,
-		bsf		WREG,DECO_CNS_FLAG			; enable CNS calculation (CNS at end of dive),
-		bsf		WREG,DECO_VOLUME_FLAG		; enable gas volume calculation, and
-		bcf		WREG,DECO_ASCENT_FLAG		; disable delayed ascent calculation
-		movff	WREG,char_O_deco_status		; bank-safe copy back
+	; configure the deco engine for normal plan, CNS & gas volume calculation and no delayed ascent
+	movff	char_O_deco_status,WREG			; bank-safe copy
+	bcf		WREG,DECO_PLAN_FLAG				; normal plan mode,
+	bsf		WREG,DECO_CNS_FLAG				; enable CNS calculation (CNS at end of dive),
+	bsf		WREG,DECO_VOLUME_FLAG			; enable gas volume calculation, and
+	bcf		WREG,DECO_ASCENT_FLAG			; disable delayed ascent calculation
+	movff	WREG,char_O_deco_status			; bank-safe copy back
 
-		; configure the deco engine for total-dive gas volume calculation
-		movff	char_O_main_status,WREG		; bank-safe copy
-		bsf		WREG,DECO_BOTTOM_FLAG		; set bottom flag
-		movff	WREG,char_O_main_status		; bank-safe copy back
+	; configure the deco engine for total-dive gas volume calculation
+	movff	char_O_main_status,WREG			; bank-safe copy
+	bsf		WREG,DECO_BOTTOM_FLAG			; set bottom flag
+	movff	WREG,char_O_main_status			; bank-safe copy back
 
 deco_planer_redo:
+	; show deco calculation is in progress
+	call	TFT_ClearScreen
+	WIN_COLOR	color_greenish
+	TEXT_SMALL	.20,.40, tCalculating
+	WIN_COLOR	color_lightblue
+	WIN_SMALL	.1,.215
+	STRCPY_TEXT_PRINT tAbort
 
-		; show deco calculation is in progress
-		call	TFT_ClearScreen
-        WIN_COLOR	color_greenish
-		TEXT_SMALL	.20,.40, tCalculating
-		WIN_COLOR	color_lightblue
-		WIN_SMALL	.1,.215
-		STRCPY_TEXT_PRINT  tAbort
-
-		; configure the deco engine for restart:
-		movff	char_O_deco_status,WREG		; bank-safe copy
-		bsf		WREG,DECO_STATUS_0_FLAG		; configure init ...
-		bsf		WREG,DECO_STATUS_1_FLAG		; ... state,
-		movff	WREG,char_O_deco_status		; bank-safe copy back
+	; configure the deco engine for restart:
+	movff	char_O_deco_status,WREG			; bank-safe copy
+	bsf		WREG,DECO_STATUS_0_FLAG			; configure init ...
+	bsf		WREG,DECO_STATUS_1_FLAG			; ... state,
+	movff	WREG,char_O_deco_status			; bank-safe copy back
 
 ;---- Add delay at surface, if needed ----------------------------------------
-		
-		banksel	char_I_dive_interval
-        tstfsz  char_I_dive_interval
-        call    deco_calc_dive_interval
+	banksel	char_I_dive_interval
+	tstfsz	char_I_dive_interval
+	call	deco_calc_dive_interval
 
 ;---- Dive loop --------------------------------------------------------------
+	; Compute dive ambient conditions
+	banksel	char_I_bottom_depth
+	movf	char_I_bottom_depth,W
+	mullw	.100
+	movlw	LOW(.1000)
+	addwf	PRODL,W
+	movwf	int_I_pres_respiration+0
+	movlw	HIGH(.1000)
+	addwfc	PRODH,W
+	movwf	int_I_pres_respiration+1
+	banksel common
 
-        ; Compute dive ambient conditions
-        banksel char_I_bottom_depth
-        movf    char_I_bottom_depth,W
-        mullw   .100
-        movlw   LOW(.1000)
-        addwf   PRODL,W
-        movwf   int_I_pres_respiration+0
-        movlw   HIGH(.1000)
-        addwfc  PRODH,W
-        movwf   int_I_pres_respiration+1
-		
-		banksel common
+	movff	char_I_bottom_time,char_I_sim_advance_time
+
+	clrf	TMR5L
+	clrf	TMR5H							; 30,51757813µs/bit in TMR5L:TMR5H
 
-		movff	char_I_bottom_time,char_I_sim_advance_time
-		
-        clrf    TMR5L
-        clrf    TMR5H                   	; 30,51757813µs/bit in TMR5L:TMR5H
+	call	deco_calc_hauptroutine			; C-code: initialization + complete bottom time part
+	banksel	common
 
-        call    deco_calc_hauptroutine  	; initialization + complete bottom time part
-        banksel common
-		
 ;---- BAILOUT: Switch to OC gases for ascent cycles --------------------------
-
-        btfss   is_bailout              	; Doing a bailout deco plan ?
-        bra     deco_planer_finishing   	; NO  - keep gases
+	btfss	is_bailout						; Doing a bailout deco plan ?
+	bra	 deco_planer_finishing				; NO  - keep gases
 											; YES - switch to OC gas 
 
-		; reconfigure the deco engine for delayed ascent mode
-		movff	char_O_deco_status,lo		; bank-safe copy
-		bsf		lo,DECO_ASCENT_FLAG			; set flag for delayed ascent calculation
-		movff	lo,char_O_deco_status		; bank-safe copy back
+	; reconfigure the deco engine for delayed ascent mode
+	movff	char_O_deco_status,lo			; bank-safe copy
+	bsf		lo,DECO_ASCENT_FLAG				; set flag for delayed ascent calculation
+	movff	lo,char_O_deco_status			; bank-safe copy back
 
-		; configure the deco engine for delayed ascent part gas volume calculation
-		movff	char_O_main_status,WREG		; bank-safe copy
-		bcf		WREG,DECO_BOTTOM_FLAG		; set bottom flag
-		movff	WREG,char_O_main_status		; bank-safe copy back
+	; configure the deco engine for delayed ascent part gas volume calculation
+	movff	char_O_main_status,WREG			; bank-safe copy
+	bcf		WREG,DECO_BOTTOM_FLAG			; set bottom flag
+	movff	WREG,char_O_main_status			; bank-safe copy back
 
-		; reconfigure gas settings to OC gases
-		call    get_first_gas_to_WREG		; get first gas (1-5) into WREG
-		call	setup_gas_registers			; With WREG=Gas 1-5 (or 6, not applicable here)
-		call	deco_setup_oc_gases			; With WREG=Gas 1-5 (or 6, not applicable here)
-		
-		; set the gas change override flag to allow gas changes before deco stops as done in alternative plan
-		movff	char_O_main_status,lo		; bank-safe copy
-		bsf		lo,DECO_GASCHANGE_OVRD		; set flag for gas change override
-		movff	lo,char_O_main_status		; bank-safe copy back
+	; reconfigure gas settings to OC gases
+	call	get_first_gas_to_WREG			; get first gas (1-5) into WREG
+	call	setup_gas_registers				; With WREG=Gas 1-5 (or 6, not applicable here)
+	call	deco_setup_oc_gases				; With WREG=Gas 1-5 (or 6, not applicable here)
+
+	; set the gas change override flag to allow gas changes before deco stops as done in alternative plan
+	movff	char_O_main_status,lo			; bank-safe copy
+	bsf		lo,DECO_GASCHANGE_OVRD			; set flag for gas change override
+	movff	lo,char_O_main_status			; bank-safe copy back
 
 ;---- Wait until status reaches zero -------------------------------------------
+deco_planer_finishing:
+	call	deco_calc_hauptroutine			; C-code: Simulate more dive time to trigger the deco calculations
+	banksel	common
 
-deco_planer_finishing:
-        call    deco_calc_hauptroutine  	; Simulate more dive time to trigger the deco calculations
-		banksel	common
-		
-		btfss	switch_left					; check if left button was pressed
-		bra		deco_planer_finishing_1		; NO  - continue calculations
-		bsf		decoplan_abort				; YES - set abort flag so that deco_show_plan will not be called
-		bra		deco_planer_finishing_2		;       do some clean-up and return
+	btfss	switch_left						; check if left button was pressed
+	bra		deco_planer_finishing_1			; NO  - continue calculations
+	bsf		decoplan_abort					; YES - set abort flag so that deco_show_plan will not be called
+	bra		deco_planer_finishing_2			;       do some clean-up and return
 deco_planer_finishing_1:
-		movff	char_O_deco_status,lo		; working copy of char_O_deco_status in bank common
-		movlw	DECO_STATUS_MASK			; bit mask for deco status bit set
-		andwf	lo,W						; mask out bits showing state of computation
-		tstfsz	WREG						; check if a compute cycle is finished (bits 1 and 0 == 0)
-		bra		deco_planer_finishing		; NO - needs more computation cycles
+	movff	char_O_deco_status,lo			; working copy of char_O_deco_status in bank common
+	movlw	DECO_STATUS_MASK				; bit mask for deco status bit set
+	andwf	lo,W							; mask out bits showing state of computation
+	tstfsz	WREG							; check if a compute cycle is finished (bits 1 and 0 == 0)
+	bra		deco_planer_finishing			; NO - needs more computation cycles
 
 ;---- Done: add CNS from decoplan, and restore tissues
-
 deco_planer_finishing_2:
-
 	movff	char_O_deco_warnings,decoplan_warnings	; copy warnings
-		
-        call    deco_pull_tissues_from_vault			; restore "real" deco data
-        banksel common                  				; back to bank 1
+
+	call	deco_pull_tissues_from_vault	; C-code: restore status of the real tissues
+	banksel	common							; back to bank 1
 
-	movlw	b'00111000'								; 1:8 Prescaler -> 65,536ms@16MHz
+	movlw	b'00111000'						; 1:8 Prescaler -> 65,536ms@16MHz
 	movwf	T3CON
-        goto	speed_normal	    ;(and return)
+	goto	speed_normal					; (and return)
 
 ;-----------------------------------------------------------------------------
 ; Draw a stop of the deco plan (simulator or dive).
-; Inputs: lo      = depth. Range 3m...93m
-;                 + 0x80 if this is a switch-gas stop.
-;         up      = minutes. range 1'..240'.
-;         win_top = line to draw on screen.
-; Trashed: up, lo, win_height, win_leftx2, win_width, win_color*,
+; Inputs:  lo      = depth
+;          hi      = minutes
+;          win_top = line to draw on screen.
+;
+; Trashed: hi, lo,
+;          win_height, win_leftx2, win_width, win_color*,
 ;          WREG, PROD, TBLPTR TABLAT.
 ;
 deco_plan_show_stop:
+	;---- Print depth ----------------------------------------------------
+	lfsr	FSR2,char_O_deco_gas		; needed to be initialized here every time because...
+	movf	decoplan_gindex,W			; ...FSR2 is also used for string operations
+	movff	PLUSW2,WREG					; get current gas and copy it to WREG for color-coding
+	call	TFT_color_code_gas			; set output color dependent on gas (1-5)
 
-		;---- Print depth ----------------------------------------------------
-		bcf     lo,7					; clear gas-switch flag (not used any more anyhow)
-		lfsr	FSR2,char_O_deco_gas
-		movf    decoplan_gindex,W		; index
-    	movff	PLUSW2,WREG				; get current gas
-		rcall	simulator_color_gas		; set output color dependent on gas (1-5)
+	lfsr	FSR2,buffer
 
-	    lfsr	FSR2,buffer
-
-		TSTOSS  opt_units				; 0=Meters, 1=Feets
-		bra		deco_plan_show_nstd_stop_metric
+	TSTOSS	opt_units					; 0=Meters, 1=Feets
+	bra		deco_plan_show_nstd_stop_metric
 
-        WIN_LEFT .85
-		movf	lo,W					; lo = m
-		mullw	.100					; PRODL:PRODH = mbar
-		movff	PRODL,lo
-		movff	PRODH,hi
-		; Convert with 334feet/100m to have 10ft, 20ft, 30ft stops...
-		movff	lo,xA+0
-		movff	hi,xA+1
-		movlw	LOW 	d'334'          ; 334feet/100m
-		movwf	xB+0
-		movlw	HIGH 	d'334'
-		movwf	xB+1
-		call	mult16x16			    ; xA*xB=xC (lo:hi * 328)
-		movlw	d'50'                   ; round up
-		addwf	xC+0,F
-		movlw	0
-		addwfc	xC+1,F
-		addwfc	xC+2,F
-		addwfc	xC+3,F
-		movlw	d'100'					
-		movwf	xB+0
-		clrf	xB+1
-		call	div32x16  			    ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
-		movff	xC+0,lo
-		movff	xC+1,hi				    ; restore lo and hi with updated value
-		bsf		leftbind
-		bsf		ignore_digit4			; Only full feet
-		output_16
-		bcf     leftbind
-		STRCAT_PRINT	"ft "
-		bra		deco_plan_show_nstd_stop_common
+	WIN_LEFT .85
+	movf	lo,W						; lo = m
+	mullw	.100						; PRODL:PRODH = mbar
+	movff	PRODL,lo
+	movff	PRODH,hi
+	; Convert with 334feet/100m to have 10ft, 20ft, 30ft stops...
+	movff	lo,xA+0
+	movff	hi,xA+1
+	movlw	LOW  d'334'					; 334feet/100m
+	movwf	xB+0
+	movlw	HIGH d'334'
+	movwf	xB+1
+	call	mult16x16					; xA*xB=xC (lo:hi * 328)
+	movlw	d'50'						; round up
+	addwf	xC+0,F
+	movlw	.0
+	addwfc	xC+1,F
+	addwfc	xC+2,F
+	addwfc	xC+3,F
+	movlw	d'100'
+	movwf	xB+0
+	clrf	xB+1
+	call	div32x16					; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
+	movff	xC+0,lo
+	movff	xC+1,hi						; restore lo and hi with updated value
+	bsf		leftbind
+	bsf		ignore_digit4				; Only full feet
+	output_16
+	bcf		leftbind
+	STRCAT_PRINT "ft "
+	bra		deco_plan_show_nstd_stop_common
 
 deco_plan_show_nstd_stop_metric:
-        WIN_LEFT .90
-	    bsf     leftbind
-	    output_8					    ; outputs into Postinc2!
-		bcf     leftbind
-        STRCAT_PRINT 	"m "
+	WIN_LEFT .90
+	bsf	leftbind
+	output_8							; outputs into Postinc2!
+	bcf	leftbind
+	STRCAT_PRINT "m "
+
 deco_plan_show_nstd_stop_common:
-        ;---- Print duration -------------------------------------------------
-	    WIN_LEFT	.135
-	    lfsr	FSR2,buffer
-	    
-	    movf    lo,W                    ; Swap up & lo
-	    movff   up,lo
-	    movwf   up
+	;---- Print duration -------------------------------------------------
+	WIN_LEFT .135
+	lfsr	FSR2,buffer
 
-	    output_8					    ; Allow up to 240'
-        STRCAT       "'  "              ; 1 to 3 chars for depth.
-        clrf    WREG
-        movff   WREG,buffer+.3          ; limit to 4 chars
-        STRCAT_PRINT 	""
+	movf	lo,W						; Swap hi & lo
+	movff	hi,lo
+	movwf	hi
+
+	output_8							; Allow up to 240'
+	clrf	WREG
+	movff	WREG,buffer+.3				; limit to 2 chars
+	STRCAT_PRINT ""
 
-	    movf    lo,W                    ; Swap back up & lo
-	    movff   up,lo
-	    movwf   up
+	movf	lo,W						; Swap back hi & lo
+	movff	hi,lo
+	movwf	hi
 
-        ;---------------------------------------------------------------------
-        ; Draw the bar graph used for deco stops (deco plan in simulator or dive).
-        incf   win_top,F
-        movlw	.19
-        movwf   win_height
-        movlw	.118
-        movwf	win_leftx2    		    ; column left (0-159)
-        movlw	.16
-        movwf	win_width+0    		    ; column max width.
-		clrf    win_width+1
+	;---------------------------------------------------------------------
+	; Draw the bar graph used for deco stops (deco plan in simulator or dive).
+	incf	win_top,F
+	movlw	.19
+	movwf	win_height
+	movlw	.118
+	movwf	win_leftx2					; column left (0-159)
+	movlw	.16
+	movwf	win_width+0					; column max width.
+	clrf	win_width+1
 
-        ; Draw used area (up = minutes):
-        movlw	.16                     ; Limit length (16min)
-        cpfslt	up
-        movwf	up
-        movff	up,win_bargraph         ; Active width, the rest is cleared.
-        call	TFT_box
+	; Draw used area (hi = minutes):
+	movlw	.16							; Limit length (16min)
+	cpfslt	hi
+	movwf	hi
+	movff	hi,win_bargraph				; Active width, the rest is cleared.
+	call	TFT_box
 
-        ; Restore win_top
-	    call    TFT_standard_color
-        decf    win_top,F               ; Restore win_top
-        return
+	; Restore win_top
+	call	TFT_standard_color
+	decf	win_top,F					; Restore win_top
+	return
 
 ;-----------------------------------------------------------------------------
 ; Clear unused area below last stop
 ; Inputs: win_top : last used area...
 deco_plan_show_clear_bottom:
-        movf    win_top,W               ; Get back from bank0
-        sublw   .239                    ; No: bottom row in planning
-        movwf   win_height
+	movf	win_top,W					; Get back from bank0
+	sublw	.239						; No: bottom row in planning
+	movwf	win_height
 
-        WIN_LEFT .85                    ; Full dive menu width
-        movlw   .159-.85+1
-        movwf   win_width+0
-		clrf    win_width+1
+	WIN_LEFT .85						; Full dive menu width
+	movlw	.159-.85+.1
+	movwf	win_width+0
+	clrf	win_width+1
 
-        clrf    win_color1              ; Fill with black
-        clrf    win_color2
+	clrf	win_color1					; Fill with black
+	clrf	win_color2
 
-        goto	TFT_box		    		; and return
+	goto	TFT_box						; and return
 
 ;-----------------------------------------------------------------------------
 ; Display the deco plan (simulator).
@@ -377,381 +370,331 @@
 ;         decoplan_page = page number.
 ;
 deco_show_plan_page:
-        bcf     win_invert              ; Reset invert flag
+	bcf	 win_invert						; Reset invert flag
 
-        ;---- Is there deco stops ? ------------------------------------------
-    	movff   char_O_first_deco_depth,WREG
-    	iorwf   WREG
-        bnz		deco_plan_show_1
+	;---- Is there deco stops ? ------------------------------------------
+	movff	char_O_first_deco_depth,WREG
+	iorwf	WREG
+	bnz		deco_plan_show_1
 
-        ;---- No Deco --------------------------------------------------------
-    	call    TFT_standard_color
-        TEXT_SMALL   .80, .0, tNoDeco
-        bsf     decoplan_last_ceiling_shown
-        return
+	;---- No Deco --------------------------------------------------------
+	call	TFT_standard_color
+	TEXT_SMALL .80, .0, tNoDeco
+	bsf		decoplan_last_ceiling_shown
+	return
 
 deco_plan_show_1:
-    	lfsr	FSR0,char_O_deco_depth  ; Initialize indexed addressing.
-	    lfsr	FSR1,char_O_deco_time
+	lfsr	FSR0,char_O_deco_depth		; Initialize indexed addressing.
+	lfsr	FSR1,char_O_deco_time
 
-        clrf    decoplan_index          ; Start with index = 0
-        clrf	win_top                 ; and row = 0
+	clrf	decoplan_index				; Start with index = 0
+	clrf	win_top						; and row = 0
 
-        ; Read stop parameters, indexed by decoplan_index and decoplan_page
-        movf    decoplan_page,W         ; decoplan_gindex = 6*decoplan_page + decoplan_index
-        mullw   .8                      ; 8 lines/page in deco plan
-        movf    decoplan_index,W
-        addwf   PRODL,W
-        movwf   decoplan_gindex         ; --> decoplan_gindex
+	; Read stop parameters, indexed by decoplan_index and decoplan_page
+	movf	decoplan_page,W				; decoplan_gindex = 6*decoplan_page + decoplan_index
+	mullw	.8							; 8 lines/page in deco plan
+	movf	decoplan_index,W
+	addwf	PRODL,W
+	movwf	decoplan_gindex				; --> decoplan_gindex
 
-        bcf     decoplan_last_ceiling_shown   ; Not finished yet...
+	bcf		decoplan_last_ceiling_shown	; Not finished yet...
 
 deco_plan_show_2:
-        btfsc   decoplan_gindex,5       ; Reached table length (32) ?
-        bra     deco_plan_show_99       ; YES: finished...
+	btfsc	decoplan_gindex,5			; Reached table length (32) ?
+	bra		deco_plan_show_99			; YES: finished...
 
-        ; Read stop parameters, indexed by decoplan_index
-        movf    decoplan_gindex,W       ; index
-    	movff	PLUSW1,up               ; char_O_deco_time [gindex] --> up
-	    movff	PLUSW0,lo               ; char_O_deco_depth[gindex]
-        movf    lo,W
-        bz      deco_plan_show_99       ; depth == 0 : finished.
+	; Read stop parameters, indexed by decoplan_index
+	movf	decoplan_gindex,W			; index
+	movff	PLUSW0,lo					; char_O_deco_depth[gindex]
+	movff	PLUSW1,hi					; char_O_deco_time [gindex]
+	movf	lo,W
+	bz		deco_plan_show_99			; depth == 0 : finished.
 
-        ; Display the stop line
-    	rcall	deco_plan_show_stop
+	; Display the stop line
+	rcall	deco_plan_show_stop
 
-        ; Next
-        movlw   .24
-        addwf   win_top,F				; row: += 24
-	    incf	decoplan_index,F		; local index += 1
-	    incf	decoplan_gindex,F		; global index += 1
+	; Next
+	movlw	.24
+	addwf	win_top,F					; row: += 24
+	incf	decoplan_index,F			; local index += 1
+	incf	decoplan_gindex,F			; global index += 1
 
-        ; Max number of lines/page reached ?
-    	movlw   .8						; 8 lines/page in deco plan
-    	cpfseq	decoplan_index
-    	bra		deco_plan_show_2		; NO: loop
+	; Max number of lines/page reached ?
+	movlw	.8							; 8 lines/page in deco plan
+	cpfseq	decoplan_index
+	bra		deco_plan_show_2			; NO: loop
 
-    	; Check if next stop is end-of-list ?
-    	movf    decoplan_gindex,W
-	    movf	PLUSW0,W				; char_O_deco_depth[gindex]
-    	bz      deco_plan_show_99		; End of list...
+	; Check if next stop is end-of-list ?
+	movf	decoplan_gindex,W
+	movf	PLUSW0,W					; char_O_deco_depth[gindex]
+	bz		deco_plan_show_99			; End of list...
 
-        ; Display the message "more..."
-        rcall   deco_plan_show_clear_bottom  ; Clear from next line
+	; Display the message "more..."
+	rcall	deco_plan_show_clear_bottom	; Clear from next line
 
-    	call    TFT_standard_color
-        TEXT_SMALL .88, .220, tMore
-        return
+	call	TFT_standard_color
+	TEXT_SMALL .88, .220, tMore
+	return
 
 deco_plan_show_99:
-        bsf		decoplan_last_ceiling_shown ; Nothing more in table to display.
-        rcall   deco_plan_show_clear_bottom ; Clear from next line
-        return
+	bsf		decoplan_last_ceiling_shown ; Nothing more in table to display.
+	rcall	deco_plan_show_clear_bottom ; Clear from next line
+	return
 
 ;-----------------------------------------------------------------------------
 ; Loop to show all pages of the deco plan (surface mode)
 
-        global  deco_show_plan
+	global	deco_show_plan
 deco_show_plan:
-        clrf    decoplan_page
-        call    TFT_ClearScreen
-        WIN_COLOR   color_greenish
-		btfsc	is_bailout
-		bra	deco_show_plan_bail_title
-        TEXT_SMALL  .1,.1, tDivePlan
-		bra	deco_show_plan2
+	clrf	decoplan_page
+	call	TFT_ClearScreen
+	WIN_COLOR color_greenish
+	btfsc	is_bailout
+	bra		deco_show_plan_bail_title
+	TEXT_SMALL .1,.1, tDivePlan
+	bra		deco_show_plan2
 deco_show_plan_bail_title:	
-		TEXT_SMALL  .1,.1, tDiveBailout
+		TEXT_SMALL .1,.1, tDiveBailout
 deco_show_plan2:
-		call    TFT_standard_color
-        ;---- Display Plan Parameters
-        WIN_SMALL   .0,.25
-        STRCPY  "Int:"
-        movff   char_I_dive_interval,lo
-        bsf     leftbind
-        output_8
-		bcf     leftbind
-        STRCAT_PRINT  "'"
-        WIN_SMALL   .0,.50
-        STRCPY_TEXT tBtTm_short
-        movff   char_I_bottom_time,lo
-        bsf     leftbind
-        output_8
-		bcf     leftbind
-        STRCAT_PRINT  "'"
-        WIN_SMALL   .0,.75
-        STRCPY_TEXT tDepth
-        PUTC    ":"
-        movff   char_I_bottom_depth,lo
-        bsf     leftbind
-        output_8
-		bcf     leftbind
-        STRCAT_PRINT  "m"
-		
-		WIN_SMALL   .0,.105					; set position for warnings or sat/dsat factors
-	
-		;---- Check for Stop Table Overflow
-		btfss	decoplan_warnings,stoptable_overflow	; check if we have a overflow warning
-		bra		deco_show_plan2a						; NO  - skip
-		;---- Display Overflow warning
-		call	TFT_warnings_color						; YES - show overflow warning
-		STRCAT_PRINT  "incomplete"						; max 10 characters
-		bra		deco_show_plan_m1						; skip displaying sat/dsat factors
+	call	TFT_standard_color
+	;---- Display Plan Parameters
+	WIN_SMALL .0,.25
+	STRCPY	"Int:"
+	movff	char_I_dive_interval,lo
+	bsf		leftbind
+	output_8
+	bcf		leftbind
+	STRCAT_PRINT "'"
+	WIN_SMALL .0,.50
+	STRCPY_TEXT tBtTm_short
+	movff	char_I_bottom_time,lo
+	bsf	leftbind
+	output_8
+	bcf	leftbind
+	STRCAT_PRINT "'"
+	WIN_SMALL .0,.75
+	STRCPY_TEXT tDepth
+	PUTC	":"
+	movff	char_I_bottom_depth,lo
+	bsf	leftbind
+	output_8
+	bcf	leftbind
+	STRCAT_PRINT "m"
+	WIN_SMALL .0,.105								; set position for warnings or sat/dsat factors
 
-deco_show_plan2a:		
-		;---- Check for IBCD Warning
-		btfss	decoplan_warnings,IBCD_warning_lock		; check if we have a locked IBCD warning
-		bra		deco_show_plan2b						; NO  - skip
-		;---- Display IBCD warning
-		call	TFT_attention_color						; YES - show IBCD warning
-		STRCAT_PRINT  "IBCD!"							; max 10 characters
-		bra		deco_show_plan_m1						; skip displaying sat/dsat factors
-		
+	;---- Check for Stop Table Overflow
+	btfss	decoplan_warnings,stoptable_overflow	; check if we have a overflow warning
+	bra		deco_show_plan2a						; NO  - skip
+	;---- Display Overflow warning
+	call	TFT_warnings_color						; YES - show overflow warning
+	STRCAT_PRINT "incomplete"						; max 10 characters
+	bra		deco_show_plan_m1						; skip displaying sat/dsat factors
+
+deco_show_plan2a:
+	;---- Check for IBCD Warning
+	btfss	decoplan_warnings,IBCD_warning_lock		; check if we have a locked IBCD warning
+	bra		deco_show_plan2b						; NO  - skip
+	;---- Display IBCD warning
+	call	TFT_attention_color						; YES - show IBCD warning
+	STRCAT_PRINT "IBCD!"							; max 10 characters
+	bra		deco_show_plan_m1						; skip displaying sat/dsat factors
+
 deco_show_plan2b:
-        ;---- Display Sat/Desat Factors --> is skipped if there were warnings
-		STRCAT_PRINT "SD:"
-        WIN_SMALL   .25,.105
-        movff   char_I_saturation_multiplier,lo
-        output_8
-        STRCAT  "/"
-        movff   char_I_desaturation_multiplier,lo
-        output_8
-        STRCAT_PRINT  ""
+	;---- Display Sat/Desat Factors --> omitted if there were warnings
+	STRCAT_PRINT "SD:"
+	WIN_SMALL .25,.105
+	movff	char_I_saturation_multiplier,lo
+	output_8
+	STRCAT "/"
+	movff	char_I_desaturation_multiplier,lo
+	output_8
+	STRCAT_PRINT ""
 
 deco_show_plan_m1:
-		call	TFT_standard_color			; clean-up from warnings
+	call	TFT_standard_color				; clean-up from warnings
 
-		;---- Get Model
-        movff   char_I_deco_model,WREG
-        iorwf   WREG
-        bz     deco_show_plan_m2
+	;---- Get Model
+	movff	char_I_deco_model,WREG
+	iorwf	WREG
+	bz	 deco_show_plan_m2
 
-        ;---- Display GF low/high values
-        WIN_SMALL  .0,.130
-		STRCAT_PRINT "GF:"
-        WIN_SMALL   .25,.130
-        movff   char_I_GF_Low_percentage,lo
-        output_99x
-        STRCAT  "/"
-        movff   char_I_GF_High_percentage,lo
-        output_99x
-        STRCAT_PRINT  ""
+	;---- Display GF low/high values
+	WIN_SMALL .0,.130
+	STRCAT_PRINT "GF:"
+	WIN_SMALL .25,.130
+	movff	char_I_GF_Low_percentage,lo
+	output_99x
+	STRCAT	"/"
+	movff	char_I_GF_High_percentage,lo
+	output_99x
+	STRCAT_PRINT ""
 
 deco_show_plan_m2:
-		;---- Display Deco Mode
-		WIN_SMALL   .0,.155
-        lfsr    FSR2,buffer
-        movff   opt_dive_mode,lo        	; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR
-        call    TFT_display_decotype_surface1
-		btfss	FLAG_ccr_mode				; current dive mode = CCR ?
-		bra		deco_show_plan2c			; NO  - branch
-		WIN_SMALL   .25,.155
-        STRCPY  "SP:"						; output setpoint used for calculation
-        movff   opt_sim_setpoint_number,lo
-        bsf     leftbind
-        output_8
-		bcf     leftbind
-        STRCAT_PRINT  ""
+	;---- Display Deco Mode
+	WIN_SMALL .0,.155
+	lfsr	FSR2,buffer
+	movff	opt_dive_mode,lo				; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR
+	call	TFT_display_decotype_surface1
+	btfss	FLAG_ccr_mode					; current dive mode = CCR ?
+	bra		deco_show_plan2c				; NO  - branch
+	WIN_SMALL .25,.155
+	STRCPY	"SP:"							; output setpoint used for calculation
+	movff	opt_sim_setpoint_number,lo
+	bsf		leftbind
+	output_8
+	bcf		leftbind
+	STRCAT_PRINT ""
 
 deco_show_plan2c:
-        ;---- Display TTS result
-        WIN_SMALL   .0,.180
-        STRCPY_TEXT tTTS
-        STRCAT  ": "
-        movff   int_O_ascenttime+0,lo
-        movff   int_O_ascenttime+1,hi
-        bsf     leftbind
-        output_16
-		bcf     leftbind
-        STRCAT_PRINT "'"
+	;---- Display TTS result
+	WIN_SMALL .0,.180
+	STRCPY_TEXT tTTS
+	STRCAT	": "
+	movff	int_O_ascenttime+0,lo
+	movff	int_O_ascenttime+1,hi
+	bsf		leftbind
+	output_16
+	bcf		leftbind
+	STRCAT_PRINT "'"
 
-        ;---- Display CNS result
-        WIN_TOP     .205
-        STRCPY_TEXT tCNS2	; "CNS:"
-        movff   int_O_CNS_fraction+0,lo
-        movff   int_O_CNS_fraction+1,hi
-		TFT_color_code	warn_cns			; Color-code CNS output
-		bsf		leftbind
-	    output_16_3                     	; limit to 999 and display only (0-999)
-		bcf		leftbind
-        STRCAT  "%\x92"						; "->"
-		movff   int_O_normal_CNS_fraction+0,lo
-        movff   int_O_normal_CNS_fraction+1,hi
-		TFT_color_code	warn_cns			; Color-code CNS output
-		bsf		leftbind
-        output_16_3                     	; limit to 999 and display only (0-999)
-		bcf		leftbind
-        STRCAT_PRINT "%"
-		call	TFT_standard_color
-       
-        ;---- Loop through pages
+	;---- Display CNS result
+	WIN_TOP	.205
+	STRCPY_TEXT tCNS2						; "CNS:"
+	movff	int_O_CNS_fraction+0,lo
+	movff	int_O_CNS_fraction+1,hi
+	call	TFT_color_code_cns				; Color-code CNS output
+	bsf		leftbind
+	output_16_3								; limit to 999 and display only (0-999)
+	bcf		leftbind
+	STRCAT	"%\x92"							; "->"
+	movff	int_O_normal_CNS_fraction+0,lo
+	movff	int_O_normal_CNS_fraction+1,hi
+	call	TFT_color_code_cns				; Color-code CNS output
+	bsf		leftbind
+	output_16_3								; limit to 999 and display only (0-999)
+	bcf		leftbind
+	STRCAT_PRINT "%"
+	call	TFT_standard_color
+
+	;---- Loop through pages
 deco_show_plan_1:
-		; Clear the complete stop result column:
-		WIN_BOX_BLACK   .0, .239, .80, .159 ; top, bottom, left, right
-		
-        rcall   deco_show_plan_page
-        incf    decoplan_page,F
-        call    logbook_preloop_tasks
+	; Clear the complete stop result column:
+	WIN_BOX_BLACK .0, .239, .80, .159		; top, bottom, left, right
+
+	rcall	deco_show_plan_page
+	incf	decoplan_page,F
+	call	logbook_preloop_tasks
 deco_show_plan_2:
-        btfsc   switch_right
-        bra     deco_show_plan_3
-        btfsc   switch_left
-        return                                  ; Return to simulator menu
-        call    log_screendump_and_onesecond    ; Check if we need to make a screen shot and check for new second
-    	btfsc	sleepmode                       ; Timeout?
-        goto    restart
-        bra     deco_show_plan_2
+	btfsc	switch_right
+	bra		deco_show_plan_3
+	btfsc	switch_left
+	return									; Return to simulator menu
+	call	log_screendump_and_onesecond	; Check if we need to make a screen shot and check for new second
+	btfsc	sleepmode						; Timeout?
+	goto	restart
+	bra		deco_show_plan_2
 
 deco_show_plan_3:
-        btfss   decoplan_last_ceiling_shown
-        bra     deco_show_plan_1
-        ; All stops shown
-       
-;---- In CCR and pSCR mode, compute a BAILOUT deco plan -----------------------
+	btfss	decoplan_last_ceiling_shown
+	bra		deco_show_plan_1
+	; All stops shown
 
-    banksel common
-	movff	char_O_deco_status,WREG		; get deco calculation status
-	btfss	WREG,DECO_MODE_LOOP_FLAG	; check if in CCR or pSCR mode
-	bra     simulator_show_decoplan5_0  ; NO  - normal OC mode: just display
-    bsf     is_bailout                  ; YES - redo 2nd deco-plan in bailout mode
-	rcall   deco_planer_redo            ; 		redo plan computation
+;---- In CCR and pSCR mode, compute a BAILOUT deco plan -----------------------
+	movff	char_O_deco_status,WREG			; get deco calculation status
+	btfss	WREG,DECO_MODE_LOOP_FLAG		; check if in CCR or pSCR mode
+	bra		simulator_show_decoplan5_0		; NO  - normal OC mode: just display
+	bsf		is_bailout						; YES - redo 2nd deco-plan in bailout mode
+	rcall	deco_planer_redo				;       redo plan computation
 
-	btfss	decoplan_abort				; shall we abort?
-    bra     deco_show_plan              ; NO  - display bailout stops
-	return								; YES
+	btfss	decoplan_abort					; shall we abort?
+	bra		deco_show_plan					; NO  - display bailout stops
+	return									; YES
 
 
-;---- In OC+BAIL modes, show the gas Usage special page -----------------------
-simulator_show_decoplan5_0:    
-	
-    movlb   .1
-
-    ; Clear the complete stop result column:
-    WIN_BOX_BLACK   .0, .239, .80, .159 ; top, bottom, left, right
+;---- In OC+BAIL modes, show the gas usage special page -----------------------
+simulator_show_decoplan5_0:
+	; Clear the complete stop result column:
+	WIN_BOX_BLACK .0, .239, .80, .159		; top, bottom, left, right
 
-    movlw	.25
-    movwf	waitms_temp                 ; Row for gas list is .25+.25
-    clrf	wait_temp                   ; Gas counter
-    lfsr	FSR0,int_O_gas_volumes      ; Initialize indexed addressing.
+	movlw	.25
+	movwf	row_pos							; Row for gas list is .25+.25
+	clrf	gas_counter						; Gas counter
+	lfsr	FSR0,int_O_gas_volumes			; Initialize indexed addressing.
 
-    WIN_LEFT	.80                     ; Set column
-    call    TFT_standard_color   
+	WIN_LEFT .80							; Set column
+	call	TFT_standard_color
 
 simulator_show_decoplan5_loop:
-    movff   wait_temp,PRODL             ; Copy to PRODL first
-    incf    wait_temp,F                 ; Increment gas #
+	movff	gas_counter,PRODL				; Copy to PRODL first
+	incf	gas_counter,F					; Increment gas #
+
+	movff	gas_counter,WREG				; copy current gas to WREG for color-coding
+	call	TFT_color_code_gas				; set output color according to gas (1-5)
 
-	movff	wait_temp,WREG
-	rcall	simulator_color_gas			; set output color according to gas (number 1-5 in WREG)
+	lfsr	FSR2,buffer
+	bsf		short_gas_decriptions
+	bsf		divemode						; Tweak "customview_show_mix:"
+	call	gaslist_strcat_gas				; Input: PRODL : gas number (0..4), Output: "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2
+	bcf		divemode						; Tweak "customview_show_mix:"
 
-    lfsr    FSR2,buffer
-    bsf     short_gas_decriptions
-    bsf     divemode                    ; Tweak "customview_show_mix:"
-    call    gaslist_strcat_gas          ; Input: PRODL : gas number (0..4), Output: "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2
-    bcf     divemode                    ; Tweak "customview_show_mix:"
-    
 	movlw	.25
-	addwf	waitms_temp,F		        ; Increase row position
-	movff	waitms_temp,win_top         ; Set Row
+	addwf	row_pos,F						; Increase row position
+	movff	row_pos,win_top					; Set Row
+
+	movff	POSTINC0,lo						; Read (16bit) result, low first,
+	movff	POSTINC0,hi						; then high.
 
-    movff   POSTINC0,lo                 ; Read (16bit) result, low first,
-    movff   POSTINC0,hi                 ; then high.
+	movf	lo,W
+	andwf	hi,W
+	incf	WREG							; > 65535? 
+	bnz		simulator_show_decoplan5_1		; NO
+	STRCAT_PRINT ">65500"					; YES
+	bra		simulator_show_decoplan5_2
 
-    movf    lo,W
-    andwf   hi,W
-    incf    WREG						; > 65535? 
-    bnz     simulator_show_decoplan5_2	; NO
-	STRCAT_PRINT  ">65500"				; YES
-    bra     simulator_show_decoplan5_1
-    
-simulator_show_decoplan5_2: 
-    PUTC    ":"
-    bsf     leftbind
-    output_16                           	; No decimal anymore.
-    bcf     leftbind
-    STRCAT_PRINT  ""                    	; No unit: can be bars or litters.
-    
-    ; Loop for all 5 gas
 simulator_show_decoplan5_1:
-	movlw	d'5'                        	; list all five gases
-	cpfseq	wait_temp                   	; All gases shown?
+	PUTC	":"
+	bsf		leftbind
+	output_16								; No decimal anymore.
+	bcf		leftbind
+	STRCAT_PRINT ""
+
+	; Loop for all 5 gas
+simulator_show_decoplan5_2:
+	movlw	d'5'							; list all five gases
+	cpfseq	gas_counter						; All gases shown?
 	bra		simulator_show_decoplan5_loop	; No
-	
-    WIN_COLOR   color_greenish
-    WIN_SMALL   .80,.25
-	STRCPY_TEXT tGasUsage               	; OC: "Gas Usage"
-    STRCAT_PRINT  ":"
-    call	TFT_standard_color
-    call    logbook_preloop_tasks
+
+	WIN_COLOR color_greenish
+
+	movlw	.30
+	addwf	row_pos,F						; Increase row position
+	movff	row_pos,win_top					; Set Row
+	STRCPY_TEXT_PRINT tBarLiter				; "Bar Liter"
+
+	WIN_SMALL .80,.25
+	STRCPY_TEXT tGasUsage					; "Gas Usage"
+	STRCAT_PRINT ":"
+
+	call	TFT_standard_color
+	call	logbook_preloop_tasks
 
 simulator_show_decoplan5_3:
-	btfss   switch_right
+	btfss	switch_right
 	bra		simulator_show_decoplan5_3a
 	bcf		switch_right
-	clrf    decoplan_page
+	clrf	decoplan_page
 	bra		deco_show_plan_1				; toggle between stops plan and gas usage
 simulator_show_decoplan5_3a:
-    btfss   switch_left						
+	btfss	switch_left
 	bra		simulator_show_decoplan5_4
-    bcf     is_bailout                  	; Back to normal
-    bcf	    ccr_diluent_setup				; init for OC/Bailout
-    return                                  ; Return to simulator menu
-	
-simulator_show_decoplan5_4:
-    call    log_screendump_and_onesecond    ; Check if we need to make a screen shot and check for new second
-    btfsc	sleepmode                       ; Timeout?
-    goto    restart
-    bra     simulator_show_decoplan5_3
-
+	bcf		is_bailout						; Back to normal
+	bcf		ccr_diluent_setup				; init for OC/Bailout
+	return									; Return to simulator menu
 
-simulator_color_gas:				; set output color dependent on gas (1-5, in WREG)
-	movwf	tft_temp1				; used in TFT_set_color anyway
-	dcfsnz	tft_temp1,F
-	movlw	color_white				; color for Gas 1
-	dcfsnz	tft_temp1,F
-	movlw	color_green				; color for Gas 2
-	dcfsnz	tft_temp1,F
-	movlw	color_red				; Color for Gas 3
-	dcfsnz	tft_temp1,F
-	movlw	color_yellow			; color for Gas 4
-	dcfsnz	tft_temp1,F
-	movlw	color_cyan				; color for Gas 5
-	goto	TFT_set_color			; set color and return...
-	
-;=============================================================================
-;
-        global  do_demo_divemode
-do_demo_divemode:
-		extern	option_save_all
-		call	option_save_all				; Save all settings into EEPROM before starting simulation
- 		call    deco_push_tissues_to_vault
-        banksel common                  	; Bank1
+simulator_show_decoplan5_4:
+	call	log_screendump_and_onesecond	; Check if we need to make a screen shot and check for new second
+	btfsc	sleepmode						; Timeout?
+	goto	restart
+	bra		simulator_show_decoplan5_3
 
-		; +++ COMMENTED OUT FOR TESTING PURPOSE ONLY !!! +++
-		; +++ DO NOT COMMENT OUT IN OPERATIONAL USE  !!! +++
-		bsf	restore_deco_data			; Restore tissue and CNS after simulator use
-
-		bcf	pressure_refresh
-		btfss	pressure_refresh			; Wait for sensor
-		bra	$-2
-
-		bsf	simulatormode_active			; Set Flag
-        ; Compute dive ambient conditions
-        banksel char_I_bottom_depth
-        movf    char_I_bottom_depth,W
-        mullw   .100
-        movff   PRODL,rel_pressure+0
-        movff   PRODH,rel_pressure+1
-        movlw   LOW(.1000)
-        addwf   PRODL,W
-        movff   WREG,sim_pressure+0
-        movlw   HIGH(.1000)
-        addwfc  PRODH,W
-        movff   WREG,sim_pressure+1
-
-        banksel common                  	; Bank1
-		bsf		divemode
-		goto	diveloop					; Switch into Divemode!
-
-
-        END
\ No newline at end of file
+	END
\ No newline at end of file