# HG changeset patch # User heinrichsweikamp # Date 1328376216 -3600 # Node ID 44e9b961f1561dbeabd77b91107248c9bc8c9008 # Parent c67bf1ca73ef1fe79864a88dd026d15f329ad1ec Compute ppO2 for pSCR diving diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/MAIN.ASM --- a/code_part1/OSTC_code_asm_part1/MAIN.ASM Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/MAIN.ASM Sat Feb 04 18:23:36 2012 +0100 @@ -122,7 +122,7 @@ #include aa_fonts.asm ;============================================================================= - MESSG "OSTC - diving computer code, Copyright (C) 2011 HeinrichsWeikamp" + MESSG "OSTC - diving computer code, Copyright (C) 2012 HeinrichsWeikamp" MESSG "This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the" MESSG "Free Software Foundation, either version 3 of the License, or (at your option) any later version." MESSG "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY" diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/changelog.txt --- a/code_part1/OSTC_code_asm_part1/changelog.txt Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/changelog.txt Sat Feb 04 18:23:36 2012 +0100 @@ -1,6 +1,10 @@ New in 2.21 beta: BETA Version - Do NOT use for diving! BUGFIX: GF warning in logbook memory +NEW: Compute ppO2 for pSCR diving +NEW: CF61: Show pSCR ppO2 in customview +NEW: CF62: pSCR O2 Drop in percent +NEW: CF63: pSCR counterlung ratio 1/x New in 2.20: Stable Release diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/customview.asm --- a/code_part1/OSTC_code_asm_part1/customview.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/customview.asm Sat Feb 04 18:23:36 2012 +0100 @@ -89,7 +89,8 @@ bra customview_1sec_@5 ; Show TTS for extra time. dcfsnz WREG,F bra customview_1sec_cave_bailout; Show Cave conso prediction. - + dcfsnz WREG,F + bra customview_1sec_pSCR_ppO2 ; Show/Update pSCR ppO2 ; Menupos3=0, do nothing return @@ -133,6 +134,10 @@ bsf menu3_active ; Set Flag goto PLED_show_cave_bailout +customview_1sec_pSCR_ppO2: + goto PLED_show_pSCR_ppO2 ; Yes, compute and show value + + ;============================================================================= ; Do every-minute tasks for the custom view area @@ -156,6 +161,8 @@ bra customview_minute_@5 ; Show TTS for extra time. dcfsnz WREG,F bra customview_minute_cave_bailout; Show Cave consomation prediction. + dcfsnz WREG,F + bra customview_minute_pSCR_ppO2; Show pSCR ppO2 level ; Menupos3=0, do nothing return @@ -173,6 +180,7 @@ customview_minute_stopwatch: ; Do nothing extra customview_minute_average: ; Do nothing extra customview_minute_graphs: ; Do nothing extra +customview_minute_pSCR_ppO2: ; Do nothing extra return ;============================================================================= @@ -186,7 +194,7 @@ bra customview_toggle_exit ; Yes, ignore custom view in divemode completely incf menupos3,F ; Number of customview to show - movlw d'9' ; Max number + movlw d'10' ; Max number cpfsgt menupos3 ; Max reached? bra customview_mask ; No, show clrf menupos3 ; Reset to zero (Zero=no custom view) @@ -214,6 +222,8 @@ bra customview_init_@5 ; 8: Show TTS for extra time. dcfsnz WREG,F bra customview_init_cave_bailout ; 9: Show Cave consomation prediction. + dcfsnz WREG,F + bra customview_init_pSCR_ppo2 ; 10: Show ppO2 for pSCR users customview_init_nocustomview: bra customview_toggle_exit @@ -320,6 +330,15 @@ bra customview_toggle_exit +customview_init_pSCR_ppo2: + GETCUSTOM8 d'61' ; Show pSCR ppO2? + decfsz WREG,F ; WREG=1? + bra customview_toggle ; No, use next Customview + + call PLED_show_pSCR_ppO2 ; Yes, compute and show value + + bra customview_toggle_exit + customview_toggle_exit: bcf toggle_customview ; Clear flag ostc_debug 'Y' ; Sends debug-information to screen in debugmode diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/english_text.asm --- a/code_part1/OSTC_code_asm_part1/english_text.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/english_text.asm Sat Feb 04 18:23:36 2012 +0100 @@ -312,9 +312,9 @@ TCODE .40, .35, "Future TTS[min]" ;180 Future TTS[min] (Compute TTS for extra time at current depth) TCODE .40, .35, "Cave Warning[l]" ;181 Cave Warning[l] (Consomation warning for cave divers) TCODE .40, .35, "Graph. Velocity" ;182 Graph. Velocity (Show a graphical representation of the ascend speed) - TCODE .40, .35, "not used " ;183 not used - TCODE .40, .35, "not used " ;184 not used - TCODE .40, .35, "not used " ;185 not used + TCODE .40, .35, "Show pSCR ppO2 " ;183 Show pSCR ppO2 (Show the ppO2 for pSCR divers) + TCODE .40, .35, "pSCR O2 Drop[%]" ;184 pSCR O2 Drop[%] (pSCR O2 drop in percent) + TCODE .40, .35, "pSCR lung ratio" ;185 pSCR lung ratio (pSCR counterlung ratio) ; End of function descriptor II ; TCODE .13, .2, "Custom Functions II" ;186 Custom Functions II @@ -408,7 +408,7 @@ TCODE .7, .48, "Air " ;264 Air TCODE .120, .135, "Air " ;265 Air - TCODE .0, .0, "" ;266 unused + TCODE .0, .0, "pSCR Info" ;266 pSCR Info (Must be 9Chars!) TCODE .0, .216, "Max." ;267 Max. TCODE .0, .0, "" ;268 unused TCODE .0, .0, "" ;269 unused diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/french_text.asm --- a/code_part1/OSTC_code_asm_part1/french_text.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/french_text.asm Sat Feb 04 18:23:36 2012 +0100 @@ -312,9 +312,9 @@ TCODE .40, .35, "DTR Rйchap[min]" ;180 Future TTS[min] (Compute TTS for extra time at current depth) TCODE .40, .35, "Alarme Sout.[l]" ;181 Cave Warning[l] (Consomation warning for cave divers) TCODE .40, .35, "Graph. Velocity" ;182 Graph. Velocity (Show a graphical representation of the ascend speed) - TCODE .40, .35, "not used " ;183 not used - TCODE .40, .35, "not used " ;184 not used - TCODE .40, .35, "not used " ;185 not used + TCODE .40, .35, "Show pSCR ppO2 " ;183 Show pSCR ppO2 (Show the ppO2 for pSCR divers) + TCODE .40, .35, "pSCR O2 Drop[%]" ;184 pSCR O2 Drop[%] (pSCR O2 drop in percent) + TCODE .40, .35, "pSCR lung ratio" ;185 pSCR lung ratio (pSCR counterlung ratio) ; End of function descriptor II ; TCODE .13, .2, "Config Fonctions II" ;186 Custom Functions II @@ -408,7 +408,7 @@ TCODE .7, .48, "Air " ;264 Air TCODE .120, .135, "Air " ;265 Air - TCODE .0, .0, "" ;266 unused + TCODE .0, .0, "pSCR Info" ;266 pSCR Info (Must be 9Chars!) TCODE .0, .216, "Max." ;267 Max. TCODE .0, .0, "" ;268 unused TCODE .0, .0, "" ;269 unused diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/german_text.asm --- a/code_part1/OSTC_code_asm_part1/german_text.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/german_text.asm Sat Feb 04 18:23:36 2012 +0100 @@ -312,9 +312,9 @@ TCODE .40, .35, "TTS @ Zeit[min]" ;180 Future TTS[min] (Compute TTS for extra time at current depth) TCODE .40, .35, "Cave Warning[l]" ;181 Cave Warning[l] (Consomation warning for cave divers) TCODE .40, .35, "Graph. Velocity" ;182 Graph. Velocity (Show a graphical representation of the ascend speed) - TCODE .40, .35, "nicht verwendet" ;183 not used - TCODE .40, .35, "nicht verwendet" ;184 not used - TCODE .40, .35, "nicht verwendet" ;185 not used + TCODE .40, .35, "Show pSCR ppO2 " ;183 Show pSCR ppO2 (Show the ppO2 for pSCR divers) + TCODE .40, .35, "pSCR O2 Drop[%]" ;184 pSCR O2 Drop[%] (pSCR O2 drop in percent) + TCODE .40, .35, "pSCR lung ratio" ;185 pSCR lung ratio (pSCR counterlung ratio) ; End of function descriptor II ; TCODE .13, .2, "Custom Funktionen II" ;186 Custom Functions II @@ -408,7 +408,7 @@ TCODE .7, .48, "Luft " ;264 Air TCODE .120, .135, "Luft " ;265 Air - TCODE .0, .0, "" ;266 unused + TCODE .0, .0, "pSCR Info" ;266 pSCR Info (Must be 9Chars!) TCODE .0, .216, "Max." ;267 Max. TCODE .0, .0, "" ;268 unused TCODE .0, .0, "" ;269 unused diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/math.asm --- a/code_part1/OSTC_code_asm_part1/math.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/math.asm Sat Feb 04 18:23:36 2012 +0100 @@ -44,6 +44,26 @@ bra div16 return +sub32: ;xC:4=xC:4-sub_c:4 (Warning: sub_c+3 trashes sub_a+0!) + movf sub_c+0, W + subwf xC+0, F + + movf sub_c+1, W + BTFSS STATUS, C + incfsz sub_c+1, W + subwf xC+1, F + + movf sub_c+2, W + BTFSS STATUS, C + incfsz sub_c+2, W + subwf xC+2, F + + movf sub_c+3, W + BTFSS STATUS, C + incfsz sub_c+3, W + subwf xC+3, F + return + sub16: ; sub_c = sub_a - sub_b (with signed values) bcf neg_flag movf sub_b+0, W ; Get Value to be subtracted diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/menu_reset.asm --- a/code_part1/OSTC_code_asm_part1/menu_reset.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/menu_reset.asm Sat Feb 04 18:23:36 2012 +0100 @@ -184,11 +184,11 @@ CF_DEFAULT CF_INT8, d'0', d'0', d'10' ; CF58 TTS for extra time at current depth [min] CF_DEFAULT CF_INT15, d'0', d'0', d'7000' ; CF59 Cave conso warning [l] CF_DEFAULT CF_BOOL, 0, 0, 0 ; CF60 Show Graphical ascend speed indicator - CF_DEFAULT CF_INT15, 0, 0, 0 ; UNUSED + CF_DEFAULT CF_BOOL, 0, 0, 0 ; CF61 Show pSCR ppO2 - CF_DEFAULT CF_INT15, 0, 0, 0 ; UNUSED - CF_DEFAULT CF_INT15, 0, 0, 0 ; UNUSED - CF_DEFAULT CF_INT15, 0, 0, 0 ; UNUSED + CF_DEFAULT CF_PERCENT, .4, .0, .100 ; CF62 pSCR O2 Drop + CF_DEFAULT CF_INT8, .10, .0, .100 ; CF63 pSCR counterlung ratio +; CF_DEFAULT CF_INT15, 0, 0, 0 ; UNUSED cf_default_table2: ;============================================================================= diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/pled_outputs.asm --- a/code_part1/OSTC_code_asm_part1/pled_outputs.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/pled_outputs.asm Sat Feb 04 18:23:36 2012 +0100 @@ -3465,6 +3465,98 @@ return ;============================================================================= +; Display pSCR ppO2 +; (Pressure[mbar]*char_I_O2_ratio)-(100-char_I_O2_ratio)*CF61*CF62*10 +PLED_show_pSCR_ppO2: + WIN_FONT FT_SMALL + WIN_LEFT .160-.63 ; 9 chars aligned right. + WIN_TOP .170 + call PLED_divemask_color ; Set Color for Divemode mask + lfsr FSR2,letter + OUTPUTTEXTH .266 ; "pSCR Info" + call word_processor; pCCR + + movff char_I_O2_ratio,WREG + sublw .100 ; 100-char_I_O2_ratio -> WREG + mullw .10 ; (100-char_I_O2_ratio)*10 -> PROD:2 + movff PRODL,xA+0 + movff PRODH,xA+1 + GETCUSTOM8 d'62' ; O2 Drop + movff WREG,xB+0 + clrf xB+1 + call mult16x16 ;xA*xB=xC -> (100-char_I_O2_ratio)*10*CF61 + movff xC+0,xA+0 + movff xC+1,xA+1 + GETCUSTOM8 d'63' ; Lung ratio + movff WREG,xB+0 + clrf xB+1 + call mult16x16 ;xA*xB=xC -> (100-char_I_O2_ratio)*10*CF61*CF62 + + movlw .10 + movwf xB+0 + clrf xB+1 + call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder + ; store xC:2 in lo:hi + movff xC+0,lo + movff xC+1,hi + + SAFE_2BYTE_COPY amb_pressure, xA + movff char_I_O2_ratio,xB+0 + clrf xB+1 + call mult16x16 ;xA*xB=xC -> xC:4 = Pressure[mbar]*char_I_O2_ratio + + movlw .10 + movwf xB+0 + clrf xB+1 + call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder + + ; store xC:2 in sub_a + movff xC+0,sub_a+0 + movff xC+1,sub_a+1 + ; reload result from lo:hi + movff lo,sub_b+0 + movff hi,sub_b+1 + + call subU16 ;sub_c = sub_a - sub_b (with UNSIGNED values) + + WIN_FONT FT_SMALL + WIN_LEFT .95 + WIN_TOP .192 + lfsr FSR2,letter + STRCPY_PRINT TXT_PPO2_5 ; ppO2: + + movff sub_c+0,xC+0 + movff sub_c+1,xC+1 + clrf xC+2 + clrf xC+3 ; For color coding + PLED_color_code warn_ppo2 ; Color-code output (ppO2 stored in xC) + WIN_LEFT .130 + WIN_TOP .192 + lfsr FSR2,letter + movff xC+0,lo + movff xC+1,hi + bsf ignore_digit4 + output_16dp d'1' + bcf ignore_digit4 + STRCAT_PRINT " " + call PLED_standard_color ; Back to white. +; Show O2 drop and counter lung ration in second row + WIN_LEFT .98 + WIN_TOP .216 + lfsr FSR2,letter + GETCUSTOM8 d'62' ; O2 Drop in percent + movwf lo + bsf leftbind + output_8 + STRCAT "% 1/" + GETCUSTOM8 d'63' ; Counter lung ratio in 1/X + movwf lo + output_8 + bcf leftbind + STRCAT_PRINT " " ; Trailing space needed when changing the O2 drop + return + +;============================================================================= ; Display cave consomation prediction (and warning). ; PLED_show_cave_bailout: diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/russian_text.asm --- a/code_part1/OSTC_code_asm_part1/russian_text.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/russian_text.asm Sat Feb 04 18:23:36 2012 +0100 @@ -315,9 +315,9 @@ TCODE .40, .35, "Будущ. TTS[мин]" ;180 Future TTS[min] (@5 variant: compute TTS for extra time at current depth) TCODE .40, .35, "Пещер. Пред.[л]" ;181 Cave Warning[l] (Consomation warning for cave divers) TCODE .40, .35, "График скорости" ;182 (Show a graphical representation of the ascend speed) - TCODE .40, .35, "Не используется" ;183 not used - TCODE .40, .35, "Не используется" ;184 not used - TCODE .40, .35, "Не используется" ;185 not used + TCODE .40, .35, "Show pSCR ppO2 " ;183 Show pSCR ppO2 (Show the ppO2 for pSCR divers) + TCODE .40, .35, "pSCR O2 Drop[%]" ;184 pSCR O2 Drop[%] (pSCR O2 drop in percent) + TCODE .40, .35, "pSCR lung ratio" ;185 pSCR lung ratio (pSCR counterlung ratio) ; End of function descriptor II ; TCODE .20, .2, "Доп. Параметры II" ;186 Custom Functions II @@ -411,7 +411,7 @@ TCODE .7, .48, "Возд." ;264 Air TCODE .120, .135, "Возд." ;265 Air - TCODE .0, .0, "" ;266 unused + TCODE .0, .0, "pSCR Info" ;266 pSCR Info (Must be 9Chars!) TCODE .0, .216, "Макс." ;267 Max. TCODE .0, .0, "" ;268 unused TCODE .0, .0, "" ;269 unused diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/spanish_text.asm --- a/code_part1/OSTC_code_asm_part1/spanish_text.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/spanish_text.asm Sat Feb 04 18:23:36 2012 +0100 @@ -311,9 +311,9 @@ TCODE .40, .35, "Futuro TTS[min]" ;180 Future TTS[min] (Compute TTS for extra time at current depth) TCODE .40, .35, "Cave Warning[l]" ;181 Cave Warning[l] (Consomation warning for cave divers) TCODE .40, .35, "Graph. Velocity" ;182 Graph. Velocity (Show a graphical representation of the ascend speed) - TCODE .40, .35, "sin uso " ;183 not used - TCODE .40, .35, "sin uso " ;184 not used - TCODE .40, .35, "sin uso " ;185 not used + TCODE .40, .35, "Show pSCR ppO2 " ;183 Show pSCR ppO2 (Show the ppO2 for pSCR divers) + TCODE .40, .35, "pSCR O2 Drop[%]" ;184 pSCR O2 Drop[%] (pSCR O2 drop in percent) + TCODE .40, .35, "pSCR lung ratio" ;185 pSCR lung ratio (pSCR counterlung ratio) ; End of function descriptor II ; TCODE .13, .2, "Func.Personaliz. II" ;186 Custom Functions II @@ -407,7 +407,7 @@ TCODE .7, .48, "Aire " ;264 Air TCODE .120, .135, "Aire " ;265 Air - TCODE .0, .0, "" ;266 unused + TCODE .0, .0, "pSCR Info" ;266 pSCR Info (Must be 9Chars!) TCODE .0, .216, "Max." ;267 Max. TCODE .0, .0, "" ;268 unused TCODE .0, .0, "" ;269 unused diff -r c67bf1ca73ef -r 44e9b961f156 code_part1/OSTC_code_asm_part1/turkish_text.asm --- a/code_part1/OSTC_code_asm_part1/turkish_text.asm Thu Feb 02 19:43:45 2012 +0100 +++ b/code_part1/OSTC_code_asm_part1/turkish_text.asm Sat Feb 04 18:23:36 2012 +0100 @@ -313,10 +313,9 @@ TCODE .40, .35, "TTS+extra [min]" ;180 Future TTS[min] (@5 variant: compute TTS for extra time at current depth) TCODE .40, .35, "Magara Uyari[l]" ;181 Cave Warning[l] (Consomation warning for cave divers) TCODE .40, .35, "Hiz Goster " ;182 Graph. Velocity (Show a graphical representation of the ascend speed) - TCODE .40, .35, "Kullanim Disi " ;183 not used - TCODE .40, .35, "Kullanim Disi " ;184 not used - TCODE .40, .35, "Kullanim Disi " ;185 not used - + TCODE .40, .35, "Show pSCR ppO2 " ;183 Show pSCR ppO2 (Show the ppO2 for pSCR divers) + TCODE .40, .35, "pSCR O2 Drop[%]" ;184 pSCR O2 Drop[%] (pSCR O2 drop in percent) + TCODE .40, .35, "pSCR lung ratio" ;185 pSCR lung ratio (pSCR counterlung ratio) ; End of function descriptor II @@ -412,7 +411,7 @@ TCODE .7, .48, "Hava " ;264 Air TCODE .120, .135, "Hava " ;265 Air - TCODE .0, .0, "" ;266 unused + TCODE .0, .0, "pSCR Info" ;266 pSCR Info (Must be 9Chars!) TCODE .0, .216, "Max" ;267 Max. TCODE .0, .0, "" ;268 unused TCODE .0, .0, "" ;269 unused