Mercurial > public > hwos_code
annotate src/tft_outputs.asm @ 582:b455b31ce022
work on 2.97 stable
author | heinrichsweikamp |
---|---|
date | Mon, 26 Feb 2018 16:40:28 +0100 |
parents | f5de1ff88814 |
children | 6636cbe64c6d |
rev | line source |
---|---|
0 | 1 ;============================================================================= |
2 ; | |
582 | 3 ; File tft_outputs.asm REFACTORED VERSION V2.98 |
0 | 4 ; |
5 ; Startup subroutines | |
6 ; | |
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. | |
8 ;============================================================================= | |
9 ; HISTORY | |
10 ; 2011-08-07 : [mH] moving from OSTC code | |
11 | |
582 | 12 #include "hwos.inc" ; Mandatory header |
13 #include "shared_definitions.h" ; Mailbox from/to p2_deco.c | |
14 #include "tft.inc" | |
15 #include "start.inc" | |
16 #include "wait.inc" | |
17 #include "strings.inc" | |
18 #include "convert.inc" | |
19 #include "varargs.inc" | |
20 #include "math.inc" | |
21 #include "isr.inc" | |
22 #include "eeprom_rs232.inc" | |
23 #include "adc_lightsensor.inc" | |
24 #include "surfmode.inc" | |
25 #include "divemode.inc" | |
26 #include "external_flash.inc" | |
27 #include "ghostwriter.inc" | |
28 #include "customview.inc" | |
29 #include "i2c.inc" | |
30 #include "colorschemes.inc" | |
31 #include "calibrate.inc" | |
0 | 32 |
560 | 33 |
0 | 34 extern aa_wordprocessor |
35 | |
36 ;============================================================================= | |
37 | |
582 | 38 gui CODE |
39 | |
0 | 40 ;============================================================================= |
41 | |
582 | 42 global TFT_divemask_color |
0 | 43 TFT_divemask_color: |
582 | 44 movlw color_green |
45 btfsc divemode ; in Divemode? | |
46 rcall TFT_divemask_color_dive | |
50 | 47 bra TFT_standard_color0 |
48 | |
49 TFT_divemask_color_dive: | |
582 | 50 movff opt_dive_color_scheme,WREG ; 0-3 |
51 incf WREG | |
50 | 52 dcfsnz WREG |
582 | 53 retlw color_scheme_divemode_mask1 ;0 |
50 | 54 dcfsnz WREG |
582 | 55 retlw color_scheme_divemode_mask2 ;1 |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
56 dcfsnz WREG |
582 | 57 retlw color_scheme_divemode_mask3 ;2 |
58 retlw color_scheme_divemode_mask4 ;3 | |
59 | |
60 | |
61 global TFT_attention_color | |
50 | 62 TFT_attention_color: |
582 | 63 movlw color_yellow ; make this configurable? |
0 | 64 bra TFT_standard_color0 |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
65 TFT_attention_color_dive: |
582 | 66 retlw color_yellow ; make this configurable? |
67 | |
68 | |
69 global TFT_warnings_color | |
0 | 70 TFT_warnings_color: |
582 | 71 movlw color_red ; make this configurable? |
0 | 72 bra TFT_standard_color0 |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
73 TFT_warnings_color_dive: |
582 | 74 retlw color_red ; make this configurable? |
75 | |
76 | |
77 global TFT_disabled_color | |
0 | 78 TFT_disabled_color: |
582 | 79 ;movlw color_grey ; Default to OSTC grey (dark blue) |
80 movlw color_lightblue | |
81 btfsc divemode ; in Divemode? | |
82 rcall TFT_disabled_color_dive ; YES | |
83 bra TFT_standard_color0 | |
84 | |
87 | 85 TFT_disabled_color_dive: |
582 | 86 movff opt_dive_color_scheme,WREG ; 0-3 |
87 incf WREG | |
87 | 88 dcfsnz WREG |
582 | 89 retlw color_scheme_divemode_dis1 ; 0 |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
90 dcfsnz WREG |
582 | 91 retlw color_scheme_divemode_dis2 ; 1 |
50 | 92 dcfsnz WREG |
582 | 93 retlw color_scheme_divemode_dis3 ; 2 |
94 retlw color_scheme_divemode_dis4 ; 3 | |
95 | |
96 | |
97 global TFT_standard_color | |
98 TFT_standard_color: | |
99 setf WREG ; Default white | |
100 btfsc divemode ; in Divemode? | |
101 rcall TFT_standard_color_dive | |
102 ;bra TFT_standard_color0 | |
103 | |
104 TFT_standard_color0: | |
105 goto TFT_set_color ; and return... | |
106 | |
107 | |
108 TFT_standard_color_dive: | |
109 movff opt_dive_color_scheme,WREG ; 0-3 | |
110 incf WREG | |
0 | 111 dcfsnz WREG |
582 | 112 retlw color_scheme_divemode_std1 ;0 |
0 | 113 dcfsnz WREG |
582 | 114 retlw color_scheme_divemode_std2 ;1 |
0 | 115 dcfsnz WREG |
582 | 116 retlw color_scheme_divemode_std3 ;2 |
117 retlw color_scheme_divemode_std4 ;3 | |
118 | |
119 | |
120 global TFT_color_code_gaslist | |
121 TFT_color_code_gaslist: ; Color-code current row in Gaslist (%O2 in hi) according to current amb_pressure | |
0 | 122 ; Check very high ppO2 manually |
582 | 123 SAFE_2BYTE_COPY amb_pressure,xA |
560 | 124 movlw d'10' |
125 movwf xB+0 | |
126 clrf xB+1 | |
127 call div16x16 ; xC=p_amb/10 | |
128 movff xC+0,xA+0 | |
129 movff xC+1,xA+1 | |
130 movff hi,xB+0 | |
131 clrf xB+1 | |
132 call mult16x16 ; hi * p_amb/10 | |
0 | 133 ; Check if ppO2>6,55bar |
560 | 134 tstfsz xC+2 ; char_I_O2_ratio * p_amb/10 > 65536, ppO2>6,55bar? |
135 bra TFT_warnings_color ; Yes, warn in warning color | |
0 | 136 ; Check if ppO2>3,30bar |
560 | 137 btfsc xC+1,7 |
138 bra TFT_warnings_color ; Yes, warn in warning color | |
0 | 139 ; Check for low ppo2 |
560 | 140 movff xC+0,sub_a+0 |
141 movff xC+1,sub_a+1 | |
582 | 142 movff char_I_ppO2_min,WREG |
143 mullw d'100' ; char_I_ppO2_min*100 | |
560 | 144 movff PRODL,sub_b+0 |
145 movff PRODH,sub_b+1 | |
146 call subU16 | |
147 btfsc neg_flag | |
582 | 148 bra TFT_warnings_color ; too low -> Warning Color! |
0 | 149 ; Check for high ppo2 |
582 | 150 movff char_O_deco_warnings,WREG ; bank-safe copy of deco warnings |
151 btfsc WREG,deco_flag ; are we in deco? | |
152 bra TFT_color_code_gaslist_deco ; YES - take deco max | |
153 movff char_I_ppO2_max,WREG ; No - take travel/bottom max | |
154 bra TFT_color_code_gaslist_com | |
155 TFT_color_code_gaslist_deco: | |
156 movff char_I_ppO2_max_deco,WREG ; ppo2 max for deco | |
157 TFT_color_code_gaslist_com: | |
560 | 158 mullw d'100' ; char_I_ppO2_max*100 |
526
0d1cda9f2d43
BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents:
517
diff
changeset
|
159 movff PRODL,sub_b+0 |
0d1cda9f2d43
BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents:
517
diff
changeset
|
160 movff PRODH,sub_b+1 |
0d1cda9f2d43
BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents:
517
diff
changeset
|
161 infsnz sub_a+0,F |
560 | 162 incf sub_a+1,F ; add 1mbar to avoid warning on equal |
582 | 163 call subU16 ; sub_c = sub_a - sub_b |
526
0d1cda9f2d43
BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents:
517
diff
changeset
|
164 btfss neg_flag |
582 | 165 bra TFT_warnings_color ; too high -> Warning Color! |
0 | 166 return |
560 | 167 |
168 | |
582 | 169 TFT_color_code_ceiling: ; color-code the ceiling depth |
170 btfsc hi,char_invalid_flag ; is the invalid flag set? (bit 7 here) | |
560 | 171 bra TFT_color_code_ceiling_1 ; YES |
172 SAFE_2BYTE_COPY rel_pressure,sub_a ; NO | |
582 | 173 movff lo,sub_b+0 |
174 movff hi,sub_b+1 | |
560 | 175 call subU16 ; sub_c = sub_a - sub_b : sub_c = rel_pressure [cm] - int_O_ceiling [mbar => cm] |
582 | 176 btfsc neg_flag ; is ceiling > current depth? |
177 bra TFT_warnings_color ; YES - set to warning color and return | |
560 | 178 bra TFT_standard_color ; NO - set to standard color and return |
179 TFT_color_code_ceiling_1: | |
180 bcf hi,char_invalid_flag ; clear the invalid flag (bit 7 here) | |
181 bra TFT_disabled_color ; set to disabled color and return | |
182 | |
183 | |
582 | 184 TFT_color_code_stop: ; color-code the stop depth |
560 | 185 movff char_O_deco_gas+0,WREG ; get flag for invalid deco data |
186 btfsc WREG,char_invalid_flag ; is the invalid flag set? | |
187 bra TFT_disabled_color ; set to disabled color and return | |
582 | 188 SAFE_2BYTE_COPY rel_pressure,xA ; get current pressure in mbar = cm |
189 movlw LOW d'100' | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
190 movwf xB+0 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
191 clrf xB+1 |
560 | 192 call div16x16 ; xA/xB=xC with xA as remainder: Divide/100 => xC+0 = current depth in meters |
193 movff char_O_first_deco_depth,WREG; get stop depth in m into WREG | |
194 subwf xC+0,W ; compute current depth - stop depth | |
195 btfsc STATUS,C ; result negative? | |
196 bra TFT_standard_color ; NO - set to standard color and return | |
197 bra TFT_warnings_color ; YES - set to warning color and return | |
198 | |
199 | |
582 | 200 TFT_color_code_depth: ; with actual depth as rel_pressure in [mbar] in hi:lo and threshold depth_warn_mbar [mbar], 16Bit |
560 | 201 movff lo,sub_a+0 |
202 movff hi,sub_a+1 | |
582 | 203 movlw LOW depth_warn_mbar |
560 | 204 movwf sub_b+0 |
205 movlw HIGH depth_warn_mbar | |
206 movwf sub_b+1 | |
207 call subU16 ; sub_c = sub_a - sub_b | |
582 | 208 TSTOSS opt_modwarning ; 0=standard, 1=blink |
560 | 209 bra TFT_color_code_depth_std |
210 btfss neg_flag | |
211 bra TFT_color_code_depth_warn ; set to warning color | |
212 bra TFT_color_code_depth_ppO2 ; check depth against MOD and return... | |
213 TFT_color_code_depth_std: | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
214 btfss neg_flag |
560 | 215 bra TFT_warnings_color ; set to warning color and return |
216 bra TFT_standard_color ; set to standard color and return... | |
217 TFT_color_code_depth_ppO2: | |
582 | 218 movff opt_dive_mode,WREG ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR |
560 | 219 decfsz WREG,F ; are we in CCR mode? |
220 bra TFT_color_code_depth_no_ccr ; NO - continue checking for ppO2 | |
221 btfsc is_bailout ; YES - check if in bailout | |
582 | 222 bra TFT_color_code_depth_no_ccr ; YES - continue checking for ppO2 |
223 bcf blinking_depth_warning ; reset warning | |
560 | 224 bra TFT_standard_color ; no color coding, return. |
225 TFT_color_code_depth_no_ccr: | |
226 movff int_O_breathed_ppO2+1,WREG ; get upper byte of currently breathed ppO2 | |
227 btfsc WREG,int_warning_flag ; is the warning flag set? | |
228 bra TFT_color_code_depth_warn ; YES - animate in warning design | |
582 | 229 bcf blinking_depth_warning ; NO - reset warning |
230 bra TFT_standard_color ; set standard color and return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
231 TFT_color_code_depth_warn: |
582 | 232 bsf blinking_depth_warning ; set warning |
233 bra TFT_warnings_color ; set to warning color and return... | |
234 | |
235 | |
236 global TFT_color_code_cns | |
237 TFT_color_code_cns: ; color-code CNS values (CNS in hi:lo [%]) | |
560 | 238 btfss hi,int_invalid_flag ; is the invalid flag set? |
239 bra TFT_color_code_cns_1 ; NO | |
582 | 240 bcf hi,int_invalid_flag ; YES - clear invalid flag |
241 bcf hi,int_warning_flag ; clear warning flag (it may be set) | |
242 bcf hi,int_attention_flag ; clear attention flag (it may be set) | |
243 bra TFT_disabled_color ; set to disabled color and return | |
560 | 244 TFT_color_code_cns_1 |
245 btfss hi,int_warning_flag ; is the warning flag set? | |
246 bra TFT_color_code_cns_2 ; NO | |
582 | 247 bcf hi,int_warning_flag ; YES - clear warning flag |
248 bcf hi,int_attention_flag ; clear attention flag (it may be set) | |
249 bra TFT_warnings_color ; set to warning color and return | |
560 | 250 TFT_color_code_cns_2: |
582 | 251 btfss hi,int_attention_flag ; is the attention flag set? |
252 bra TFT_standard_color ; NO - set to standard color and return | |
253 bcf hi,int_attention_flag ; YES - clear attention flag | |
254 bra TFT_attention_color ; set to attention color and return | |
560 | 255 |
0 | 256 |
257 TFT_color_code_gf: | |
582 | 258 ; with int_O_gradient_factor, the upper byte is solely used for the flags |
259 ; and not for the value, thus there is no need to clear the flags | |
260 btfsc hi,int_invalid_flag ; is the invalid flag set? | |
261 bra TFT_disabled_color ; YES - set to disabled color and return | |
262 btfsc hi,int_warning_flag ; NO - is the warning flag set? | |
263 bra TFT_warnings_color ; YES - set to warning color and return | |
264 btfsc hi,int_attention_flag ; NO - is the attention flag set? | |
265 bra TFT_attention_color ; YES - set to attention color and return | |
266 bra TFT_standard_color ; NO - set to normal color and return | |
267 | |
268 | |
269 TFT_color_code_ppo2: ; color-code ppO2 values (ppO2 in hi:lo [cbar]) by its warning flags | |
560 | 270 btfss hi,int_warning_flag ; is the warning flag set? |
271 bra TFT_color_code_ppo2_1 ; NO | |
582 | 272 bcf hi,int_warning_flag ; YES - clear warning flag |
273 bcf hi,int_attention_flag ; clear attention flag (it may be set) | |
274 bcf hi,int_high_flag ; clear high warning flag (it may be set) | |
275 bcf hi,int_low_flag ; clear low warning flag (it may be set) | |
276 bra TFT_warnings_color ; warn in warning color | |
560 | 277 TFT_color_code_ppo2_1: |
582 | 278 btfss hi,int_attention_flag ; is the attention flag set? |
279 bra TFT_color_code_ppo2_2 ; NO | |
280 bcf hi,int_attention_flag ; YES - clear attention flag (it may be set) | |
281 bcf hi,int_high_flag ; clear high warning flag (it may be set) | |
282 bcf hi,int_low_flag ; clear low warning flag (it may be set) | |
283 bra TFT_attention_color ; set to standard color and return | |
284 TFT_color_code_ppo2_2: | |
285 bcf hi,int_high_flag ; clear high warning flag (it may be set) | |
286 bcf hi,int_low_flag ; clear low warning flag (it may be set) | |
560 | 287 bra TFT_standard_color ; set to standard color and return |
288 | |
289 | |
582 | 290 TFT_color_code_ppo2_hud: ; color-code ppO2 values (ppO2 in --:lo [cbar]) by its value |
560 | 291 movff char_O_deco_warnings,WREG ; get the deco warnings vector |
292 btfss WREG,deco_flag ; are we in deco? | |
293 bra TFT_color_code_ppo2_hud_a ; NO - load normal max value as threshold | |
294 movff char_I_ppO2_max_deco,WREG ; YES - load deco value as threshold | |
295 bra TFT_color_code_ppo2_hud_b | |
582 | 296 TFT_color_code_ppo2_hud_a: |
560 | 297 movff char_I_ppO2_max,WREG ; ppO2 max while not in deco |
582 | 298 TFT_color_code_ppo2_hud_b: |
299 cpfsgt lo ; lo > threshold? | |
300 bra TFT_color_code_ppo2_hud1 ; NO - continue with checking for ppO2 low | |
301 bra TFT_warnings_color ; YES - set warning color and return | |
0 | 302 TFT_color_code_ppo2_hud1: |
560 | 303 movff opt_dive_mode,WREG ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR |
304 decfsz WREG,F ; now: 0=CC, 1=Gauge, 2=Apnea, 3=PSCR | |
305 bra TFT_color_code_ppo2_hud_nocc; not CCR... | |
306 btfsc is_bailout | |
307 bra TFT_color_code_ppo2_hud_nocc; is bailout, hence not loop mode... | |
308 movff char_I_ppO2_min_loop,WREG ; ppO2 min loop mode color coding | |
309 bra TFT_color_code_ppo2_hud_cont | |
310 TFT_color_code_ppo2_hud_nocc: | |
311 movff char_I_ppO2_min,WREG ; PPO2 min for all other modes | |
312 TFT_color_code_ppo2_hud_cont: | |
582 | 313 cpfslt lo ; lo < char_I_ppO2_min? |
314 bra TFT_standard_color ; NO - set standard color and return... | |
315 bra TFT_warnings_color ; Yes - set warning color and return | |
316 | |
317 | |
318 TFT_color_code_battery: ; color-code the battery display, with battery percent in lo | |
319 movlw color_code_battery_low ; get warning threshold | |
320 cpfsgt lo ; is battery percent < threshold? | |
321 bra TFT_warnings_color ; YES - set to warning color and return | |
322 bra TFT_standard_color ; NO - set to standard color and return | |
323 | |
324 | |
325 global TFT_color_code_gas | |
326 TFT_color_code_gas: ; color-code the output according to gas number (1-6) in WREG | |
327 movwf up ; copy gas number (1-6) to up | |
328 movlw color_white ; Default color | |
329 dcfsnz up,F | |
330 movlw color_white ; Color for Gas 1 | |
331 dcfsnz up,F | |
332 movlw color_green ; Color for Gas 2 | |
333 dcfsnz up,F | |
334 movlw color_red ; Color for Gas 3 | |
335 dcfsnz up,F | |
336 movlw color_yellow ; Color for Gas 4 | |
337 dcfsnz up,F | |
338 movlw color_cyan ; Color for Gas 5 | |
339 dcfsnz up,F | |
340 movlw color_pink ; Color for Gas 6 | |
341 goto TFT_set_color ; Set Color... | |
342 | |
0 | 343 |
344 ; **************************************************************************** | |
345 | |
582 | 346 global TFT_show_OC_startgas_surface |
347 TFT_show_OC_startgas_surface: ; Show first gas and "OSTC2-like" active gases | |
348 ; Show first gas | |
349 WIN_SMALL surf_decotype_column+.1,surf_decotype_row+.30 | |
350 extern get_first_gas_to_WREG,gaslist_strcat_gas | |
351 call get_first_gas_to_WREG ; Gets first gas (1-5) into WREG | |
560 | 352 decf WREG,W ; 1-5 -> 0-4 |
582 | 353 movwf PRODL |
354 call gaslist_strcat_gas ; Input: PRODL : gas number (0..4), Output: Text appended into buffer pointed by FSR2. | |
355 STRCAT_PRINT "" | |
356 ; Show boxes | |
357 WIN_TOP surf_decotype_row+.30+.25 | |
358 WIN_LEFT surf_decotype_boxes_left1+.1 | |
359 rcall TFT_disabled_color | |
360 movff opt_gas_type+0,hi ; 0=Disabled, 1=First, 2=Travel, 3=Deco | |
361 tstfsz hi | |
362 rcall TFT_standard_color | |
363 STRCPY_PRINT "1" | |
364 decfsz hi,F ; Type = 1 (First)? | |
365 bra DISP_active_gas_surfmode3 ; No, skip box | |
366 WIN_FRAME_STD surf_decotype_boxes_top, surf_decotype_boxes_bottom, surf_decotype_boxes_left1, surf_decotype_boxes_left1+.8 ;top, bottom, left, right | |
234
57155164faad
Show OSTC2-like active gas boxes in surface mode
heinrichsweikamp
parents:
231
diff
changeset
|
367 DISP_active_gas_surfmode3: |
582 | 368 rcall TFT_disabled_color |
369 movff opt_gas_type+1,hi ; 0=Disabled, 1=First, 2=Travel, 3=Deco | |
370 tstfsz hi | |
371 rcall TFT_standard_color | |
372 WIN_LEFT surf_decotype_boxes_left2+.1 | |
373 STRCPY_PRINT "2" | |
374 decfsz hi,F ; Type = 1 (First)? | |
375 bra DISP_active_gas_surfmode4 ; No, skip box | |
376 WIN_FRAME_STD surf_decotype_boxes_top, surf_decotype_boxes_bottom, surf_decotype_boxes_left2, surf_decotype_boxes_left2+.8 ;top, bottom, left, right | |
234
57155164faad
Show OSTC2-like active gas boxes in surface mode
heinrichsweikamp
parents:
231
diff
changeset
|
377 DISP_active_gas_surfmode4: |
582 | 378 rcall TFT_disabled_color |
379 movff opt_gas_type+2,hi ; 0=Disabled, 1=First, 2=Travel, 3=Deco | |
380 tstfsz hi | |
381 rcall TFT_standard_color | |
382 WIN_LEFT surf_decotype_boxes_left3+.1 | |
383 STRCPY_PRINT "3" | |
384 decfsz hi,F ; Type = 1 (First)? | |
385 bra DISP_active_gas_surfmode5 ; No, skip box | |
386 WIN_FRAME_STD surf_decotype_boxes_top, surf_decotype_boxes_bottom, surf_decotype_boxes_left3, surf_decotype_boxes_left3+.8 ;top, bottom, left, right | |
234
57155164faad
Show OSTC2-like active gas boxes in surface mode
heinrichsweikamp
parents:
231
diff
changeset
|
387 DISP_active_gas_surfmode5: |
582 | 388 rcall TFT_disabled_color |
389 movff opt_gas_type+3,hi ; 0=Disabled, 1=First, 2=Travel, 3=Deco | |
390 tstfsz hi | |
391 rcall TFT_standard_color | |
392 WIN_LEFT surf_decotype_boxes_left4+.1 | |
393 STRCPY_PRINT "4" | |
394 decfsz hi,F ; Type = 1 (First)? | |
395 bra DISP_active_gas_surfmode6 ; No, skip box | |
396 WIN_FRAME_STD surf_decotype_boxes_top, surf_decotype_boxes_bottom, surf_decotype_boxes_left4, surf_decotype_boxes_left4+.8 ;top, bottom, left, right | |
234
57155164faad
Show OSTC2-like active gas boxes in surface mode
heinrichsweikamp
parents:
231
diff
changeset
|
397 DISP_active_gas_surfmode6: |
582 | 398 rcall TFT_disabled_color |
399 movff opt_gas_type+4,hi ; 0=Disabled, 1=First, 2=Travel, 3=Deco | |
400 tstfsz hi | |
401 rcall TFT_standard_color | |
402 WIN_LEFT surf_decotype_boxes_left5+.1 | |
403 STRCPY_PRINT "5" | |
404 rcall TFT_standard_color ; Reset color | |
405 decfsz hi,F ; Type = 1 (First)? | |
406 return ; no, Done. | |
407 WIN_FRAME_STD surf_decotype_boxes_top, surf_decotype_boxes_bottom, surf_decotype_boxes_left5, surf_decotype_boxes_left5+.8 ;top, bottom, left, right | |
408 return ; Done. | |
409 | |
410 | |
411 global TFT_show_color_schemes | |
560 | 412 TFT_show_color_schemes: ; update the color schemes |
582 | 413 bsf divemode ; put in divemode |
414 call TFT_divemask_color | |
415 WIN_TINY .12,.40 | |
416 STRCAT_TEXT_PRINT tDepth | |
417 WIN_TINY .62,.40 | |
418 STRCAT_TEXT_PRINT tMaxDepth | |
419 WIN_TINY .122,.40 | |
420 STRCAT_TEXT_PRINT tDivetime | |
421 | |
422 ; Show some demo screen | |
423 | |
424 ; Depth demo | |
425 call TFT_standard_color | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
426 WIN_MEDIUM .3,.54 |
582 | 427 movlw LOW .5172 |
428 movwf lo | |
429 movlw HIGH .5172 | |
430 movwf hi | |
50 | 431 bsf leftbind |
432 bsf ignore_digit4 | |
560 | 433 output_16 ; Full meters in Big font |
50 | 434 bcf leftbind |
560 | 435 STRCAT_PRINT "" ; Display full meters |
582 | 436 WIN_SMALL .25,.66 |
437 movlw LOW .5172 | |
438 movwf lo | |
439 movlw HIGH .5172 | |
440 movwf hi | |
441 PUTC "." | |
50 | 442 movlw d'4' |
443 movwf ignore_digits | |
444 bsf ignore_digit5 | |
582 | 445 output_16dp d'0' ; .1m in SMALL font |
560 | 446 STRCAT_PRINT "" ; Display decimeters |
582 | 447 WIN_FONT FT_SMALL |
448 | |
449 ; Max. Depth demo | |
450 WIN_MEDIUM .64,.54 | |
451 bsf ignore_digit4 ; no 0.1m | |
452 bsf leftbind | |
453 movlw LOW .6349 | |
454 movwf lo | |
455 movlw HIGH .6349 | |
456 movwf hi | |
50 | 457 output_16 |
560 | 458 STRCAT_PRINT "" ; Display full meters |
582 | 459 bcf leftbind |
50 | 460 ; .1m in SMALL font |
582 | 461 WIN_SMALL .87,.66 |
462 PUTC "." | |
50 | 463 movlw d'4' |
464 movwf ignore_digits | |
465 bsf ignore_digit5 | |
582 | 466 bsf leftbind |
467 movlw LOW .6349 | |
468 movwf lo | |
469 movlw HIGH .6349 | |
470 movwf hi | |
50 | 471 output_16dp d'0' |
560 | 472 STRCAT_PRINT "" ; Display decimeters |
582 | 473 bcf leftbind |
474 | |
475 ; Divetime demo | |
476 movff mins,lo | |
477 clrf hi | |
478 WIN_MEDIUM .103, .54 | |
479 output_16_3 ; limit to 999 and display only (0-999) | |
480 STRCAT_PRINT "" ; Show minutes in large font | |
481 WIN_SMALL .139, .66 ; left position for two sec figures | |
482 PUTC ':' | |
50 | 483 bsf leftbind |
582 | 484 movff secs,lo |
50 | 485 output_99x |
582 | 486 bcf leftbind |
487 STRCAT_PRINT "" ; Show seconds in small font | |
488 | |
489 bcf divemode ; don't stay in divemode | |
50 | 490 return |
491 | |
0 | 492 global TFT_divemode_mask |
560 | 493 TFT_divemode_mask: ; Displays mask in divemode |
582 | 494 bcf FLAG_TFT_divemode_mask |
495 call TFT_divemask_color | |
560 | 496 WIN_TINY dm_mask_depth_column,dm_mask_depth_row |
582 | 497 STRCAT_TEXT_PRINT tDepth |
560 | 498 WIN_TINY dm_mask_maxdepth_column,dm_mask_maxdepth_row |
582 | 499 TSTOSS opt_vsigraph ; 0=skip, 1=draw |
560 | 500 WIN_TINY dm_mask_maxdepth_column_nvsi,dm_mask_maxdepth_row |
582 | 501 STRCAT_TEXT_PRINT tMaxDepth |
560 | 502 WIN_TINY dm_mask_divetime_column,dm_mask_divetime_row |
582 | 503 STRCAT_TEXT_PRINT tDivetime |
504 bra TFT_standard_color ; and return... | |
505 | |
506 global TFT_divemode_mask_alternative | |
560 | 507 TFT_divemode_mask_alternative: ; Alt. mask for divemode |
582 | 508 bcf FLAG_TFT_divemode_mask_alt |
509 call TFT_divemask_color | |
510 WIN_TINY dm_mask_depth_column,dm_mask_depth_row | |
511 STRCAT_TEXT_PRINT tDepth | |
512 WIN_TINY dm_mask_divetime_column-.30,dm_mask_divetime_row | |
513 STRCAT_TEXT_PRINT tDivetime | |
514 bra TFT_standard_color ; and return... | |
515 | |
516 global TFT_draw_gassep_line | |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
517 TFT_draw_gassep_line: |
582 | 518 btfsc FLAG_apnoe_mode ; Ignore in Apnoe mode |
519 return | |
520 btfsc divemode_menu ; Is the dive mode menu shown? | |
521 return ; Yes, return | |
522 bra TFT_standard_color ; and return... | |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
523 |
307
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
524 ;========================================================================= |
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
525 |
0 | 526 global TFT_display_velocity |
582 | 527 TFT_display_velocity: ; With divA+0 = m/min, neg_flag_velocity: ascend=1, descend=0 |
528 bcf STATUS,C | |
529 movlw velocity_display_threshold_1; lowest threshold for display vertical velocity | |
530 subwf divA+0,W | |
531 btfss STATUS,C | |
532 bra TFT_velocity_clear ; lower then threshold. Clear text and graph (If active) | |
533 | |
534 ; We have something to display | |
535 bsf display_velocity ; Set flag | |
536 ; check if descending: no warning color if descending | |
537 rcall TFT_standard_color | |
538 btfsc neg_flag_velocity ; Ignore for descent! | |
539 rcall TFT_velocity_set_color ; Set color for text and set threshold for graph | |
540 | |
541 rcall TFT_velocity_disp ; Show the text | |
542 | |
543 TSTOSS opt_vsigraph ; =1: draw the graphical VSI bar | |
544 bra TFT_display_velocity_done ; No graph | |
545 | |
546 btfsc alternative_divelayout ; Alternative layout? | |
547 bra TFT_display_velocity_done ; Yes, no graph! (no room when divetime minutes is three figures) | |
548 | |
549 btfsc neg_flag_velocity ; Ignore for descent! | |
550 rcall TFT_velocity_graph ; Show the graph | |
551 btfss neg_flag_velocity ; Ignore for descent! | |
552 rcall TFT_velocity_clear_graph ; Clear the graph for descent | |
553 | |
554 TFT_display_velocity_done: | |
555 bra TFT_standard_color ; and return! | |
398
1f2e35f5a5aa
BUGFIX: Make sure SP1 is always selected on start in Auto-SP mode
heinrichsweikamp
parents:
394
diff
changeset
|
556 |
1f2e35f5a5aa
BUGFIX: Make sure SP1 is always selected on start in Auto-SP mode
heinrichsweikamp
parents:
394
diff
changeset
|
557 TFT_speed_table: |
582 | 558 ; use a depth-dependent ascent rate warning |
559 ; depth(ft): <20 >20 >40 >60 >75 >88 >101 >115 >128 >144 >164 | |
560 ; speed(ft/min): 23 26 29 33 36 43 49 56 59 62 66 | |
561 ; depth(m): <=6 >6 >12 >18 >23 >27 >31 >35 >39 >44 >50 | |
562 ; speed(m/min): 7 8 9 10 11 13 15 17 18 19 20 (warning) | |
307
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
563 ; speed(m/min): 5 6 7 8 8 10 12 13 14 15 15 (attention) |
398
1f2e35f5a5aa
BUGFIX: Make sure SP1 is always selected on start in Auto-SP mode
heinrichsweikamp
parents:
394
diff
changeset
|
564 |
582 | 565 ; <xx m, warning speed, attention speed, unused |
566 DB .6,.7,.5,.0 | |
567 DB .12,.8,.6,.0 | |
568 DB .18,.9,.7,.0 | |
569 DB .23,.10,.8,.0 | |
570 DB .27,.11,.8,.0 | |
571 DB .31,.13,.10,.0 | |
572 DB .35,.15,.12,.0 | |
573 DB .39,.17,.13,.0 | |
574 DB .44,.18,.14,.0 | |
575 DB .50,.19,.15,.0 | |
576 DB .200,.20,.15,.0 | |
577 | |
578 TFT_velocity_set_color: ; Set color based on speed table or use static thresholds, with divA+0 = m/min | |
579 ; check if old/new ascend logic is used | |
580 TSTOSS opt_vsitextv2 ; 0=standard, 1=dynamic | |
581 bra TFT_velocity_set_color_static ; static ascend rate limit | |
582 | |
583 ; get the actual depth in m | |
584 SAFE_2BYTE_COPY rel_pressure, lo | |
560 | 585 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
586 movff hi,xA+1 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
587 movff lo,xA+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
588 movlw LOW d'100' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
589 movwf xB+0 |
582 | 590 clrf xB+1 ; Devide/100 -> xC+0 = Depth in m |
591 call div16x16 ; xA/xB=xC with xA as remainder | |
592 ;movf xC+0,W ; Depth in m | |
593 | |
594 ; point to speed table | |
595 movlw LOW (TFT_speed_table-.3) | |
596 movwf TBLPTRL | |
597 movlw HIGH (TFT_speed_table-.3) | |
598 movwf TBLPTRH | |
599 movlw UPPER (TFT_speed_table-.3) | |
600 movwf TBLPTRU | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
601 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
602 TFT_velocity_set_color_skip: |
582 | 603 TBLRD*+ ; 3 dummy reads |
604 TBLRD*+ | |
605 TBLRD*+ | |
606 | |
607 TBLRD*+ ; Get speed threshold | |
608 movf xC+0,W ; Depth in m | |
609 cpfsgt TABLAT ; Threshold > current depth ? | |
610 bra TFT_velocity_set_color_skip ; No | |
611 | |
612 TBLRD*+ ; Get warning speed threshold | |
613 movf TABLAT,W | |
614 movwf divA+1 ; Copy for graph routine | |
615 cpfslt divA+0 ; smaller then actual value (in m/min)? | |
616 bra TFT_warnings_color ; Set Warning color (And return) | |
617 TBLRD*+ ; Get attention speed threshold | |
618 movf TABLAT,W | |
619 cpfslt divA+0 ; smaller then actual value (in m/min)? | |
620 bra TFT_attention_color ; set attention color (and return) | |
621 bra TFT_standard_color ; ...and return | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
622 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
623 TFT_velocity_set_color_static: |
582 | 624 movlw color_code_velocity_warn_high ; in m/min |
625 movwf divA+1 ; Copy for graph routine | |
626 cpfslt divA+0 ; smaller then actual value (in m/min)? | |
627 bra TFT_warnings_color ; Set Warning color (And return) | |
628 movlw color_code_velocity_attn_high ; in m/min | |
629 cpfslt divA+0 ; smaller then actual value (in m/min)? | |
630 bra TFT_attention_color ; set attention color (and return) | |
631 bra TFT_standard_color ; ...and return | |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
632 |
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
633 TFT_velocity_disp: |
582 | 634 WIN_SMALL dm_velocity_text_column, dm_velocity_text_row |
635 TSTOSS opt_units ; 0=Meters, 1=Feets | |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
636 bra TFT_velocity_metric |
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
637 ;TFT_velocity_imperial: |
0 | 638 movff divA+0,WREG ; divA+0 = m/min |
639 mullw .100 ; PRODL:PRODH = mbar/min | |
640 movff PRODL,lo | |
641 movff PRODH,hi | |
642 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
643 movlw '-' | |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
644 btfsc neg_flag_velocity |
0 | 645 movlw '+' |
646 movwf POSTINC2 | |
647 bsf leftbind | |
648 output_16 | |
649 bcf leftbind | |
582 | 650 STRCAT_TEXT_PRINT tVelImperial ; Unit switch |
651 return | |
0 | 652 |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
653 TFT_velocity_metric: |
0 | 654 movff divA+0,lo ; divA+0 = m/min |
655 movlw '-' | |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
656 btfsc neg_flag_velocity |
0 | 657 movlw '+' |
658 movwf POSTINC2 | |
659 output_99 | |
582 | 660 STRCAT_TEXT_PRINT tVelMetric ; Unit switch |
661 return | |
662 | |
663 TFT_velocity_graph: ; divA+0 = m/min | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
664 ; divA+0 holding the ascend speed in m/min |
582 | 665 movff divA+0,hi ; Copy |
666 WIN_BOX_BLACK dm_velobar_top, dm_velobar_bot, dm_velobar_lft, dm_velobar_rgt ;top, bottom, left, right -> outer frame | |
667 rcall TFT_divemask_color_dive ; Color -> WREG | |
668 WIN_FRAME_COLOR dm_velobar_top, dm_velobar_bot, dm_velobar_lft, dm_velobar_rgt ;inner frame | |
669 rcall TFT_divemask_color_dive ; Color -> WREG | |
670 WIN_FRAME_COLOR dm_velobar_top+.10, dm_velobar_bot-.10, dm_velobar_lft, dm_velobar_rgt ;inner frame | |
671 rcall TFT_divemask_color_dive ; Color -> WREG | |
672 WIN_FRAME_COLOR dm_velobar_top+.20, dm_velobar_bot-.20, dm_velobar_lft, dm_velobar_rgt ;inner frame | |
673 rcall TFT_divemask_color_dive ; Color -> WREG | |
674 WIN_FRAME_COLOR dm_velobar_top+.30, dm_velobar_bot-.30, dm_velobar_lft, dm_velobar_rgt ;inner frame | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
675 |
582 | 676 movff divA+1,xA+0 ; m/min for warning level (upper two blocks) |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
677 clrf xA+1 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
678 movlw .5 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
679 movwf xB+0 ; Threshold for color warning (5 color normal + 2 color warning) |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
680 clrf xB+1 |
582 | 681 call div16x16 ;xA/xB=xC with xA as remainder |
682 ; xC+0 holds step size in m/min (e.g. =3 for 15m/min warning threshold) | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
683 movff hi,xA+0 ; Velocity in m/min |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
684 clrf xA+1 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
685 movff xC+0,xB+0 ; Step size |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
686 clrf xB+1 |
582 | 687 call div16x16 ;xA/xB=xC with xA as remainder |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
688 ; xC+0 now holds amount of segments to show |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
689 |
582 | 690 movff hi,divA+0 ; Copy back for numeric output |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
691 movlw d'7' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
692 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
693 bra DISP_graph_vel_7 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
694 movlw d'6' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
695 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
696 bra DISP_graph_vel_6 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
697 movlw d'5' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
698 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
699 bra DISP_graph_vel_5 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
700 movlw d'4' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
701 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
702 bra DISP_graph_vel_4 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
703 movlw d'3' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
704 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
705 bra DISP_graph_vel_3 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
706 movlw d'2' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
707 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
708 bra DISP_graph_vel_2 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
709 movlw d'1' |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
710 cpfslt xC+0 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
711 bra DISP_graph_vel_1 |
582 | 712 bra DISP_graph_vel_0 ; Should not happen... |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
713 |
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
714 DISP_graph_vel_7: |
582 | 715 rcall TFT_warnings_color_dive ; Color -> WREG |
716 WIN_BOX_COLOR dm_velobar_top+.2, dm_velobar_top+.8, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
717 DISP_graph_vel_6: |
582 | 718 rcall TFT_warnings_color_dive ; Color -> WREG |
719 WIN_BOX_COLOR dm_velobar_top+.12, dm_velobar_top+.18, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
720 DISP_graph_vel_5: |
582 | 721 rcall TFT_attention_color_dive ; Color -> WREG |
722 WIN_BOX_COLOR dm_velobar_top+.22, dm_velobar_top+.28, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
723 DISP_graph_vel_4: |
582 | 724 rcall TFT_standard_color_dive ; Color -> WREG |
725 WIN_BOX_COLOR dm_velobar_top+.32, dm_velobar_top+.38, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
726 DISP_graph_vel_3: |
582 | 727 rcall TFT_standard_color_dive ; Color -> WREG |
728 WIN_BOX_COLOR dm_velobar_top+.42, dm_velobar_top+.48, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
729 DISP_graph_vel_2: |
582 | 730 rcall TFT_standard_color_dive ; Color -> WREG |
731 WIN_BOX_COLOR dm_velobar_top+.52, dm_velobar_top+.58, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
732 DISP_graph_vel_1: |
582 | 733 rcall TFT_standard_color_dive ; Color -> WREG |
734 WIN_BOX_COLOR dm_velobar_top+.62, dm_velobar_top+.68, dm_velobar_lft+.2, dm_velobar_rgt-.2 ;top, bottom, left, right | |
399
db25f2028074
CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents:
398
diff
changeset
|
735 DISP_graph_vel_0: |
582 | 736 return ; Done. |
326
d21b172d5a7a
VSIbar #4: VSI settings submenu, graph option, logbook offset and compass calib. menu exit fix
Janos Kovacs <kovjanos@gmail.com>
parents:
321
diff
changeset
|
737 |
315
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
738 global TFT_velocity_clear |
4f83470dcece
VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents:
310
diff
changeset
|
739 TFT_velocity_clear: |
307
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
740 btfss display_velocity ; Velocity was not displayed, do not delete |
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
741 return |
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
742 bcf display_velocity ; Velocity was displayed, delete velocity now |
0 | 743 ; Clear Text |
582 | 744 WIN_BOX_BLACK dm_velocity_text_row, dm_velocity_text_bot, dm_velocity_text_column, dm_velocity_text_rgt ; top, bottom, left, right |
745 | |
746 TSTOSS opt_vsigraph ; =1: draw the graphical VSI bar | |
747 return ; No graph to clear | |
398
1f2e35f5a5aa
BUGFIX: Make sure SP1 is always selected on start in Auto-SP mode
heinrichsweikamp
parents:
394
diff
changeset
|
748 TFT_velocity_clear_graph: |
582 | 749 ; Clear Graph |
750 WIN_BOX_BLACK dm_velobar_top, dm_velobar_bot, dm_velobar_lft, dm_velobar_rgt ;top, bottom, left, right | |
0 | 751 return |
752 | |
307
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
753 ;========================================================================= |
14719662fb95
Merged Screen layout work #4 into VSItextv2
Janos Kovacs <kovjanos@gmail.com>
parents:
303
diff
changeset
|
754 |
582 | 755 global TFT_clear_decoarea |
0 | 756 TFT_clear_decoarea: |
582 | 757 WIN_BOX_BLACK dm_decostop_1st_stop_row, .239, dm_decostop_1st_stop_column, .159 ; top, bottom, left, right |
0 | 758 return |
759 | |
560 | 760 |
582 | 761 global TFT_clear_divemode_menu |
0 | 762 TFT_clear_divemode_menu: |
582 | 763 WIN_BOX_BLACK dm_menu_row, dm_menu_lower, dm_menu_left, dm_menu_right ; top, bottom, left, right |
0 | 764 return |
765 | |
560 | 766 |
0 | 767 global TFT_display_ndl_mask |
768 TFT_display_ndl_mask: | |
582 | 769 bcf FLAG_TFT_display_ndl_mask |
770 btfsc divemode_menu ; Is the dive mode menu shown? | |
771 return ; Yes, return | |
772 call TFT_clear_decoarea ; Clear Dekostop and Dekosum | |
773 call TFT_divemask_color | |
774 WIN_STD dm_ndl_text_column, dm_ndl_text_row | |
775 STRCPY_TEXT_PRINT tNDL ; NDL | |
776 bra TFT_standard_color ; and return... | |
560 | 777 |
778 | |
779 global TFT_display_tts | |
780 TFT_display_tts: | |
582 | 781 bcf FLAG_TFT_display_tts |
782 btfsc divemode_menu ; Is the dive mode menu shown? | |
783 return ; Yes, return | |
0 | 784 call TFT_standard_color |
582 | 785 movff int_O_ascenttime+0,lo ; TTS |
786 movff int_O_ascenttime+1,hi ; on 16bits | |
560 | 787 btfss hi,int_invalid_flag ; is the invalid flag set? |
788 bra TFT_display_tts_1 ; NO | |
789 bcf hi,int_invalid_flag ; YES - clear flag | |
582 | 790 call TFT_disabled_color ; switch to disabled color |
560 | 791 TFT_display_tts_1: |
582 | 792 WIN_MEDIUM dm_tts_value_column, dm_tts_value_row |
560 | 793 output_16_3 ; Displays only 0...999 |
0 | 794 STRCAT_PRINT "'" |
795 return | |
796 | |
560 | 797 |
0 | 798 global TFT_display_ndl |
799 TFT_display_ndl: | |
582 | 800 bcf FLAG_TFT_display_ndl |
801 btfsc divemode_menu ; Is the dive mode menu shown? | |
802 return ; Yes, return | |
803 WIN_MEDIUM dm_ndl_value_column, dm_ndl_value_row | |
804 call TFT_standard_color | |
805 movff char_O_nullzeit,lo ; Get NDL from C-code | |
806 output_8 | |
807 STRCAT_PRINT "'" | |
808 return | |
809 | |
810 | |
811 global TFT_big_deco_alt ; The big deco | |
560 | 812 TFT_big_deco_alt: |
582 | 813 bcf FLAG_TFT_big_deco_alt |
814 | |
815 btfss decostop_active ; deco? | |
816 bra TFT_big_deco_ndl_alt ; NDL | |
817 | |
818 ; Deco | |
819 bcf FLAG_TFT_display_deko | |
820 call TFT_divemask_color | |
821 WIN_STD .70,.165 | |
822 STRCPY_TEXT_PRINT tTTS ; TTS | |
823 rcall TFT_standard_color | |
824 | |
825 ; TTS | |
826 WIN_LARGE .97,.170 | |
827 movff int_O_ascenttime+0,lo ; TTS | |
828 movff int_O_ascenttime+1,hi ; on 16bits | |
829 btfss hi,int_invalid_flag ; is the invalid flag set? | |
830 bra TFT_display_tts_alt_1 ; NO | |
831 bcf hi,int_invalid_flag ; YES - clear flag | |
832 call TFT_disabled_color ; switch to disabled color | |
560 | 833 TFT_display_tts_alt_1: |
582 | 834 output_16_3 ; Displays only 0...999 |
835 STRCAT_PRINT "" | |
836 | |
837 ; 1st Stop | |
838 call TFT_divemask_color | |
839 WIN_STD .25,dm_customview_row | |
840 STRCPY_TEXT_PRINT tDiveSafetyStop ; "Stop" | |
841 | |
842 WIN_LARGE .60,.95 | |
843 call TFT_color_code_stop ; Color-code Output | |
844 movff char_O_first_deco_depth,lo ; stop depth in m | |
845 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) | |
846 STRCAT_PRINT "" | |
847 | |
848 ; m or ft after the stop depth | |
849 WIN_MEDIUM .100,.118 | |
850 TSTOSS opt_units ; 0=m, 1=ft | |
851 bra TFT_display_tts_alt_1_metric | |
852 STRCAT_TEXT_PRINT tFeets1 | |
853 bra TFT_display_tts_alt_1_com | |
560 | 854 TFT_display_tts_alt_1_metric: |
582 | 855 STRCAT_TEXT_PRINT tMeters |
560 | 856 TFT_display_tts_alt_1_com: |
582 | 857 WIN_LARGE .117,.95 |
858 movff char_O_first_deco_time,lo ; length of first stop in min | |
859 bcf leftbind | |
860 output_99 | |
861 STRCAT_PRINT "" | |
862 goto TFT_standard_color ; and return... | |
863 | |
560 | 864 TFT_big_deco_ndl_alt: |
582 | 865 ; NDL |
866 bcf FLAG_TFT_display_ndl | |
867 bcf decostop_active ; clear flag (again) | |
868 call TFT_divemask_color | |
869 WIN_STD .70,.165 | |
870 STRCPY_TEXT_PRINT tNDL ; NDL | |
871 call TFT_standard_color | |
872 WIN_LARGE .97,.170 | |
873 call TFT_standard_color | |
874 movff char_O_nullzeit,lo ; Get NDL from C-code | |
875 output_8 | |
876 STRCAT_PRINT "" | |
877 | |
878 btfsc FLAG_TFT_show_safety_stop | |
879 bra TFT_show_safety_stop_alt ; Show safety stop (And return) | |
880 ; Clear any safety stop or Decostop | |
560 | 881 TFT_no_more_safety_stop_alt: |
582 | 882 WIN_BOX_BLACK dm_customview_row, .150, .0, .159 ; top, bottom, left, right |
883 WIN_BOX_BLACK dm_customview_row, .164, .60, .159 ; top, bottom, left, right | |
884 return | |
560 | 885 |
886 TFT_show_safety_stop_alt: | |
582 | 887 bcf FLAG_TFT_show_safety_stop |
888 tstfsz safety_stop_countdown ; Countdown at zero? | |
889 bra TFT_show_safety_stop_alt2 ; No, show stop | |
890 bcf show_safety_stop ; Clear flag | |
891 btfss safety_stop_active ; Displayed? | |
892 return ; No | |
893 bcf safety_stop_active ; Clear flag | |
894 bra TFT_no_more_safety_stop_alt ; Yes, Clear stop ; and return... | |
560 | 895 |
896 TFT_show_safety_stop_alt2: | |
582 | 897 bsf safety_stop_active ; Set flag |
898 decf safety_stop_countdown,F ; Reduce countdown | |
899 | |
900 call TFT_divemask_color | |
901 WIN_STD .50,dm_customview_row | |
560 | 902 STRCPY_TEXT_PRINT tDiveSafetyStop |
582 | 903 call TFT_attention_color ; show in yellow |
560 | 904 WIN_LARGE .90,.95 |
905 movff safety_stop_countdown,lo | |
906 clrf hi | |
907 call convert_time ; converts hi:lo in seconds to mins (hi) and seconds (lo) | |
908 movf hi,W | |
909 movff lo,hi | |
910 movwf lo ; exchange lo and hi | |
582 | 911 bsf leftbind |
0 | 912 output_8 |
560 | 913 STRCAT_PRINT "" |
582 | 914 WIN_MEDIUM .112,.120 |
560 | 915 STRCAT_PRINT ":" |
582 | 916 WIN_LARGE .117,.95 |
917 bcf leftbind | |
560 | 918 movff hi,lo |
919 output_99x | |
920 STRCAT_PRINT "" | |
582 | 921 WIN_FONT FT_SMALL |
560 | 922 goto TFT_standard_color ; and return... |
923 | |
0 | 924 |
925 global TFT_divemode_warning | |
926 TFT_divemode_warning: | |
560 | 927 bcf FLAG_TFT_divemode_warning |
582 | 928 bsf dive_warning_displayed ; =1: The warning sign is shown |
560 | 929 WIN_TOP dm_warning_icon_row |
930 WIN_LEFT dm_warning_icon_column | |
582 | 931 TFT_WRITE_PROM_IMAGE dive_warning2_block ; Show Warning icon |
560 | 932 return |
0 | 933 |
934 global TFT_divemode_warning_clear | |
935 TFT_divemode_warning_clear: | |
560 | 936 bcf FLAG_TFT_divemode_warning_clear |
582 | 937 btfss dive_warning_displayed ; =1: The warning sign is shown |
0 | 938 return |
582 | 939 bcf dive_warning_displayed ; clear only once |
940 WIN_BOX_BLACK dm_warning_icon_row, dm_warning_icon_bot, dm_warning_icon_column, dm_warning_icon_rgt ; top, bottom, left, right | |
560 | 941 return |
942 | |
0 | 943 global TFT_display_deko_mask |
944 TFT_display_deko_mask: | |
582 | 945 bcf FLAG_TFT_display_deko_mask |
946 btfsc divemode_menu ; Is the dive mode menu shown? | |
947 return ; Yes, return | |
948 rcall TFT_clear_decoarea ; Clear Dekostop and Dekosum (and NDL in this case) | |
949 WIN_STD dm_tts_text_column, dm_tts_text_row | |
950 call TFT_divemask_color | |
951 STRCPY_TEXT_PRINT tTTS ; TTS | |
952 call TFT_standard_color | |
953 bcf show_safety_stop ; Clear safety stop flag | |
954 return | |
0 | 955 |
560 | 956 |
957 TFT_display_deko_output_depth: ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (for ft) | |
0 | 958 TSTOSS opt_units ; 0=m, 1=ft |
560 | 959 bra TFT_display_deko_output_metric |
0 | 960 ;TFT_display_deko_output_imperial: |
961 movf lo,W ; lo = m | |
962 mullw .100 ; PRODL:PRODH = mbar | |
963 movff PRODL,lo | |
964 movff PRODH,hi | |
965 ; Convert with 334feet/100m to have 10ft, 20ft, 30ft stops... | |
966 movff lo,xA+0 | |
967 movff hi,xA+1 | |
582 | 968 movlw LOW d'334' ; 334feet/100m |
0 | 969 movwf xB+0 |
582 | 970 movlw HIGH d'334' |
0 | 971 movwf xB+1 |
582 | 972 call mult16x16 ; xA*xB=xC (lo:hi * 328) |
973 movlw d'50' ; round up | |
0 | 974 addwf xC+0,F |
975 movlw 0 | |
976 addwfc xC+1,F | |
977 addwfc xC+2,F | |
978 addwfc xC+3,F | |
582 | 979 movlw d'100' |
0 | 980 movwf xB+0 |
981 clrf xB+1 | |
582 | 982 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder |
0 | 983 movff xC+0,lo |
582 | 984 movff xC+1,hi ; restore lo and hi with updated value |
0 | 985 bcf leftbind |
560 | 986 btfsc alternative_divelayout |
582 | 987 bsf leftbind ; left for alternative layout mode |
0 | 988 bsf ignore_digit4 ; Only full feet |
989 output_16 | |
560 | 990 btfsc alternative_divelayout |
582 | 991 return ; Not for alternative layout mode |
0 | 992 STRCAT_TEXT tFeets1 |
993 return | |
994 | |
995 TFT_display_deko_output_metric: | |
996 output_99 | |
560 | 997 btfsc alternative_divelayout |
582 | 998 return ; Not for alternative layout mode |
0 | 999 STRCAT_TEXT tMeters |
1000 PUTC ' ' | |
1001 return | |
1002 | |
560 | 1003 |
0 | 1004 global TFT_display_deko |
1005 TFT_display_deko: | |
582 | 1006 bcf FLAG_TFT_display_deko |
1007 btfsc divemode_menu ; Is the dive mode menu shown? | |
1008 return ; Yes, return | |
560 | 1009 WIN_MEDIUM dm_decostop_1st_stop_column, dm_decostop_1st_stop_row |
582 | 1010 call TFT_color_code_stop ; Color-code Output |
1011 movff char_O_first_deco_depth,lo ; stop depth in m | |
0 | 1012 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1013 movff char_O_first_deco_time,lo ; length of first stop in min |
0 | 1014 output_99 |
1015 STRCAT_PRINT "'" | |
560 | 1016 goto TFT_standard_color ; and return... |
1017 | |
0 | 1018 |
582 | 1019 global TFT_decoplan |
0 | 1020 TFT_decoplan: |
582 | 1021 call TFT_divemask_color |
1022 WIN_TINY dm_custom_decoplan_title_column, dm_custom_decoplan_title_row | |
1023 STRCPY_TEXT_PRINT tDiveDecoplan | |
526
0d1cda9f2d43
BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents:
517
diff
changeset
|
1024 call TFT_standard_color |
0 | 1025 movff char_O_deco_depth+1,lo |
1026 tstfsz lo ; Show another stop? | |
1027 bra TFT_display_deko2 ; Yes | |
1028 ; No, clear output and return | |
1029 call TFT_standard_color | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1030 WIN_SMALL dm_cust_dstop_4th_stop_column,dm_cust_dstop_4th_stop_row |
97
53a99a2dc6a1
CHANGE: Always compute bailout plan based on all active gases
heinrichsweikamp
parents:
96
diff
changeset
|
1031 STRCPY_PRINT " --- " |
582 | 1032 WIN_BOX_BLACK dm_cust_dstop_2nd_stop_row, dm_customview_bot-.2, dm_cust_dstop_2nd_stop_column, dm_cust_dstop_4th_stop_column ; top, bottom, left, right |
1033 WIN_BOX_BLACK dm_cust_dstop_5th_stop_row, dm_customview_bot, dm_cust_dstop_5th_stop_column, dm_cust_dstop_6th_stop_column ; top, bottom, left, right | |
1034 WIN_BOX_BLACK dm_cust_dstop_6th_stop_row, dm_customview_bot, dm_cust_dstop_6th_stop_column, .159 ; top, bottom, left, right | |
560 | 1035 goto TFT_standard_color ; and return... |
582 | 1036 |
0 | 1037 TFT_display_deko2: |
560 | 1038 movff char_O_deco_gas+0,lo ; get flag for invalid deco data |
1039 btfsc lo,char_invalid_flag ; is the invalid flag set? | |
1040 call TFT_disabled_color ; YES - set to disabled color | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1041 WIN_SMALL dm_cust_dstop_2nd_stop_column, dm_cust_dstop_2nd_stop_row |
582 | 1042 movff char_O_deco_depth+1,lo ; stop in m |
1043 bcf lo,7 ; Clear GAS_SWITCH bit | |
0 | 1044 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1045 movff char_O_deco_time+1,lo ; length of stop in min |
0 | 1046 output_99 |
1047 STRCAT_PRINT "'" | |
1048 movff char_O_deco_depth+2,lo | |
1049 tstfsz lo ; Show another stop? | |
1050 bra TFT_display_deko3 ; Yes | |
1051 ; No, clear output and return | |
582 | 1052 WIN_BOX_BLACK dm_cust_dstop_3rd_stop_row, dm_customview_bot-.2, dm_cust_dstop_2nd_stop_column, dm_cust_dstop_4th_stop_column ; top, bottom, left, right |
1053 WIN_BOX_BLACK dm_cust_dstop_4th_stop_row, dm_customview_bot, dm_cust_dstop_4th_stop_column, .159 ; top, bottom, left, right | |
560 | 1054 goto TFT_standard_color ; and return... |
0 | 1055 |
1056 TFT_display_deko3: | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1057 WIN_SMALL dm_cust_dstop_3rd_stop_column, dm_cust_dstop_3rd_stop_row |
582 | 1058 movff char_O_deco_depth+2,lo ; stop in m |
1059 bcf lo,7 ; Clear GAS_SWITCH bit | |
0 | 1060 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1061 movff char_O_deco_time+2,lo ; length of stop in min |
0 | 1062 output_99 |
1063 STRCAT_PRINT "'" | |
1064 movff char_O_deco_depth+3,lo | |
1065 tstfsz lo ; Show another stop? | |
1066 bra TFT_display_deko4 ; Yes | |
1067 ; No, clear output and return | |
582 | 1068 WIN_BOX_BLACK dm_cust_dstop_4th_stop_row, dm_customview_bot, dm_cust_dstop_4th_stop_column, .159 ; top, bottom, left, right |
560 | 1069 goto TFT_standard_color ; and return... |
0 | 1070 |
1071 TFT_display_deko4: | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1072 WIN_SMALL dm_cust_dstop_4th_stop_column, dm_cust_dstop_4th_stop_row |
582 | 1073 movff char_O_deco_depth+3,lo ; stop in m |
1074 bcf lo,7 ; Clear GAS_SWITCH bit | |
0 | 1075 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1076 movff char_O_deco_time+3,lo ; length of stop in min |
0 | 1077 output_99 |
1078 STRCAT_PRINT "'" | |
1079 | |
1080 movff char_O_deco_depth+4,lo | |
1081 tstfsz lo ; Show another stop? | |
1082 bra TFT_display_deko5 ; Yes | |
1083 ; No, clear output and return | |
582 | 1084 WIN_BOX_BLACK dm_cust_dstop_5th_stop_row, dm_customview_bot, dm_cust_dstop_5th_stop_column, dm_cust_dstop_6th_stop_column ; top, bottom, left, right |
1085 WIN_BOX_BLACK dm_cust_dstop_6th_stop_row, dm_customview_bot, dm_cust_dstop_6th_stop_column, .159 ; top, bottom, left, right | |
560 | 1086 goto TFT_standard_color ; and return... |
0 | 1087 |
1088 TFT_display_deko5: | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1089 WIN_SMALL dm_cust_dstop_5th_stop_column, dm_cust_dstop_5th_stop_row |
582 | 1090 movff char_O_deco_depth+4,lo ; stop in m |
1091 bcf lo,7 ; Clear GAS_SWITCH bit | |
0 | 1092 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1093 movff char_O_deco_time+4,lo ; length of stop in min |
0 | 1094 output_99 |
1095 STRCAT_PRINT "'" | |
1096 movff char_O_deco_depth+5,lo | |
1097 tstfsz lo ; Show another stop? | |
1098 bra TFT_display_deko6 ; Yes | |
1099 ; No, clear output and return | |
582 | 1100 WIN_BOX_BLACK dm_cust_dstop_6th_stop_row, dm_customview_bot, dm_cust_dstop_6th_stop_column, .159 ; top, bottom, left, right |
560 | 1101 goto TFT_standard_color ; and return... |
582 | 1102 |
0 | 1103 TFT_display_deko6: |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1104 WIN_SMALL dm_cust_dstop_6th_stop_column, dm_cust_dstop_6th_stop_row |
582 | 1105 movff char_O_deco_depth+5,lo ; stop in m |
1106 bcf lo,7 ; Clear GAS_SWITCH bit | |
0 | 1107 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1108 movff char_O_deco_time+5,lo ; length of stop in min |
0 | 1109 output_99 |
1110 STRCAT_PRINT "'" | |
1111 movff char_O_deco_depth+6,lo | |
1112 tstfsz lo ; Show another stop? | |
1113 bra TFT_display_deko7 ; Yes | |
1114 ; No, clear output and return | |
582 | 1115 WIN_BOX_BLACK dm_cust_dstop_7th_stop_row, dm_customview_bot, dm_cust_dstop_7th_stop_column, .159 ; top, bottom, left, right |
560 | 1116 goto TFT_standard_color ; and return... |
582 | 1117 |
0 | 1118 TFT_display_deko7: |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
1119 WIN_SMALL dm_cust_dstop_7th_stop_column, dm_cust_dstop_7th_stop_row |
582 | 1120 movff char_O_deco_depth+6,lo ; stop in m |
1121 bcf lo,7 ; Clear GAS_SWITCH bit | |
0 | 1122 rcall TFT_display_deko_output_depth ; Outputs depth (stored in lo) to POSTINC2 with "m" or w/o (For ft) |
582 | 1123 movff char_O_deco_time+6,lo ; length of stop in min |
0 | 1124 output_99 |
1125 STRCAT_PRINT "'" | |
560 | 1126 goto TFT_standard_color ; and return... |
1127 | |
0 | 1128 |
582 | 1129 global TFT_clear_safety_stop |
131 | 1130 TFT_clear_safety_stop: |
582 | 1131 bcf FLAG_TFT_clear_safety_stop ; clear flag |
1132 WIN_BOX_BLACK dm_safetystop_row, dm_safetystop_bot, dm_safetystop_text_column, .159 ; top, bottom, left, right | |
1133 return | |
1134 | |
1135 global TFT_show_safety_stop | |
104
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1136 TFT_show_safety_stop: |
582 | 1137 bcf FLAG_TFT_show_safety_stop |
104
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1138 tstfsz safety_stop_countdown ; Countdown at zero? |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1139 bra TFT_show_safety_stop2 ; No, show stop |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1140 bcf show_safety_stop ; Clear flag |
131 | 1141 btfss safety_stop_active ; Displayed? |
582 | 1142 return ; No |
104
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1143 bcf safety_stop_active ; Clear flag |
582 | 1144 btfsc divemode_menu ; Is the dive mode menu shown? |
1145 return ; Yes, return | |
1146 bra TFT_clear_safety_stop ; Yes, Clear stop ; and return... | |
104
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1147 TFT_show_safety_stop2: |
582 | 1148 bsf safety_stop_active ; Set flag |
1149 decf safety_stop_countdown,F ; Reduce countdown | |
1150 btfsc divemode_menu ; Is the dive mode menu shown? | |
1151 return ; Yes, return | |
1152 ;btfsc menuview | |
1153 ;bra TFT_show_safety_stop3 ; No room when menuview=1... | |
1154 call TFT_divemask_color | |
1155 WIN_STD dm_safetystop_text_column, dm_safetystop_text_row | |
1156 STRCPY_TEXT_PRINT tDiveSafetyStop | |
131 | 1157 TFT_show_safety_stop3: |
582 | 1158 call TFT_attention_color ; show in yellow |
1159 WIN_MEDIUM dm_safetystop_column, dm_safetystop_row | |
104
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1160 movff safety_stop_countdown,lo |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1161 clrf hi |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1162 call convert_time ; converts hi:lo in seconds to mins (hi) and seconds (lo) |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1163 movf hi,W |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1164 movff lo,hi |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1165 movwf lo ; exchange lo and hi |
582 | 1166 bsf leftbind |
131 | 1167 output_8 |
582 | 1168 bcf leftbind |
1169 PUTC ':' | |
104
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1170 movff hi,lo |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1171 output_99x |
223579e905c3
Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents:
102
diff
changeset
|
1172 STRCAT_PRINT "" |
582 | 1173 WIN_FONT FT_SMALL |
560 | 1174 goto TFT_standard_color ; and return... |
1175 | |
1176 | |
582 | 1177 global TFT_mask_avr_stopwatch ; Show mask for average depth and stopwatch |
0 | 1178 TFT_mask_avr_stopwatch: |
582 | 1179 ; The mask |
1180 call TFT_divemask_color | |
1181 WIN_TINY dm_custom_avr_stop_title_column1,dm_custom_avr_stop_title_row | |
1182 STRCPY_TEXT_PRINT tDiveTotalAvg | |
1183 WIN_TINY dm_custom_avr_stop_title_column2,dm_custom_avr_stop_title_row | |
1184 STRCPY_TEXT_PRINT tDiveStopwatch | |
1185 WIN_TINY dm_custom_avr_stop_title_column3,dm_custom_avr_stop_title_row | |
1186 STRCPY_TEXT_PRINT tDiveStopAvg | |
1187 goto TFT_standard_color ; and return... | |
1188 | |
1189 global TFT_update_avr_stopwatch ; Update average depth and stopwatch | |
0 | 1190 TFT_update_avr_stopwatch: |
582 | 1191 call TFT_standard_color |
1192 SAFE_2BYTE_COPY average_divesecs,lo | |
560 | 1193 call convert_time ; lo=secs, hi=mins |
582 | 1194 WIN_MEDIUM dm_custom_avr_stop_column2,dm_custom_avr_stop_row |
1195 bsf leftbind | |
0 | 1196 movf hi,W |
1197 movff lo,hi | |
560 | 1198 movwf lo ; exchange lo and hi |
0 | 1199 output_8 |
582 | 1200 PUTC ':' |
0 | 1201 movff hi,lo |
1202 output_99x | |
582 | 1203 movlw .5 |
1204 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
1205 clrf WREG | |
1206 movff WREG,buffer+.5 ; limit to 5 chars | |
0 | 1207 STRCAT_PRINT "" |
582 | 1208 TSTOSS opt_units ; 0=m, 1=ft |
0 | 1209 bra TFT_update_avr_stopwatch_metric |
582 | 1210 ;TFT_update_avr_stopwatch_imperial |
1211 movff avg_rel_pressure_total+0,lo | |
1212 movff avg_rel_pressure_total+1,hi | |
1213 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1214 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
1215 WIN_MEDIUM dm_custom_avr_stop_column1,dm_custom_avr_stop_row | |
1216 bsf leftbind | |
1217 output_16 ; yxz | |
1218 STRCAT_PRINT " " | |
1219 ; Stopped average depth | |
1220 movff avg_rel_pressure+0,lo | |
1221 movff avg_rel_pressure+1,hi | |
1222 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1223 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
1224 WIN_MEDIUM dm_custom_avr_stop_column3,dm_custom_avr_stop_row | |
1225 output_16 ; yxz | |
1226 bcf leftbind | |
1227 PUTC " " | |
1228 clrf WREG | |
1229 movff WREG,buffer+.3 ; limit string length to 3 | |
1230 STRCAT_PRINT "" | |
1231 return | |
0 | 1232 |
1233 TFT_update_avr_stopwatch_metric: | |
582 | 1234 ; Non-resettable average depth |
1235 movff avg_rel_pressure_total+0,lo | |
1236 movff avg_rel_pressure_total+1,hi | |
1237 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1238 WIN_MEDIUM dm_custom_avr_stop_column1,dm_custom_avr_stop_row | |
1239 bsf ignore_digit5 ; no cm | |
1240 output_16dp .3 ; yxz.a | |
1241 STRCAT_PRINT " " | |
1242 ; Stopped average depth | |
1243 movff avg_rel_pressure+0,lo | |
1244 movff avg_rel_pressure+1,hi | |
1245 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1246 WIN_MEDIUM dm_custom_avr_stop_column3,dm_custom_avr_stop_row | |
1247 bsf ignore_digit5 ; no cm | |
1248 output_16dp .3 ; yxz.a | |
1249 bcf leftbind | |
1250 bcf ignore_digit5 | |
1251 clrf WREG | |
1252 movff WREG,buffer+.4 ; limit string length to 4 | |
1253 STRCAT_PRINT "" | |
1254 return | |
1255 | |
1256 | |
1257 global TFT_ceiling_mask ; The ceiling mask | |
123 | 1258 TFT_ceiling_mask: |
582 | 1259 call TFT_divemask_color |
1260 WIN_TINY dm_custom_ceiling_text_column,dm_custom_ceiling_text_row | |
1261 STRCPY_TEXT_PRINT tCeiling | |
1262 goto TFT_standard_color ; and return... | |
1263 | |
1264 global TFT_ceiling ; Ceiling | |
123 | 1265 TFT_ceiling: |
582 | 1266 WIN_MEDIUM dm_custom_ceiling_value_column,dm_custom_ceiling_value_row |
1267 movff int_O_ceiling+0,lo | |
1268 movff int_O_ceiling+1,hi | |
1269 call TFT_color_code_ceiling ; color-code the output | |
1270 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1271 bsf leftbind | |
1272 TSTOSS opt_units ; 0=m, 1=ft | |
123 | 1273 bra TFT_ceiling_metric |
1274 ;TFT_ceiling_imperial | |
582 | 1275 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
1276 output_16 ; yxz | |
1277 bcf leftbind | |
1278 STRCAT_PRINT " " | |
560 | 1279 goto TFT_standard_color |
123 | 1280 |
1281 TFT_ceiling_metric: | |
582 | 1282 bsf ignore_digit5 ; no cm |
1283 output_16dp .3 ; yxz.a | |
1284 bcf leftbind | |
1285 bcf ignore_digit5 | |
1286 STRCAT_PRINT " " | |
560 | 1287 goto TFT_standard_color |
1288 | |
1289 | |
1290 global TFT_CNS_mask | |
1291 TFT_CNS_mask: | |
582 | 1292 call TFT_divemask_color |
1293 WIN_TINY dm_custom_gf_title_col1, dm_custom_gf_title_row | |
1294 STRCPY_TEXT_PRINT tCNSsurf | |
1295 WIN_TINY dm_custom_gf_title_col2, dm_custom_gf_title_row | |
560 | 1296 btfsc FLAG_ccr_mode ; in CCR mode? |
1297 bra TFT_CNS_mask_1 ; YES - proceed with checking for bailout | |
1298 btfsc FLAG_pscr_mode ; NO - in pSCR mode? | |
582 | 1299 bra TFT_CNS_mask_1 ; YES - proceed with checking for bailout |
1300 bra TFT_CNS_mask_2 ; NO - must be OC then | |
560 | 1301 TFT_CNS_mask_1: ; in CCR or pSCR mode |
1302 btfsc is_bailout ; in bailout? | |
1303 bra TFT_CNS_mask_2 ; YES - print fTTS label (label will be printed, but a fTTS will actually not be calculated) | |
1304 TSTOSS opt_calc_asc_gasvolume ; NO - bailout volume calculation requested? | |
582 | 1305 bra TFT_CNS_mask_2 ; NO - print fTTS label |
1306 STRCPY_TEXT_PRINT tCNSBO ; YES - print bailout label | |
560 | 1307 bra TFT_CNS_mask_3 |
1308 TFT_CNS_mask_2: ; OC or bailout | |
1309 STRCPY_TEXT_PRINT tCNSfTTS ; print fTTS label | |
1310 TFT_CNS_mask_3: | |
582 | 1311 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row |
1312 STRCPY_TEXT_PRINT tCNSnow | |
1313 goto TFT_standard_color ; and return... | |
1314 | |
560 | 1315 global TFT_CNS |
1316 TFT_CNS: | |
1317 ; CNS at end of normal dive | |
1318 WIN_STD dm_custom_hud_sensor1_column+.5,dm_custom_hud_data_row | |
582 | 1319 movff int_O_normal_CNS_fraction+0,lo |
1320 movff int_O_normal_CNS_fraction+1,hi | |
1321 call TFT_color_code_cns | |
1322 bsf leftbind | |
1323 output_16_3 ; output as xxx | |
560 | 1324 bcf leftbind |
582 | 1325 STRCAT_PRINT "% " |
560 | 1326 ; fTTS / Bailout CNS, if enabled |
582 | 1327 WIN_STD dm_custom_hud_sensor2_column+.2,dm_custom_hud_data_row |
560 | 1328 btfsc is_bailout ; in bailout? |
1329 bra TFT_CNS_3 ; YES - show "---" | |
1330 TSTOSS opt_calc_asc_gasvolume ; NO - bailout volume calculation requested? | |
582 | 1331 bra TFT_CNS_1 ; NO - continue checking fTTS extra time |
1332 btfsc FLAG_ccr_mode ; YES - in CCR mode? | |
1333 bra TFT_CNS_2 ; YES - skip test for fTTS extra time and show CNS% | |
1334 btfsc FLAG_pscr_mode ; in pSCR mode? | |
1335 bra TFT_CNS_2 ; YES - skip test for fTTS extra time and show CNS% | |
560 | 1336 TFT_CNS_1: ; not in bailout, no volume calculation |
1337 TSTOSS char_I_extra_time ; fTTS extra time fTTS configured? | |
1338 bra TFT_CNS_3 ; NO - show "---" | |
1339 TFT_CNS_2: | |
582 | 1340 movff int_O_alternate_CNS_fraction+0,lo ; YES - show CNS% |
1341 movff int_O_alternate_CNS_fraction+1,hi | |
1342 call TFT_color_code_cns | |
1343 bsf leftbind | |
1344 output_16_3 ; output as xxx | |
560 | 1345 bcf leftbind |
582 | 1346 STRCAT_PRINT "% " |
560 | 1347 bra TFT_CNS_4 |
1348 TFT_CNS_3: | |
1349 call TFT_standard_color | |
582 | 1350 STRCPY_PRINT "--- " |
560 | 1351 TFT_CNS_4: |
1352 ; current CNS | |
1353 WIN_STD dm_custom_hud_sensor3_column,dm_custom_hud_data_row | |
582 | 1354 movff int_O_CNS_fraction+0,lo |
1355 movff int_O_CNS_fraction+1,hi | |
1356 call TFT_color_code_cns | |
1357 bsf leftbind | |
1358 output_16_3 ; output as xxx | |
560 | 1359 bcf leftbind |
582 | 1360 STRCAT_PRINT "%" |
560 | 1361 goto TFT_standard_color ; and return... |
582 | 1362 |
1363 | |
1364 global TFT_hud_mask ; The HUD mask | |
0 | 1365 TFT_hud_mask: |
582 | 1366 call TFT_divemask_color |
1367 WIN_TINY dm_custom_hud_column1,dm_custom_hud_row | |
1368 STRCPY_TEXT_PRINT tDiveHudMask1 | |
1369 WIN_TINY dm_custom_hud_column2,dm_custom_hud_row | |
1370 STRCPY_TEXT_PRINT tDiveHudMask2 | |
1371 WIN_TINY dm_custom_hud_column3,dm_custom_hud_row | |
1372 STRCPY_TEXT_PRINT tDiveHudMask3 | |
1373 goto TFT_standard_color ; and return... | |
1374 | |
1375 | |
1376 global TFT_update_ppo2_sensors ; Update Sensor data | |
192 | 1377 TFT_update_ppo2_sensors: |
560 | 1378 ; |
1379 ; Definition of the output: | |
1380 ; | |
582 | 1381 ; sensorX use voting o2 |
1382 ; _calibrated _O2 _logic _ppo2 Output Color | |
1383 ; _ok _sensorX _sensorX _sensorX | |
560 | 1384 ;----------------------------------------------------------------------------------------------- |
582 | 1385 ; 0 -/- -/- -/- "----" TFT_standard_color |
1386 ; 1 0 -/- = 0 o2_ppo2_sensorX TFT_attention_color | |
1387 ; 1 0 -/- > 0 o2_ppo2_sensorX TFT_disabled_color | |
1388 ; 1 1 0 -/- o2_ppo2_sensorX TFT_color_code_ppo2_hud + win_invert | |
1389 ; 1 1 1 -/- o2_ppo2_sensorX TFT_color_code_ppo2_hud | |
560 | 1390 ; |
582 | 1391 bsf leftbind |
560 | 1392 ; sensor 1 |
582 | 1393 btfsc sensor1_calibrated_ok ; valid calibration? |
1394 bra TFT_update_hud1b ; yes | |
560 | 1395 ; no valid calibration |
1396 WIN_STD dm_custom_hud_sensor1_column+.7, dm_custom_hud_data_row+.5 | |
1397 call TFT_standard_color | |
582 | 1398 STRCPY_PRINT "---" |
1399 bra TFT_update_hud2a ; continue with sensor 2 | |
560 | 1400 TFT_update_hud1b: |
1401 ; sensor has a valid calibration | |
1402 WIN_MEDIUM dm_custom_hud_sensor1_column,dm_custom_hud_data_row | |
582 | 1403 movff o2_ppo2_sensor1,lo ; load ppO2 value into transfer storage for output |
1404 clrf hi ; | |
560 | 1405 btfsc use_O2_sensor1 ; in use? |
1406 bra TFT_update_hud1d ; yes | |
1407 ; valid calibration, but not in use | |
1408 tstfsz o2_ppo2_sensor1 ; sensor value = 0? | |
1409 bra TFT_update_hud1c ; no | |
1410 ; valid calibration, not in use and value = 0 | |
582 | 1411 call TFT_attention_color ; output in yellow |
560 | 1412 bra TFT_update_hud1e |
1413 TFT_update_hud1c: | |
1414 ; sensor has valid calibration, is not in use and has a value > 0 | |
582 | 1415 call TFT_disabled_color ; output in light blue |
560 | 1416 bra TFT_update_hud1e |
1417 TFT_update_hud1d: | |
1418 ; sensor has valid calibration and is in use | |
582 | 1419 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo |
560 | 1420 btfsc voting_logic_sensor1 ; sensor value agrees with other sensor's values? |
1421 bra TFT_update_hud1e ; yes | |
1422 ; valid calibration, in use, but value does not agree with other sensors | |
582 | 1423 bsf win_invert ; invert output |
1424 TFT_update_hud1e: | |
560 | 1425 ; all coloring is set up now, let's write the value to the display! |
1426 bsf leftbind | |
582 | 1427 output_16dp .3 ; x.xx bar |
1428 bcf leftbind | |
1429 STRCAT_PRINT "" | |
1430 bcf win_invert | |
560 | 1431 |
1432 TFT_update_hud2a: ; sensor 2 | |
582 | 1433 btfsc sensor2_calibrated_ok ; valid calibration? |
1434 bra TFT_update_hud2b ; yes | |
560 | 1435 ; no valid calibration |
1436 WIN_STD dm_custom_hud_sensor2_column+.7, dm_custom_hud_data_row+.5 | |
1437 call TFT_standard_color | |
582 | 1438 STRCPY_PRINT "---" |
1439 bra TFT_update_hud3a ; continue with sensor 3 | |
560 | 1440 TFT_update_hud2b: |
1441 ; sensor has a valid calibration | |
1442 WIN_MEDIUM dm_custom_hud_sensor2_column,dm_custom_hud_data_row | |
582 | 1443 movff o2_ppo2_sensor2,lo ; load ppO2 value into transfer storage for output |
1444 clrf hi ; | |
560 | 1445 btfsc use_O2_sensor2 ; in use? |
1446 bra TFT_update_hud2d ; yes | |
1447 ; valid calibration, but not in use | |
1448 tstfsz o2_ppo2_sensor2 ; sensor value = 0? | |
1449 bra TFT_update_hud2c ; no | |
1450 ; valid calibration, not in use and value = 0 | |
582 | 1451 call TFT_attention_color ; output in yellow |
560 | 1452 bra TFT_update_hud2e |
1453 TFT_update_hud2c: | |
1454 ; sensor has valid calibration, is not in use and has a value > 0 | |
582 | 1455 call TFT_disabled_color ; output in light blue |
560 | 1456 bra TFT_update_hud2e |
1457 TFT_update_hud2d: | |
1458 ; sensor has valid calibration and is in use | |
582 | 1459 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo |
560 | 1460 btfsc voting_logic_sensor2 ; sensor value agrees with other sensor's vlaues? |
1461 bra TFT_update_hud2e ; yes | |
1462 ; valid calibration, in use, but value does not agree with other sensors | |
582 | 1463 bsf win_invert ; invert output |
1464 TFT_update_hud2e: | |
560 | 1465 ; all coloring is set up now, let's write the value to the display! |
1466 bsf leftbind | |
582 | 1467 output_16dp .3 ; x.xx bar |
1468 bcf leftbind | |
1469 STRCAT_PRINT "" | |
1470 bcf win_invert | |
560 | 1471 |
1472 TFT_update_hud3a: ; sensor 3 | |
582 | 1473 btfsc sensor3_calibrated_ok ; valid calibration? |
1474 bra TFT_update_hud3b ; yes | |
560 | 1475 ; no valid calibration |
582 | 1476 WIN_STD dm_custom_hud_sensor3_column+.7, dm_custom_hud_data_row+.5 |
560 | 1477 call TFT_standard_color |
582 | 1478 STRCPY_PRINT "---" |
1479 bra TFT_update_hud4 ; done | |
560 | 1480 TFT_update_hud3b: |
1481 ; sensor has a valid calibration | |
1482 WIN_MEDIUM dm_custom_hud_sensor3_column,dm_custom_hud_data_row | |
582 | 1483 movff o2_ppo2_sensor3,lo ; load ppO2 value into transfer storage for output |
1484 clrf hi ; | |
560 | 1485 btfsc use_O2_sensor3 ; in use? |
1486 bra TFT_update_hud3d ; yes | |
1487 ; valid calibration, but not in use | |
1488 tstfsz o2_ppo2_sensor3 ; sensor value = 0? | |
1489 bra TFT_update_hud3c ; no | |
1490 ; valid calibration, not in use and value = 0 | |
582 | 1491 call TFT_attention_color ; output in yellow |
560 | 1492 bra TFT_update_hud3e |
1493 TFT_update_hud3c: | |
1494 ; sensor has valid calibration, is not in use and has a value > 0 | |
582 | 1495 call TFT_disabled_color ; output in light blue |
560 | 1496 bra TFT_update_hud3e |
1497 TFT_update_hud3d: | |
1498 ; sensor has valid calibration and is in use | |
582 | 1499 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo |
560 | 1500 btfsc voting_logic_sensor3 ; sensor value agrees with other sensor's vlaues? |
1501 bra TFT_update_hud3e ; yes | |
1502 ; valid calibration, in use, but value does not agree with other sensors | |
582 | 1503 bsf win_invert ; invert output |
1504 TFT_update_hud3e: | |
560 | 1505 ; all coloring is set up now, let's write the value to the display! |
1506 bsf leftbind | |
582 | 1507 output_16dp .3 ; x.xx bar |
1508 bcf leftbind | |
1509 STRCAT_PRINT "" | |
1510 bcf win_invert | |
1511 | |
560 | 1512 TFT_update_hud4: ; closure |
582 | 1513 bcf leftbind |
1514 goto TFT_standard_color ; and return... | |
1515 | |
1516 | |
1517 global TFT_surface_sensor ; Update Sensor data in surface mode | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1518 TFT_surface_sensor: |
582 | 1519 movf hardware_flag,W |
1520 sublw 0x11 ; 2 with BLE | |
1521 btfsc STATUS,Z | |
1522 return ; Ignore for 0x11 | |
1523 ; show three sensors | |
1524 bsf leftbind | |
1525 WIN_SMALL surf_hud_sensor1_column,surf_hud_sensor1_row | |
560 | 1526 btfsc sensor1_calibrated_ok |
582 | 1527 bra TFT_surface_sensor1 ; Yes |
1528 call TFT_standard_color | |
1529 STRCPY_PRINT "--- " | |
1530 bra TFT_surface_sensor2 ; Skip Sensor 1 | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1531 TFT_surface_sensor1: |
582 | 1532 movff o2_ppo2_sensor1,lo |
1533 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo | |
1534 clrf hi | |
560 | 1535 bsf leftbind |
582 | 1536 output_16dp .3 ; x.xx bar |
1537 bcf leftbind | |
1538 STRCAT_PRINT "" | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1539 TFT_surface_sensor2: |
582 | 1540 WIN_SMALL surf_hud_sensor2_column,surf_hud_sensor2_row |
560 | 1541 btfsc sensor2_calibrated_ok |
582 | 1542 bra TFT_surface_sensor3 ; Yes |
1543 call TFT_standard_color | |
1544 STRCPY_PRINT "--- " | |
1545 bra TFT_surface_sensor4 ; Skip Sensor 2 | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1546 TFT_surface_sensor3: |
582 | 1547 movff o2_ppo2_sensor2,lo |
1548 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo | |
1549 clrf hi | |
560 | 1550 bsf leftbind |
582 | 1551 output_16dp .3 ; x.xx bar |
1552 bcf leftbind | |
1553 STRCAT_PRINT "" | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1554 TFT_surface_sensor4: |
582 | 1555 WIN_SMALL surf_hud_sensor3_column,surf_hud_sensor3_row |
560 | 1556 btfsc sensor3_calibrated_ok |
582 | 1557 bra TFT_surface_sensor5 ; Yes |
1558 call TFT_standard_color | |
1559 STRCPY_PRINT "--- " | |
1560 bra TFT_surface_sensor6 ; Skip Sensor 3 | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1561 TFT_surface_sensor5: |
582 | 1562 movff o2_ppo2_sensor3,lo |
1563 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo | |
1564 clrf hi | |
560 | 1565 bsf leftbind |
582 | 1566 output_16dp .3 ; x.xx bar |
1567 bcf leftbind | |
1568 STRCAT_PRINT "" | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1569 TFT_surface_sensor6: |
582 | 1570 bcf leftbind |
1571 goto TFT_standard_color ; and return... | |
1572 | |
1573 | |
1574 global TFT_sensor_mV | |
530 | 1575 TFT_sensor_mV: |
582 | 1576 call TFT_standard_color |
1577 bsf leftbind | |
1578 WIN_SMALL surf_mV_sensor_column,surf_mV_sensor1_row | |
1579 movff o2_mv_sensor1+0,lo ; in 0.1mV steps | |
1580 movff o2_mv_sensor1+1,hi ; in 0.1mV steps | |
1581 STRCAT "1: " | |
1582 output_16dp .4 ; xxx.y mV | |
1583 STRCAT_PRINT "mV " | |
1584 | |
1585 WIN_SMALL surf_mV_sensor_column,surf_mV_sensor2_row | |
1586 movff o2_mv_sensor2+0,lo ; in 0.1mV steps | |
1587 movff o2_mv_sensor2+1,hi ; in 0.1mV steps | |
1588 STRCAT "2: " | |
1589 output_16dp .4 ; xxx.y mV | |
1590 STRCAT_PRINT "mV " | |
1591 | |
1592 WIN_SMALL surf_mV_sensor_column,surf_mV_sensor3_row | |
1593 movff o2_mv_sensor3+0,lo ; in 0.1mV steps | |
1594 movff o2_mv_sensor3+1,hi ; in 0.1mV steps | |
1595 STRCAT "3: " | |
1596 output_16dp .4 ; xxx.y mV | |
1597 STRCAT_PRINT "mV " | |
1598 bcf leftbind | |
1599 goto TFT_standard_color ; and return... | |
1600 | |
1601 | |
1602 global TFT_sensor_surface_warning | |
535
cf68fe0c3002
NEW: Show a warning for each sensor if the sensor is end-of-life after calibration (Less then 8mV in Air at sea level)
heinrichsweikamp
parents:
533
diff
changeset
|
1603 TFT_sensor_surface_warning: |
582 | 1604 call TFT_warnings_color |
560 | 1605 btfss sensor1_calibrated_ok ; do not show end of lifetime arrow if sensor failed calibration at all |
1606 bra TFT_sensor_mV2 | |
582 | 1607 movff opt_x_s1+1,lo ; into bank1 |
1608 movf lo,W ; when opt_x_s1 > 255 the sensor will just give 8 mV at a ppO2 of 0,21 any more | |
1609 bz TFT_sensor_mV2 ; the sensor is not too bad yet for a warning | |
1610 WIN_SMALL surf_mV_sensor_status_column,surf_mV_sensor1_row-.5 | |
1611 STRCPY_PRINT "\xb8" ; mark sensor as being at end of lifetime | |
535
cf68fe0c3002
NEW: Show a warning for each sensor if the sensor is end-of-life after calibration (Less then 8mV in Air at sea level)
heinrichsweikamp
parents:
533
diff
changeset
|
1612 TFT_sensor_mV2: |
560 | 1613 btfss sensor2_calibrated_ok ; do not show end of lifetime arrow if sensor failed calibration at all |
1614 bra TFT_sensor_mV3 | |
582 | 1615 movff opt_x_s2+1,lo ; into bank1 |
1616 movf lo,W ; when opt_x_s2 > 255 the sensor will just give 8 mV at a ppO2 of 0,21 any more | |
1617 bz TFT_sensor_mV3 ; the sensor is not too bad yet for a warning | |
1618 WIN_SMALL surf_mV_sensor_status_column,surf_mV_sensor2_row-.5 | |
1619 STRCPY_PRINT "\xb8" ; mark sensor as being at end of lifetime | |
535
cf68fe0c3002
NEW: Show a warning for each sensor if the sensor is end-of-life after calibration (Less then 8mV in Air at sea level)
heinrichsweikamp
parents:
533
diff
changeset
|
1620 TFT_sensor_mV3: |
560 | 1621 btfss sensor3_calibrated_ok ; do not show end of lifetime arrow if sensor failed calibration at all |
1622 bra TFT_sensor_mV4 | |
582 | 1623 movff opt_x_s3+1,lo ; into bank1 |
1624 movf lo,W ; when opt_x_s3 > 255 the sensor will just give 8 mV at a ppO2 of 0,21 any more | |
1625 bz TFT_sensor_mV4 ; the sensor is not too bad yet for a warning | |
1626 WIN_SMALL surf_mV_sensor_status_column,surf_mV_sensor3_row-.5 | |
1627 STRCPY_PRINT "\xb8" ; mark sensor as being at end of lifetime | |
535
cf68fe0c3002
NEW: Show a warning for each sensor if the sensor is end-of-life after calibration (Less then 8mV in Air at sea level)
heinrichsweikamp
parents:
533
diff
changeset
|
1628 TFT_sensor_mV4: |
582 | 1629 goto TFT_standard_color ; ...and return |
1630 | |
1631 | |
1632 global TFT_menu_calibrate | |
1633 TFT_menu_calibrate: ; update mV data in calibration menu | |
1634 btfss s8_digital ; =1: Digital I/O | |
1635 bra TFT_menu_calibrate_analog ; use analog | |
1636 btfss new_s8_data_available ; new data frame received? | |
1637 bra TFT_menu_calibrate_common ; NO - use old values... | |
1638 ; YES - update the values | |
560 | 1639 call compute_mvolts_for_all_sensors |
582 | 1640 bra TFT_menu_calibrate_common |
560 | 1641 TFT_menu_calibrate_analog: |
582 | 1642 call get_analog_inputs |
560 | 1643 TFT_menu_calibrate_common: |
582 | 1644 call TFT_attention_color ; show in yellow |
1645 bsf leftbind | |
1646 WIN_SMALL surf_menu_sensor1_column,surf_menu2_sensor1_row | |
1647 movff o2_mv_sensor1+0,lo ; in 0.1mV steps | |
1648 movff o2_mv_sensor1+1,hi ; in 0.1mV steps | |
1649 output_16dp .4 ; xxx.y mV | |
1650 STRCAT_PRINT "mV " | |
1651 WIN_SMALL surf_menu_sensor2_column,surf_menu2_sensor2_row | |
1652 movff o2_mv_sensor2+0,lo ; in 0.1mV steps | |
1653 movff o2_mv_sensor2+1,hi ; in 0.1mV steps | |
1654 output_16dp .4 ; xxx.y mV | |
1655 STRCAT_PRINT "mV " | |
1656 WIN_SMALL surf_menu_sensor3_column,surf_menu2_sensor3_row | |
1657 movff o2_mv_sensor3+0,lo ; in 0.1mV steps | |
1658 movff o2_mv_sensor3+1,hi ; in 0.1mV steps | |
1659 output_16dp .4 ; xxx.y mV | |
1660 STRCAT_PRINT "mV " | |
1661 bcf leftbind | |
1662 goto TFT_standard_color ; ...and return | |
1663 | |
1664 | |
1665 global TFT_clock | |
0 | 1666 TFT_clock: |
582 | 1667 WIN_SMALL surf_clock_column,surf_clock_row |
1668 TFT_clock2: ; called from divemode clock | |
1669 call TFT_standard_color | |
0 | 1670 movff hours,lo |
1671 output_99 | |
1672 movlw ':' | |
582 | 1673 btfss secs,0 ; blinking every second |
0 | 1674 movlw ' ' |
1675 movwf POSTINC2 | |
1676 movff mins,lo | |
1677 output_99x | |
1678 STRCAT_PRINT "" | |
1679 return | |
1680 | |
1681 global TFT_show_time_date_menu | |
1682 TFT_show_time_date_menu: | |
582 | 1683 call speed_fastest |
1684 WIN_SMALL .15,.30 | |
1685 call TFT_standard_color | |
0 | 1686 movff hours,lo |
1687 output_99 | |
1688 PUTC ':' | |
1689 movff mins,lo | |
1690 output_99x | |
1691 PUTC ':' | |
1692 movff secs,lo | |
1693 output_99x | |
582 | 1694 STRCAT " - " |
1695 movff day,lo | |
1696 movff month,hi | |
1697 movff year,up | |
1698 call TFT_convert_date ; converts into "DD/MM/YY" or "MM/DD/YY" or "YY/MM/DD" in postinc2 | |
0 | 1699 STRCAT_PRINT " " |
1700 return | |
560 | 1701 |
0 | 1702 ;============================================================================= |
1703 | |
582 | 1704 global TFT_surface_decosettings ; Show all deco settings |
41 | 1705 TFT_surface_decosettings: |
560 | 1706 ; Deco Mode |
41 | 1707 call TFT_standard_color |
560 | 1708 WIN_SMALL surf_gaslist_column,surf_gaslist_row |
582 | 1709 STRCAT_PRINT "ZH-L16" |
1710 movff char_I_deco_model,WREG | |
1711 iorwf WREG | |
1712 bnz TFT_surface_decosettings1 | |
560 | 1713 ; Display ZH-L16 sat/desat model |
582 | 1714 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) |
1715 lfsr FSR2,buffer | |
1716 movff char_I_desaturation_multiplier,lo | |
1717 bsf leftbind | |
1718 output_8 | |
1719 STRCAT "%/" | |
1720 movff char_I_saturation_multiplier,lo | |
1721 output_8 | |
1722 STRCAT_PRINT "%" | |
1723 bra TFT_surface_decosettings2 | |
1724 ; Display ZH-L16-GF low/high model | |
41 | 1725 TFT_surface_decosettings1: |
582 | 1726 TEXT_SMALL surf_gaslist_column+.43,surf_gaslist_row,tZHL16GF |
1727 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) | |
1728 STRCPY_TEXT tGF ; GF: | |
560 | 1729 movff opt_GF_low,lo |
582 | 1730 output_99x |
1731 STRCAT "/" | |
560 | 1732 movff opt_GF_high,lo |
582 | 1733 output_99x |
1734 STRCAT_PRINT "" | |
1735 TFT_surface_decosettings2: ; fTTS | |
1736 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
1737 STRCPY_TEXT tFTTSMenu | |
1738 movff char_I_extra_time,lo | |
1739 bsf leftbind | |
1740 output_8 | |
1741 STRCAT_TEXT_PRINT tMinutes | |
1742 ; Last Stop | |
1743 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.3) | |
1744 STRCPY_TEXT tLastDecostop | |
560 | 1745 movff opt_last_stop,lo |
582 | 1746 output_8 |
1747 STRCAT_TEXT_PRINT tMeters | |
1748 ; Salinity | |
1749 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.4) | |
1750 STRCPY_TEXT tDvSalinity | |
1751 movff opt_salinity,lo | |
1752 output_8 | |
1753 bcf leftbind | |
1754 STRCAT_TEXT_PRINT tPercent | |
1755 return | |
0 | 1756 |
1757 global TFT_debug_output | |
1758 TFT_debug_output: | |
582 | 1759 return |
1760 WIN_TINY .80,.0 | |
1761 call TFT_standard_color | |
1762 lfsr FSR2,buffer | |
1763 movff analog_sw1,lo | |
1764 output_8 | |
1765 PUTC "," | |
1766 movff analog_sw2,lo | |
1767 output_8 | |
1768 STRCAT_PRINT "" | |
1769 return | |
1770 | |
1771 global TFT_divetimeout ; Show timeout counter | |
55 | 1772 TFT_divetimeout: |
1773 call TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 1774 tstfsz WREG ; Is there room for the warning? |
1775 return ; No | |
1776 call TFT_standard_color | |
1777 STRCPY 0x94 ; "End of dive" icon | |
1778 movff opt_diveTimeout,WREG ; in [min] | |
1779 mullw .60 | |
1780 movff PRODL,sub_a+0 | |
1781 movff PRODH,sub_a+1 ; in [s] | |
1782 movff timeout_counter1+0,sub_b+0 | |
1783 movff timeout_counter1+1,sub_b+1 | |
1784 call subU16 ; sub_c = sub_a - sub_b (with UNSIGNED values) | |
1785 movff sub_c+0,lo | |
1786 movff sub_c+1,hi | |
55 | 1787 call convert_time ; converts hi:lo in minutes to hours (hi) and minutes (lo) |
1788 movf hi,W | |
1789 movff lo,hi | |
1790 movwf lo ; exchange lo and hi | |
1791 output_99x | |
582 | 1792 PUTC ':' |
55 | 1793 movff hi,lo |
1794 output_99x | |
582 | 1795 movlw dm_warning_length ; Divemode string length |
1796 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
55 | 1797 STRCAT_PRINT "" |
582 | 1798 bcf win_invert |
55 | 1799 return |
1800 | |
560 | 1801 global TFT_display_ftts |
1802 TFT_display_ftts: | |
582 | 1803 movff char_I_extra_time,lo |
1804 tstfsz lo | |
1805 bra TFT_display_ftts_a | |
1806 return ; char_I_extra_time=0, return. | |
560 | 1807 TFT_display_ftts_a: |
582 | 1808 movff int_O_alternate_ascenttime+0,WREG |
1809 movff int_O_alternate_ascenttime+1,hi | |
1810 iorwf hi,W ; int_O_alternate_ascenttime:2 == 0 ? | |
1811 bnz TFT_display_ftts_b | |
1812 return ; No deco, do nothing | |
560 | 1813 TFT_display_ftts_b: |
582 | 1814 btfsc is_bailout ; check if we are in bailout mode |
1815 return ; YES - in bailout no fTTS will be computed, so nothing to display | |
1816 incf warning_counter,F ; increase counter | |
1817 call TFT_warning_set_window ; sets the row and column for the current warning | |
1818 tstfsz WREG ; is there room for the warning? | |
1819 return ; NO | |
1820 btfsc FLAG_ccr_mode ; in CCR mode? | |
1821 bra TFT_display_ftts_1 ; YES - print fTTS label | |
1822 btfsc FLAG_pscr_mode ; NO - in pSCR mode? | |
1823 bra TFT_display_ftts_1 ; YES - print fTTS label | |
1824 bra TFT_display_ftts_2 ; NO - must be OC then | |
1825 TFT_display_ftts_1: ; in CCR or pSCR mode | |
1826 btfsc is_bailout ; in bailout? | |
1827 bra TFT_display_ftts_2 ; YES - print fTTS label | |
1828 TSTOSS opt_calc_asc_gasvolume ; NO - bailout volume calculation requested? | |
1829 bra TFT_display_ftts_2 ; NO - print fTTS label | |
1830 STRCPY "B/O" ; YES - print bailout label | |
560 | 1831 bra TFT_display_ftts_3 |
582 | 1832 TFT_display_ftts_2: ; OC or bailout |
1833 STRCPY "@+" ; print fTTS label | |
560 | 1834 TFT_display_ftts_3: |
582 | 1835 movff char_I_extra_time,lo |
1836 bsf leftbind | |
1837 output_8 | |
1838 PUTC ":" | |
1839 movff int_O_alternate_ascenttime+0,lo | |
1840 movff int_O_alternate_ascenttime+1,hi | |
560 | 1841 btfss hi,int_invalid_flag ; is the invalid flag set? |
1842 bra TFT_display_ftts1 ; NO | |
1843 bcf hi,int_invalid_flag ; YES - clear flag | |
582 | 1844 call TFT_disabled_color ; switch to disabled color |
560 | 1845 TFT_display_ftts1: |
582 | 1846 movf lo,W |
1847 iorwf hi,W ; extra_ascenttime == 0 ? | |
1848 bz TFT_display_ftts2 ; YES - show dashes | |
560 | 1849 btfsc hi,int_not_yet_computed ; is the not-computed-yet flag set? |
1850 bra TFT_display_ftts2 ; YES | |
1851 output_16 ; NO | |
1852 bcf leftbind | |
582 | 1853 PUTC "'" |
1854 movlw dm_warning_length ; Divemode string length | |
1855 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
0 | 1856 STRCAT_PRINT "" |
582 | 1857 bcf win_invert |
560 | 1858 goto TFT_standard_color ; ...and return |
1859 TFT_display_ftts2: | |
582 | 1860 STRCAT "---" |
1861 bcf leftbind | |
1862 movlw dm_warning_length ; Divemode string length | |
1863 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
1864 STRCAT_PRINT "" | |
1865 bcf win_invert | |
560 | 1866 goto TFT_standard_color ; ...and return |
0 | 1867 |
1868 | |
1869 ;============================================================================= | |
560 | 1870 |
1871 global TFT_temp_surfmode | |
0 | 1872 TFT_temp_surfmode: |
582 | 1873 call TFT_divemask_color |
1874 WIN_SMALL surf_temp_column+3*8,surf_temp_row | |
1875 TSTOSS opt_units ; 0=°C, 1=°F | |
560 | 1876 bra TFT_temp_surfmode_metric |
582 | 1877 STRCAT_TEXT tLogTunitF ; °F |
560 | 1878 bra TFT_temp_surfmode_common |
0 | 1879 TFT_temp_surfmode_metric: |
582 | 1880 STRCAT_TEXT tLogTunitC ; °C |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1881 TFT_temp_surfmode_common: |
560 | 1882 STRCAT_PRINT "" |
582 | 1883 WIN_SMALL surf_temp_column,surf_temp_row |
560 | 1884 bra TFT_temp_common |
582 | 1885 |
1886 | |
560 | 1887 global TFT_temp_divemode |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1888 TFT_temp_divemode: |
582 | 1889 bcf FLAG_TFT_temp_divemode |
1890 btfsc divemode_menu ; Is the dive mode menu shown? | |
1891 return ; Yes, no update of temperature now | |
560 | 1892 btfsc blinking_better_gas ; blinking better Gas? |
1893 return ; Yes, no update of temperature now | |
1894 WIN_SMALL dm_temp_column,dm_temp_row | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1895 TFT_temp_common: |
582 | 1896 call TFT_standard_color |
560 | 1897 SAFE_2BYTE_COPY temperature,lo ; get current temperature |
582 | 1898 TSTOSS opt_units ; 0=°C, 1=°F |
560 | 1899 bra TFT_temp_common_1 |
1900 call convert_celsius_to_fahrenheit ; convert value in lo:hi from celsius to fahrenheit | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1901 TFT_temp_common_1: |
560 | 1902 rcall TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required |
1903 btfsc neg_flag ; is the temperature negative? | |
1904 bra TFT_temp_common_2 ; YES - the minus sign has already been written | |
1905 ; temp is positive, is it less then 10°C? | |
582 | 1906 tstfsz hi |
560 | 1907 bra TFT_temp_common_1a ; >25.5°C, skip here |
1908 movlw .100 | |
1909 cpfslt lo | |
1910 bra TFT_temp_common_1a ; >10.0°C, skip here | |
1911 bsf leftbind | |
1912 output_16dp d'4' ; x.y°C | |
1913 bcf leftbind | |
1914 bra TFT_temp_common_3 ; Done. | |
553
2e70700774b9
Display dezimal for temperatures between 10 and 0?C
heinrichsweikamp
parents:
552
diff
changeset
|
1915 TFT_temp_common_1a: |
560 | 1916 PUTC " " ; NO - write a space instead of the minus sign |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1917 TFT_temp_common_2: |
560 | 1918 bsf ignore_digit5 ; ignore decimal |
1919 output_16_3 ; output 0-999 without decimal -> writes ' ' - 99 | |
1920 bcf ignore_digit5 | |
582 | 1921 movff buffer+2,lo ; get output from unit position |
1922 movlw " " ; load code of the space character | |
560 | 1923 cpfseq lo ; is there a space sign on the unit position? (happens between +1 and -1) |
1924 bra TFT_temp_common_3 ; NO | |
1925 movff WREG,buffer+0 ; YES - replace potential minus sign with a space (temps from -0.9° to -0.1° else would appear as '- 0') | |
1926 movlw "0" ; load code of the zero character | |
1927 movff WREG,buffer+2 ; replace space with a zero | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1928 TFT_temp_common_3: |
560 | 1929 btfss divemode ; are we in dive mode? |
1930 bra TFT_temp_common_5 ; NO - no unit to append | |
1931 TSTOSS opt_units ; YES - check unit type: 0=°C, 1=°F | |
1932 bra TFT_temp_common_4 ; go metric | |
1933 STRCAT_TEXT tLogTunitF ; append °F | |
1934 bra TFT_temp_common_5 | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1935 TFT_temp_common_4: |
582 | 1936 STRCAT_TEXT tLogTunitC ; append °C |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1937 TFT_temp_common_5: |
560 | 1938 STRCAT_PRINT "" ; output to screen |
582 | 1939 return |
1940 | |
0 | 1941 ;============================================================================= |
560 | 1942 |
582 | 1943 global TFT_divemode_menu_cursor |
0 | 1944 TFT_divemode_menu_cursor: |
582 | 1945 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item1_column-.8, dm_menu_item1_column-.1 |
1946 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item4_column-.8, dm_menu_item4_column-.1 | |
1947 call TFT_standard_color | |
1948 | |
1949 movlw dm_menu_item1_column-.8 | |
1950 btfsc menupos1,2 ; >3? | |
1951 movlw dm_menu_item4_column-.8 ; Yes | |
1952 movff WREG,win_leftx2 | |
1953 | |
1954 movff menupos1,lo ; Copy menu position | |
1955 movlw dm_menu_item6_row | |
1956 dcfsnz lo,F | |
1957 movlw dm_menu_item1_row | |
1958 dcfsnz lo,F | |
1959 movlw dm_menu_item2_row | |
1960 dcfsnz lo,F | |
1961 movlw dm_menu_item3_row | |
1962 dcfsnz lo,F | |
1963 movlw dm_menu_item4_row | |
1964 dcfsnz lo,F | |
1965 movlw dm_menu_item5_row | |
1966 movff WREG,win_top | |
1967 movlw FT_SMALL | |
1968 movff WREG,win_font | |
1969 STRCPY_PRINT "\xb7" ; print cursor | |
1970 return | |
145
e3ac5b2021bc
NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents:
139
diff
changeset
|
1971 |
0 | 1972 global TFT_active_gas_divemode |
1973 TFT_active_gas_divemode: ; Display gas/Setpoint | |
582 | 1974 bcf FLAG_TFT_active_gas_divemode |
1975 btfsc divemode_menu ; Is the dive mode menu shown? | |
1976 return ; Yes, return | |
1977 btfsc FLAG_apnoe_mode ; Ignore in Apnoe mode | |
1978 return | |
1979 btfsc FLAG_ccr_mode ; in CCR mode? | |
1980 bra TFT_active_setpoint ; Yes, show setpoint and gas mix | |
1981 btfsc FLAG_pscr_mode ; in PSCR mode? | |
1982 bra TFT_active_setpoint ; Yes, show setpoint and gas mix | |
1983 call TFT_standard_color | |
1984 btfss better_gas_available ; check if a better gas is available and a gas change is advised in divemode | |
560 | 1985 bra TFT_active_gas_divemode2 ; NO - print in normal rendering |
582 | 1986 btg blinking_better_gas ; YES - toggle blink bit |
1987 btfss blinking_better_gas ; blink now? | |
1988 bra TFT_active_gas_divemode2 ; NO - print in normal rendering | |
1989 call TFT_attention_color ; YES - blink in yellow | |
1990 bsf win_invert ; set invert flag | |
560 | 1991 TFT_active_gas_divemode2: |
582 | 1992 WIN_STD dm_active_gas_column, dm_active_gas_row |
1993 movff char_I_O2_ratio,lo ; lo now stores O2 in % | |
1994 movff char_I_He_ratio,hi ; hi now stores He in % | |
1995 call customview_show_mix ; put "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2 | |
560 | 1996 STRCAT_PRINT "" |
582 | 1997 bcf win_invert ; reset invert flag |
560 | 1998 goto TFT_standard_color ; ...and return |
1999 | |
582 | 2000 TFT_active_setpoint: ; Show setpoint |
2001 btfsc is_bailout ; are we in bailout? | |
2002 bra TFT_active_setpoint_bail ; YES - show "Bailout" instead of setpoint | |
560 | 2003 movff int_O_breathed_ppO2+0,lo |
2004 movff int_O_breathed_ppO2+1,hi | |
582 | 2005 call TFT_color_code_ppo2 ; with ppO2 [cbar] in hi:lo |
2006 btg blinking_setpoint ; toggle blink bit... | |
2007 btfss blinking_setpoint ; blink now? | |
2008 bra TFT_active_setpoint_print ; NO - print ppO2 with normal rendering | |
2009 btfsc setpoint_fallback ; YES - check if we are in fallback condition | |
2010 bra TFT_active_setpoint_fallb ; YES - process fallback case | |
2011 movff int_O_breathed_ppO2+1,WREG ; NO - get flags again (have been cleared in hi:lo by TFT_color_code_ppo2 meanwhile) | |
2012 btfss WREG,int_warning_flag ; warning flag set? | |
2013 bra TFT_active_setpoint_print ; NO - ppO2 is ok, print ppO2 with normal rendering | |
2014 bra TFT_active_setpoint_com ; YES - continue with blinking common part | |
560 | 2015 TFT_active_setpoint_fallb: ; set up fallback case |
582 | 2016 movlw color_yellow ; text in yellow |
2017 call TFT_set_color ; overwrite setting done by TFT_color_code_ppo2 | |
2018 TFT_active_setpoint_com: ; blinking common part | |
2019 bsf win_invert ; set invert flag | |
560 | 2020 TFT_active_setpoint_print: |
2021 WIN_STD dm_active_gas_column, dm_active_gas_row | |
2022 bsf leftbind | |
582 | 2023 output_16dp .3 ; x.xx bar |
2024 bcf leftbind | |
2025 STRCAT_TEXT tbar | |
2026 movff opt_ccr_mode,WREG ; =0: Fixed SP, =1: Sensor, =2: Auto SP | |
2027 sublw .1 ; opt_ccr_mode = 1 (Sensor)? | |
2028 bnz TFT_active_setpoint2_a ; NO - skip | |
2029 PUTC "*" ; YES - add an astrix | |
560 | 2030 TFT_active_setpoint2_a: |
2031 STRCAT_PRINT "" | |
582 | 2032 bcf win_invert ; reset invert flag |
560 | 2033 call TFT_standard_color ; revert to standard color |
2034 bra TFT_active_setpoint_diluent ; continue with showing diluent | |
2035 TFT_active_setpoint_bail: | |
2036 WIN_SMALL dm_active_gas_column, dm_active_gas_row+.3 ; collides with diluent in FT_MEDIUM | |
0 | 2037 call TFT_standard_color |
582 | 2038 STRCPY_TEXT_PRINT tDiveBailout ; Bailout |
560 | 2039 TFT_active_setpoint_diluent: |
582 | 2040 btfss better_gas_available ; check if a better gas is available and a gas change is advised in divemode |
560 | 2041 bra TFT_active_setpoint_diluent_show ; NO - print in normal rendering |
582 | 2042 btg blinking_better_gas ; YES - toggle blink bit... |
2043 btfss blinking_better_gas ; blink now? | |
560 | 2044 bra TFT_active_setpoint_diluent_show ; NO - print in normal rendering |
582 | 2045 movlw color_yellow ; YES - blink in yellow |
2046 call TFT_set_color ; set text color | |
2047 bsf win_invert ; set invert flag | |
560 | 2048 TFT_active_setpoint_diluent_show: |
2049 WIN_SMALL dm_active_dil_column, dm_active_dil_row | |
582 | 2050 movff char_I_O2_ratio,lo ; lo now stores O2 in % |
2051 movff char_I_He_ratio,hi ; hi now stores He in % | |
2052 call customview_show_mix ; put "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2 | |
0 | 2053 STRCAT_PRINT "" |
582 | 2054 bcf win_invert ; reset invert flag |
560 | 2055 goto TFT_standard_color ; ...and return |
2056 | |
2057 | |
2058 global TFT_show_mode_divemode | |
2059 TFT_show_mode_divemode: | |
2060 WIN_TINY dm_active_dil_column+.45, dm_active_dil_row+.3 | |
2061 btfsc is_bailout ; in bailout? | |
2062 return ; YES | |
2063 btfsc FLAG_ccr_mode ; NO - in CCR mode? | |
2064 bra TFT_show_mode_divemode_ccr ; YES - write CCR label | |
2065 btfsc FLAG_pscr_mode ; NO - in pSCR mode? | |
2066 bra TFT_show_mode_divemode_pscr ; YES - write pSCR label | |
2067 return ; NO - done | |
2068 TFT_show_mode_divemode_ccr: | |
2069 call TFT_standard_color ; set standard color | |
2070 STRCPY_TEXT_PRINT tDvCCR ; print "CCR" | |
2071 return ; done | |
2072 TFT_show_mode_divemode_pscr: | |
2073 call TFT_standard_color ; set standard color | |
2074 STRCPY_TEXT_PRINT tDvPSCR ; print "PSCR" | |
0 | 2075 return |
582 | 2076 |
0 | 2077 |
2078 global TFT_display_decotype_surface | |
2079 TFT_display_decotype_surface: | |
582 | 2080 WIN_STD surf_decotype_column,surf_decotype_row |
2081 WIN_COLOR color_lightblue | |
2082 movff opt_dive_mode,lo ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR | |
2083 tstfsz lo | |
2084 bra TFT_display_decotype_surface2 | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2085 TFT_display_decotype_surface0: |
582 | 2086 STRCAT_TEXT_PRINT tDvOC ; OC |
2087 bra TFT_display_decotype_exit | |
0 | 2088 TFT_display_decotype_surface2: |
582 | 2089 decfsz lo,F |
2090 bra TFT_display_decotype_surface3 | |
2091 STRCAT_TEXT_PRINT tDvCC ; CC | |
2092 call TFT_standard_color | |
113 | 2093 WIN_TINY surf_decotype_column+.18,surf_decotype_row+.12 |
582 | 2094 TSTOSS opt_ccr_mode ; =0: Fixed SP, =1: Sensor, =2: Auto SP |
2095 bra TFT_display_decotype_cc_fixed | |
2096 ; Sensor mode or Auto | |
2097 movff opt_ccr_mode,WREG | |
2098 sublw .2 | |
2099 bz TFT_display_decotype_cc_auto | |
2100 STRCPY_TEXT tCCRModeSensor ; Sensor | |
2101 bra TFT_display_decotype_cc_common | |
337
508d7fb98b34
cleanup menu, add "Auto SP" option (Not working yet), minor layout change in compass menu
heinrichsweikamp
parents:
333
diff
changeset
|
2102 TFT_display_decotype_cc_auto: |
582 | 2103 STRCPY_TEXT tCCRModeAutoSP ; Auto SP |
2104 bra TFT_display_decotype_cc_common | |
113 | 2105 TFT_display_decotype_cc_fixed: |
582 | 2106 STRCPY_TEXT tCCRModeFixedSP ; Fixed SP |
113 | 2107 TFT_display_decotype_cc_common: |
582 | 2108 clrf WREG |
2109 movff WREG,buffer+.8 ; limit string length to 8 | |
2110 STRCAT_PRINT "" | |
2111 bra TFT_display_decotype_exit | |
0 | 2112 TFT_display_decotype_surface3: |
582 | 2113 decfsz lo,F |
2114 bra TFT_display_decotype_surface4 | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2115 TFT_display_decotype_surface3_1: |
582 | 2116 STRCAT_TEXT_PRINT tDvGauge ; Gauge |
2117 bra TFT_display_decotype_exit | |
0 | 2118 TFT_display_decotype_surface4: |
582 | 2119 decfsz lo,F |
2120 bra TFT_display_decotype_surface5 | |
2121 TFT_display_decotype_surface4_1: | |
2122 STRCAT_TEXT_PRINT tDvApnea ; Apnea | |
2123 bra TFT_display_decotype_exit | |
480
ad8acade5567
NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents:
477
diff
changeset
|
2124 TFT_display_decotype_surface5: |
582 | 2125 STRCAT_TEXT_PRINT tDvPSCR ; PSCR |
0 | 2126 TFT_display_decotype_exit: |
582 | 2127 goto TFT_standard_color ; and return... |
2128 | |
2129 | |
2130 global TFT_display_decotype_surface1 ; Used from logbook! | |
2131 TFT_display_decotype_surface1: ; Used from logbook! | |
2132 tstfsz lo | |
2133 bra TFT_display_decotype_surface1_2 | |
2134 bra TFT_display_decotype_surface0 ;OC | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2135 TFT_display_decotype_surface1_2: |
582 | 2136 decfsz lo,F |
2137 bra TFT_display_decotype_surface1_3 | |
2138 STRCAT_TEXT_PRINT tDvCC ; CC (w/o Sensor/Fixed Display) | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2139 TFT_display_decotype_surface1_3: |
582 | 2140 decfsz lo,F |
2141 bra TFT_display_decotype_surface1_4 | |
2142 bra TFT_display_decotype_surface3_1 ; Gauge | |
480
ad8acade5567
NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents:
477
diff
changeset
|
2143 TFT_display_decotype_surface1_4: |
582 | 2144 decfsz lo,F |
2145 bra TFT_display_decotype_surface4_1 ; Apnea | |
2146 bra TFT_display_decotype_surface5 ; PSCR | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2147 |
0 | 2148 ;============================================================================= |
2149 | |
582 | 2150 global TFT_splist_surfmode ; Show Setpoint list |
2151 extern gaslist_strcat_setpoint | |
0 | 2152 TFT_splist_surfmode: |
582 | 2153 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint |
2154 ;SP 1 | |
2155 WIN_SMALL surf_gaslist_column,surf_gaslist_row | |
2156 clrf PRODL | |
2157 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2158 STRCAT_PRINT "" | |
2159 ;SP 2 | |
2160 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) | |
2161 movlw .1 | |
2162 movwf PRODL | |
2163 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2164 STRCAT_PRINT "" | |
2165 ;SP 3 | |
2166 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
2167 movlw .2 | |
2168 movwf PRODL | |
2169 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2170 STRCAT_PRINT "" | |
2171 ;SP 4 | |
2172 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.3) | |
2173 movlw .3 | |
2174 movwf PRODL | |
2175 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2176 STRCAT_PRINT "" | |
2177 ;SP 5 | |
2178 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.4) | |
2179 movlw .4 | |
2180 movwf PRODL | |
2181 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2182 STRCAT_PRINT "" | |
2183 bcf leftbind | |
2184 return | |
0 | 2185 |
2186 global TFT_gaslist_surfmode | |
582 | 2187 TFT_gaslist_surfmode: ; Displays Gas List |
2188 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint | |
2189 extern gaslist_strcat_gas_mod | |
2190 ;Gas 1 | |
2191 WIN_SMALL surf_gaslist_column,surf_gaslist_row | |
2192 clrf PRODL | |
2193 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2194 STRCAT_PRINT "" | |
2195 ;Gas 2 | |
2196 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) | |
2197 movlw .1 | |
2198 movwf PRODL | |
2199 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2200 STRCAT_PRINT "" | |
2201 ;Gas 3 | |
2202 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
2203 movlw .2 | |
2204 movwf PRODL | |
2205 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2206 STRCAT_PRINT "" | |
2207 ;Gas 4 | |
2208 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.3) | |
2209 movlw .3 | |
2210 movwf PRODL | |
2211 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2212 STRCAT_PRINT "" | |
2213 ;Gas 5 | |
2214 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.4) | |
2215 movlw .4 | |
2216 movwf PRODL | |
2217 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2218 STRCAT_PRINT "" | |
2219 bcf leftbind | |
2220 return | |
0 | 2221 |
2222 global TFT_dillist_surfmode | |
582 | 2223 TFT_dillist_surfmode: ; Displays Diluent List |
2224 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint | |
2225 bsf ccr_diluent_setup ; Use CCR Diluents... | |
2226 rcall TFT_gaslist_surfmode ; Use OC/BAIL routine | |
2227 bcf ccr_diluent_setup ; Clear flag | |
2228 return | |
0 | 2229 |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2230 ;================================================================== |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2231 |
0 | 2232 global TFT_depth |
2233 TFT_depth: | |
582 | 2234 bcf FLAG_TFT_depth |
2235 SAFE_2BYTE_COPY rel_pressure, lo | |
2236 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
2237 call TFT_color_code_depth ; Color-code the output | |
2238 rcall TFT_depth_blink | |
2239 WIN_LARGE dm_depth_column, dm_depth_row | |
2240 | |
2241 TSTOSS opt_units ; 0=m, 1=ft | |
2242 bra TFT_depth_metric | |
0 | 2243 ;TFT_depth_imperial |
582 | 2244 clrf sub_a+1 ; Display 0ft if lower then 30cm |
0 | 2245 movlw d'30' |
2246 movwf sub_a+0 | |
2247 movff hi,sub_b+1 | |
2248 movff lo,sub_b+0 | |
582 | 2249 call subU16 ; sub_c = sub_a - sub_b |
2250 btfss neg_flag ; Depth lower then 0.4m? | |
2251 bra depth_less_0.3mtr_feet ; Yes, Show 0ft manually | |
2252 | |
2253 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
0 | 2254 bsf leftbind |
582 | 2255 output_16 ; feet in Big font |
2256 bcf leftbind | |
2257 movlw .3 ; limit to three chars | |
2258 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
2259 STRCAT_PRINT "" ; Display feet | |
2260 bcf win_invert ; Reset invert flag | |
2261 return | |
126 | 2262 |
0 | 2263 depth_less_0.3mtr_feet: |
582 | 2264 STRCAT_PRINT "0 " ; manual zero |
2265 bcf win_invert ; Reset invert flag | |
0 | 2266 return |
2267 | |
2268 TFT_depth_metric: | |
2269 movlw .039 | |
2270 cpfslt hi | |
582 | 2271 bra depth_greater_99_84mtr |
2272 | |
2273 btfsc depth_greater_100m ; Was depth>100m during last call | |
2274 rcall TFT_clear_depth ; Yes, clear depth area | |
2275 bcf depth_greater_100m ; Do this once only... | |
0 | 2276 |
11 | 2277 movlw .039 |
2278 cpfslt hi | |
582 | 2279 bra depth_greater_99_84mtr |
11 | 2280 |
0 | 2281 movlw HIGH d'1000' |
2282 movwf sub_a+1 | |
2283 movlw LOW d'1000' | |
2284 movwf sub_a+0 | |
2285 movff hi,sub_b+1 | |
2286 movff lo,sub_b+0 | |
2287 incf sub_b+0,F | |
2288 movlw d'0' | |
2289 addwfc sub_b+1,F ; Add 1mbar offset | |
2290 call sub16 ; sub_c = sub_a - sub_b | |
582 | 2291 movlw ' ' |
0 | 2292 btfss neg_flag ; Depth lower then 10m? |
582 | 2293 movwf POSTINC2 ; Yes, add extra space |
2294 | |
2295 clrf sub_a+1 | |
0 | 2296 movlw d'99' |
2297 movwf sub_a+0 | |
2298 movff hi,sub_b+1 | |
2299 movff lo,sub_b+0 | |
2300 call subU16 ; sub_c = sub_a - sub_b | |
2301 btfss neg_flag ; Depth lower then 1m? | |
2302 bra tft_depth2 ; Yes, display manual Zero | |
2303 | |
2304 bsf leftbind | |
2305 bsf ignore_digit4 | |
2306 output_16 ; Full meters in Big font | |
2307 bcf leftbind | |
2308 bra tft_depth3 | |
2309 | |
2310 tft_depth2: | |
582 | 2311 STRCAT "0" ; manual zero |
0 | 2312 |
2313 tft_depth3: | |
2314 STRCAT_PRINT "" ; Display full meters | |
2315 | |
2316 ; .1m in MEDIUM font | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2317 WIN_MEDIUM dm_depth_dm_column, dm_depth_dm_row |
560 | 2318 |
2319 ; TODO - check if needed, depth should still be in hi:lo | |
582 | 2320 SAFE_2BYTE_COPY rel_pressure, lo |
2321 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
2322 call TFT_color_code_depth ; Color-code the output | |
2323 | |
2324 PUTC "." | |
2325 movlw HIGH d'30' ; Display 0.0m if lower then 30cm | |
0 | 2326 movwf sub_a+1 |
582 | 2327 movlw LOW d'30' |
0 | 2328 movwf sub_a+0 |
2329 movff hi,sub_b+1 | |
2330 movff lo,sub_b+0 | |
2331 call subU16 ; sub_c = sub_a - sub_b | |
2332 btfss neg_flag ; Depth lower then 0.3m? | |
2333 bra depth_less_0.3mtr ; Yes, Show ".0" manually | |
2334 | |
2335 movlw d'4' | |
2336 movwf ignore_digits | |
2337 bsf ignore_digit5 | |
2338 output_16dp d'0' | |
2339 STRCAT_PRINT "" ; Display decimeters | |
582 | 2340 bcf win_invert ; Reset invert flag |
2341 WIN_FONT FT_SMALL | |
0 | 2342 return |
2343 | |
2344 depth_less_0.3mtr: | |
2345 STRCAT_PRINT "0" ; Display 0.0m manually | |
582 | 2346 bcf win_invert ; Reset invert flag |
2347 WIN_FONT FT_SMALL | |
0 | 2348 return |
2349 | |
560 | 2350 depth_greater_99_84mtr: ; Display only in full meters |
0 | 2351 btfss depth_greater_100m ; Is depth>100m already? |
2352 rcall TFT_clear_depth ; No, clear depth area and set flag | |
582 | 2353 call TFT_color_code_depth |
0 | 2354 ; Depth is already in hi:lo |
2355 ; Show depth in Full meters | |
560 | 2356 ; That means ignore digit 4 and 5 |
582 | 2357 lfsr FSR2,buffer |
0 | 2358 bsf ignore_digit4 |
2359 bsf leftbind | |
2360 output_16 | |
2361 bcf leftbind | |
582 | 2362 STRCAT_PRINT "" ; Display full meters only |
2363 bcf win_invert ; Reset invert flag | |
2364 WIN_FONT FT_SMALL | |
0 | 2365 return |
2366 | |
582 | 2367 TFT_clear_depth: ; No, clear depth area and set flag |
2368 WIN_BOX_BLACK dm_depth_row, dm_depth_bot, dm_depth_column, dm_depth_rgt ;top, bottom, left, right | |
2369 bsf depth_greater_100m ; Set Flag | |
0 | 2370 return |
2371 | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2372 TFT_depth_blink: |
582 | 2373 TSTOSS opt_modwarning ; 0=standard, 1=blink |
2374 return | |
2375 | |
2376 ; check if previous cycle had the blinking warning or not | |
2377 btfsc blinking_depth_prev ; did we have warning prev? | |
2378 bra TFT_depth_blink_prevwarn; Yes | |
2379 | |
2380 ; No; check if it's set now | |
2381 btfsc blinking_depth_warning ; do we have warning set now? | |
2382 bra TFT_depth_blink_warn ; Yes - so we have warning now but not prev | |
2383 | |
2384 ; no warning in previous cycle, no warning now, reset all flags | |
2385 bcf blinking_depth_prev ; reset prev flag | |
2386 bcf blinking_depth_toggle ; reset toggle | |
2387 bcf win_invert | |
2388 ; all done | |
2389 return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2390 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2391 TFT_depth_blink_prevwarn: |
582 | 2392 ; ...we had warning in previous cycle, check if we still have the warning set |
2393 btfss blinking_depth_warning ; do we still have the warning? | |
2394 bra TFT_depth_blink_prevwarn_nowarn ; No, clear the depth area | |
2395 | |
2396 ; we still have the warning, set previous flag for next cycle... | |
2397 bsf blinking_depth_prev ; set prev flag | |
2398 ; and set toggle and invert if required | |
2399 btfss blinking_depth_toggle ; do we have the toggle set? | |
2400 bra TFT_depth_blink_set ; No: set inverse, do color_box, set flag | |
2401 bra TFT_depth_blink_reset ; Yes: clear inverse, do black box, reset flag | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2402 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2403 TFT_depth_blink_prevwarn_nowarn: |
582 | 2404 ; we had warning, but not now... (e.g. ascended or switched to better gas) |
2405 ; reset the previous cycle flag for the next cycle... | |
2406 bcf blinking_depth_prev ; reset prev flag | |
2407 ; clear it - just in case if we had a blinked before | |
2408 bra TFT_depth_blink_reset ; Yes: clear inverse, do black box, reset flag | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2409 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2410 TFT_depth_blink_warn: |
582 | 2411 ; new blinking warning activated (had no warning in previous cycle) |
2412 bsf blinking_depth_prev ; set prev flag | |
2413 ; set toggle and invert | |
2414 bra TFT_depth_blink_set | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2415 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2416 TFT_depth_blink_set: |
582 | 2417 ; clear the area with color |
2418 movlw color_red ; that should not be hardcoded... | |
2419 WIN_BOX_COLOR dm_depth_row, dm_depth_bot, dm_depth_column, dm_depth_rgt ;top, bottom, left, right | |
2420 ;set the invert color | |
2421 bsf win_invert | |
2422 ; set the toggle | |
2423 bsf blinking_depth_toggle | |
2424 ; all done | |
2425 return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2426 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2427 TFT_depth_blink_reset: |
582 | 2428 ; clear the area with black |
2429 WIN_BOX_BLACK dm_depth_row, dm_depth_bot, dm_depth_column, dm_depth_rgt ;top, bottom, left, right | |
2430 ;reset the invert color | |
2431 bcf win_invert | |
2432 ; reset the toggle | |
2433 bcf blinking_depth_toggle | |
2434 ; if it's still warning... | |
2435 btfsc blinking_depth_warning | |
2436 call TFT_warnings_color | |
2437 ; all done | |
2438 return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2439 |
0 | 2440 ;============================================================================= |
2441 | |
582 | 2442 global TFT_custom_text |
2443 TFT_custom_text: ; Show the custom text | |
2444 lfsr FSR0, opt_name ; Source | |
2445 WIN_SMALL surf_customtext_column,surf_customtext_row1 ; First row | |
2446 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2447 incfsz lo,F ; Was lo=255? | |
2448 return ; No, all done. | |
2449 lfsr FSR0, opt_name+.12 ; Source | |
2450 WIN_SMALL surf_customtext_column,surf_customtext_row2 ; Second row | |
2451 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2452 incfsz lo,F ; Was lo=255? | |
2453 return ; No, all done. | |
2454 lfsr FSR0, opt_name+.24 ; Source | |
2455 WIN_SMALL surf_customtext_column,surf_customtext_row3 ; Third row | |
2456 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2457 incfsz lo,F ; Was lo=255? | |
2458 return ; No, all done. | |
2459 lfsr FSR0, opt_name+.36 ; Source | |
2460 WIN_SMALL surf_customtext_column,surf_customtext_row4 ; Forth row | |
2461 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2462 incfsz lo,F ; Was lo=255? | |
2463 return ; No, all done. | |
2464 lfsr FSR0, opt_name+.48 ; Source | |
2465 WIN_SMALL surf_customtext_column,surf_customtext_row5 ; Fifth row | |
2466 bra TFT_custom_text_2 ; Show up to 12 chars and print ; and return... | |
560 | 2467 |
0 | 2468 |
2469 TFT_custom_text_2: | |
582 | 2470 lfsr FSR2, buffer ; destination |
2471 movlw .12 | |
2472 movwf lo ; length/line | |
0 | 2473 TFT_custom_text_3: |
582 | 2474 movf POSTINC0,W ; Get byte |
2475 bz TFT_custom_text_4 ; End if NULL | |
2476 movwf POSTINC2 ; NO: copy | |
2477 decfsz lo,F ; Max length reached ? | |
2478 bra TFT_custom_text_3 ; NO: loop | |
2479 setf lo ; lo=255 -> more to come | |
0 | 2480 TFT_custom_text_4: |
582 | 2481 clrf POSTINC2 ; Mark end of string |
2482 goto aa_wordprocessor ; print and return | |
0 | 2483 |
2484 | |
2485 ;============================================================================= | |
560 | 2486 |
0 | 2487 global TFT_update_surf_press |
2488 TFT_update_surf_press: | |
582 | 2489 WIN_SMALL surf_press_column,surf_press_row |
0 | 2490 call TFT_standard_color |
582 | 2491 SAFE_2BYTE_COPY amb_pressure, lo |
0 | 2492 movff lo,sub_a+0 |
2493 movff hi,sub_a+1 | |
2494 movff last_surfpressure_30min+0,sub_b+0 | |
2495 movff last_surfpressure_30min+1,sub_b+1 | |
560 | 2496 call subU16 ; sub_c = sub_a - sub_b |
2497 btfsc neg_flag ; Pressure lower? | |
2498 rcall update_surf_press2 ; Yes, test threshold | |
2499 tstfsz sub_c+1 ; >255mbar difference? | |
2500 bra update_surf_press_common ; Yes, display! | |
2501 movlw d'11' ; 10mbar noise suppression | |
0 | 2502 subwf sub_c+0,W |
2503 btfsc STATUS,C | |
560 | 2504 bra update_surf_press_common ; Yes, display! |
582 | 2505 SAFE_2BYTE_COPY last_surfpressure_30min, lo ; Overwrite with stable value... |
0 | 2506 update_surf_press_common: |
560 | 2507 movff lo,int_I_pres_surface+0 ; copy displayed value to C code to have pressure displayed |
2508 movff hi,int_I_pres_surface+1 ; and pressure used for desaturation & no-fly time in sync | |
0 | 2509 output_16 |
560 | 2510 ; Show only 4 digits |
0 | 2511 movff buffer+1,buffer+0 |
2512 movff buffer+2,buffer+1 | |
2513 movff buffer+3,buffer+2 | |
2514 movff buffer+4,buffer+3 | |
2515 movlw 0x00 | |
2516 movff WREG,buffer+4 | |
582 | 2517 STRCAT_PRINT "" |
2518 call TFT_divemask_color | |
2519 WIN_SMALL surf_press_column+4*8,surf_press_row | |
2520 STRCPY_TEXT_PRINT tMBAR ; mbar | |
0 | 2521 return |
2522 | |
2523 update_surf_press2: | |
2524 movff lo,sub_b+0 | |
2525 movff hi,sub_b+1 | |
2526 movff last_surfpressure_30min+0,sub_a+0 | |
2527 movff last_surfpressure_30min+1,sub_a+1 | |
560 | 2528 goto subU16 ; sub_c = sub_a - sub_b ; and return... |
0 | 2529 |
2530 ;============================================================================= | |
2531 | |
2532 global TFT_update_batt_voltage | |
2533 TFT_update_batt_voltage: | |
582 | 2534 movff batt_percent,lo ; Get battery percent |
2535 call TFT_color_code_battery ; Color-code battery percent | |
2536 ; Setup charge indicator | |
2537 btfsc cc_active | |
2538 bsf win_invert | |
2539 btfsc cc_active | |
2540 movlw color_yellow | |
2541 btfsc cv_active | |
2542 movlw color_green | |
2543 btfsc cc_active | |
2544 call TFT_set_color | |
0 | 2545 WIN_TINY batt_percent_column,batt_percent_row |
2546 bsf leftbind | |
2547 output_8 | |
2548 bcf leftbind | |
88 | 2549 STRCAT "% " |
2550 movlw 0x00 | |
2551 movff WREG,buffer+4 ; Only "xxx%" | |
582 | 2552 STRCAT_PRINT "" |
2553 bcf win_invert | |
0 | 2554 call TFT_standard_color |
2555 WIN_TINY batt_voltage_column,batt_voltage_row | |
582 | 2556 movff battery_type,lo ; =0:1.5V, =1:3,6V Saft, =2:LiIon 3,7V/0.8Ah, =3:LiIon 3,7V/3.1Ah, =4: LiIon 3,7V/2.3Ah |
477
44b8a826b314
NEW: Show battery type in surface mode next to battery voltage
heinrichsweikamp
parents:
475
diff
changeset
|
2557 PUTC "T" |
582 | 2558 bsf leftbind |
2559 output_8 | |
2560 PUTC ":" | |
0 | 2561 movff batt_voltage+0,lo |
2562 movff batt_voltage+1,hi | |
582 | 2563 output_16dp .2 |
0 | 2564 bcf leftbind |
2565 PUTC 'V' | |
477
44b8a826b314
NEW: Show battery type in surface mode next to battery voltage
heinrichsweikamp
parents:
475
diff
changeset
|
2566 movff buffer+8,buffer+6 |
0 | 2567 movlw 0x00 |
477
44b8a826b314
NEW: Show battery type in surface mode next to battery voltage
heinrichsweikamp
parents:
475
diff
changeset
|
2568 movff WREG,buffer+7 ; Only "x.yV" |
582 | 2569 STRCAT_PRINT "" |
0 | 2570 return |
2571 | |
2572 ;update_battery_debug: | |
2573 ; call TFT_standard_color | |
2574 ; WIN_TINY .70,.0 | |
2575 ; movff battery_gauge+5,xC+3 | |
2576 ; movff battery_gauge+4,xC+2 | |
2577 ; movff battery_gauge+3,xC+1 | |
2578 ; movff battery_gauge+2,xC+0 | |
2579 ; ; battery_gauge:6 is nAs | |
2580 ; ; devide through 65536 | |
2581 ; ; devide through 152 | |
2582 ; ; Result is 0.01Ah in xC+1:xC+0 | |
2583 ; movlw LOW .152 | |
2584 ; movwf xB+0 | |
2585 ; movlw HIGH .152 | |
2586 ; movwf xB+1 | |
582 | 2587 ; call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder |
0 | 2588 ; bsf leftbind |
2589 ; movff xC+0,lo | |
2590 ; movff xC+1,hi | |
2591 ; output_16 | |
2592 ; STRCAT_PRINT "x.01Ah" | |
2593 ; WIN_FONT FT_SMALL | |
2594 ; bcf leftbind | |
2595 ; return | |
582 | 2596 |
0 | 2597 ;============================================================================= |
2598 | |
2599 global TFT_convert_signed_16bit | |
2600 TFT_convert_signed_16bit: | |
582 | 2601 bcf neg_flag ; Positive temperature |
2602 btfss hi,7 ; Negative temperature ? | |
2603 return ; No, return | |
0 | 2604 ; Yes, negative temperature! |
582 | 2605 bsf neg_flag ; Negative temperature |
2606 PUTC '-' ; Display "-" | |
2607 comf hi ; Then, 16bit sign changes. | |
2608 negf lo | |
2609 btfsc STATUS,C | |
2610 incf hi | |
2611 return ; and return | |
0 | 2612 |
2613 ;============================================================================= | |
2614 | |
2615 global TFT_convert_date | |
582 | 2616 TFT_convert_date: ; converts into "DD/MM/YY" or "MM/DD/YY" or "YY/MM/DD" in postinc2 |
2617 movff opt_dateformat,WREG ; =0:MMDDYY, =1:DDMMYY, =2:YYMMDD | |
2618 movwf EEDATA ; used as temp here | |
0 | 2619 tstfsz EEDATA |
582 | 2620 bra TFT_convert_date_1 ; opt_dateformat is 1 or 2 |
2621 ; opt_dateformat is 0 | |
2622 ; use MMDDYY | |
2623 movff lo,lo_temp ; incoming: lo = day, hi = month | |
2624 movff hi,lo ; swap | |
2625 movff lo_temp,hi ; now: lo = month, hi = day | |
2626 bra TFT_convert_date_common | |
2627 | |
2628 TFT_convert_date_1: | |
2629 decfsz EEDATA,F | |
2630 bra TFT_convert_date_2 ; opt_dateformat is 2 | |
2631 ; opt_dateformat is 1 | |
2632 ; use DDMMYY | |
2633 TFT_convert_date_common: | |
0 | 2634 bsf leftbind |
582 | 2635 output_99x ; with lo = month or day or year |
2636 PUTC '.' | |
2637 movff hi,lo ; now lo = day or month or month | |
0 | 2638 output_99x |
582 | 2639 PUTC '.' |
2640 movff up,lo ; now lo = year or year or day | |
0 | 2641 output_99x |
2642 bcf leftbind | |
2643 return | |
2644 | |
582 | 2645 TFT_convert_date_2: |
2646 ; opt_dateformat is 2 | |
2647 ; use YYMMDD | |
2648 movff lo,lo_temp ; incoming: lo = day, up = year | |
2649 movff up,lo ; swap | |
2650 movff lo_temp,up ; now : lo = year, up = day | |
2651 bra TFT_convert_date_common | |
0 | 2652 |
2653 ;============================================================================= | |
2654 | |
2655 global TFT_convert_date_short | |
582 | 2656 TFT_convert_date_short: ; converts into "DD/MM" or "MM/DD" or "MM/DD" in postinc2 |
2657 movff opt_dateformat,WREG ; =0:MMDDYY, =1:DDMMYY, =2:YYMMDD | |
2658 movwf EEDATA ; used as temp here | |
0 | 2659 tstfsz EEDATA |
582 | 2660 bra TFT_convert_date_short_1 |
2661 ; opt_dateformat is 0 | |
2662 ; Use MMDD(YY) | |
2663 TFT_convert_date_short_0: | |
2664 movff lo,lo_temp ; incoming: lo = day, hi = month | |
2665 movff hi,lo ; swap | |
2666 movff lo_temp,hi ; now: lo = month, hi = day | |
2667 bra TFT_convert_date_short_common | |
2668 | |
2669 TFT_convert_date_short_1: | |
2670 decfsz EEDATA,F | |
2671 bra TFT_convert_date_short_0 ; opt_dateformat is 2 -> use (YY)MMDD | |
2672 ; opt_dateformat is 1 | |
2673 ; use DDMM(YY) | |
0 | 2674 TFT_convert_date_short_common: |
2675 bsf leftbind | |
582 | 2676 output_99x ; with lo = month or day |
2677 PUTC '.' | |
2678 movff hi,lo ; now lo = day or month | |
0 | 2679 output_99x |
2680 bcf leftbind | |
2681 return | |
2682 | |
2683 ;============================================================================= | |
2684 | |
2685 global TFT_date | |
2686 TFT_date: | |
582 | 2687 WIN_SMALL surf_date_column,surf_date_row ; Init new Wordprocessor |
0 | 2688 call TFT_standard_color |
582 | 2689 movff day,lo |
2690 movff month,hi | |
2691 movff year,up | |
560 | 2692 call TFT_convert_date ; converts into "DD/MM/YY" or "MM/DD/YY" or "YY/MM/DD" in postinc2 |
0 | 2693 STRCAT_PRINT "" |
2694 return | |
2695 | |
2696 ;============================================================================= | |
2697 | |
560 | 2698 global TFT_max_depth_alternative |
582 | 2699 TFT_max_depth_alternative: |
2700 bcf FLAG_TFT_max_depth_alt | |
560 | 2701 ; The "mask" |
582 | 2702 call TFT_divemask_color |
2703 WIN_TINY dm_mask_depth_column, dm_max_alt_row-.14 | |
560 | 2704 STRCPY_TEXT_PRINT tMaxDepth |
2705 | |
2706 ; The max. depth | |
2707 SAFE_2BYTE_COPY max_pressure, lo | |
2708 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
582 | 2709 call TFT_standard_color |
2710 TSTOSS opt_units ; 0=m, 1=ft | |
2711 bra TFT_max_depth_alt_metric | |
560 | 2712 ;TFT_max_depth_alt_imperial: |
2713 TFT_max_depth_alt_metric: | |
582 | 2714 WIN_LARGE dm_max_alt_column,dm_max_alt_row |
2715 bsf ignore_digit4 ; no 0.1m | |
560 | 2716 output_16 |
2717 STRCAT_PRINT "" | |
582 | 2718 |
560 | 2719 WIN_MEDIUM dm_max_dm_alt_column,dm_max_alt_row+.25 |
2720 SAFE_2BYTE_COPY max_pressure, lo | |
2721 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
582 | 2722 PUTC "." |
560 | 2723 movlw d'4' |
2724 movwf ignore_digits | |
582 | 2725 bsf ignore_digit5 |
2726 bsf leftbind | |
560 | 2727 output_16dp d'0' |
2728 STRCAT_PRINT "" ; Display decimeters | |
582 | 2729 bcf leftbind |
560 | 2730 return |
582 | 2731 |
2732 | |
560 | 2733 global TFT_max_depth |
2734 TFT_max_depth: | |
2735 bcf FLAG_TFT_max_depth | |
2736 btfsc FLAG_apnoe_mode ; different display in apnoe mode | |
582 | 2737 bra TFT_max_depth_apnoe |
560 | 2738 TFT_max_depth2: |
582 | 2739 SAFE_2BYTE_COPY max_pressure, lo |
560 | 2740 TFT_max_depth3: |
2741 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
582 | 2742 TSTOSS opt_units ; 0=m, 1=ft |
560 | 2743 bra TFT_max_depth2_metric |
2744 ;TFT_max_depth2_imperial: | |
582 | 2745 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2746 WIN_MEDIUM dm_max_depth_column, dm_max_depth_row |
582 | 2747 TSTOSS opt_vsigraph ; 0=skip, 1=draw |
332
0ff81ff290ce
Fix positions if no VSI Bar displayed
Janos Kovacs <kovjanos@gmail.com>
parents:
328
diff
changeset
|
2748 WIN_MEDIUM dm_max_depth_column_nvsi, dm_max_depth_row |
0 | 2749 call TFT_standard_color |
2750 output_16_3 | |
2751 STRCAT_PRINT "" | |
2752 return | |
2753 | |
560 | 2754 TFT_max_depth2_metric: |
582 | 2755 WIN_MEDIUM dm_max_depth_column, dm_max_depth_row |
2756 TSTOSS opt_vsigraph ; 0=skip, 1=draw | |
2757 WIN_MEDIUM dm_max_depth_column_nvsi, dm_max_depth_row | |
2758 call TFT_standard_color | |
11 | 2759 |
2760 movlw .039 | |
2761 cpfslt hi | |
582 | 2762 bra max_depth_greater_99_84mtr |
11 | 2763 |
560 | 2764 btfsc max_depth_greater_100m ; Was depth>100m during last call |
2765 rcall TFT_clear_max_depth ; Yes, clear depth area | |
2766 bcf max_depth_greater_100m ; Do this once only... | |
11 | 2767 |
2768 movlw .039 | |
2769 cpfslt hi | |
582 | 2770 bra max_depth_greater_99_84mtr |
11 | 2771 |
2772 movlw HIGH d'1000' | |
2773 movwf sub_a+1 | |
2774 movlw LOW d'1000' | |
2775 movwf sub_a+0 | |
2776 movff hi,sub_b+1 | |
2777 movff lo,sub_b+0 | |
2778 incf sub_b+0,F | |
2779 movlw d'0' | |
2780 addwfc sub_b+1,F ; Add 1mbar offset | |
2781 call sub16 ; sub_c = sub_a - sub_b | |
582 | 2782 movlw ' ' |
11 | 2783 btfss neg_flag ; Depth lower then 10m? |
582 | 2784 movwf POSTINC2 ; Yes, add extra space |
2785 | |
2786 clrf sub_a+1 | |
11 | 2787 movlw d'99' |
2788 movwf sub_a+0 | |
2789 movff hi,sub_b+1 | |
2790 movff lo,sub_b+0 | |
2791 call subU16 ; sub_c = sub_a - sub_b | |
2792 btfss neg_flag ; Depth lower then 1m? | |
582 | 2793 bra tft_max_depth2 ; Yes, display manual Zero |
2794 | |
2795 bsf ignore_digit4 ; no 0.1m | |
2796 bsf leftbind | |
11 | 2797 output_16 |
2798 bra tft_max_depth3 | |
2799 | |
2800 tft_max_depth2: | |
582 | 2801 WIN_MEDIUM dm_max_depth_column, dm_max_depth_row |
2802 TSTOSS opt_vsigraph ; 0=skip, 1=draw | |
2803 WIN_MEDIUM dm_max_depth_column_nvsi, dm_max_depth_row | |
11 | 2804 STRCAT "0" |
2805 | |
2806 tft_max_depth3: | |
0 | 2807 call TFT_standard_color |
11 | 2808 STRCAT_PRINT "" ; Display full meters |
582 | 2809 bcf leftbind |
11 | 2810 |
2811 ; .1m in SMALL font | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2812 WIN_SMALL dm_max_depth_dm_column, dm_max_depth_dm_row |
582 | 2813 TSTOSS opt_vsigraph ; 0=skip, 1=draw |
332
0ff81ff290ce
Fix positions if no VSI Bar displayed
Janos Kovacs <kovjanos@gmail.com>
parents:
328
diff
changeset
|
2814 WIN_SMALL dm_max_depth_dm_column_nvsi, dm_max_depth_dm_row |
11 | 2815 |
582 | 2816 SAFE_2BYTE_COPY max_pressure, lo |
560 | 2817 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] |
11 | 2818 |
582 | 2819 PUTC "." |
11 | 2820 |
2821 movlw d'4' | |
2822 movwf ignore_digits | |
2823 bsf ignore_digit5 | |
582 | 2824 bsf leftbind |
11 | 2825 output_16dp d'0' |
560 | 2826 STRCAT_PRINT "" ; Display decimeters |
582 | 2827 bcf leftbind |
11 | 2828 return |
2829 | |
582 | 2830 max_depth_greater_99_84mtr: ; Display only in full meters |
11 | 2831 btfss max_depth_greater_100m ; Is max depth>100m already? |
2832 rcall TFT_clear_max_depth ; No, clear max depth area and set flag | |
2833 ; Max. Depth is already in hi:lo | |
2834 ; Show max. depth in Full meters | |
2835 ; That means ignore figure 4 and 5 | |
582 | 2836 lfsr FSR2,buffer |
11 | 2837 bsf ignore_digit4 |
2838 bsf leftbind | |
0 | 2839 output_16 |
11 | 2840 bcf leftbind |
582 | 2841 STRCAT_PRINT "" ; Display full meters only |
2842 WIN_FONT FT_SMALL | |
0 | 2843 return |
2844 | |
582 | 2845 TFT_clear_max_depth: ; No, clear max. depth area and set flag |
2846 WIN_BOX_BLACK dm_max_depth_row, dm_max_depth_bot, dm_max_depth_column, dm_max_depth_rgt ;top, bottom, left, right | |
560 | 2847 bsf max_depth_greater_100m ; Set Flag |
11 | 2848 return |
2849 | |
2850 | |
560 | 2851 TFT_max_depth_apnoe: |
582 | 2852 btfss FLAG_active_descent ; Are we descending? |
2853 bra TFT_max_depth2 ; Yes, show normal max. | |
0 | 2854 SAFE_2BYTE_COPY apnoe_max_pressure, lo |
582 | 2855 bra TFT_max_depth3 ; Show apnoe_max_pressure as max. depth |
0 | 2856 |
2857 global TFT_display_apnoe_last_max | |
2858 TFT_display_apnoe_last_max: | |
582 | 2859 call TFT_divemask_color |
2860 WIN_TINY dm_apnoe_last_max_depth_text_col, dm_apnoe_last_max_depth_text_row | |
2861 STRCPY_TEXT_PRINT tApnoeMax | |
0 | 2862 |
2863 call TFT_standard_color | |
2864 SAFE_2BYTE_COPY max_pressure, lo | |
582 | 2865 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] |
2866 TSTOSS opt_units ; 0=m, 1=ft | |
0 | 2867 bra TFT_display_apnoe_last_m_metric |
2868 ;TFT_display_apnoe_last_max_imperial | |
582 | 2869 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2870 WIN_MEDIUM dm_apnoe_last_max_depth_column, dm_apnoe_last_max_depth_row |
0 | 2871 output_16 |
2872 STRCAT_PRINT "" | |
2873 return | |
2874 | |
2875 TFT_display_apnoe_last_m_metric: | |
582 | 2876 WIN_MEDIUM dm_apnoe_last_max_depth_column, dm_apnoe_last_max_depth_row |
2877 bsf ignore_digit5 ; do not display 1cm depth | |
2878 output_16dp d'3' | |
0 | 2879 STRCAT_PRINT "" |
2880 return | |
2881 | |
2882 ;============================================================================= | |
560 | 2883 |
0 | 2884 global TFT_divemins |
2885 TFT_divemins: | |
582 | 2886 bcf FLAG_TFT_divemins ; Clear flag |
0 | 2887 movff divemins+0,lo |
2888 movff divemins+1,hi | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2889 |
582 | 2890 ; Already showing divemins > 99min |
560 | 2891 btfsc no_more_divesecs ; Ignore seconds? |
582 | 2892 bra TFT_divemins2 ; Show minutes only |
2893 | |
2894 tstfsz hi ; hi = 0? | |
560 | 2895 bra TFT_divemins_clr ; No, show mins only |
405
08fea401be24
BUGFIX: Divetime >99mins was not displayed (Only OSTC2 with serial >= )
heinrichsweikamp
parents:
399
diff
changeset
|
2896 |
0 | 2897 movlw .99 |
582 | 2898 cpfsgt lo ; bigger than 99? |
2899 bra TFT_divemins1 ; No show mins:secs | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2900 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2901 TFT_divemins_clr: |
0 | 2902 ; Yes, remove second display for the rest of the dive and clear seconds |
582 | 2903 bsf no_more_divesecs ; Set flag |
0 | 2904 ; Clear rest of seconds |
582 | 2905 WIN_BOX_BLACK dm_divetime_row, dm_divetime_bot, dm_divetime_column, dm_divetime_rgt ;top, bottom, left, right |
2906 bra TFT_divemins2 ; Show minutes only | |
0 | 2907 |
2908 TFT_divemins1: | |
582 | 2909 ; Print out the minutes, up to 99min, only 2chars ! |
0 | 2910 call TFT_standard_color |
582 | 2911 WIN_MEDIUM dm_divetime_column, dm_divetime_row |
2912 output_99 ; displays only last two figures from a 8Bit value (0-99) | |
2913 STRCAT_PRINT "" ; Show minutes in large font | |
2914 | |
2915 ; Print out the seconds | |
2916 WIN_SMALL dm_divetime_secs_column, dm_divetime_secs_row ; left position for two sec figures | |
2917 PUTC ':' | |
405
08fea401be24
BUGFIX: Divetime >99mins was not displayed (Only OSTC2 with serial >= )
heinrichsweikamp
parents:
399
diff
changeset
|
2918 bsf leftbind |
582 | 2919 movff divesecs,lo |
560 | 2920 output_99x ; displays only last two figures from a 8Bit value with leading zero (00-99) |
582 | 2921 bcf leftbind |
2922 STRCAT_PRINT "" ; Show seconds in small font | |
0 | 2923 return |
2924 | |
2925 TFT_divemins2: | |
405
08fea401be24
BUGFIX: Divetime >99mins was not displayed (Only OSTC2 with serial >= )
heinrichsweikamp
parents:
399
diff
changeset
|
2926 ; Full minutes only |
0 | 2927 call TFT_standard_color |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2928 WIN_MEDIUM dm_divetime_minsonly_column, dm_divetime_row |
582 | 2929 bcf leftbind |
2930 output_16_4 | |
2931 STRCAT_PRINT "" ; Show minutes in large font | |
2932 return | |
2933 | |
560 | 2934 global TFT_divemins_alternative |
2935 TFT_divemins_alternative: | |
582 | 2936 bcf FLAG_TFT_divemins ; Clear flag |
2937 call TFT_standard_color | |
2938 ; Print out the minutes (0-999) in large | |
2939 WIN_LARGE dm_divetime_alt_column, dm_divetime_alt_row | |
2940 movff divemins+0,lo | |
2941 movff divemins+1,hi | |
2942 output_16_3 ; limit to 999 and display only (0-999) | |
2943 STRCAT_PRINT "" ; Show minutes | |
2944 ; Print out the seconds in medium | |
2945 WIN_MEDIUM dm_divetime_alt_column+.60, dm_divetime_alt_row+.25 | |
2946 PUTC ":" | |
2947 bsf leftbind | |
2948 movff divesecs,lo | |
2949 output_99x ; displays only last two figures from a 8Bit value with leading zero (00-99) | |
2950 bcf leftbind | |
2951 STRCAT_PRINT "" ; Show seconds in small font | |
2952 return | |
0 | 2953 |
2954 ;============================================================================= | |
560 | 2955 |
0 | 2956 global TFT_display_apnoe_surface |
2957 TFT_display_apnoe_surface: | |
582 | 2958 call TFT_divemask_color |
2959 WIN_TINY dm_apnoe_surface_time_text_col, dm_apnoe_surface_time_text_row | |
2960 STRCPY_TEXT_PRINT tApnoeSurface | |
0 | 2961 |
2962 call TFT_standard_color | |
582 | 2963 WIN_MEDIUM dm_apnoe_surface_time_column, dm_apnoe_surface_time_row |
0 | 2964 movff apnoe_surface_mins,lo |
2965 output_8 | |
582 | 2966 PUTC ':' |
0 | 2967 movff apnoe_surface_secs,lo |
2968 output_99x | |
2969 STRCAT_PRINT "" | |
2970 return | |
2971 | |
2972 global TFT_apnoe_clear_surface | |
2973 TFT_apnoe_clear_surface: | |
2974 ; Clear Surface timer.... | |
582 | 2975 WIN_BOX_BLACK dm_apnoe_surface_time_text_row, .239, dm_apnoe_surface_time_text_col, .159 ;top, bottom, left, right |
0 | 2976 return |
2977 | |
2978 global TFT_display_apnoe_descent | |
560 | 2979 TFT_display_apnoe_descent: ; Descent divetime |
0 | 2980 movff apnoe_mins,lo |
582 | 2981 clrf hi |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2982 WIN_MEDIUM dm_divetime_apnoe_column, dm_divetime_apnoe_row |
582 | 2983 output_16_3 ; displays only last three figures from a 16Bit value (0-999) |
0 | 2984 call TFT_standard_color |
582 | 2985 STRCAT_PRINT "" ; Show minutes in large font |
2986 WIN_SMALL dm_divetime_apnoe_secs_column, dm_divetime_apnoe_secs_row ; left position for two sec figures | |
2987 PUTC ':' | |
0 | 2988 bsf leftbind |
2989 movff apnoe_secs,lo | |
2990 output_99x | |
582 | 2991 bcf leftbind |
2992 STRCAT_PRINT "" ; Show seconds in small font | |
2993 | |
2994 call TFT_divemask_color | |
2995 WIN_TINY dm_total_apnoe_text_column,dm_total_apnoe_text_row | |
2996 STRCPY_TEXT_PRINT tApnoeTotal | |
38 | 2997 call TFT_standard_color |
2998 movff divemins,lo | |
582 | 2999 clrf hi |
3000 WIN_MEDIUM dm_apnoe_total_divetime_column, dm_apnoe_total_divetime_row | |
3001 output_16_3 ; displays only last three figures from a 16Bit value (0-999) | |
38 | 3002 call TFT_standard_color |
582 | 3003 STRCAT_PRINT "" ; Show minutes in large font |
3004 WIN_SMALL dm_apnoe_total_divetime_secs_col, dm_apnoe_total_divetime_secs_row ; left position for two sec figures | |
3005 PUTC ':' | |
38 | 3006 bsf leftbind |
3007 movff divesecs,lo | |
3008 output_99x | |
582 | 3009 bcf leftbind |
3010 STRCAT_PRINT "" ; Show seconds in small font | |
0 | 3011 return |
582 | 3012 |
0 | 3013 ;============================================================================= |
275 | 3014 ; Writes ostc #Serial and Firmware version in splash screen |
560 | 3015 |
0 | 3016 global TFT_serial |
3017 TFT_serial: | |
582 | 3018 WIN_TINY .5,.225 |
3019 STRCPY "OSTC" ; Won't translate that... | |
3020 | |
3021 movlw 0x0A | |
3022 cpfseq hardware_flag | |
3023 bra TFT_serial2 | |
3024 STRCAT "3 #" | |
3025 bra TFT_serial_common | |
260 | 3026 TFT_serial2: |
582 | 3027 movlw 0x05 |
3028 cpfseq hardware_flag | |
3029 bra TFT_serial3 | |
3030 STRCAT " cR #" | |
3031 bra TFT_serial_common | |
200 | 3032 TFT_serial3: |
582 | 3033 movlw 0x11 |
3034 cpfseq hardware_flag | |
3035 bra TFT_serial4 | |
3036 STRCAT "2 #" | |
3037 bra TFT_serial_common | |
260 | 3038 TFT_serial4: |
582 | 3039 movlw 0x1A |
3040 cpfseq hardware_flag | |
3041 bra TFT_serial5 | |
3042 STRCAT "3 #" | |
3043 ; bra TFT_serial_common | |
260 | 3044 TFT_serial5: |
3045 TFT_serial_common: | |
582 | 3046 rcall TFT_cat_serial |
3047 STRCAT " v" | |
3048 WIN_COLOR color_greenish | |
3049 rcall TFT_cat_firmware | |
3050 | |
3051 ifdef __DEBUG | |
3052 movlw color_grey ; Write header in blue when | |
3053 call TFT_set_color ; compiled in DEBUG mode... | |
3054 STRCAT_PRINT "DEBUG" | |
3055 else | |
3056 STRCAT_PRINT "" | |
3057 bcf win_invert ; Reset invert flag | |
3058 call TFT_standard_color | |
3059 | |
3060 movlw softwareversion_beta ; =1: Beta, =0: Release | |
3061 decfsz WREG,F | |
3062 return ; Release version -> Return | |
3063 | |
3064 call TFT_warnings_color | |
3065 WIN_LEFT .160-4*9/2 ; Right pad. | |
3066 STRCPY_TEXT_PRINT tBeta | |
3067 endif | |
3068 call TFT_standard_color | |
3069 bcf win_invert | |
3070 return | |
3071 | |
0 | 3072 |
3073 ;============================================================================= | |
3074 ; For the Information menu: append firmware x.yy version. | |
560 | 3075 |
582 | 3076 global info_menu_firmware |
3077 extern tFirmware | |
0 | 3078 info_menu_firmware: |
582 | 3079 lfsr FSR1,tFirmware |
3080 call strcat_text | |
3081 rcall TFT_cat_firmware | |
3082 ; Show language version | |
3083 IFNDEF french_italian | |
458 | 3084 STRCAT "_en+de" |
3085 ELSE | |
3086 STRCAT "_fr+it" | |
582 | 3087 ENDIF |
3088 bcf win_invert ; Reset invert flag | |
3089 return | |
3090 | |
3091 global TFT_cat_firmware | |
0 | 3092 TFT_cat_firmware: |
582 | 3093 movlw softwareversion_x |
3094 movwf lo | |
3095 bsf leftbind | |
3096 output_8 | |
3097 PUTC '.' | |
3098 movlw softwareversion_y | |
3099 movwf lo | |
3100 output_99x | |
3101 bcf leftbind | |
3102 ; Check firmware date | |
3103 movlw firmware_expire_year-.1 | |
3104 cpfsgt year ; > threshold? | |
3105 return | |
3106 movlw firmware_expire_month-.1 | |
3107 cpfsgt month ; > threshold? | |
3108 return | |
3109 movlw firmware_expire_day-.1 | |
3110 cpfsgt day ; > threshold? | |
3111 return | |
3112 | |
3113 ; Show in "change firmware" style | |
3114 movlw color_yellow | |
3115 bcf win_invert | |
3116 goto TFT_set_color ; and return... | |
0 | 3117 |
3118 ;----------------------------------------------------------------------------- | |
275 | 3119 ; For the Information menu: append serial number |
560 | 3120 |
582 | 3121 global info_menu_serial |
3122 extern tSerial | |
0 | 3123 info_menu_serial: |
582 | 3124 lfsr FSR1,tSerial |
3125 call strcat_text | |
3126 global TFT_cat_serial | |
0 | 3127 TFT_cat_serial: |
582 | 3128 clrf EEADRH |
3129 clrf EEADR ; Get Serial number LOW | |
3130 call read_eeprom ; read byte | |
3131 movff EEDATA,lo | |
3132 incf EEADR,F ; Get Serial number HIGH | |
3133 call read_eeprom ; read byte | |
3134 movff EEDATA,hi | |
3135 | |
3136 bsf leftbind | |
3137 output_16 | |
3138 bcf leftbind | |
3139 return | |
0 | 3140 |
3141 ;----------------------------------------------------------------------------- | |
3142 ; For the Information menu: Append total dives | |
560 | 3143 |
582 | 3144 global info_menu_total_dives |
3145 extern tTotalDives | |
0 | 3146 info_menu_total_dives: |
582 | 3147 lfsr FSR1,tTotalDives |
3148 call strcat_text | |
0 | 3149 TFT_cat_total_dives: |
3150 read_int_eeprom .2 | |
3151 movff EEDATA,lo | |
3152 read_int_eeprom .3 | |
3153 movff EEDATA,hi | |
3154 bsf leftbind | |
3155 output_16 | |
582 | 3156 bcf leftbind |
3157 return | |
0 | 3158 |
62 | 3159 ; For the Information menu: Append battery voltage |
582 | 3160 global info_menu_battery_volts |
3161 extern tBatteryV | |
62 | 3162 info_menu_battery_volts: |
582 | 3163 lfsr FSR1,tBatteryV |
3164 call strcat_text | |
3165 movff batt_voltage+1,hi | |
3166 movff batt_voltage+0,lo | |
62 | 3167 bsf leftbind |
582 | 3168 output_16dp .2 ; x.xxx |
3169 STRCAT "V(T" | |
3170 movff battery_type,lo ; =0:1.5V, =1:3,6V Saft, =2:LiIon 3,7V/0.8Ah, =3:LiIon 3,7V/3.1Ah, =4: LiIon 3,7V/2.3Ah | |
3171 output_8 | |
3172 bcf leftbind | |
3173 PUTC ")" | |
3174 return | |
3175 | |
3176 ; For the Information menu: Append Uptime | |
3177 global info_menu_uptime | |
3178 extern tUptime | |
453
b4f28ab23b87
NEW: Show Uptime (Time since last firmware boot) in information menu
heinrichsweikamp
parents:
444
diff
changeset
|
3179 info_menu_uptime: |
582 | 3180 lfsr FSR1,tUptime |
3181 call strcat_text | |
3182 movff uptime+0,xC+0 | |
3183 movff uptime+1,xC+1 | |
3184 movff uptime+2,xC+2 | |
3185 movff uptime+3,xC+3 | |
3186 movlw LOW .3600 | |
3187 movwf xB+0 | |
3188 movlw HIGH .3600 | |
3189 movwf xB+1 ; One day = 3600s | |
3190 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
3191 ;xC+0:xC+1 -> Full hours | |
3192 movff xC+1,xA+1 | |
3193 movff xC+0,xA+0 | |
3194 clrf xB+1 | |
3195 movlw .24 | |
3196 movwf xB+0 | |
3197 call div16x16 ; xA/xB=xC with xA+0 as remainder | |
3198 movff xC+0,lo | |
3199 movff xC+1,hi ; Full days | |
3200 bsf leftbind | |
3201 output_16 | |
3202 PUTC "d" | |
3203 movff xA+0,lo ; Full hours | |
3204 output_8 | |
3205 PUTC "h" | |
3206 bcf leftbind | |
3207 return ; Done. | |
3208 | |
3209 extern tCalX,tCalY,tCalZ | |
3210 global menu_cal_x | |
3211 menu_cal_x: | |
3212 lfsr FSR1,tCalX | |
3213 call strcat_text | |
3214 movff compass_CX_f+0,lo | |
3215 movff compass_CX_f+1,hi | |
3216 call TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required | |
3217 bsf leftbind | |
3218 output_16 | |
3219 bcf leftbind | |
3220 return | |
3221 | |
3222 global menu_cal_y | |
3223 menu_cal_y: | |
3224 lfsr FSR1,tCalY | |
3225 call strcat_text | |
3226 movff compass_CY_f+0,lo | |
3227 movff compass_CY_f+1,hi | |
3228 call TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required | |
3229 bsf leftbind | |
3230 output_16 | |
3231 bcf leftbind | |
3232 return | |
3233 | |
3234 global menu_cal_z | |
3235 menu_cal_z: | |
3236 lfsr FSR1,tCalZ | |
3237 call strcat_text | |
3238 movff compass_CZ_f+0,lo | |
3239 movff compass_CZ_f+1,hi | |
3240 call TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required | |
3241 bsf leftbind | |
3242 output_16 | |
3243 bcf leftbind | |
3244 return | |
544
64a45f203144
NEW: Show Compass calibration results in Compass menu
heinrichsweikamp
parents:
535
diff
changeset
|
3245 |
453
b4f28ab23b87
NEW: Show Uptime (Time since last firmware boot) in information menu
heinrichsweikamp
parents:
444
diff
changeset
|
3246 |
0 | 3247 ;----------------------------------------------------------------------------- |
3248 ; ppO2 menu | |
560 | 3249 |
0 | 3250 global divesets_ppo2_min |
582 | 3251 extern tPPO2MIN |
0 | 3252 divesets_ppo2_min: |
582 | 3253 lfsr FSR1,tPPO2MIN |
3254 call strcat_text | |
560 | 3255 movff char_I_ppO2_min,lo |
582 | 3256 movlw ppo2_warning_low_default |
3257 bra divesets_ppo2_common | |
560 | 3258 |
3259 global divesets_ppo2_min_cc | |
3260 extern tPPO2MINCC | |
3261 divesets_ppo2_min_cc: | |
3262 lfsr FSR1,tPPO2MINCC | |
3263 call strcat_text | |
3264 movff char_I_ppO2_min_loop,lo | |
582 | 3265 movlw ppo2_warning_loop_default |
3266 bra divesets_ppo2_common | |
3267 | |
3268 global divesets_ppo2_max | |
3269 extern tPPO2Max | |
3270 extern tbar | |
3271 divesets_ppo2_max: | |
3272 lfsr FSR1,tPPO2Max | |
3273 call strcat_text | |
3274 movff char_I_ppO2_max,lo | |
3275 movlw ppo2_warning_high_default | |
560 | 3276 bra divesets_ppo2_common |
582 | 3277 |
3278 global divesets_ppo2_max_deco | |
3279 extern tPPO2DECO | |
3280 divesets_ppo2_max_deco: | |
3281 lfsr FSR1,tPPO2DECO | |
3282 call strcat_text | |
3283 movff char_I_ppO2_max_deco,lo | |
3284 movlw ppo2_warning_deco_default | |
3285 ;bra divesets_ppo2_common | |
3286 | |
3287 divesets_ppo2_common: | |
3288 movwf up ; Save default value | |
3289 clrf hi | |
3290 bsf leftbind | |
3291 output_16dp d'3' | |
3292 bcf leftbind | |
3293 lfsr FSR1,tbar | |
3294 call strcat_text | |
3295 movf up,W ; Default value | |
3296 cpfseq lo ; Current value | |
3297 bra divesets_ppo2_common2 ; Not default, add * | |
3298 return ; Default, Done. | |
3299 divesets_ppo2_common2: | |
3300 PUTC "*" | |
3301 return ; Done. | |
560 | 3302 |
3303 ;============================================================================= | |
582 | 3304 |
3305 global TFT_clear_warning_text | |
3306 TFT_clear_warning_text: | |
3307 btfss divemode ; in divemode? | |
3308 bra TFT_clear_warning_text2 ; No, setup for surface mode | |
3309 bcf FLAG_TFT_dive_warning_text_clear ; Clear flag | |
3310 btfsc alternative_divelayout | |
3311 bra TFT_clear_warning_text_2nd_row ; In Alt mode, clear only row 2 | |
3312 WIN_BOX_BLACK dm_warning_row, dm_warning_bot, dm_warning_column, dm_warning_rgt ; top, bottom, left, right | |
3313 return | |
3314 TFT_clear_warning_text2: | |
3315 WIN_BOX_BLACK surf_warning1_row, surf_warning2_row+.24, surf_warning1_column, surf_warning1_column+.76 ; top, bottom, left, right | |
3316 return | |
3317 | |
3318 global TFT_clear_warning_text_2nd_row | |
3319 TFT_clear_warning_text_2nd_row: | |
3320 btfss divemode ; in divemode? | |
3321 bra TFT_clear_warning_text_2nd_2 ; No, setup for surface mode | |
3322 bcf FLAG_TFT_dive_warning_text_clr2 ; Clear flag | |
3323 WIN_BOX_BLACK dm_warning2_row, dm_warning2_bot, dm_warning2_column, dm_warning2_rgt ; top, bottom, left, right | |
3324 return | |
3325 TFT_clear_warning_text_2nd_2: | |
3326 WIN_BOX_BLACK surf_warning2_row, surf_warning2_row+.24, surf_warning2_column, surf_warning2_column+.76 ; top, bottom, left, right | |
3327 return | |
3328 | |
3329 global TFT_fillup_with_spaces | |
3330 TFT_fillup_with_spaces: ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3331 movwf lo ; save max. string length into lo | |
3332 movf FSR2L,W ; Get current string length | |
3333 subwf lo,F ; lo-WREG | |
3334 btfsc STATUS,N ; longer then #lo already? | |
3335 return ; Yes, done. | |
3336 tstfsz lo ; Zero? | |
3337 bra TFT_fillup_with_spaces2 ; No. | |
3338 return ; Yes, done. | |
3339 TFT_fillup_with_spaces2: | |
3340 PUTC " " ; Add one space | |
3341 decfsz lo,F ; All done? | |
3342 bra TFT_fillup_with_spaces2 ; No, loop | |
3343 return ; Done. | |
3344 | |
3345 ;============================================================================= | |
3346 | |
0 | 3347 global TFT_desaturation_time |
3348 TFT_desaturation_time: | |
3349 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3350 tstfsz WREG ; Is there room for the warning? |
3351 return ; No | |
0 | 3352 STRCPY "Desat:" |
560 | 3353 movff int_O_desaturation_time+0,lo |
3354 movff int_O_desaturation_time+1,hi | |
3355 call convert_time ; converts hi:lo in minutes to hours (hi) and minutes (lo) | |
3356 bsf leftbind | |
3357 movf lo,W | |
3358 movff hi,lo | |
3359 movwf hi ; exchange lo and hi... | |
3360 output_8 ; Hours | |
3361 PUTC ':' | |
3362 movff hi,lo ; Minutes | |
0 | 3363 output_99x |
3364 bcf leftbind | |
582 | 3365 movlw surf_warning_length ; Only use surface string length |
3366 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3367 movlw .0 ; TODO - needed? | |
3368 movff WREG,buffer+11 ; TODO - needed? | |
560 | 3369 STRCAT_PRINT "" |
582 | 3370 bcf win_invert |
0 | 3371 return |
3372 | |
560 | 3373 |
0 | 3374 global TFT_nofly_time |
3375 TFT_nofly_time: | |
3376 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3377 tstfsz WREG ; Is there room for the warning? |
3378 return ; No | |
560 | 3379 movff char_I_altitude_wait,WREG |
3380 tstfsz WREG | |
3381 bra TFT_nofly_time_1 | |
0 | 3382 STRCPY "NoFly:" |
560 | 3383 bra TFT_nofly_time_2 |
3384 TFT_nofly_time_1: | |
3385 STRCPY "NoAlt:" | |
3386 TFT_nofly_time_2: | |
3387 movff int_O_nofly_time+0,lo | |
3388 movff int_O_nofly_time+1,hi | |
582 | 3389 call convert_time ; converts hi:lo in minutes to hours (hi) and minutes (lo) |
560 | 3390 bsf leftbind |
3391 movf lo,W | |
3392 movff hi,lo | |
582 | 3393 movwf hi ; exchange lo and hi... |
3394 output_8 ; Hours | |
560 | 3395 PUTC ':' |
582 | 3396 movff hi,lo ; Minutes |
0 | 3397 output_99x |
3398 bcf leftbind | |
582 | 3399 movlw surf_warning_length ; Only use surface string length |
3400 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3401 movlw .0 ; TODO - needed? | |
3402 movff WREG,buffer+11 ; TODO - needed? | |
3403 STRCAT_PRINT "" | |
3404 bcf win_invert | |
0 | 3405 return |
3406 | |
560 | 3407 ;============================================================================= |
3408 | |
582 | 3409 global TFT_warning_agf |
0 | 3410 TFT_warning_agf: |
3411 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3412 tstfsz WREG ; Is there room for the warning? |
3413 return ; No | |
3414 call TFT_attention_color | |
3415 STRCPY_TEXT tDiveaGF_active ; "aGF!" | |
3416 movlw dm_warning_length ; Divemode string length | |
3417 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3418 STRCAT_PRINT "" | |
3419 ;bcf win_invert | |
3420 ;return | |
560 | 3421 goto TFT_standard_color |
0 | 3422 |
582 | 3423 global TFT_warning_fallback |
560 | 3424 TFT_warning_fallback: ; Show fallback warning |
3425 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3426 tstfsz WREG ; Is there room for the warning? |
3427 return ; No | |
3428 call TFT_warnings_color | |
560 | 3429 STRCPY_TEXT tDiveFallback ; "Fallback!" |
582 | 3430 movlw dm_warning_length ; Divemode string length |
3431 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3432 STRCAT_PRINT "" | |
3433 goto TFT_standard_color ; and return... | |
560 | 3434 |
3435 | |
3436 global TFT_info_deco | |
582 | 3437 TFT_info_deco: ; show info when in decompression |
560 | 3438 rcall TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 3439 tstfsz WREG ; Is there room for the warning? |
3440 return ; NO - return | |
560 | 3441 movlw color_green ; YES - select green text color |
582 | 3442 call TFT_set_color ; set color |
3443 STRCPY_TEXT tDecoInfo ; write "Deco Zone" | |
3444 movlw dm_warning_length ; select Divemode string length | |
3445 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3446 STRCAT_PRINT "" ; print buffer | |
3447 goto TFT_standard_color ; and return... | |
3448 | |
3449 | |
3450 global TFT_warning_gf | |
3451 TFT_warning_gf: ; GF | |
560 | 3452 rcall TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 3453 tstfsz WREG ; Is there room for the warning? |
3454 return ; No | |
560 | 3455 movff int_O_gradient_factor+0,lo ; bank-safe copy gradient factor |
3456 movff int_O_gradient_factor+1,hi ; | |
582 | 3457 call TFT_color_code_gf ; Color-code Output |
3458 STRCPY "GF: " ; the two spaces are on purpose to align the output with other warnings' outputs | |
3459 bsf leftbind | |
560 | 3460 output_8 ; print value of lo only, int_O_gradient_factor is limited to 255 |
582 | 3461 PUTC "%" |
3462 movlw dm_warning_length ; Divemode string length | |
3463 btfss divemode ; In Divemode? | |
3464 movlw surf_warning_length ; No, use surface string length | |
3465 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3466 STRCAT_PRINT "" | |
3467 bcf leftbind | |
3468 bcf win_invert | |
3469 goto TFT_standard_color ; and return... | |
560 | 3470 |
3471 | |
3472 global TFT_warning_mbubbles | |
3473 TFT_warning_mbubbles: | |
3474 rcall TFT_warning_set_window ; sets the row and column for the current warning | |
582 | 3475 tstfsz WREG ; Is there room for the warning? |
3476 return ; NO | |
560 | 3477 call TFT_attention_color ; set attention color as default |
3478 movff char_O_deco_warnings,WREG ; bank-safe copy for deco warnings | |
3479 btfsc WREG,mbubble_warning ; are we in the microbubbles zone right now? | |
3480 call TFT_warnings_color ; YES - reconfigure to warning color | |
3481 STRCPY_TEXT tMicroBubbles | |
582 | 3482 movlw dm_warning_length ; divemode string length |
3483 btfss divemode ; in Divemode? | |
3484 movlw surf_warning_length ; NO - use surface string length | |
3485 rcall TFT_fillup_with_spaces ; fillup FSR2 with spaces (total string length in #WREG) | |
3486 STRCAT_PRINT "" | |
3487 goto TFT_standard_color ; and return... | |
560 | 3488 |
3489 | |
3490 global TFT_warning_outside | |
3491 TFT_warning_outside: | |
3492 rcall TFT_warning_set_window ; sets the row and column for the current warning | |
582 | 3493 tstfsz WREG ; is there room for the warning? |
3494 return ; NO | |
560 | 3495 call TFT_attention_color |
3496 movff char_O_deco_warnings,WREG ; bank-safe copy for deco warnings | |
3497 btfsc WREG,outside_warning ; are we outside the ZH-L16 model right now? | |
3498 call TFT_warnings_color ; YES - reconfigure to warning color | |
582 | 3499 STRCPY "X-ZHL16-X" |
3500 movlw dm_warning_length ; divemode string length | |
3501 btfss divemode ; in Divemode? | |
3502 movlw surf_warning_length ; NO - use surface string length | |
3503 rcall TFT_fillup_with_spaces ; fillup FSR2 with spaces (total string length in #WREG) | |
3504 STRCAT_PRINT "" | |
3505 goto TFT_standard_color ; and return... | |
560 | 3506 |
3507 | |
3508 global TFT_warning_gas_needs_warn | |
3509 global TFT_warning_gas_needs_att | |
3510 TFT_warning_gas_needs_warn: | |
3511 rcall TFT_warning_gas_needs_war_helper | |
3512 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3513 tstfsz WREG ; Is there room for the warning? |
3514 return ; No | |
560 | 3515 call TFT_warnings_color |
3516 bra TFT_warning_gas_needs_com | |
3517 TFT_warning_gas_needs_att: | |
3518 rcall TFT_warning_gas_needs_att_helper | |
3519 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3520 tstfsz WREG ; Is there room for the warning? |
3521 return ; No | |
560 | 3522 call TFT_attention_color |
3523 TFT_warning_gas_needs_com: | |
3524 STRCPY_TEXT tGasNeedsWarn ; "Gas Needs" | |
582 | 3525 movlw dm_warning_length ; Divemode string length |
3526 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3527 STRCAT_PRINT "" | |
3528 goto TFT_standard_color ; and return... | |
560 | 3529 |
3530 TFT_warning_gas_needs_war_helper: | |
3531 incf warning_counter,F ; increase counter | |
3532 btfsc gas_needs_warning ; is it a new warning? | |
3533 return ; NO - do not show the gas needs custom view again | |
3534 bsf gas_needs_warning ; YES - memorise it's an old now | |
3535 bra TFT_warning_gas_needs_helper_com | |
3536 TFT_warning_gas_needs_att_helper: | |
3537 incf warning_counter,F ; increase counter | |
3538 btfsc gas_needs_attention ; is it a new attention? | |
3539 return ; NO - do not show the gas needs custom view again | |
3540 bsf gas_needs_attention ; YES - memorise it's an old now | |
3541 TFT_warning_gas_needs_helper_com: | |
3542 movlw .12 ; customview number one below gas needs view | |
3543 movwf menupos3 ; set fake current view number | |
3544 bsf toggle_customview ; initiate toggle of customview -> gas needs view will be shown | |
582 | 3545 return |
560 | 3546 |
3547 | |
3548 global TFT_warning_IBCD | |
3549 TFT_warning_IBCD: | |
3550 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3551 tstfsz WREG ; Is there room for the warning? |
3552 return ; No | |
560 | 3553 call TFT_attention_color ; select attention color as default |
3554 STRCPY_TEXT tIBCD ; "IBCD N2He" | |
582 | 3555 movlw dm_warning_length ; Divemode string length |
3556 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3557 STRCAT_PRINT "" | |
3558 goto TFT_standard_color ; and return... | |
3559 | |
3560 | |
3561 global TFT_warning_sensor_disagree | |
3562 TFT_warning_sensor_disagree: ; Show sensor disagree warning | |
560 | 3563 rcall TFT_warning_sensor_dis_helper |
145
e3ac5b2021bc
NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents:
139
diff
changeset
|
3564 rcall TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 3565 tstfsz WREG ; Is there room for the warning? |
3566 return ; No | |
3567 call TFT_warnings_color | |
3568 STRCPY_TEXT tSensorDisagree ; "Sensors<>" | |
3569 movlw dm_warning_length ; Divemode string length | |
3570 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3571 STRCAT_PRINT "" | |
3572 goto TFT_standard_color ; and return... | |
560 | 3573 |
3574 TFT_warning_sensor_dis_helper: | |
3575 btfsc sensor_warning ; is it a new warning? | |
3576 return ; NO - do not show the gas needs custom view again | |
3577 bsf sensor_warning ; YES - memories it's an old warning now | |
3578 clrf menupos3 ; set fake current view number | |
3579 bsf toggle_customview ; initiate toggle of customview -> sensor view will be shown | |
3580 return | |
582 | 3581 |
560 | 3582 ;============================================================================= |
582 | 3583 |
3584 TFT_warning_set_window: ; Sets the row and column for the current warning | |
3585 ; ignore warning (now)? | |
3586 decf warning_counter,W ; -1 | |
3587 bcf STATUS,C | |
3588 btfss alternative_divelayout ; In alt mode, do not divide... | |
3589 rrcf WREG,W ; (warning_counter-1)/2 | |
3590 cpfseq warning_page | |
3591 retlw .255 ; WREG <> 0 -> Warning window not defined | |
3592 call TFT_standard_color | |
3593 btfss divemode ; in divemode? | |
3594 bra TFT_warning_set_window3 ; No, setup for surface mode | |
3595 btfss alternative_divelayout | |
3596 bra TFT_warning_set_window3a ; standard layout | |
3597 bra TFT_warning_set_window2a ; alternative layout (Only lower row used) | |
3598 TFT_warning_set_window3a: | |
3599 btfss warning_counter,0 ; Toggle with each warning | |
3600 bra TFT_warning_set_window2 | |
3601 WIN_SMALL dm_warning1_column, dm_warning1_row | |
3602 bcf second_row_warning ; =1: The second row contains a warning | |
3603 retlw .0 ; WREG=0 -> Warning window defined | |
0 | 3604 TFT_warning_set_window2: |
582 | 3605 bsf second_row_warning ; =1: The second row contains a warning |
3606 TFT_warning_set_window2a: | |
3607 WIN_SMALL dm_warning2_column, dm_warning2_row | |
3608 retlw .0 ; WREG=0 -> Warning window defined | |
0 | 3609 TFT_warning_set_window3: |
582 | 3610 btfss warning_counter,0 ; Toggle with each warning |
3611 bra TFT_warning_set_window4 | |
3612 WIN_SMALL surf_warning1_column,surf_warning1_row | |
3613 bcf second_row_warning ; =1: The second row contains a warning | |
3614 retlw .0 ; WREG=0 -> Warning window defined | |
0 | 3615 TFT_warning_set_window4: |
582 | 3616 WIN_SMALL surf_warning2_column,surf_warning2_row |
3617 bsf second_row_warning ; =1: The second row contains a warning | |
3618 retlw .0 ; WREG=0 -> Warning window defined | |
560 | 3619 |
309
efb53af0d62a
VSIbar #1: layout position changes
janos_kovacs <kovjanos@gmail.com>
parents:
307
diff
changeset
|
3620 |
0 | 3621 global TFT_update_batt_percent_divemode |
3622 TFT_update_batt_percent_divemode: | |
3623 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3624 tstfsz WREG ; Is there room for the warning? |
3625 return ; No | |
3626 movff batt_percent,lo ; Get battery percent | |
3627 call TFT_color_code_battery ; Color-code battery percent | |
3628 STRCPY "Batt:" | |
0 | 3629 bsf leftbind |
3630 output_8 | |
3631 bcf leftbind | |
582 | 3632 PUTC "%" |
3633 movlw dm_warning_length ; Divemode string length | |
3634 btfss divemode ; In Divemode? | |
3635 movlw surf_warning_length ; No, use surface string length | |
3636 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3637 STRCAT_PRINT "" | |
3638 bcf win_invert | |
560 | 3639 goto TFT_standard_color ; and return... |
3640 | |
3641 | |
582 | 3642 global TFT_gf_mask ; Setup Mask |
0 | 3643 TFT_gf_mask: |
582 | 3644 ; The mask |
3645 call TFT_divemask_color | |
3646 WIN_TINY dm_custom_gf_title_col1, dm_custom_gf_title_row | |
3647 STRCPY_TEXT_PRINT tGFactors | |
3648 WIN_TINY dm_custom_gf_title_col2, dm_custom_gf_title_row | |
3649 STRCPY_TEXT_PRINT taGFactors | |
3650 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row | |
3651 STRCPY_TEXT_PRINT tGFInfo | |
3652 ; Show GF (Static) | |
3653 call TFT_disabled_color | |
3654 btfss use_agf | |
3655 call TFT_standard_color | |
3656 WIN_STD dm_custom_gf_column, dm_custom_gf_row | |
3657 bsf leftbind | |
3658 movff opt_GF_low,lo | |
3659 output_8 | |
3660 PUTC "/" | |
3661 movff opt_GF_high,lo | |
3662 output_8 | |
3663 STRCAT_PRINT "" | |
3664 ; Show aGF (Static) | |
3665 call TFT_standard_color | |
3666 TSTOSS opt_enable_aGF ; =1: aGF can be selected underwater | |
3667 bra TFT_gf_mask2 ; Show "---" instead | |
3668 btfss use_agf | |
3669 call TFT_disabled_color | |
3670 WIN_STD dm_custom_agf_column, dm_custom_agf_row | |
3671 movff opt_aGF_low,lo | |
3672 output_8 | |
3673 PUTC "/" | |
3674 movff opt_aGF_high,lo | |
3675 output_8 | |
3676 STRCAT_PRINT "" | |
3677 bcf leftbind | |
3678 goto TFT_standard_color ; and return... | |
0 | 3679 |
3680 TFT_gf_mask2: | |
582 | 3681 WIN_STD dm_custom_agf_column+.10, dm_custom_agf_row |
3682 STRCPY_PRINT "---" | |
3683 bcf leftbind | |
3684 return | |
3685 | |
3686 | |
3687 global TFT_gf_mask_cGF ; Setup Mask | |
333
14b466f66a7f
Extend the Ceiling custom-view with ppO2 and current GF
Janos Kovacs <kovjanos@gmail.com>
parents:
332
diff
changeset
|
3688 TFT_gf_mask_cGF: |
582 | 3689 ; The mask |
3690 call TFT_divemask_color | |
3691 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row | |
3692 STRCPY_TEXT_PRINT tGFInfo | |
3693 goto TFT_standard_color ; and return... | |
3694 | |
3695 global TFT_gf_info ; Show GF informations | |
0 | 3696 TFT_gf_info: |
582 | 3697 WIN_STD dm_custom_currentgf_column, dm_custom_currentgf_row |
3698 movff int_O_gradient_factor+0,lo ; gradient factor absolute (Non-GF model) | |
560 | 3699 movff int_O_gradient_factor+1,hi |
582 | 3700 call TFT_color_code_gf ; Color-code Output |
3701 output_8 ; print lo only, int_O_gradient_factor is limited to 255 | |
3702 STRCAT_PRINT "%" | |
3703 return | |
3704 | |
3705 | |
3706 global TFT_battinfo_tissues_clock_mask ; Setup Mask | |
471
9edb1359ce43
NEW: New Customview 11 in dive mode shows ppO2, EAD/END and CNS
heinrichsweikamp
parents:
466
diff
changeset
|
3707 TFT_battinfo_tissues_clock_mask: |
582 | 3708 ; The mask |
3709 ; Put three columns at HUD positions | |
3710 call TFT_divemask_color | |
3711 btfsc FLAG_apnoe_mode ; In Apnoe mode? | |
3712 bra TFT_battinfo_tissues_clock_mask2 ; Yes | |
3713 btfsc FLAG_gauge_mode ; In Gauge mode? | |
3714 bra TFT_battinfo_tissues_clock_mask2 ; Yes | |
3715 WIN_TINY dm_custom_tissue_title_column, dm_custom_tissue_title_row | |
3716 STRCPY_TEXT_PRINT tDiveTissues | |
3717 TFT_battinfo_tissues_clock_mask2: ; Show only clock | |
3718 WIN_TINY dm_custom_ead_column, dm_custom_eadend_title_row | |
3719 STRCPY_TEXT_PRINT tBatteryV ; "Battery: " | |
3720 WIN_TINY dm_custom_clock_column, dm_custom_clock_title_row | |
3721 STRCPY_TEXT_PRINT tDiveClock | |
3722 goto TFT_standard_color ; and return... | |
3723 | |
3724 global TFT_battinfo_tissues_clock ; Show EAD/END, Tissues and clock | |
471
9edb1359ce43
NEW: New Customview 11 in dive mode shows ppO2, EAD/END and CNS
heinrichsweikamp
parents:
466
diff
changeset
|
3725 TFT_battinfo_tissues_clock: |
582 | 3726 ; Update clock and date |
3727 WIN_SMALL dm_custom_clock_column, dm_custom_clock_row | |
3728 call TFT_clock2 ; print clock | |
3729 | |
3730 ; Show Battery info | |
3731 WIN_SMALL dm_custom_ead_column, dm_custom_ead_row | |
3732 movff batt_percent,lo ; Get battery percent | |
3733 call TFT_color_code_battery ; Color-code battery percent | |
3734 bsf leftbind | |
3735 output_8 | |
3736 bcf leftbind | |
3737 STRCAT "% " | |
3738 movlw 0x00 | |
3739 movff WREG,buffer+4 ; Only "xxx%" | |
3740 STRCAT_PRINT "" | |
3741 bcf win_invert | |
3742 call TFT_standard_color | |
3743 WIN_SMALL dm_custom_end_column, dm_custom_end_row | |
3744 movff batt_voltage+0,lo | |
3745 movff batt_voltage+1,hi | |
3746 bsf leftbind | |
3747 output_16dp .2 | |
3748 bcf leftbind | |
3749 PUTC 'V' | |
3750 movff buffer+5,buffer+4 | |
3751 movlw 0x00 | |
3752 movff WREG,buffer+5 ; Only "x.yzV" | |
3753 STRCAT_PRINT "" | |
3754 | |
3755 btfsc FLAG_apnoe_mode ; In Apnoe mode? | |
3756 return ; Yes, done. | |
3757 btfsc FLAG_gauge_mode ; In Gauge mode? | |
3758 return ; Yes, done. | |
3759 | |
3760 ; Show tissue diagram | |
3761 call TFT_divemask_color | |
3762 WIN_TINY dm_custom_tissue_N2_column, dm_custom_tissue_N2_row | |
3763 STRCPY_TEXT_PRINT tN2 | |
3764 WIN_TINY dm_custom_tissue_He_column, dm_custom_tissue_He_row | |
3765 STRCPY_TEXT_PRINT tHe | |
3766 bra DISP_tissue_saturation_graph ; Show char_O_tissue_N2_saturation and char_O_tissue_He_saturation and return... | |
3767 | |
3768 | |
3769 global TFT_pscr_info_mask | |
3770 TFT_pscr_info_mask: ; Show pSCR-ppO2, drop and lung ratio mask | |
3771 rcall TFT_mask_ppo2 | |
3772 call TFT_divemask_color | |
3773 WIN_TINY dm_custom_pscr_text_drop_column, dm_custom_pscr_text_row | |
3774 STRCPY_TEXT_PRINT tPSCR_O2_drop | |
3775 WIN_TINY dm_custom_pscr_text_ratio_column, dm_custom_pscr_text_row | |
3776 STRCPY_TEXT_PRINT tPSCR_lungratio | |
3777 goto TFT_standard_color ; and return... | |
3778 | |
3779 global TFT_pscr_info ; Show pSCR-ppO2, drop and lung ratio | |
482
c0ee33f1f399
New customview #12 for PSCR mode shows ppO2, O2 drop and lung ratio
heinrichsweikamp
parents:
480
diff
changeset
|
3780 TFT_pscr_info: |
582 | 3781 ;show ppO2 |
3782 WIN_MEDIUM dm_custom_ceiling_ppo2_val_col, dm_custom_ceiling_value_row | |
560 | 3783 movff int_O_pSCR_ppO2+0,lo ; copy pSCR ppO2 to hi:lo |
3784 movff int_O_pSCR_ppO2+1,hi | |
582 | 3785 call TFT_color_code_ppo2 ; color-code output |
560 | 3786 bsf leftbind |
582 | 3787 output_16dp .3 ; x.xx bar |
3788 bcf leftbind | |
3789 STRCAT_PRINT "" | |
3790 ; Show Drop | |
3791 WIN_STD dm_custom_pscr_drop_column,dm_custom_pscr_drop_row | |
560 | 3792 call TFT_standard_color |
3793 movff char_I_PSCR_drop,lo | |
582 | 3794 bsf leftbind |
3795 output_8 | |
3796 STRCAT_PRINT "%" | |
3797 ; Show lung ratio | |
3798 WIN_STD dm_custom_pscr_ratio_column,dm_custom_pscr_ratio_row | |
3799 movff char_I_PSCR_lungratio,lo | |
3800 bsf leftbind | |
3801 STRCPY "1/" | |
3802 output_8 | |
3803 STRCAT_PRINT "" | |
3804 bcf leftbind | |
3805 return | |
560 | 3806 |
3807 | |
3808 global TFT_gas_needs_mask | |
3809 TFT_gas_needs_mask: | |
582 | 3810 call TFT_divemask_color |
3811 WIN_TINY dm_custom_dyn_gas_mask_column-.10,dm_custom_dyn_gas_mask_row | |
3812 STRCPY_TEXT_PRINT tGasNeedsBar ; "Gas Needs (bar)" | |
560 | 3813 goto TFT_standard_color ; and return... |
3814 | |
3815 global TFT_gas_needs | |
582 | 3816 TFT_gas_needs: ; LIMITATION: there is only space for 4 gases on the screen - if 5 gases |
3817 bsf leftbind ; have a pres_need > 0, then only the first 4 will be shown! | |
560 | 3818 clrf up |
582 | 3819 WIN_SMALL dm_custom_dyn_gas_column1+.5,dm_custom_dyn_gas_row1 |
560 | 3820 call TFT_gas_needs_helper |
582 | 3821 WIN_SMALL dm_custom_dyn_gas_column1+.5,dm_custom_dyn_gas_row2 |
560 | 3822 call TFT_gas_needs_helper |
582 | 3823 WIN_SMALL dm_custom_dyn_gas_column2+.5,dm_custom_dyn_gas_row1 |
3824 call TFT_gas_needs_helper | |
3825 WIN_SMALL dm_custom_dyn_gas_column2+.5,dm_custom_dyn_gas_row2 | |
3826 call TFT_gas_needs_helper | |
560 | 3827 bcf leftbind |
3828 return | |
3829 | |
3830 TFT_gas_needs_helper: | |
3831 call TFT_standard_color | |
3832 movlw .5 ; number of gases | |
3833 cpfslt up ; check if all gases have been processed | |
3834 bra TFT_gas_needs_helper_1 ; yes -> clear display area | |
582 | 3835 movf up,W ; no -> get gas number and check if need of that gas is > 0 |
560 | 3836 rlncf WREG,W ; multipy by 2 |
582 | 3837 lfsr FSR1,int_O_tank_pres_need+1 ; read HIGH(int_O_tank_pres_need[up]) |
3838 movff PLUSW1,hi ; copy to temp storage hi | |
560 | 3839 btfss hi,int_is_zero ; check flag for pres_need == 0 |
3840 bra TFT_gas_needs_helper_2 ; no -> print gas type and pressure needed | |
3841 incf up,F ; yes -> increment to next gas... | |
3842 bra TFT_gas_needs_helper ; ...and try the next gas | |
3843 TFT_gas_needs_helper_1: ; no gases to show anymore, clear display area from potential remains of last invocation | |
582 | 3844 STRCAT_PRINT " ---- " ; overwrite outdated stuff if screen position is not needed |
560 | 3845 return |
3846 TFT_gas_needs_helper_2: ; output gas type and pressure needed | |
582 | 3847 movf up,W ; get gas number (0-4) to WREG |
3848 lfsr FSR1,opt_gas_O2_ratio ; read opt_gas_O2_ratio[WREG] | |
3849 movff PLUSW1,lo ; copy result to lo | |
3850 movf up,W ; get gas number (0-4) to WREG ; SHOULD NOT BE NEEDED AS movff SHOULD NOT ALTER wreg | |
3851 lfsr FSR1,opt_gas_He_ratio ; read opt_gas_He_ratio[WREG] | |
3852 movff PLUSW1,hi ; copy result to hi | |
3853 call customview_show_mix ; print "Air", "O2", "21/35", etc. | |
560 | 3854 STRCAT ":" |
582 | 3855 movf up,W ; get gas number (0-4) to WREG |
560 | 3856 rlncf WREG,W ; multipy by 2 |
582 | 3857 lfsr FSR1,int_O_tank_pres_need+0 ; read lower part of integer |
3858 movff PLUSW1,lo | |
3859 movf up,W ; get gas number (0-4) to WREG ; SHOULD NOT BE NEEDED AS movff SHOULD NOT ALTER wreg | |
560 | 3860 rlncf WREG,W ; multipy by 2 |
582 | 3861 lfsr FSR1,int_O_tank_pres_need+1 ; read upper part of integer |
3862 movff PLUSW1,hi | |
3863 btfsc hi,int_attention_flag ; check if attention flag is set (pres_need > pres_fill * threshold) | |
560 | 3864 call TFT_attention_color ; yes, print gas need in yellow |
582 | 3865 btfsc hi,int_warning_flag ; check if warning flag is set (pres_need > pres_fill) |
3866 call TFT_warnings_color ; yes, print gas need in red | |
560 | 3867 movff int_O_tank_pres_need+1,WREG ; get HIGH(int_O_tank_pres_need[0]) which hold flag for invalid data |
3868 btfsc WREG,int_invalid_flag ; check if invalid data flag is set | |
3869 call TFT_disabled_color ; yes, print gas need in disabled color | |
582 | 3870 bcf hi,int_attention_flag ; clear attention flag for attention color |
3871 bcf hi,int_warning_flag ; clear warning flag for warning color | |
560 | 3872 bcf hi,int_invalid_flag ; clear flag for invalid data (will actually only be set with 1st gas) |
582 | 3873 output_16_3 ; limit to 999 and display only (0-999) |
560 | 3874 STRCAT_PRINT " " ; adds a space to overwrite any potential remains of earlier outputs |
3875 incf up,F ; increment to next gas | |
582 | 3876 goto TFT_standard_color ; and return... |
3877 | |
3878 | |
3879 global TFT_mask_ppo2 ; helper function for several custom views | |
560 | 3880 TFT_mask_ppo2: |
582 | 3881 call TFT_divemask_color |
3882 btfss FLAG_ccr_mode ; in CCR mode? | |
3883 bra TFT_mask_ppo2a ; NO - continue checking for pSCR and OC | |
3884 btfsc is_bailout ; in bailout? | |
3885 bra TFT_mask_ppo2b ; YES | |
3886 WIN_TINY dm_custom_ceiling_ppo2_col_dil,dm_custom_ceiling_text_row ; tuned position for longer text | |
3887 STRCPY_TEXT_PRINT tppO2Dil ; print "ppO2(Dil)" | |
3888 goto TFT_standard_color ; and return... | |
560 | 3889 TFT_mask_ppo2a: |
582 | 3890 btfss FLAG_pscr_mode ; in pSCR mode? |
3891 bra TFT_mask_ppo2b ; NO - continue with OC mode (or bailout) | |
3892 btfsc is_bailout ; in bailout? | |
3893 bra TFT_mask_ppo2b ; YES | |
3894 WIN_TINY dm_custom_ceiling_ppo2_col_dil,dm_custom_ceiling_text_row ; tuned position for longer text | |
3895 STRCPY_TEXT_PRINT tppO2Mix ; print "ppO2(Mix)" | |
3896 goto TFT_standard_color ; and return... | |
560 | 3897 TFT_mask_ppo2b: ; OC mode or bailout |
582 | 3898 WIN_TINY dm_custom_ceiling_ppo2_column, dm_custom_ceiling_text_row ; normal position |
3899 STRCPY_TEXT_PRINT tppO2 ; in all other modes | |
3900 goto TFT_standard_color ; and return... | |
3901 | |
3902 | |
560 | 3903 global TFT_display_pure_ppo2 ; show ppO2 of the pure gas - helper function for several custom views |
3904 TFT_display_pure_ppo2: | |
582 | 3905 WIN_MEDIUM dm_custom_ceiling_ppo2_val_col, dm_custom_ceiling_value_row |
560 | 3906 movff int_O_pure_ppO2+0,lo ; copy ppO2 of the pure gas to hi:lo |
3907 movff int_O_pure_ppO2+1,hi | |
582 | 3908 call TFT_color_code_ppo2 ; color-code output |
560 | 3909 bsf leftbind |
582 | 3910 output_16dp .3 ; x.xx bar |
3911 bcf leftbind | |
3912 STRCAT_PRINT "" | |
560 | 3913 goto TFT_standard_color ; and return... |
582 | 3914 |
3915 | |
3916 global TFT_ppo2_ead_end_cns_mask ; Show ppO2, END/EAD and CNS mask | |
560 | 3917 TFT_ppo2_ead_end_cns_mask: |
582 | 3918 rcall TFT_mask_ppo2 |
3919 call TFT_divemask_color | |
3920 WIN_TINY dm_custom_ead_column, dm_custom_eadend_title_row | |
3921 STRCPY_TEXT_PRINT tDiveEAD_END | |
3922 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row | |
3923 STRCPY_TEXT_PRINT tCNS2 | |
3924 goto TFT_standard_color ; and return... | |
3925 | |
3926 | |
3927 global TFT_ppo2_ead_end_cns ; Show ppO2, END/EAD and CNS | |
471
9edb1359ce43
NEW: New Customview 11 in dive mode shows ppO2, EAD/END and CNS
heinrichsweikamp
parents:
466
diff
changeset
|
3928 TFT_ppo2_ead_end_cns: |
582 | 3929 ;show ppO2 |
3930 rcall TFT_display_pure_ppo2 ; show ppO2 of the pure gas | |
3931 ; Show END/EAD | |
3932 WIN_SMALL dm_custom_ead_column, dm_custom_ead_row | |
3933 STRCPY_TEXT tEAD ; EAD: | |
3934 movff char_O_EAD,lo | |
3935 rcall TFT_end_ead_common ; print "lo m" (or ft) and limit to 8 chars | |
3936 WIN_SMALL dm_custom_end_column, dm_custom_end_row | |
3937 STRCPY_TEXT tEND ; END: | |
3938 movff char_O_END,lo | |
3939 rcall TFT_end_ead_common ; print "lo m" (or ft) and limit to 8 chars | |
3940 ; Show CNS | |
3941 WIN_STD dm_custom_currentgf_column, dm_custom_currentgf_row | |
3942 movff int_O_CNS_fraction+0,lo | |
3943 movff int_O_CNS_fraction+1,hi | |
3944 call TFT_color_code_cns ; Color-code CNS output | |
3945 bsf leftbind | |
3946 output_16_3 ; Displays only 0...999 | |
3947 bcf leftbind | |
3948 STRCAT_PRINT "%" | |
3949 goto TFT_standard_color ; and return... | |
3950 | |
3951 TFT_end_ead_common: ; print "lo m" (or ft) and limit to 8 chars | |
3952 bsf leftbind | |
3953 TSTOSS opt_units ; 0=Meters, 1=Feets | |
0 | 3954 bra TFT_end_ead_common_metric |
3955 ;TFT_end_ead_common_imperial: | |
582 | 3956 movf lo,W ; With lo in m |
3957 mullw .100 ; PRODL:PRODH = mbar/min | |
0 | 3958 movff PRODL,lo |
3959 movff PRODH,hi | |
582 | 3960 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
3961 output_16_3 | |
3962 STRCAT_TEXT tFeets | |
3963 clrf WREG | |
3964 movff WREG,buffer+.8 ; limit string length to 8 | |
3965 bra TFT_end_ead_common_exit | |
0 | 3966 TFT_end_ead_common_metric: |
582 | 3967 output_8 |
3968 STRCAT_TEXT tMeters | |
0 | 3969 TFT_end_ead_common_exit: |
582 | 3970 bcf leftbind |
3971 movlw .8 | |
3972 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3973 STRCAT_PRINT "" | |
3974 return | |
3975 | |
3976 | |
3977 global TFT_sensor_check_mask ; show ppO2 of O2 and Diluent mask | |
413
12e85930d95c
NEW: New Customview shows ppO2(O2) and ppO2(Diluent) during CCR mode
heinrichsweikamp
parents:
412
diff
changeset
|
3978 TFT_sensor_check_mask: |
582 | 3979 call TFT_divemask_color |
3980 WIN_TINY dm_custom_s_check_text_column, dm_custom_s_check_text_row | |
3981 STRCPY_TEXT_PRINT tSensorCheck | |
3982 WIN_TINY dm_custom_ppO2_text_column, dm_custom_s_check_text_row | |
3983 STRCPY_TEXT_PRINT tppO2O2 | |
3984 WIN_TINY dm_custom_ppDil_text_column, dm_custom_s_check_text_row | |
3985 STRCPY_TEXT_PRINT tppO2Dil | |
3986 goto TFT_standard_color ; and return... | |
3987 | |
3988 global TFT_sensor_check ; show ppO2 of O2 and Diluent | |
413
12e85930d95c
NEW: New Customview shows ppO2(O2) and ppO2(Diluent) during CCR mode
heinrichsweikamp
parents:
412
diff
changeset
|
3989 TFT_sensor_check: |
582 | 3990 ; Show ppO2 of O2 in this depth |
3991 WIN_MEDIUM dm_custom_s_check_ppo2_o2_column, dm_custom_s_check_value_row | |
560 | 3992 movff int_O_O2_ppO2+0,lo ; copy ppO2 of pure O2 to hi:lo |
3993 movff int_O_O2_ppO2+1,hi | |
582 | 3994 call TFT_color_code_ppo2 ; color-code output |
560 | 3995 bsf leftbind |
582 | 3996 output_16dp .3 ; x.xx bar |
3997 bcf leftbind | |
3998 STRCAT_PRINT "" | |
3999 ; Show ppO2 of the diluent in this depth | |
4000 WIN_MEDIUM dm_custom_s_check_ppo2_dil_col, dm_custom_s_check_value_row | |
560 | 4001 movff int_O_pure_ppO2+0,lo ; copy ppO2 of pure gas to hi:lo |
4002 movff int_O_pure_ppO2+1,hi | |
582 | 4003 call TFT_color_code_ppo2 ; color-code output |
560 | 4004 bsf leftbind |
582 | 4005 output_16dp .3 ; x.xx bar |
4006 bcf leftbind | |
4007 STRCAT_PRINT "" | |
560 | 4008 goto TFT_standard_color ; and return... |
4009 | |
4010 ;============================================================================= | |
413
12e85930d95c
NEW: New Customview shows ppO2(O2) and ppO2(Diluent) during CCR mode
heinrichsweikamp
parents:
412
diff
changeset
|
4011 |
582 | 4012 global TFT_surface_lastdive |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4013 TFT_surface_lastdive: |
582 | 4014 call TFT_divemask_color |
4015 WIN_TINY surf_gaslist_column,surf_gaslist_row+.5 | |
4016 STRCAT_TEXT_PRINT tLastDive ; Last Dive: | |
4017 WIN_TINY surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1)+.5 | |
4018 STRCAT_TEXT_PRINT tDivetime ; Divetime | |
4019 WIN_TINY surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2)+.5 | |
4020 STRCAT_TEXT_PRINT tMaxDepth ; Max. Depth | |
4021 call TFT_standard_color | |
4022 WIN_SMALL surf_gaslist_column+.48,surf_gaslist_row | |
4023 | |
560 | 4024 movff int_O_desaturation_time+0,lo ; bank-safe copies |
4025 movff int_O_desaturation_time+1,WREG | |
4026 iorwf lo,W ; check if desaturation time is zero | |
582 | 4027 bz TFT_surface_lastdive_1 ; YES - show last dive time |
560 | 4028 movff surface_interval+0,lo ; NO - show dive interval |
4029 movff surface_interval+1,hi | |
582 | 4030 call convert_time ; lo=mins, hi=hours |
560 | 4031 movf hi,W |
4032 movff lo,hi | |
582 | 4033 movwf lo ; exchange lo and hi |
4034 bsf leftbind | |
560 | 4035 output_99x |
582 | 4036 PUTC 'h' |
560 | 4037 movff hi,lo |
4038 output_99x | |
4039 STRCAT_PRINT "m " | |
4040 bra TFT_surface_lastdive_2 | |
4041 TFT_surface_lastdive_1: | |
582 | 4042 movff lastdive_time+0,xC+0 |
4043 movff lastdive_time+1,xC+1 | |
4044 movff lastdive_time+2,xC+2 | |
4045 movff lastdive_time+3,xC+3 | |
4046 movlw LOW .3600 | |
4047 movwf xB+0 | |
4048 movlw HIGH .3600 | |
4049 movwf xB+1 ; One day = 3600s | |
4050 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
4051 ;xC+0:xC+1 -> Full hours | |
4052 movff xC+1,xA+1 | |
4053 movff xC+0,xA+0 | |
4054 clrf xB+1 | |
4055 movlw .24 | |
4056 movwf xB+0 | |
4057 call div16x16 ;xA/xB=xC with xA+0 as remainder | |
4058 movff xC+0,lo | |
4059 movff xC+1,hi ; Full days | |
4060 bsf leftbind | |
4061 output_16 | |
4062 PUTC "d" | |
4063 movff xA+0,lo ; Full hours | |
4064 output_8 | |
560 | 4065 STRCAT_PRINT "h " |
4066 TFT_surface_lastdive_2: | |
582 | 4067 WIN_SMALL surf_gaslist_column+.48,surf_gaslist_row+(surf_gaslist_spacing*.1) |
4068 movff lastdive_duration+0,lo | |
4069 movff lastdive_duration+1,hi | |
4070 output_16 ; divetime minutes | |
4071 PUTC ":" | |
4072 movff lastdive_duration+2,lo | |
4073 output_99x ; divetime seconds | |
4074 STRCAT_PRINT "" | |
4075 WIN_SMALL surf_gaslist_column+.48,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
4076 movff lastdive_maxdepth+0,lo | |
4077 movff lastdive_maxdepth+1,hi | |
4078 TSTOSS opt_units ; 0=Meters, 1=Feets | |
4079 bra TFT_surface_lastdive_metric | |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4080 ;imperial |
582 | 4081 rcall convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
4082 output_16_3 ; limit to 999 and display only (0-999) | |
4083 STRCAT_TEXT tFeets1 | |
4084 bra TFT_surface_lastdive2 | |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4085 |
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4086 TFT_surface_lastdive_metric: |
582 | 4087 bsf ignore_digit5 ; no cm... |
4088 movlw d'1' ; +1 | |
4089 movff WREG,ignore_digits ; no 1000m | |
4090 output_16dp .3 ; xxx.y | |
4091 STRCAT_TEXT tMeters | |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4092 TFT_surface_lastdive2: |
582 | 4093 STRCAT_PRINT "" |
4094 bcf leftbind | |
4095 return ; Done. | |
560 | 4096 |
4097 ;============================================================================= | |
582 | 4098 |
4099 global TFT_surface_tissues | |
4100 TFT_surface_tissues: ; Show Tissue diagram in surface mode | |
4101 WIN_SMALL surf_tissue_N2_column,surf_tissue_N2_row | |
4102 STRCPY_TEXT_PRINT tN2 | |
4103 WIN_SMALL surf_tissue_He_column,surf_tissue_He_row | |
4104 STRCPY_TEXT_PRINT tHe | |
4105 | |
4106 movlw color_deepblue | |
4107 call TFT_set_color ; Make this configurable? | |
4108 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.29,.29 | |
4109 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.37,.37 | |
4110 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.45,.45 | |
4111 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.53,.53 | |
4112 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.61,.61 | |
4113 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.69,.69 | |
4114 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.77,.77 | |
4115 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.85,.85 | |
4116 WIN_FRAME_STD surf_tissue_diagram_top, surf_tissue_diagram_bottom, surf_tissue_diagram_left, surf_tissue_diagram_right ; outer frame | |
0 | 4117 |
4118 movlw .1 | |
582 | 4119 movff WREG,win_height ; row bottom (0-239) |
4120 | |
4121 ;---- Draw N2 Tissues ---------------------------------------------------- | |
4122 | |
4123 movlw surf_tissue_diagram_left+.4 ; start position for N2 bars | |
4124 movff WREG,win_leftx2 ; column left (0-159) | |
560 | 4125 movlw surf_tissue_diagram_right - surf_tissue_diagram_left - .4 ; max width for N2 bars |
582 | 4126 movff WREG,win_width |
0 | 4127 |
4128 lfsr FSR2, char_O_tissue_N2_saturation | |
4129 movlw d'16' | |
582 | 4130 movwf lo ; 16 tissues |
4131 clrf hi ; row offset | |
0 | 4132 surf_tissue_saturation_graph_N2: |
582 | 4133 movlw surf_tissue_diagram_top+.23 ; surface mode |
4134 addwf hi,W | |
4135 movff WREG,win_top ; row top (0-239) | |
4136 rcall surf_tissue_saturation_loop ; show one tissue | |
4137 decfsz lo,F | |
0 | 4138 bra surf_tissue_saturation_graph_N2 |
4139 | |
582 | 4140 ;---- Draw He Tissues ---------------------------------------------------- |
4141 | |
560 | 4142 movlw surf_tissue_diagram_left + .24 ; start position for He bars (.15 without x2) |
582 | 4143 movff WREG,win_leftx2 ; column left (0-159) |
560 | 4144 movlw surf_tissue_diagram_right - surf_tissue_diagram_left - .24 ; max width for He bars |
582 | 4145 movff WREG,win_width |
4146 | |
0 | 4147 lfsr FSR2, char_O_tissue_He_saturation |
4148 movlw d'16' | |
582 | 4149 movwf lo ; 16 tissues |
4150 clrf hi ; row offset | |
0 | 4151 surf_tissue_saturation_graph_He: |
582 | 4152 movlw surf_tissue_diagram_top+.23+.57 ; surface mode |
4153 addwf hi,W | |
4154 movff WREG,win_top ; row top (0-239) | |
4155 rcall surf_tissue_saturation_loop ; show one tissue | |
4156 decfsz lo,F | |
0 | 4157 bra surf_tissue_saturation_graph_He |
582 | 4158 |
4159 WIN_SMALL surf_tissue_He_column+.22,surf_tissue_He_row ; position in-between tissue bars | |
560 | 4160 movff int_O_CNS_fraction+0,lo |
4161 movff int_O_CNS_fraction+1,hi | |
582 | 4162 call TFT_color_code_cns |
4163 STRCPY_TEXT tCNS2 ; CNS: | |
560 | 4164 bsf leftbind |
582 | 4165 output_16_3 ; Displays only 0...999 |
560 | 4166 bcf leftbind |
4167 STRCAT_PRINT "%" | |
582 | 4168 goto TFT_standard_color ; and return... |
0 | 4169 |
4170 surf_tissue_saturation_loop: | |
582 | 4171 call TFT_standard_color |
4172 movlw .2 ; row spacing | |
4173 addwf hi,F | |
4174 movf POSTINC2,W ; get tissue load | |
560 | 4175 bcf WREG,7 ; clear flag bit for sat/desat info (not used in surface mode) |
4176 rlncf WREG,W ; multiply with 2 (previously cleared bit 7 will be rotated to bit 0) | |
4177 incf WREG,W ; add 1 for a minimum visible bar (He-bars could be invisible else-wise) | |
582 | 4178 movwf up |
4179 movff win_width+0,WREG ; get max window width (win_width) | |
4180 cpfslt up ; skip if WREG < win_width | |
4181 movwf up ; crop length to win_width | |
560 | 4182 ; no need to be able to draw longer bars – |
4183 ; we are at the surface and if bars would | |
4184 ; even touch the max length possible here, | |
4185 ; the diver would be in severe decompression | |
4186 ; issues if not dead already... | |
582 | 4187 movff up,win_bargraph |
4188 clrf win_width+1 | |
4189 goto TFT_box ; and return... | |
0 | 4190 |
4191 ;============================================================================= | |
560 | 4192 ; Draw saturation graph in dive mode. |
4193 | |
0 | 4194 DISP_tissue_saturation_graph: |
582 | 4195 ;---- Draw Frame |
4196 call TFT_standard_color | |
4197 WIN_FRAME_COLOR16 dm_custom_tissue_diagram_top, dm_custom_tissue_diagram_bottom, dm_custom_tissue_diagram_left, .159 ; outer frame | |
0 | 4198 |
4199 movlw .1 | |
582 | 4200 movff WREG,win_height ; row bottom (0-239) |
4201 | |
4202 ;---- Draw N2 Tissues ---------------------------------------------------- | |
4203 | |
4204 movlw dm_custom_tissue_diagram_left+.3 ; divemode | |
4205 movff WREG,win_leftx2 ; column left (0-159) | |
4206 movlw .159-dm_custom_tissue_diagram_left-.4 ; width | |
4207 movff WREG,win_width | |
0 | 4208 |
4209 lfsr FSR2, char_O_tissue_N2_saturation | |
4210 movlw d'16' | |
582 | 4211 movwf lo ; 16 tissues |
4212 clrf hi ; row offset | |
0 | 4213 tissue_saturation_graph_N2: |
582 | 4214 movlw dm_custom_tissue_diagram_top+.3 ; divemode |
4215 rcall tissue_saturation_graph_loop ; show one tissue | |
4216 decfsz lo,F | |
0 | 4217 bra tissue_saturation_graph_N2 |
4218 | |
582 | 4219 ;---- Draw He Tissues ---------------------------------------------------- |
4220 | |
560 | 4221 movlw dm_custom_tissue_diagram_left + .8 ; divemode |
4222 movff WREG,win_leftx2 ; column left (0-159) | |
4223 movlw .159 - dm_custom_tissue_diagram_left - .14 ; width | |
4224 movff WREG,win_width | |
582 | 4225 |
0 | 4226 lfsr FSR2, char_O_tissue_He_saturation |
4227 movlw d'16' | |
582 | 4228 movwf lo ; 16 tissues |
4229 clrf hi ; row offset | |
0 | 4230 tissue_saturation_graph_He: |
582 | 4231 movlw dm_custom_tissue_diagram_top+.3+.22 ; divemode |
4232 rcall tissue_saturation_graph_loop ; show one tissue | |
4233 decfsz lo,F | |
0 | 4234 bra tissue_saturation_graph_He |
560 | 4235 goto TFT_standard_color ; and return... |
0 | 4236 |
4237 tissue_saturation_graph_loop: | |
582 | 4238 addwf hi,W |
4239 movff WREG,win_top ; row top (0-239) | |
4240 movlw color_cyan ; preset color for tissues with decreasing pressure | |
4241 call TFT_set_color | |
4242 incf hi,F | |
0 | 4243 movf POSTINC2,W |
560 | 4244 btfss WREG,7 ; check fs flag for increasing tissue pressure set |
4245 bra tissue_saturation_graph_loop_1 ; NO - keep color | |
582 | 4246 movwf up ; YES - buffer WREG |
4247 movlw color_orange ; select color for tissues with increasing pressure | |
4248 call TFT_set_color ; change color | |
4249 movf up,W ; restore WREG | |
560 | 4250 tissue_saturation_graph_loop_1: |
4251 bcf WREG,7 ; clear flag bit | |
582 | 4252 bcf STATUS,C |
4253 rrcf WREG ; divide by 2 | |
560 | 4254 incf WREG,W ; add a bit for a minimum visible bar |
582 | 4255 movwf up |
4256 movf win_width,W ; get max window width (win_width) | |
4257 cpfslt up ; skip if WREG < win_width | |
4258 movwf up | |
4259 movff up,win_bargraph | |
4260 clrf win_width+1 | |
4261 goto TFT_box ; and return... | |
560 | 4262 |
4263 ;============================================================================= | |
55 | 4264 |
0 | 4265 global TFT_display_cns |
4266 TFT_display_cns: | |
560 | 4267 call TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 4268 tstfsz WREG ; Is there room for the warning? |
4269 return ; No | |
4270 STRCPY_TEXT tCNS ; CNS: | |
4271 movff int_O_CNS_fraction+0,lo | |
4272 movff int_O_CNS_fraction+1,hi | |
4273 call TFT_color_code_cns ; Color-code CNS output | |
4274 bsf leftbind | |
4275 output_16_3 ; Displays only 0...999 | |
4276 bcf leftbind | |
4277 PUTC "%" | |
4278 movlw dm_warning_length ; Divemode string length | |
4279 btfss divemode ; In Divemode? | |
4280 movlw surf_warning_length ; No, use surface string length | |
4281 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
560 | 4282 STRCAT_PRINT "" |
4283 bcf win_invert | |
4284 goto TFT_standard_color ; and return... | |
4285 | |
4286 | |
4287 global TFT_display_eod_cns | |
4288 TFT_display_eod_cns: | |
4289 call TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 4290 tstfsz WREG ; Is there room for the warning? |
4291 return ; No | |
560 | 4292 call TFT_warnings_color ; switch to warnings (red) text color |
4293 STRCPY_TEXT tCNSeod ; end-of-dive CNS warning text | |
582 | 4294 movlw dm_warning_length ; Divemode string length |
4295 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
0 | 4296 STRCAT_PRINT "" |
560 | 4297 goto TFT_standard_color ; and return... |
4298 | |
4299 | |
582 | 4300 global TFT_display_ppo2 |
560 | 4301 TFT_display_ppo2: |
4302 call TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 4303 tstfsz WREG ; Is there room for the warning? |
4304 return ; No | |
560 | 4305 movff int_O_pure_ppO2+0,lo ; copy ppO2 of the pure gas (OC: = breathed gas, loop: = diluent/premix) to hi:lo |
4306 movff int_O_pure_ppO2+1,hi | |
582 | 4307 call TFT_color_code_ppo2 ; Color-code output |
4308 btfss FLAG_ccr_mode ; in CCR mode? | |
4309 bra TFT_display_diluent_1 ; NO - continue with pSCR or OC | |
4310 btfsc is_bailout ; YES - in bailout? | |
4311 bra TFT_display_diluent_2 ; YES - continue with OC | |
4312 STRCPY_TEXT tdil ; NO - print "Dil:" | |
4313 bra TFT_display_diluent_3 | |
560 | 4314 TFT_display_diluent_1: |
582 | 4315 btfss FLAG_pscr_mode ; in pSCR mode? |
4316 bra TFT_display_diluent_2 ; NO - continue with pSCR or OC | |
4317 btfsc is_bailout ; YES - in bailout? | |
4318 bra TFT_display_diluent_2 ; YES - continue with OC | |
4319 STRCPY_TEXT tmix ; NO - print "Mix:" | |
4320 bra TFT_display_diluent_3 | |
560 | 4321 TFT_display_diluent_2: |
582 | 4322 STRCPY_TEXT tppO2 ; OC mode or bailout, print "ppO2:" |
560 | 4323 TFT_display_diluent_3: |
4324 bsf leftbind | |
582 | 4325 output_16dp .3 ; x.xx bar |
4326 bcf leftbind | |
4327 movlw dm_warning_length ; Divemode string length | |
4328 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
560 | 4329 STRCAT_PRINT "" |
4330 goto TFT_standard_color ; and return... | |
582 | 4331 |
560 | 4332 ;============================================================================= |
582 | 4333 |
0 | 4334 global TFT_LogOffset_Logtitle |
4335 TFT_LogOffset_Logtitle: | |
4336 STRCPY_TEXT tLogOffset | |
4337 PUTC ":" | |
4338 call do_logoffset_common_read ; Offset into lo:hi | |
4339 bsf leftbind | |
535
cf68fe0c3002
NEW: Show a warning for each sensor if the sensor is end-of-life after calibration (Less then 8mV in Air at sea level)
heinrichsweikamp
parents:
533
diff
changeset
|
4340 output_16_4 |
0 | 4341 bcf leftbind |
4342 PUTC " " | |
582 | 4343 return ; No "_PRINT" here... |
4344 | |
560 | 4345 ;============================================================================= |
582 | 4346 |
0 | 4347 global adjust_depth_with_salinity |
582 | 4348 global adjust_depth_with_salinity_log |
0 | 4349 adjust_depth_with_salinity: ; computes salinity setting into lo:hi [mbar] |
582 | 4350 btfsc simulatormode_active ; Do not apply salinity in simulator mode |
0 | 4351 return |
582 | 4352 movff opt_salinity,WREG ; 0-5% |
560 | 4353 adjust_depth_with_salinity_log: ; computes salinity setting (FROM WREG!) into lo:hi [mbar] |
582 | 4354 addlw d'100' ; 1.00kg/l |
4355 movwf up | |
4356 | |
0 | 4357 movlw d'105' ; 105% ? |
582 | 4358 cpfslt up ; Salinity higher limit |
0 | 4359 return ; Out of limit, do not adjust lo:hi |
4360 movlw d'99' ; 99% ? | |
582 | 4361 cpfsgt up ; Salinity lower limit |
0 | 4362 return ; Out of limit, do not adjust lo:hi |
4363 | |
4364 movff lo,xA+0 | |
4365 movff hi,xA+1 | |
4366 | |
4367 movlw d'102' ; 0,98bar/10m | |
4368 movwf xB+0 | |
4369 clrf xB+1 | |
560 | 4370 call mult16x16 ; xA*xB=xC (lo:hi * 100) |
582 | 4371 movff up,xB+0 ; Salinity |
0 | 4372 clrf xB+1 |
582 | 4373 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder |
0 | 4374 movff xC+0,lo |
4375 movff xC+1,hi ; restore lo and hi with updated value | |
4376 return | |
4377 | |
560 | 4378 ;============================================================================= |
582 | 4379 |
4380 global convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
4381 convert_mbar_to_feet: ; convert value in lo:hi from mbar to feet | |
0 | 4382 movff lo,xA+0 |
4383 movff hi,xA+1 | |
4384 | |
582 | 4385 movlw LOW d'328' ; 328feet/100m |
0 | 4386 movwf xB+0 |
582 | 4387 movlw HIGH d'328' |
0 | 4388 movwf xB+1 |
4389 | |
582 | 4390 call mult16x16 ; xA*xB=xC (lo:hi * 328) |
4391 | |
4392 movlw d'50' ; round up | |
0 | 4393 addwf xC+0,F |
4394 movlw 0 | |
4395 addwfc xC+1,F | |
4396 addwfc xC+2,F | |
4397 addwfc xC+3,F | |
4398 | |
582 | 4399 movlw LOW .10000 |
4400 movwf xB+0 | |
4401 movlw HIGH .10000 | |
4402 movwf xB+1 | |
4403 | |
4404 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
0 | 4405 |
4406 movff xC+0,lo | |
582 | 4407 movff xC+1,hi ; restore lo and hi with updated value |
0 | 4408 return |
4409 | |
560 | 4410 ;============================================================================= |
4411 | |
582 | 4412 global convert_celsius_to_fahrenheit ; convert value in lo:hi from celsius to fahrenheit |
4413 convert_celsius_to_fahrenheit: ; convert value in lo:hi from celsius to fahrenheit | |
4414 movff lo,xA+0 ; temperature in 1/10 of °C | |
4415 movff hi,xA+1 | |
4416 | |
4417 movlw LOW d'1000' ; offset °C value by 1000 to get out of any negative numbers | |
4418 addwf xA+0,F | |
4419 movlw HIGH d'1000' | |
4420 addwfc xA+1,F | |
4421 | |
4422 movlw d'18' ; adjust scaling: 1°C = 1.8°F | |
4423 movwf xB+0 | |
4424 clrf xB+1 | |
4425 | |
4426 call mult16x16 ; xA*xB=xC (lo:hi * 18) | |
4427 | |
4428 movlw d'10' | |
4429 movwf xB+0 | |
4430 clrf xB+1 | |
4431 | |
4432 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
4433 | |
4434 movlw LOW d'1480' ; adjust offset: subtract above offset of 1000 * 1.8 = 1800 now and add 320 => subtract 1480 | |
4435 subwf xC+0,F | |
4436 movlw HIGH d'1480' | |
4437 subwfb xC+1,F | |
4438 | |
4439 movff xC+0,lo | |
4440 movff xC+1,hi ; restore lo and hi with updated value | |
4441 return | |
560 | 4442 |
480
ad8acade5567
NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents:
477
diff
changeset
|
4443 ;============================================================================= |
560 | 4444 |
0 | 4445 END |