# 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