# HG changeset patch
# User JeanDo
# Date 1301435239 -7200
# Node ID 4ef3bcbc709194bd547fdd34e5c0f22de2f1c274
# Parent  544cc5d47755db1b59065a97d0a603eca628e731
Fix minor CNS calc when ppO2 > 2.55

diff -r 544cc5d47755 -r 4ef3bcbc7091 code_part1/OSTC_code_asm_part1/divemode.asm
--- a/code_part1/OSTC_code_asm_part1/divemode.asm	Tue Mar 29 22:59:58 2011 +0200
+++ b/code_part1/OSTC_code_asm_part1/divemode.asm	Tue Mar 29 23:47:19 2011 +0200
@@ -284,9 +284,12 @@
 	call		div16x16				; xC=(char_I_O2_ratio * p_amb/10)/100
 
 ; Copy ppO2 for CNS calculation
-	movff		xC+0, char_I_actual_ppO2	; copy last ppO2 to buffer register
-	btfsc		FLAG_const_ppO2_mode		; do in const_ppO2_mode
-	movff		char_I_const_ppO2, char_I_actual_ppO2	; copy last ppO2 to buffer register
+    tstfsz      xC+1                    ; Is ppO2 > 2.55bar ?
+    setf        xC+0                    ; yes: bound to 2.55... better than wrap around.
+
+    movff		xC+0, char_I_actual_ppO2	; copy last ppO2 to buffer register
+    btfsc		FLAG_const_ppO2_mode		; do in const_ppO2_mode
+    movff		char_I_const_ppO2, char_I_actual_ppO2	; copy last ppO2 to buffer register
 
 ; Calculate CNS	
 	call	deco_calc_CNS_fraction		; calculate CNS