Mercurial > public > hwos_code
annotate src/tft_outputs.asm @ 596:2b4e02a9c1e4
italian update
author | heinrichsweikamp |
---|---|
date | Tue, 03 Jul 2018 09:49:34 +0200 |
parents | 8a7d2d8bcd33 |
children | 08a0162d3ca1 |
rev | line source |
---|---|
0 | 1 ;============================================================================= |
2 ; | |
587 | 3 ; File tft_outputs.asm REFACTORED VERSION V2.97 SP1 |
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 | |
589
8a7d2d8bcd33
limit string length to 4 digits/chars in average depth
heinrichsweikamp
parents:
587
diff
changeset
|
1241 clrf WREG |
8a7d2d8bcd33
limit string length to 4 digits/chars in average depth
heinrichsweikamp
parents:
587
diff
changeset
|
1242 movff WREG,buffer+.4 ; limit string length to 4 digits/chars |
582 | 1243 STRCAT_PRINT " " |
1244 ; Stopped average depth | |
1245 movff avg_rel_pressure+0,lo | |
1246 movff avg_rel_pressure+1,hi | |
1247 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1248 WIN_MEDIUM dm_custom_avr_stop_column3,dm_custom_avr_stop_row | |
1249 bsf ignore_digit5 ; no cm | |
1250 output_16dp .3 ; yxz.a | |
1251 bcf leftbind | |
1252 bcf ignore_digit5 | |
1253 clrf WREG | |
1254 movff WREG,buffer+.4 ; limit string length to 4 | |
1255 STRCAT_PRINT "" | |
1256 return | |
1257 | |
1258 | |
1259 global TFT_ceiling_mask ; The ceiling mask | |
123 | 1260 TFT_ceiling_mask: |
582 | 1261 call TFT_divemask_color |
1262 WIN_TINY dm_custom_ceiling_text_column,dm_custom_ceiling_text_row | |
1263 STRCPY_TEXT_PRINT tCeiling | |
1264 goto TFT_standard_color ; and return... | |
1265 | |
1266 global TFT_ceiling ; Ceiling | |
123 | 1267 TFT_ceiling: |
582 | 1268 WIN_MEDIUM dm_custom_ceiling_value_column,dm_custom_ceiling_value_row |
1269 movff int_O_ceiling+0,lo | |
1270 movff int_O_ceiling+1,hi | |
1271 call TFT_color_code_ceiling ; color-code the output | |
1272 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
1273 bsf leftbind | |
1274 TSTOSS opt_units ; 0=m, 1=ft | |
123 | 1275 bra TFT_ceiling_metric |
1276 ;TFT_ceiling_imperial | |
582 | 1277 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
1278 output_16 ; yxz | |
1279 bcf leftbind | |
1280 STRCAT_PRINT " " | |
560 | 1281 goto TFT_standard_color |
123 | 1282 |
1283 TFT_ceiling_metric: | |
582 | 1284 bsf ignore_digit5 ; no cm |
1285 output_16dp .3 ; yxz.a | |
1286 bcf leftbind | |
1287 bcf ignore_digit5 | |
1288 STRCAT_PRINT " " | |
560 | 1289 goto TFT_standard_color |
1290 | |
1291 | |
1292 global TFT_CNS_mask | |
1293 TFT_CNS_mask: | |
582 | 1294 call TFT_divemask_color |
1295 WIN_TINY dm_custom_gf_title_col1, dm_custom_gf_title_row | |
1296 STRCPY_TEXT_PRINT tCNSsurf | |
1297 WIN_TINY dm_custom_gf_title_col2, dm_custom_gf_title_row | |
560 | 1298 btfsc FLAG_ccr_mode ; in CCR mode? |
1299 bra TFT_CNS_mask_1 ; YES - proceed with checking for bailout | |
1300 btfsc FLAG_pscr_mode ; NO - in pSCR mode? | |
582 | 1301 bra TFT_CNS_mask_1 ; YES - proceed with checking for bailout |
1302 bra TFT_CNS_mask_2 ; NO - must be OC then | |
560 | 1303 TFT_CNS_mask_1: ; in CCR or pSCR mode |
1304 btfsc is_bailout ; in bailout? | |
1305 bra TFT_CNS_mask_2 ; YES - print fTTS label (label will be printed, but a fTTS will actually not be calculated) | |
1306 TSTOSS opt_calc_asc_gasvolume ; NO - bailout volume calculation requested? | |
582 | 1307 bra TFT_CNS_mask_2 ; NO - print fTTS label |
1308 STRCPY_TEXT_PRINT tCNSBO ; YES - print bailout label | |
560 | 1309 bra TFT_CNS_mask_3 |
1310 TFT_CNS_mask_2: ; OC or bailout | |
1311 STRCPY_TEXT_PRINT tCNSfTTS ; print fTTS label | |
1312 TFT_CNS_mask_3: | |
582 | 1313 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row |
1314 STRCPY_TEXT_PRINT tCNSnow | |
1315 goto TFT_standard_color ; and return... | |
1316 | |
560 | 1317 global TFT_CNS |
1318 TFT_CNS: | |
1319 ; CNS at end of normal dive | |
1320 WIN_STD dm_custom_hud_sensor1_column+.5,dm_custom_hud_data_row | |
582 | 1321 movff int_O_normal_CNS_fraction+0,lo |
1322 movff int_O_normal_CNS_fraction+1,hi | |
1323 call TFT_color_code_cns | |
1324 bsf leftbind | |
1325 output_16_3 ; output as xxx | |
560 | 1326 bcf leftbind |
582 | 1327 STRCAT_PRINT "% " |
560 | 1328 ; fTTS / Bailout CNS, if enabled |
582 | 1329 WIN_STD dm_custom_hud_sensor2_column+.2,dm_custom_hud_data_row |
560 | 1330 btfsc is_bailout ; in bailout? |
1331 bra TFT_CNS_3 ; YES - show "---" | |
1332 TSTOSS opt_calc_asc_gasvolume ; NO - bailout volume calculation requested? | |
582 | 1333 bra TFT_CNS_1 ; NO - continue checking fTTS extra time |
1334 btfsc FLAG_ccr_mode ; YES - in CCR mode? | |
1335 bra TFT_CNS_2 ; YES - skip test for fTTS extra time and show CNS% | |
1336 btfsc FLAG_pscr_mode ; in pSCR mode? | |
1337 bra TFT_CNS_2 ; YES - skip test for fTTS extra time and show CNS% | |
560 | 1338 TFT_CNS_1: ; not in bailout, no volume calculation |
1339 TSTOSS char_I_extra_time ; fTTS extra time fTTS configured? | |
1340 bra TFT_CNS_3 ; NO - show "---" | |
1341 TFT_CNS_2: | |
582 | 1342 movff int_O_alternate_CNS_fraction+0,lo ; YES - show CNS% |
1343 movff int_O_alternate_CNS_fraction+1,hi | |
1344 call TFT_color_code_cns | |
1345 bsf leftbind | |
1346 output_16_3 ; output as xxx | |
560 | 1347 bcf leftbind |
582 | 1348 STRCAT_PRINT "% " |
560 | 1349 bra TFT_CNS_4 |
1350 TFT_CNS_3: | |
1351 call TFT_standard_color | |
582 | 1352 STRCPY_PRINT "--- " |
560 | 1353 TFT_CNS_4: |
1354 ; current CNS | |
1355 WIN_STD dm_custom_hud_sensor3_column,dm_custom_hud_data_row | |
582 | 1356 movff int_O_CNS_fraction+0,lo |
1357 movff int_O_CNS_fraction+1,hi | |
1358 call TFT_color_code_cns | |
1359 bsf leftbind | |
1360 output_16_3 ; output as xxx | |
560 | 1361 bcf leftbind |
582 | 1362 STRCAT_PRINT "%" |
560 | 1363 goto TFT_standard_color ; and return... |
582 | 1364 |
1365 | |
1366 global TFT_hud_mask ; The HUD mask | |
0 | 1367 TFT_hud_mask: |
582 | 1368 call TFT_divemask_color |
1369 WIN_TINY dm_custom_hud_column1,dm_custom_hud_row | |
1370 STRCPY_TEXT_PRINT tDiveHudMask1 | |
1371 WIN_TINY dm_custom_hud_column2,dm_custom_hud_row | |
1372 STRCPY_TEXT_PRINT tDiveHudMask2 | |
1373 WIN_TINY dm_custom_hud_column3,dm_custom_hud_row | |
1374 STRCPY_TEXT_PRINT tDiveHudMask3 | |
1375 goto TFT_standard_color ; and return... | |
1376 | |
1377 | |
1378 global TFT_update_ppo2_sensors ; Update Sensor data | |
192 | 1379 TFT_update_ppo2_sensors: |
560 | 1380 ; |
1381 ; Definition of the output: | |
1382 ; | |
582 | 1383 ; sensorX use voting o2 |
1384 ; _calibrated _O2 _logic _ppo2 Output Color | |
1385 ; _ok _sensorX _sensorX _sensorX | |
560 | 1386 ;----------------------------------------------------------------------------------------------- |
582 | 1387 ; 0 -/- -/- -/- "----" TFT_standard_color |
1388 ; 1 0 -/- = 0 o2_ppo2_sensorX TFT_attention_color | |
1389 ; 1 0 -/- > 0 o2_ppo2_sensorX TFT_disabled_color | |
1390 ; 1 1 0 -/- o2_ppo2_sensorX TFT_color_code_ppo2_hud + win_invert | |
1391 ; 1 1 1 -/- o2_ppo2_sensorX TFT_color_code_ppo2_hud | |
560 | 1392 ; |
582 | 1393 bsf leftbind |
560 | 1394 ; sensor 1 |
582 | 1395 btfsc sensor1_calibrated_ok ; valid calibration? |
1396 bra TFT_update_hud1b ; yes | |
583 | 1397 btfsc sensor1_active ; valid HUD data for this sensor |
1398 bra TFT_update_hud1b ; yes | |
560 | 1399 ; no valid calibration |
1400 WIN_STD dm_custom_hud_sensor1_column+.7, dm_custom_hud_data_row+.5 | |
1401 call TFT_standard_color | |
582 | 1402 STRCPY_PRINT "---" |
1403 bra TFT_update_hud2a ; continue with sensor 2 | |
560 | 1404 TFT_update_hud1b: |
1405 ; sensor has a valid calibration | |
1406 WIN_MEDIUM dm_custom_hud_sensor1_column,dm_custom_hud_data_row | |
582 | 1407 movff o2_ppo2_sensor1,lo ; load ppO2 value into transfer storage for output |
1408 clrf hi ; | |
560 | 1409 btfsc use_O2_sensor1 ; in use? |
1410 bra TFT_update_hud1d ; yes | |
1411 ; valid calibration, but not in use | |
1412 tstfsz o2_ppo2_sensor1 ; sensor value = 0? | |
1413 bra TFT_update_hud1c ; no | |
1414 ; valid calibration, not in use and value = 0 | |
582 | 1415 call TFT_attention_color ; output in yellow |
560 | 1416 bra TFT_update_hud1e |
1417 TFT_update_hud1c: | |
1418 ; sensor has valid calibration, is not in use and has a value > 0 | |
582 | 1419 call TFT_disabled_color ; output in light blue |
560 | 1420 bra TFT_update_hud1e |
1421 TFT_update_hud1d: | |
1422 ; sensor has valid calibration and is in use | |
582 | 1423 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo |
560 | 1424 btfsc voting_logic_sensor1 ; sensor value agrees with other sensor's values? |
1425 bra TFT_update_hud1e ; yes | |
1426 ; valid calibration, in use, but value does not agree with other sensors | |
582 | 1427 bsf win_invert ; invert output |
1428 TFT_update_hud1e: | |
560 | 1429 ; all coloring is set up now, let's write the value to the display! |
1430 bsf leftbind | |
582 | 1431 output_16dp .3 ; x.xx bar |
1432 bcf leftbind | |
1433 STRCAT_PRINT "" | |
1434 bcf win_invert | |
560 | 1435 |
1436 TFT_update_hud2a: ; sensor 2 | |
582 | 1437 btfsc sensor2_calibrated_ok ; valid calibration? |
1438 bra TFT_update_hud2b ; yes | |
583 | 1439 btfsc sensor2_active ; valid HUD data for this sensor |
1440 bra TFT_update_hud2b ; yes | |
560 | 1441 ; no valid calibration |
1442 WIN_STD dm_custom_hud_sensor2_column+.7, dm_custom_hud_data_row+.5 | |
1443 call TFT_standard_color | |
582 | 1444 STRCPY_PRINT "---" |
1445 bra TFT_update_hud3a ; continue with sensor 3 | |
560 | 1446 TFT_update_hud2b: |
1447 ; sensor has a valid calibration | |
1448 WIN_MEDIUM dm_custom_hud_sensor2_column,dm_custom_hud_data_row | |
582 | 1449 movff o2_ppo2_sensor2,lo ; load ppO2 value into transfer storage for output |
1450 clrf hi ; | |
560 | 1451 btfsc use_O2_sensor2 ; in use? |
1452 bra TFT_update_hud2d ; yes | |
1453 ; valid calibration, but not in use | |
1454 tstfsz o2_ppo2_sensor2 ; sensor value = 0? | |
1455 bra TFT_update_hud2c ; no | |
1456 ; valid calibration, not in use and value = 0 | |
582 | 1457 call TFT_attention_color ; output in yellow |
560 | 1458 bra TFT_update_hud2e |
1459 TFT_update_hud2c: | |
1460 ; sensor has valid calibration, is not in use and has a value > 0 | |
582 | 1461 call TFT_disabled_color ; output in light blue |
560 | 1462 bra TFT_update_hud2e |
1463 TFT_update_hud2d: | |
1464 ; sensor has valid calibration and is in use | |
582 | 1465 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo |
560 | 1466 btfsc voting_logic_sensor2 ; sensor value agrees with other sensor's vlaues? |
1467 bra TFT_update_hud2e ; yes | |
1468 ; valid calibration, in use, but value does not agree with other sensors | |
582 | 1469 bsf win_invert ; invert output |
1470 TFT_update_hud2e: | |
560 | 1471 ; all coloring is set up now, let's write the value to the display! |
1472 bsf leftbind | |
582 | 1473 output_16dp .3 ; x.xx bar |
1474 bcf leftbind | |
1475 STRCAT_PRINT "" | |
1476 bcf win_invert | |
560 | 1477 |
1478 TFT_update_hud3a: ; sensor 3 | |
582 | 1479 btfsc sensor3_calibrated_ok ; valid calibration? |
1480 bra TFT_update_hud3b ; yes | |
583 | 1481 btfsc sensor3_active ; valid HUD data for this sensor |
1482 bra TFT_update_hud3b ; yes | |
560 | 1483 ; no valid calibration |
582 | 1484 WIN_STD dm_custom_hud_sensor3_column+.7, dm_custom_hud_data_row+.5 |
560 | 1485 call TFT_standard_color |
582 | 1486 STRCPY_PRINT "---" |
1487 bra TFT_update_hud4 ; done | |
560 | 1488 TFT_update_hud3b: |
1489 ; sensor has a valid calibration | |
1490 WIN_MEDIUM dm_custom_hud_sensor3_column,dm_custom_hud_data_row | |
582 | 1491 movff o2_ppo2_sensor3,lo ; load ppO2 value into transfer storage for output |
1492 clrf hi ; | |
560 | 1493 btfsc use_O2_sensor3 ; in use? |
1494 bra TFT_update_hud3d ; yes | |
1495 ; valid calibration, but not in use | |
1496 tstfsz o2_ppo2_sensor3 ; sensor value = 0? | |
1497 bra TFT_update_hud3c ; no | |
1498 ; valid calibration, not in use and value = 0 | |
582 | 1499 call TFT_attention_color ; output in yellow |
560 | 1500 bra TFT_update_hud3e |
1501 TFT_update_hud3c: | |
1502 ; sensor has valid calibration, is not in use and has a value > 0 | |
582 | 1503 call TFT_disabled_color ; output in light blue |
560 | 1504 bra TFT_update_hud3e |
1505 TFT_update_hud3d: | |
1506 ; sensor has valid calibration and is in use | |
582 | 1507 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo |
560 | 1508 btfsc voting_logic_sensor3 ; sensor value agrees with other sensor's vlaues? |
1509 bra TFT_update_hud3e ; yes | |
1510 ; valid calibration, in use, but value does not agree with other sensors | |
582 | 1511 bsf win_invert ; invert output |
1512 TFT_update_hud3e: | |
560 | 1513 ; all coloring is set up now, let's write the value to the display! |
1514 bsf leftbind | |
582 | 1515 output_16dp .3 ; x.xx bar |
1516 bcf leftbind | |
1517 STRCAT_PRINT "" | |
1518 bcf win_invert | |
1519 | |
560 | 1520 TFT_update_hud4: ; closure |
582 | 1521 bcf leftbind |
1522 goto TFT_standard_color ; and return... | |
1523 | |
1524 | |
1525 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
|
1526 TFT_surface_sensor: |
582 | 1527 movf hardware_flag,W |
1528 sublw 0x11 ; 2 with BLE | |
1529 btfsc STATUS,Z | |
1530 return ; Ignore for 0x11 | |
1531 ; show three sensors | |
1532 bsf leftbind | |
1533 WIN_SMALL surf_hud_sensor1_column,surf_hud_sensor1_row | |
560 | 1534 btfsc sensor1_calibrated_ok |
582 | 1535 bra TFT_surface_sensor1 ; Yes |
583 | 1536 btfsc sensor1_active ; valid HUD data for this sensor |
1537 bra TFT_surface_sensor1 ; Yes | |
582 | 1538 call TFT_standard_color |
1539 STRCPY_PRINT "--- " | |
1540 bra TFT_surface_sensor2 ; Skip Sensor 1 | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1541 TFT_surface_sensor1: |
582 | 1542 movff o2_ppo2_sensor1,lo |
1543 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo | |
1544 clrf hi | |
560 | 1545 bsf leftbind |
582 | 1546 output_16dp .3 ; x.xx bar |
1547 bcf leftbind | |
1548 STRCAT_PRINT "" | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1549 TFT_surface_sensor2: |
582 | 1550 WIN_SMALL surf_hud_sensor2_column,surf_hud_sensor2_row |
560 | 1551 btfsc sensor2_calibrated_ok |
582 | 1552 bra TFT_surface_sensor3 ; Yes |
583 | 1553 btfsc sensor2_active ; valid HUD data for this sensor |
1554 bra TFT_surface_sensor3 ; Yes | |
582 | 1555 call TFT_standard_color |
1556 STRCPY_PRINT "--- " | |
1557 bra TFT_surface_sensor4 ; Skip Sensor 2 | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1558 TFT_surface_sensor3: |
582 | 1559 movff o2_ppo2_sensor2,lo |
1560 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo | |
1561 clrf hi | |
560 | 1562 bsf leftbind |
582 | 1563 output_16dp .3 ; x.xx bar |
1564 bcf leftbind | |
1565 STRCAT_PRINT "" | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1566 TFT_surface_sensor4: |
582 | 1567 WIN_SMALL surf_hud_sensor3_column,surf_hud_sensor3_row |
560 | 1568 btfsc sensor3_calibrated_ok |
582 | 1569 bra TFT_surface_sensor5 ; Yes |
583 | 1570 btfsc sensor3_active ; valid HUD data for this sensor |
1571 bra TFT_surface_sensor5 ; Yes | |
1572 | |
582 | 1573 call TFT_standard_color |
1574 STRCPY_PRINT "--- " | |
1575 bra TFT_surface_sensor6 ; Skip Sensor 3 | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1576 TFT_surface_sensor5: |
582 | 1577 movff o2_ppo2_sensor3,lo |
1578 call TFT_color_code_ppo2_hud ; With ppO2 [cbar] in lo | |
1579 clrf hi | |
560 | 1580 bsf leftbind |
582 | 1581 output_16dp .3 ; x.xx bar |
1582 bcf leftbind | |
1583 STRCAT_PRINT "" | |
188
ebc28381f17d
NEW: Show Bailout Gas List in Surface mode (CCR Modes)
heinrichsweikamp
parents:
187
diff
changeset
|
1584 TFT_surface_sensor6: |
582 | 1585 bcf leftbind |
1586 goto TFT_standard_color ; and return... | |
1587 | |
1588 | |
1589 global TFT_sensor_mV | |
530 | 1590 TFT_sensor_mV: |
582 | 1591 call TFT_standard_color |
1592 bsf leftbind | |
1593 WIN_SMALL surf_mV_sensor_column,surf_mV_sensor1_row | |
1594 movff o2_mv_sensor1+0,lo ; in 0.1mV steps | |
1595 movff o2_mv_sensor1+1,hi ; in 0.1mV steps | |
1596 STRCAT "1: " | |
1597 output_16dp .4 ; xxx.y mV | |
1598 STRCAT_PRINT "mV " | |
1599 | |
1600 WIN_SMALL surf_mV_sensor_column,surf_mV_sensor2_row | |
1601 movff o2_mv_sensor2+0,lo ; in 0.1mV steps | |
1602 movff o2_mv_sensor2+1,hi ; in 0.1mV steps | |
1603 STRCAT "2: " | |
1604 output_16dp .4 ; xxx.y mV | |
1605 STRCAT_PRINT "mV " | |
1606 | |
1607 WIN_SMALL surf_mV_sensor_column,surf_mV_sensor3_row | |
1608 movff o2_mv_sensor3+0,lo ; in 0.1mV steps | |
1609 movff o2_mv_sensor3+1,hi ; in 0.1mV steps | |
1610 STRCAT "3: " | |
1611 output_16dp .4 ; xxx.y mV | |
1612 STRCAT_PRINT "mV " | |
1613 bcf leftbind | |
1614 goto TFT_standard_color ; and return... | |
1615 | |
1616 | |
1617 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
|
1618 TFT_sensor_surface_warning: |
582 | 1619 call TFT_warnings_color |
560 | 1620 btfss sensor1_calibrated_ok ; do not show end of lifetime arrow if sensor failed calibration at all |
1621 bra TFT_sensor_mV2 | |
582 | 1622 movff opt_x_s1+1,lo ; into bank1 |
1623 movf lo,W ; when opt_x_s1 > 255 the sensor will just give 8 mV at a ppO2 of 0,21 any more | |
1624 bz TFT_sensor_mV2 ; the sensor is not too bad yet for a warning | |
1625 WIN_SMALL surf_mV_sensor_status_column,surf_mV_sensor1_row-.5 | |
1626 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
|
1627 TFT_sensor_mV2: |
560 | 1628 btfss sensor2_calibrated_ok ; do not show end of lifetime arrow if sensor failed calibration at all |
1629 bra TFT_sensor_mV3 | |
582 | 1630 movff opt_x_s2+1,lo ; into bank1 |
1631 movf lo,W ; when opt_x_s2 > 255 the sensor will just give 8 mV at a ppO2 of 0,21 any more | |
1632 bz TFT_sensor_mV3 ; the sensor is not too bad yet for a warning | |
1633 WIN_SMALL surf_mV_sensor_status_column,surf_mV_sensor2_row-.5 | |
1634 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
|
1635 TFT_sensor_mV3: |
560 | 1636 btfss sensor3_calibrated_ok ; do not show end of lifetime arrow if sensor failed calibration at all |
1637 bra TFT_sensor_mV4 | |
582 | 1638 movff opt_x_s3+1,lo ; into bank1 |
1639 movf lo,W ; when opt_x_s3 > 255 the sensor will just give 8 mV at a ppO2 of 0,21 any more | |
1640 bz TFT_sensor_mV4 ; the sensor is not too bad yet for a warning | |
1641 WIN_SMALL surf_mV_sensor_status_column,surf_mV_sensor3_row-.5 | |
1642 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
|
1643 TFT_sensor_mV4: |
582 | 1644 goto TFT_standard_color ; ...and return |
1645 | |
1646 | |
1647 global TFT_menu_calibrate | |
1648 TFT_menu_calibrate: ; update mV data in calibration menu | |
1649 btfss s8_digital ; =1: Digital I/O | |
1650 bra TFT_menu_calibrate_analog ; use analog | |
1651 btfss new_s8_data_available ; new data frame received? | |
1652 bra TFT_menu_calibrate_common ; NO - use old values... | |
1653 ; YES - update the values | |
560 | 1654 call compute_mvolts_for_all_sensors |
582 | 1655 bra TFT_menu_calibrate_common |
560 | 1656 TFT_menu_calibrate_analog: |
582 | 1657 call get_analog_inputs |
560 | 1658 TFT_menu_calibrate_common: |
582 | 1659 call TFT_attention_color ; show in yellow |
1660 bsf leftbind | |
1661 WIN_SMALL surf_menu_sensor1_column,surf_menu2_sensor1_row | |
1662 movff o2_mv_sensor1+0,lo ; in 0.1mV steps | |
1663 movff o2_mv_sensor1+1,hi ; in 0.1mV steps | |
1664 output_16dp .4 ; xxx.y mV | |
1665 STRCAT_PRINT "mV " | |
1666 WIN_SMALL surf_menu_sensor2_column,surf_menu2_sensor2_row | |
1667 movff o2_mv_sensor2+0,lo ; in 0.1mV steps | |
1668 movff o2_mv_sensor2+1,hi ; in 0.1mV steps | |
1669 output_16dp .4 ; xxx.y mV | |
1670 STRCAT_PRINT "mV " | |
1671 WIN_SMALL surf_menu_sensor3_column,surf_menu2_sensor3_row | |
1672 movff o2_mv_sensor3+0,lo ; in 0.1mV steps | |
1673 movff o2_mv_sensor3+1,hi ; in 0.1mV steps | |
1674 output_16dp .4 ; xxx.y mV | |
1675 STRCAT_PRINT "mV " | |
1676 bcf leftbind | |
1677 goto TFT_standard_color ; ...and return | |
1678 | |
1679 | |
1680 global TFT_clock | |
0 | 1681 TFT_clock: |
582 | 1682 WIN_SMALL surf_clock_column,surf_clock_row |
1683 TFT_clock2: ; called from divemode clock | |
1684 call TFT_standard_color | |
0 | 1685 movff hours,lo |
1686 output_99 | |
1687 movlw ':' | |
582 | 1688 btfss secs,0 ; blinking every second |
0 | 1689 movlw ' ' |
1690 movwf POSTINC2 | |
1691 movff mins,lo | |
1692 output_99x | |
1693 STRCAT_PRINT "" | |
1694 return | |
1695 | |
1696 global TFT_show_time_date_menu | |
1697 TFT_show_time_date_menu: | |
582 | 1698 call speed_fastest |
1699 WIN_SMALL .15,.30 | |
1700 call TFT_standard_color | |
0 | 1701 movff hours,lo |
1702 output_99 | |
1703 PUTC ':' | |
1704 movff mins,lo | |
1705 output_99x | |
1706 PUTC ':' | |
1707 movff secs,lo | |
1708 output_99x | |
582 | 1709 STRCAT " - " |
1710 movff day,lo | |
1711 movff month,hi | |
1712 movff year,up | |
1713 call TFT_convert_date ; converts into "DD/MM/YY" or "MM/DD/YY" or "YY/MM/DD" in postinc2 | |
0 | 1714 STRCAT_PRINT " " |
1715 return | |
560 | 1716 |
0 | 1717 ;============================================================================= |
1718 | |
582 | 1719 global TFT_surface_decosettings ; Show all deco settings |
41 | 1720 TFT_surface_decosettings: |
560 | 1721 ; Deco Mode |
41 | 1722 call TFT_standard_color |
560 | 1723 WIN_SMALL surf_gaslist_column,surf_gaslist_row |
582 | 1724 STRCAT_PRINT "ZH-L16" |
1725 movff char_I_deco_model,WREG | |
1726 iorwf WREG | |
1727 bnz TFT_surface_decosettings1 | |
560 | 1728 ; Display ZH-L16 sat/desat model |
582 | 1729 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) |
1730 lfsr FSR2,buffer | |
1731 movff char_I_desaturation_multiplier,lo | |
1732 bsf leftbind | |
1733 output_8 | |
1734 STRCAT "%/" | |
1735 movff char_I_saturation_multiplier,lo | |
1736 output_8 | |
1737 STRCAT_PRINT "%" | |
1738 bra TFT_surface_decosettings2 | |
1739 ; Display ZH-L16-GF low/high model | |
41 | 1740 TFT_surface_decosettings1: |
582 | 1741 TEXT_SMALL surf_gaslist_column+.43,surf_gaslist_row,tZHL16GF |
1742 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) | |
1743 STRCPY_TEXT tGF ; GF: | |
560 | 1744 movff opt_GF_low,lo |
582 | 1745 output_99x |
1746 STRCAT "/" | |
560 | 1747 movff opt_GF_high,lo |
582 | 1748 output_99x |
1749 STRCAT_PRINT "" | |
1750 TFT_surface_decosettings2: ; fTTS | |
1751 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
1752 STRCPY_TEXT tFTTSMenu | |
1753 movff char_I_extra_time,lo | |
1754 bsf leftbind | |
1755 output_8 | |
1756 STRCAT_TEXT_PRINT tMinutes | |
1757 ; Last Stop | |
1758 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.3) | |
1759 STRCPY_TEXT tLastDecostop | |
560 | 1760 movff opt_last_stop,lo |
582 | 1761 output_8 |
1762 STRCAT_TEXT_PRINT tMeters | |
1763 ; Salinity | |
1764 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.4) | |
1765 STRCPY_TEXT tDvSalinity | |
1766 movff opt_salinity,lo | |
1767 output_8 | |
1768 bcf leftbind | |
1769 STRCAT_TEXT_PRINT tPercent | |
1770 return | |
0 | 1771 |
1772 global TFT_debug_output | |
1773 TFT_debug_output: | |
582 | 1774 return |
1775 WIN_TINY .80,.0 | |
1776 call TFT_standard_color | |
1777 lfsr FSR2,buffer | |
1778 movff analog_sw1,lo | |
1779 output_8 | |
1780 PUTC "," | |
1781 movff analog_sw2,lo | |
1782 output_8 | |
1783 STRCAT_PRINT "" | |
1784 return | |
1785 | |
1786 global TFT_divetimeout ; Show timeout counter | |
55 | 1787 TFT_divetimeout: |
1788 call TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 1789 tstfsz WREG ; Is there room for the warning? |
1790 return ; No | |
1791 call TFT_standard_color | |
1792 STRCPY 0x94 ; "End of dive" icon | |
1793 movff opt_diveTimeout,WREG ; in [min] | |
1794 mullw .60 | |
1795 movff PRODL,sub_a+0 | |
1796 movff PRODH,sub_a+1 ; in [s] | |
1797 movff timeout_counter1+0,sub_b+0 | |
1798 movff timeout_counter1+1,sub_b+1 | |
1799 call subU16 ; sub_c = sub_a - sub_b (with UNSIGNED values) | |
1800 movff sub_c+0,lo | |
1801 movff sub_c+1,hi | |
55 | 1802 call convert_time ; converts hi:lo in minutes to hours (hi) and minutes (lo) |
1803 movf hi,W | |
1804 movff lo,hi | |
1805 movwf lo ; exchange lo and hi | |
1806 output_99x | |
582 | 1807 PUTC ':' |
55 | 1808 movff hi,lo |
1809 output_99x | |
582 | 1810 movlw dm_warning_length ; Divemode string length |
1811 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
55 | 1812 STRCAT_PRINT "" |
582 | 1813 bcf win_invert |
55 | 1814 return |
1815 | |
560 | 1816 global TFT_display_ftts |
1817 TFT_display_ftts: | |
582 | 1818 movff char_I_extra_time,lo |
1819 tstfsz lo | |
1820 bra TFT_display_ftts_a | |
1821 return ; char_I_extra_time=0, return. | |
560 | 1822 TFT_display_ftts_a: |
582 | 1823 movff int_O_alternate_ascenttime+0,WREG |
1824 movff int_O_alternate_ascenttime+1,hi | |
1825 iorwf hi,W ; int_O_alternate_ascenttime:2 == 0 ? | |
1826 bnz TFT_display_ftts_b | |
1827 return ; No deco, do nothing | |
560 | 1828 TFT_display_ftts_b: |
582 | 1829 btfsc is_bailout ; check if we are in bailout mode |
1830 return ; YES - in bailout no fTTS will be computed, so nothing to display | |
1831 incf warning_counter,F ; increase counter | |
1832 call TFT_warning_set_window ; sets the row and column for the current warning | |
1833 tstfsz WREG ; is there room for the warning? | |
1834 return ; NO | |
1835 btfsc FLAG_ccr_mode ; in CCR mode? | |
1836 bra TFT_display_ftts_1 ; YES - print fTTS label | |
1837 btfsc FLAG_pscr_mode ; NO - in pSCR mode? | |
1838 bra TFT_display_ftts_1 ; YES - print fTTS label | |
1839 bra TFT_display_ftts_2 ; NO - must be OC then | |
1840 TFT_display_ftts_1: ; in CCR or pSCR mode | |
1841 btfsc is_bailout ; in bailout? | |
1842 bra TFT_display_ftts_2 ; YES - print fTTS label | |
1843 TSTOSS opt_calc_asc_gasvolume ; NO - bailout volume calculation requested? | |
1844 bra TFT_display_ftts_2 ; NO - print fTTS label | |
1845 STRCPY "B/O" ; YES - print bailout label | |
560 | 1846 bra TFT_display_ftts_3 |
582 | 1847 TFT_display_ftts_2: ; OC or bailout |
1848 STRCPY "@+" ; print fTTS label | |
560 | 1849 TFT_display_ftts_3: |
582 | 1850 movff char_I_extra_time,lo |
1851 bsf leftbind | |
1852 output_8 | |
1853 PUTC ":" | |
1854 movff int_O_alternate_ascenttime+0,lo | |
1855 movff int_O_alternate_ascenttime+1,hi | |
560 | 1856 btfss hi,int_invalid_flag ; is the invalid flag set? |
1857 bra TFT_display_ftts1 ; NO | |
1858 bcf hi,int_invalid_flag ; YES - clear flag | |
582 | 1859 call TFT_disabled_color ; switch to disabled color |
560 | 1860 TFT_display_ftts1: |
582 | 1861 movf lo,W |
1862 iorwf hi,W ; extra_ascenttime == 0 ? | |
1863 bz TFT_display_ftts2 ; YES - show dashes | |
560 | 1864 btfsc hi,int_not_yet_computed ; is the not-computed-yet flag set? |
1865 bra TFT_display_ftts2 ; YES | |
1866 output_16 ; NO | |
1867 bcf leftbind | |
582 | 1868 PUTC "'" |
1869 movlw dm_warning_length ; Divemode string length | |
1870 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
0 | 1871 STRCAT_PRINT "" |
582 | 1872 bcf win_invert |
560 | 1873 goto TFT_standard_color ; ...and return |
1874 TFT_display_ftts2: | |
582 | 1875 STRCAT "---" |
1876 bcf leftbind | |
1877 movlw dm_warning_length ; Divemode string length | |
1878 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
1879 STRCAT_PRINT "" | |
1880 bcf win_invert | |
560 | 1881 goto TFT_standard_color ; ...and return |
0 | 1882 |
1883 | |
1884 ;============================================================================= | |
560 | 1885 |
1886 global TFT_temp_surfmode | |
0 | 1887 TFT_temp_surfmode: |
582 | 1888 call TFT_divemask_color |
1889 WIN_SMALL surf_temp_column+3*8,surf_temp_row | |
1890 TSTOSS opt_units ; 0=°C, 1=°F | |
560 | 1891 bra TFT_temp_surfmode_metric |
582 | 1892 STRCAT_TEXT tLogTunitF ; °F |
560 | 1893 bra TFT_temp_surfmode_common |
0 | 1894 TFT_temp_surfmode_metric: |
582 | 1895 STRCAT_TEXT tLogTunitC ; °C |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1896 TFT_temp_surfmode_common: |
560 | 1897 STRCAT_PRINT "" |
582 | 1898 WIN_SMALL surf_temp_column,surf_temp_row |
560 | 1899 bra TFT_temp_common |
582 | 1900 |
1901 | |
560 | 1902 global TFT_temp_divemode |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1903 TFT_temp_divemode: |
582 | 1904 bcf FLAG_TFT_temp_divemode |
1905 btfsc divemode_menu ; Is the dive mode menu shown? | |
1906 return ; Yes, no update of temperature now | |
560 | 1907 btfsc blinking_better_gas ; blinking better Gas? |
1908 return ; Yes, no update of temperature now | |
1909 WIN_SMALL dm_temp_column,dm_temp_row | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1910 TFT_temp_common: |
582 | 1911 call TFT_standard_color |
560 | 1912 SAFE_2BYTE_COPY temperature,lo ; get current temperature |
582 | 1913 TSTOSS opt_units ; 0=°C, 1=°F |
560 | 1914 bra TFT_temp_common_1 |
1915 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
|
1916 TFT_temp_common_1: |
560 | 1917 rcall TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required |
1918 btfsc neg_flag ; is the temperature negative? | |
1919 bra TFT_temp_common_2 ; YES - the minus sign has already been written | |
1920 ; temp is positive, is it less then 10°C? | |
582 | 1921 tstfsz hi |
560 | 1922 bra TFT_temp_common_1a ; >25.5°C, skip here |
1923 movlw .100 | |
1924 cpfslt lo | |
1925 bra TFT_temp_common_1a ; >10.0°C, skip here | |
1926 bsf leftbind | |
1927 output_16dp d'4' ; x.y°C | |
1928 bcf leftbind | |
1929 bra TFT_temp_common_3 ; Done. | |
553
2e70700774b9
Display dezimal for temperatures between 10 and 0?C
heinrichsweikamp
parents:
552
diff
changeset
|
1930 TFT_temp_common_1a: |
560 | 1931 PUTC " " ; NO - write a space instead of the minus sign |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1932 TFT_temp_common_2: |
560 | 1933 bsf ignore_digit5 ; ignore decimal |
1934 output_16_3 ; output 0-999 without decimal -> writes ' ' - 99 | |
1935 bcf ignore_digit5 | |
582 | 1936 movff buffer+2,lo ; get output from unit position |
1937 movlw " " ; load code of the space character | |
560 | 1938 cpfseq lo ; is there a space sign on the unit position? (happens between +1 and -1) |
1939 bra TFT_temp_common_3 ; NO | |
1940 movff WREG,buffer+0 ; YES - replace potential minus sign with a space (temps from -0.9° to -0.1° else would appear as '- 0') | |
1941 movlw "0" ; load code of the zero character | |
1942 movff WREG,buffer+2 ; replace space with a zero | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1943 TFT_temp_common_3: |
560 | 1944 btfss divemode ; are we in dive mode? |
1945 bra TFT_temp_common_5 ; NO - no unit to append | |
1946 TSTOSS opt_units ; YES - check unit type: 0=°C, 1=°F | |
1947 bra TFT_temp_common_4 ; go metric | |
1948 STRCAT_TEXT tLogTunitF ; append °F | |
1949 bra TFT_temp_common_5 | |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1950 TFT_temp_common_4: |
582 | 1951 STRCAT_TEXT tLogTunitC ; append °C |
552
af84c45429fd
BUGFIX: Display of negative (?C) water temperatures
heinrichsweikamp
parents:
551
diff
changeset
|
1952 TFT_temp_common_5: |
560 | 1953 STRCAT_PRINT "" ; output to screen |
582 | 1954 return |
1955 | |
0 | 1956 ;============================================================================= |
560 | 1957 |
582 | 1958 global TFT_divemode_menu_cursor |
0 | 1959 TFT_divemode_menu_cursor: |
582 | 1960 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item1_column-.8, dm_menu_item1_column-.1 |
1961 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item4_column-.8, dm_menu_item4_column-.1 | |
1962 call TFT_standard_color | |
1963 | |
1964 movlw dm_menu_item1_column-.8 | |
1965 btfsc menupos1,2 ; >3? | |
1966 movlw dm_menu_item4_column-.8 ; Yes | |
1967 movff WREG,win_leftx2 | |
1968 | |
1969 movff menupos1,lo ; Copy menu position | |
1970 movlw dm_menu_item6_row | |
1971 dcfsnz lo,F | |
1972 movlw dm_menu_item1_row | |
1973 dcfsnz lo,F | |
1974 movlw dm_menu_item2_row | |
1975 dcfsnz lo,F | |
1976 movlw dm_menu_item3_row | |
1977 dcfsnz lo,F | |
1978 movlw dm_menu_item4_row | |
1979 dcfsnz lo,F | |
1980 movlw dm_menu_item5_row | |
1981 movff WREG,win_top | |
1982 movlw FT_SMALL | |
1983 movff WREG,win_font | |
1984 STRCPY_PRINT "\xb7" ; print cursor | |
1985 return | |
145
e3ac5b2021bc
NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents:
139
diff
changeset
|
1986 |
0 | 1987 global TFT_active_gas_divemode |
1988 TFT_active_gas_divemode: ; Display gas/Setpoint | |
582 | 1989 bcf FLAG_TFT_active_gas_divemode |
1990 btfsc divemode_menu ; Is the dive mode menu shown? | |
1991 return ; Yes, return | |
1992 btfsc FLAG_apnoe_mode ; Ignore in Apnoe mode | |
1993 return | |
1994 btfsc FLAG_ccr_mode ; in CCR mode? | |
1995 bra TFT_active_setpoint ; Yes, show setpoint and gas mix | |
1996 btfsc FLAG_pscr_mode ; in PSCR mode? | |
1997 bra TFT_active_setpoint ; Yes, show setpoint and gas mix | |
1998 call TFT_standard_color | |
1999 btfss better_gas_available ; check if a better gas is available and a gas change is advised in divemode | |
560 | 2000 bra TFT_active_gas_divemode2 ; NO - print in normal rendering |
582 | 2001 btg blinking_better_gas ; YES - toggle blink bit |
2002 btfss blinking_better_gas ; blink now? | |
2003 bra TFT_active_gas_divemode2 ; NO - print in normal rendering | |
2004 call TFT_attention_color ; YES - blink in yellow | |
2005 bsf win_invert ; set invert flag | |
560 | 2006 TFT_active_gas_divemode2: |
582 | 2007 WIN_STD dm_active_gas_column, dm_active_gas_row |
2008 movff char_I_O2_ratio,lo ; lo now stores O2 in % | |
2009 movff char_I_He_ratio,hi ; hi now stores He in % | |
2010 call customview_show_mix ; put "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2 | |
560 | 2011 STRCAT_PRINT "" |
582 | 2012 bcf win_invert ; reset invert flag |
560 | 2013 goto TFT_standard_color ; ...and return |
2014 | |
582 | 2015 TFT_active_setpoint: ; Show setpoint |
2016 btfsc is_bailout ; are we in bailout? | |
2017 bra TFT_active_setpoint_bail ; YES - show "Bailout" instead of setpoint | |
560 | 2018 movff int_O_breathed_ppO2+0,lo |
2019 movff int_O_breathed_ppO2+1,hi | |
582 | 2020 call TFT_color_code_ppo2 ; with ppO2 [cbar] in hi:lo |
2021 btg blinking_setpoint ; toggle blink bit... | |
2022 btfss blinking_setpoint ; blink now? | |
2023 bra TFT_active_setpoint_print ; NO - print ppO2 with normal rendering | |
2024 btfsc setpoint_fallback ; YES - check if we are in fallback condition | |
2025 bra TFT_active_setpoint_fallb ; YES - process fallback case | |
2026 movff int_O_breathed_ppO2+1,WREG ; NO - get flags again (have been cleared in hi:lo by TFT_color_code_ppo2 meanwhile) | |
2027 btfss WREG,int_warning_flag ; warning flag set? | |
2028 bra TFT_active_setpoint_print ; NO - ppO2 is ok, print ppO2 with normal rendering | |
2029 bra TFT_active_setpoint_com ; YES - continue with blinking common part | |
560 | 2030 TFT_active_setpoint_fallb: ; set up fallback case |
582 | 2031 movlw color_yellow ; text in yellow |
2032 call TFT_set_color ; overwrite setting done by TFT_color_code_ppo2 | |
2033 TFT_active_setpoint_com: ; blinking common part | |
2034 bsf win_invert ; set invert flag | |
560 | 2035 TFT_active_setpoint_print: |
2036 WIN_STD dm_active_gas_column, dm_active_gas_row | |
2037 bsf leftbind | |
582 | 2038 output_16dp .3 ; x.xx bar |
2039 bcf leftbind | |
2040 STRCAT_TEXT tbar | |
2041 movff opt_ccr_mode,WREG ; =0: Fixed SP, =1: Sensor, =2: Auto SP | |
2042 sublw .1 ; opt_ccr_mode = 1 (Sensor)? | |
2043 bnz TFT_active_setpoint2_a ; NO - skip | |
2044 PUTC "*" ; YES - add an astrix | |
560 | 2045 TFT_active_setpoint2_a: |
2046 STRCAT_PRINT "" | |
582 | 2047 bcf win_invert ; reset invert flag |
560 | 2048 call TFT_standard_color ; revert to standard color |
2049 bra TFT_active_setpoint_diluent ; continue with showing diluent | |
2050 TFT_active_setpoint_bail: | |
2051 WIN_SMALL dm_active_gas_column, dm_active_gas_row+.3 ; collides with diluent in FT_MEDIUM | |
0 | 2052 call TFT_standard_color |
582 | 2053 STRCPY_TEXT_PRINT tDiveBailout ; Bailout |
560 | 2054 TFT_active_setpoint_diluent: |
582 | 2055 btfss better_gas_available ; check if a better gas is available and a gas change is advised in divemode |
560 | 2056 bra TFT_active_setpoint_diluent_show ; NO - print in normal rendering |
582 | 2057 btg blinking_better_gas ; YES - toggle blink bit... |
2058 btfss blinking_better_gas ; blink now? | |
560 | 2059 bra TFT_active_setpoint_diluent_show ; NO - print in normal rendering |
582 | 2060 movlw color_yellow ; YES - blink in yellow |
2061 call TFT_set_color ; set text color | |
2062 bsf win_invert ; set invert flag | |
560 | 2063 TFT_active_setpoint_diluent_show: |
2064 WIN_SMALL dm_active_dil_column, dm_active_dil_row | |
582 | 2065 movff char_I_O2_ratio,lo ; lo now stores O2 in % |
2066 movff char_I_He_ratio,hi ; hi now stores He in % | |
2067 call customview_show_mix ; put "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2 | |
0 | 2068 STRCAT_PRINT "" |
582 | 2069 bcf win_invert ; reset invert flag |
560 | 2070 goto TFT_standard_color ; ...and return |
2071 | |
2072 | |
2073 global TFT_show_mode_divemode | |
2074 TFT_show_mode_divemode: | |
2075 WIN_TINY dm_active_dil_column+.45, dm_active_dil_row+.3 | |
2076 btfsc is_bailout ; in bailout? | |
2077 return ; YES | |
2078 btfsc FLAG_ccr_mode ; NO - in CCR mode? | |
2079 bra TFT_show_mode_divemode_ccr ; YES - write CCR label | |
2080 btfsc FLAG_pscr_mode ; NO - in pSCR mode? | |
2081 bra TFT_show_mode_divemode_pscr ; YES - write pSCR label | |
2082 return ; NO - done | |
2083 TFT_show_mode_divemode_ccr: | |
2084 call TFT_standard_color ; set standard color | |
2085 STRCPY_TEXT_PRINT tDvCCR ; print "CCR" | |
2086 return ; done | |
2087 TFT_show_mode_divemode_pscr: | |
2088 call TFT_standard_color ; set standard color | |
2089 STRCPY_TEXT_PRINT tDvPSCR ; print "PSCR" | |
0 | 2090 return |
582 | 2091 |
0 | 2092 |
2093 global TFT_display_decotype_surface | |
2094 TFT_display_decotype_surface: | |
582 | 2095 WIN_STD surf_decotype_column,surf_decotype_row |
2096 WIN_COLOR color_lightblue | |
2097 movff opt_dive_mode,lo ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR | |
2098 tstfsz lo | |
2099 bra TFT_display_decotype_surface2 | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2100 TFT_display_decotype_surface0: |
582 | 2101 STRCAT_TEXT_PRINT tDvOC ; OC |
2102 bra TFT_display_decotype_exit | |
0 | 2103 TFT_display_decotype_surface2: |
582 | 2104 decfsz lo,F |
2105 bra TFT_display_decotype_surface3 | |
2106 STRCAT_TEXT_PRINT tDvCC ; CC | |
2107 call TFT_standard_color | |
113 | 2108 WIN_TINY surf_decotype_column+.18,surf_decotype_row+.12 |
582 | 2109 TSTOSS opt_ccr_mode ; =0: Fixed SP, =1: Sensor, =2: Auto SP |
2110 bra TFT_display_decotype_cc_fixed | |
2111 ; Sensor mode or Auto | |
2112 movff opt_ccr_mode,WREG | |
2113 sublw .2 | |
2114 bz TFT_display_decotype_cc_auto | |
2115 STRCPY_TEXT tCCRModeSensor ; Sensor | |
2116 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
|
2117 TFT_display_decotype_cc_auto: |
582 | 2118 STRCPY_TEXT tCCRModeAutoSP ; Auto SP |
2119 bra TFT_display_decotype_cc_common | |
113 | 2120 TFT_display_decotype_cc_fixed: |
582 | 2121 STRCPY_TEXT tCCRModeFixedSP ; Fixed SP |
113 | 2122 TFT_display_decotype_cc_common: |
582 | 2123 clrf WREG |
2124 movff WREG,buffer+.8 ; limit string length to 8 | |
2125 STRCAT_PRINT "" | |
2126 bra TFT_display_decotype_exit | |
0 | 2127 TFT_display_decotype_surface3: |
582 | 2128 decfsz lo,F |
2129 bra TFT_display_decotype_surface4 | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2130 TFT_display_decotype_surface3_1: |
582 | 2131 STRCAT_TEXT_PRINT tDvGauge ; Gauge |
2132 bra TFT_display_decotype_exit | |
0 | 2133 TFT_display_decotype_surface4: |
582 | 2134 decfsz lo,F |
2135 bra TFT_display_decotype_surface5 | |
2136 TFT_display_decotype_surface4_1: | |
2137 STRCAT_TEXT_PRINT tDvApnea ; Apnea | |
2138 bra TFT_display_decotype_exit | |
480
ad8acade5567
NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents:
477
diff
changeset
|
2139 TFT_display_decotype_surface5: |
582 | 2140 STRCAT_TEXT_PRINT tDvPSCR ; PSCR |
0 | 2141 TFT_display_decotype_exit: |
582 | 2142 goto TFT_standard_color ; and return... |
2143 | |
2144 | |
2145 global TFT_display_decotype_surface1 ; Used from logbook! | |
2146 TFT_display_decotype_surface1: ; Used from logbook! | |
2147 tstfsz lo | |
2148 bra TFT_display_decotype_surface1_2 | |
2149 bra TFT_display_decotype_surface0 ;OC | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2150 TFT_display_decotype_surface1_2: |
582 | 2151 decfsz lo,F |
2152 bra TFT_display_decotype_surface1_3 | |
2153 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
|
2154 TFT_display_decotype_surface1_3: |
582 | 2155 decfsz lo,F |
2156 bra TFT_display_decotype_surface1_4 | |
2157 bra TFT_display_decotype_surface3_1 ; Gauge | |
480
ad8acade5567
NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents:
477
diff
changeset
|
2158 TFT_display_decotype_surface1_4: |
582 | 2159 decfsz lo,F |
2160 bra TFT_display_decotype_surface4_1 ; Apnea | |
2161 bra TFT_display_decotype_surface5 ; PSCR | |
116
737d6f488729
show decomode in logbook and simulator w/o sensor type
heinrichsweikamp
parents:
113
diff
changeset
|
2162 |
0 | 2163 ;============================================================================= |
2164 | |
582 | 2165 global TFT_splist_surfmode ; Show Setpoint list |
2166 extern gaslist_strcat_setpoint | |
0 | 2167 TFT_splist_surfmode: |
582 | 2168 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint |
2169 ;SP 1 | |
2170 WIN_SMALL surf_gaslist_column,surf_gaslist_row | |
2171 clrf PRODL | |
2172 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2173 STRCAT_PRINT "" | |
2174 ;SP 2 | |
2175 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) | |
2176 movlw .1 | |
2177 movwf PRODL | |
2178 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2179 STRCAT_PRINT "" | |
2180 ;SP 3 | |
2181 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
2182 movlw .2 | |
2183 movwf PRODL | |
2184 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2185 STRCAT_PRINT "" | |
2186 ;SP 4 | |
2187 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.3) | |
2188 movlw .3 | |
2189 movwf PRODL | |
2190 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2191 STRCAT_PRINT "" | |
2192 ;SP 5 | |
2193 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.4) | |
2194 movlw .4 | |
2195 movwf PRODL | |
2196 call gaslist_strcat_setpoint ; Show SP#+1 of PRODL# | |
2197 STRCAT_PRINT "" | |
2198 bcf leftbind | |
2199 return | |
0 | 2200 |
2201 global TFT_gaslist_surfmode | |
582 | 2202 TFT_gaslist_surfmode: ; Displays Gas List |
2203 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint | |
2204 extern gaslist_strcat_gas_mod | |
2205 ;Gas 1 | |
2206 WIN_SMALL surf_gaslist_column,surf_gaslist_row | |
2207 clrf PRODL | |
2208 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2209 STRCAT_PRINT "" | |
2210 ;Gas 2 | |
2211 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1) | |
2212 movlw .1 | |
2213 movwf PRODL | |
2214 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2215 STRCAT_PRINT "" | |
2216 ;Gas 3 | |
2217 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
2218 movlw .2 | |
2219 movwf PRODL | |
2220 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2221 STRCAT_PRINT "" | |
2222 ;Gas 4 | |
2223 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.3) | |
2224 movlw .3 | |
2225 movwf PRODL | |
2226 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2227 STRCAT_PRINT "" | |
2228 ;Gas 5 | |
2229 WIN_SMALL surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.4) | |
2230 movlw .4 | |
2231 movwf PRODL | |
2232 call gaslist_strcat_gas_mod ;Append gas description of gas #PRODL (0-4) to current string | |
2233 STRCAT_PRINT "" | |
2234 bcf leftbind | |
2235 return | |
0 | 2236 |
2237 global TFT_dillist_surfmode | |
582 | 2238 TFT_dillist_surfmode: ; Displays Diluent List |
2239 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint | |
2240 bsf ccr_diluent_setup ; Use CCR Diluents... | |
2241 rcall TFT_gaslist_surfmode ; Use OC/BAIL routine | |
2242 bcf ccr_diluent_setup ; Clear flag | |
2243 return | |
0 | 2244 |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2245 ;================================================================== |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2246 |
0 | 2247 global TFT_depth |
2248 TFT_depth: | |
582 | 2249 bcf FLAG_TFT_depth |
2250 SAFE_2BYTE_COPY rel_pressure, lo | |
2251 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
2252 call TFT_color_code_depth ; Color-code the output | |
2253 rcall TFT_depth_blink | |
2254 WIN_LARGE dm_depth_column, dm_depth_row | |
2255 | |
2256 TSTOSS opt_units ; 0=m, 1=ft | |
2257 bra TFT_depth_metric | |
0 | 2258 ;TFT_depth_imperial |
582 | 2259 clrf sub_a+1 ; Display 0ft if lower then 30cm |
0 | 2260 movlw d'30' |
2261 movwf sub_a+0 | |
2262 movff hi,sub_b+1 | |
2263 movff lo,sub_b+0 | |
582 | 2264 call subU16 ; sub_c = sub_a - sub_b |
2265 btfss neg_flag ; Depth lower then 0.4m? | |
2266 bra depth_less_0.3mtr_feet ; Yes, Show 0ft manually | |
2267 | |
2268 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
0 | 2269 bsf leftbind |
582 | 2270 output_16 ; feet in Big font |
2271 bcf leftbind | |
2272 movlw .3 ; limit to three chars | |
2273 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
2274 STRCAT_PRINT "" ; Display feet | |
2275 bcf win_invert ; Reset invert flag | |
2276 return | |
126 | 2277 |
0 | 2278 depth_less_0.3mtr_feet: |
582 | 2279 STRCAT_PRINT "0 " ; manual zero |
2280 bcf win_invert ; Reset invert flag | |
0 | 2281 return |
2282 | |
2283 TFT_depth_metric: | |
2284 movlw .039 | |
2285 cpfslt hi | |
582 | 2286 bra depth_greater_99_84mtr |
2287 | |
2288 btfsc depth_greater_100m ; Was depth>100m during last call | |
2289 rcall TFT_clear_depth ; Yes, clear depth area | |
2290 bcf depth_greater_100m ; Do this once only... | |
0 | 2291 |
11 | 2292 movlw .039 |
2293 cpfslt hi | |
582 | 2294 bra depth_greater_99_84mtr |
11 | 2295 |
0 | 2296 movlw HIGH d'1000' |
2297 movwf sub_a+1 | |
2298 movlw LOW d'1000' | |
2299 movwf sub_a+0 | |
2300 movff hi,sub_b+1 | |
2301 movff lo,sub_b+0 | |
2302 incf sub_b+0,F | |
2303 movlw d'0' | |
2304 addwfc sub_b+1,F ; Add 1mbar offset | |
2305 call sub16 ; sub_c = sub_a - sub_b | |
582 | 2306 movlw ' ' |
0 | 2307 btfss neg_flag ; Depth lower then 10m? |
582 | 2308 movwf POSTINC2 ; Yes, add extra space |
2309 | |
2310 clrf sub_a+1 | |
0 | 2311 movlw d'99' |
2312 movwf sub_a+0 | |
2313 movff hi,sub_b+1 | |
2314 movff lo,sub_b+0 | |
2315 call subU16 ; sub_c = sub_a - sub_b | |
2316 btfss neg_flag ; Depth lower then 1m? | |
2317 bra tft_depth2 ; Yes, display manual Zero | |
2318 | |
2319 bsf leftbind | |
2320 bsf ignore_digit4 | |
2321 output_16 ; Full meters in Big font | |
2322 bcf leftbind | |
2323 bra tft_depth3 | |
2324 | |
2325 tft_depth2: | |
582 | 2326 STRCAT "0" ; manual zero |
0 | 2327 |
2328 tft_depth3: | |
2329 STRCAT_PRINT "" ; Display full meters | |
2330 | |
2331 ; .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
|
2332 WIN_MEDIUM dm_depth_dm_column, dm_depth_dm_row |
560 | 2333 |
2334 ; TODO - check if needed, depth should still be in hi:lo | |
582 | 2335 SAFE_2BYTE_COPY rel_pressure, lo |
2336 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
2337 call TFT_color_code_depth ; Color-code the output | |
2338 | |
2339 PUTC "." | |
2340 movlw HIGH d'30' ; Display 0.0m if lower then 30cm | |
0 | 2341 movwf sub_a+1 |
582 | 2342 movlw LOW d'30' |
0 | 2343 movwf sub_a+0 |
2344 movff hi,sub_b+1 | |
2345 movff lo,sub_b+0 | |
2346 call subU16 ; sub_c = sub_a - sub_b | |
2347 btfss neg_flag ; Depth lower then 0.3m? | |
2348 bra depth_less_0.3mtr ; Yes, Show ".0" manually | |
2349 | |
2350 movlw d'4' | |
2351 movwf ignore_digits | |
2352 bsf ignore_digit5 | |
2353 output_16dp d'0' | |
2354 STRCAT_PRINT "" ; Display decimeters | |
582 | 2355 bcf win_invert ; Reset invert flag |
2356 WIN_FONT FT_SMALL | |
0 | 2357 return |
2358 | |
2359 depth_less_0.3mtr: | |
2360 STRCAT_PRINT "0" ; Display 0.0m manually | |
582 | 2361 bcf win_invert ; Reset invert flag |
2362 WIN_FONT FT_SMALL | |
0 | 2363 return |
2364 | |
560 | 2365 depth_greater_99_84mtr: ; Display only in full meters |
0 | 2366 btfss depth_greater_100m ; Is depth>100m already? |
2367 rcall TFT_clear_depth ; No, clear depth area and set flag | |
582 | 2368 call TFT_color_code_depth |
0 | 2369 ; Depth is already in hi:lo |
2370 ; Show depth in Full meters | |
560 | 2371 ; That means ignore digit 4 and 5 |
582 | 2372 lfsr FSR2,buffer |
0 | 2373 bsf ignore_digit4 |
2374 bsf leftbind | |
2375 output_16 | |
2376 bcf leftbind | |
582 | 2377 STRCAT_PRINT "" ; Display full meters only |
2378 bcf win_invert ; Reset invert flag | |
2379 WIN_FONT FT_SMALL | |
0 | 2380 return |
2381 | |
582 | 2382 TFT_clear_depth: ; No, clear depth area and set flag |
2383 WIN_BOX_BLACK dm_depth_row, dm_depth_bot, dm_depth_column, dm_depth_rgt ;top, bottom, left, right | |
2384 bsf depth_greater_100m ; Set Flag | |
0 | 2385 return |
2386 | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2387 TFT_depth_blink: |
582 | 2388 TSTOSS opt_modwarning ; 0=standard, 1=blink |
2389 return | |
2390 | |
2391 ; check if previous cycle had the blinking warning or not | |
2392 btfsc blinking_depth_prev ; did we have warning prev? | |
2393 bra TFT_depth_blink_prevwarn; Yes | |
2394 | |
2395 ; No; check if it's set now | |
2396 btfsc blinking_depth_warning ; do we have warning set now? | |
2397 bra TFT_depth_blink_warn ; Yes - so we have warning now but not prev | |
2398 | |
2399 ; no warning in previous cycle, no warning now, reset all flags | |
2400 bcf blinking_depth_prev ; reset prev flag | |
2401 bcf blinking_depth_toggle ; reset toggle | |
2402 bcf win_invert | |
2403 ; all done | |
2404 return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2405 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2406 TFT_depth_blink_prevwarn: |
582 | 2407 ; ...we had warning in previous cycle, check if we still have the warning set |
2408 btfss blinking_depth_warning ; do we still have the warning? | |
2409 bra TFT_depth_blink_prevwarn_nowarn ; No, clear the depth area | |
2410 | |
2411 ; we still have the warning, set previous flag for next cycle... | |
2412 bsf blinking_depth_prev ; set prev flag | |
2413 ; and set toggle and invert if required | |
2414 btfss blinking_depth_toggle ; do we have the toggle set? | |
2415 bra TFT_depth_blink_set ; No: set inverse, do color_box, set flag | |
2416 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
|
2417 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2418 TFT_depth_blink_prevwarn_nowarn: |
582 | 2419 ; we had warning, but not now... (e.g. ascended or switched to better gas) |
2420 ; reset the previous cycle flag for the next cycle... | |
2421 bcf blinking_depth_prev ; reset prev flag | |
2422 ; clear it - just in case if we had a blinked before | |
2423 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
|
2424 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2425 TFT_depth_blink_warn: |
582 | 2426 ; new blinking warning activated (had no warning in previous cycle) |
2427 bsf blinking_depth_prev ; set prev flag | |
2428 ; set toggle and invert | |
2429 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
|
2430 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2431 TFT_depth_blink_set: |
582 | 2432 ; clear the area with color |
2433 movlw color_red ; that should not be hardcoded... | |
2434 WIN_BOX_COLOR dm_depth_row, dm_depth_bot, dm_depth_column, dm_depth_rgt ;top, bottom, left, right | |
2435 ;set the invert color | |
2436 bsf win_invert | |
2437 ; set the toggle | |
2438 bsf blinking_depth_toggle | |
2439 ; all done | |
2440 return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2441 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2442 TFT_depth_blink_reset: |
582 | 2443 ; clear the area with black |
2444 WIN_BOX_BLACK dm_depth_row, dm_depth_bot, dm_depth_column, dm_depth_rgt ;top, bottom, left, right | |
2445 ;reset the invert color | |
2446 bcf win_invert | |
2447 ; reset the toggle | |
2448 bcf blinking_depth_toggle | |
2449 ; if it's still warning... | |
2450 btfsc blinking_depth_warning | |
2451 call TFT_warnings_color | |
2452 ; all done | |
2453 return | |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2454 |
0 | 2455 ;============================================================================= |
2456 | |
582 | 2457 global TFT_custom_text |
2458 TFT_custom_text: ; Show the custom text | |
2459 lfsr FSR0, opt_name ; Source | |
2460 WIN_SMALL surf_customtext_column,surf_customtext_row1 ; First 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+.12 ; Source | |
2465 WIN_SMALL surf_customtext_column,surf_customtext_row2 ; Second row | |
2466 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2467 incfsz lo,F ; Was lo=255? | |
2468 return ; No, all done. | |
2469 lfsr FSR0, opt_name+.24 ; Source | |
2470 WIN_SMALL surf_customtext_column,surf_customtext_row3 ; Third row | |
2471 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2472 incfsz lo,F ; Was lo=255? | |
2473 return ; No, all done. | |
2474 lfsr FSR0, opt_name+.36 ; Source | |
2475 WIN_SMALL surf_customtext_column,surf_customtext_row4 ; Forth row | |
2476 rcall TFT_custom_text_2 ; Show up to 12 chars and print | |
2477 incfsz lo,F ; Was lo=255? | |
2478 return ; No, all done. | |
2479 lfsr FSR0, opt_name+.48 ; Source | |
2480 WIN_SMALL surf_customtext_column,surf_customtext_row5 ; Fifth row | |
2481 bra TFT_custom_text_2 ; Show up to 12 chars and print ; and return... | |
560 | 2482 |
0 | 2483 |
2484 TFT_custom_text_2: | |
582 | 2485 lfsr FSR2, buffer ; destination |
2486 movlw .12 | |
2487 movwf lo ; length/line | |
0 | 2488 TFT_custom_text_3: |
582 | 2489 movf POSTINC0,W ; Get byte |
2490 bz TFT_custom_text_4 ; End if NULL | |
2491 movwf POSTINC2 ; NO: copy | |
2492 decfsz lo,F ; Max length reached ? | |
2493 bra TFT_custom_text_3 ; NO: loop | |
2494 setf lo ; lo=255 -> more to come | |
0 | 2495 TFT_custom_text_4: |
582 | 2496 clrf POSTINC2 ; Mark end of string |
2497 goto aa_wordprocessor ; print and return | |
0 | 2498 |
2499 | |
2500 ;============================================================================= | |
560 | 2501 |
0 | 2502 global TFT_update_surf_press |
2503 TFT_update_surf_press: | |
582 | 2504 WIN_SMALL surf_press_column,surf_press_row |
0 | 2505 call TFT_standard_color |
582 | 2506 SAFE_2BYTE_COPY amb_pressure, lo |
0 | 2507 movff lo,sub_a+0 |
2508 movff hi,sub_a+1 | |
2509 movff last_surfpressure_30min+0,sub_b+0 | |
2510 movff last_surfpressure_30min+1,sub_b+1 | |
560 | 2511 call subU16 ; sub_c = sub_a - sub_b |
2512 btfsc neg_flag ; Pressure lower? | |
2513 rcall update_surf_press2 ; Yes, test threshold | |
2514 tstfsz sub_c+1 ; >255mbar difference? | |
2515 bra update_surf_press_common ; Yes, display! | |
2516 movlw d'11' ; 10mbar noise suppression | |
0 | 2517 subwf sub_c+0,W |
2518 btfsc STATUS,C | |
560 | 2519 bra update_surf_press_common ; Yes, display! |
582 | 2520 SAFE_2BYTE_COPY last_surfpressure_30min, lo ; Overwrite with stable value... |
0 | 2521 update_surf_press_common: |
560 | 2522 movff lo,int_I_pres_surface+0 ; copy displayed value to C code to have pressure displayed |
2523 movff hi,int_I_pres_surface+1 ; and pressure used for desaturation & no-fly time in sync | |
0 | 2524 output_16 |
560 | 2525 ; Show only 4 digits |
0 | 2526 movff buffer+1,buffer+0 |
2527 movff buffer+2,buffer+1 | |
2528 movff buffer+3,buffer+2 | |
2529 movff buffer+4,buffer+3 | |
2530 movlw 0x00 | |
2531 movff WREG,buffer+4 | |
582 | 2532 STRCAT_PRINT "" |
2533 call TFT_divemask_color | |
2534 WIN_SMALL surf_press_column+4*8,surf_press_row | |
2535 STRCPY_TEXT_PRINT tMBAR ; mbar | |
0 | 2536 return |
2537 | |
2538 update_surf_press2: | |
2539 movff lo,sub_b+0 | |
2540 movff hi,sub_b+1 | |
2541 movff last_surfpressure_30min+0,sub_a+0 | |
2542 movff last_surfpressure_30min+1,sub_a+1 | |
560 | 2543 goto subU16 ; sub_c = sub_a - sub_b ; and return... |
0 | 2544 |
2545 ;============================================================================= | |
2546 | |
2547 global TFT_update_batt_voltage | |
2548 TFT_update_batt_voltage: | |
582 | 2549 movff batt_percent,lo ; Get battery percent |
2550 call TFT_color_code_battery ; Color-code battery percent | |
2551 ; Setup charge indicator | |
2552 btfsc cc_active | |
2553 bsf win_invert | |
2554 btfsc cc_active | |
2555 movlw color_yellow | |
2556 btfsc cv_active | |
2557 movlw color_green | |
2558 btfsc cc_active | |
2559 call TFT_set_color | |
0 | 2560 WIN_TINY batt_percent_column,batt_percent_row |
2561 bsf leftbind | |
2562 output_8 | |
2563 bcf leftbind | |
88 | 2564 STRCAT "% " |
2565 movlw 0x00 | |
2566 movff WREG,buffer+4 ; Only "xxx%" | |
582 | 2567 STRCAT_PRINT "" |
2568 bcf win_invert | |
0 | 2569 call TFT_standard_color |
2570 WIN_TINY batt_voltage_column,batt_voltage_row | |
582 | 2571 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
|
2572 PUTC "T" |
582 | 2573 bsf leftbind |
2574 output_8 | |
2575 PUTC ":" | |
0 | 2576 movff batt_voltage+0,lo |
2577 movff batt_voltage+1,hi | |
582 | 2578 output_16dp .2 |
0 | 2579 bcf leftbind |
2580 PUTC 'V' | |
477
44b8a826b314
NEW: Show battery type in surface mode next to battery voltage
heinrichsweikamp
parents:
475
diff
changeset
|
2581 movff buffer+8,buffer+6 |
0 | 2582 movlw 0x00 |
477
44b8a826b314
NEW: Show battery type in surface mode next to battery voltage
heinrichsweikamp
parents:
475
diff
changeset
|
2583 movff WREG,buffer+7 ; Only "x.yV" |
582 | 2584 STRCAT_PRINT "" |
0 | 2585 return |
2586 | |
2587 ;update_battery_debug: | |
2588 ; call TFT_standard_color | |
2589 ; WIN_TINY .70,.0 | |
2590 ; movff battery_gauge+5,xC+3 | |
2591 ; movff battery_gauge+4,xC+2 | |
2592 ; movff battery_gauge+3,xC+1 | |
2593 ; movff battery_gauge+2,xC+0 | |
2594 ; ; battery_gauge:6 is nAs | |
2595 ; ; devide through 65536 | |
2596 ; ; devide through 152 | |
2597 ; ; Result is 0.01Ah in xC+1:xC+0 | |
2598 ; movlw LOW .152 | |
2599 ; movwf xB+0 | |
2600 ; movlw HIGH .152 | |
2601 ; movwf xB+1 | |
582 | 2602 ; call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder |
0 | 2603 ; bsf leftbind |
2604 ; movff xC+0,lo | |
2605 ; movff xC+1,hi | |
2606 ; output_16 | |
2607 ; STRCAT_PRINT "x.01Ah" | |
2608 ; WIN_FONT FT_SMALL | |
2609 ; bcf leftbind | |
2610 ; return | |
582 | 2611 |
0 | 2612 ;============================================================================= |
2613 | |
2614 global TFT_convert_signed_16bit | |
2615 TFT_convert_signed_16bit: | |
582 | 2616 bcf neg_flag ; Positive temperature |
2617 btfss hi,7 ; Negative temperature ? | |
2618 return ; No, return | |
0 | 2619 ; Yes, negative temperature! |
582 | 2620 bsf neg_flag ; Negative temperature |
2621 PUTC '-' ; Display "-" | |
2622 comf hi ; Then, 16bit sign changes. | |
2623 negf lo | |
2624 btfsc STATUS,C | |
2625 incf hi | |
2626 return ; and return | |
0 | 2627 |
2628 ;============================================================================= | |
2629 | |
2630 global TFT_convert_date | |
582 | 2631 TFT_convert_date: ; converts into "DD/MM/YY" or "MM/DD/YY" or "YY/MM/DD" in postinc2 |
2632 movff opt_dateformat,WREG ; =0:MMDDYY, =1:DDMMYY, =2:YYMMDD | |
2633 movwf EEDATA ; used as temp here | |
0 | 2634 tstfsz EEDATA |
582 | 2635 bra TFT_convert_date_1 ; opt_dateformat is 1 or 2 |
2636 ; opt_dateformat is 0 | |
2637 ; use MMDDYY | |
2638 movff lo,lo_temp ; incoming: lo = day, hi = month | |
2639 movff hi,lo ; swap | |
2640 movff lo_temp,hi ; now: lo = month, hi = day | |
2641 bra TFT_convert_date_common | |
2642 | |
2643 TFT_convert_date_1: | |
2644 decfsz EEDATA,F | |
2645 bra TFT_convert_date_2 ; opt_dateformat is 2 | |
2646 ; opt_dateformat is 1 | |
2647 ; use DDMMYY | |
2648 TFT_convert_date_common: | |
0 | 2649 bsf leftbind |
582 | 2650 output_99x ; with lo = month or day or year |
2651 PUTC '.' | |
2652 movff hi,lo ; now lo = day or month or month | |
0 | 2653 output_99x |
582 | 2654 PUTC '.' |
2655 movff up,lo ; now lo = year or year or day | |
0 | 2656 output_99x |
2657 bcf leftbind | |
2658 return | |
2659 | |
582 | 2660 TFT_convert_date_2: |
2661 ; opt_dateformat is 2 | |
2662 ; use YYMMDD | |
2663 movff lo,lo_temp ; incoming: lo = day, up = year | |
2664 movff up,lo ; swap | |
2665 movff lo_temp,up ; now : lo = year, up = day | |
2666 bra TFT_convert_date_common | |
0 | 2667 |
2668 ;============================================================================= | |
2669 | |
2670 global TFT_convert_date_short | |
582 | 2671 TFT_convert_date_short: ; converts into "DD/MM" or "MM/DD" or "MM/DD" in postinc2 |
2672 movff opt_dateformat,WREG ; =0:MMDDYY, =1:DDMMYY, =2:YYMMDD | |
2673 movwf EEDATA ; used as temp here | |
0 | 2674 tstfsz EEDATA |
582 | 2675 bra TFT_convert_date_short_1 |
2676 ; opt_dateformat is 0 | |
2677 ; Use MMDD(YY) | |
2678 TFT_convert_date_short_0: | |
2679 movff lo,lo_temp ; incoming: lo = day, hi = month | |
2680 movff hi,lo ; swap | |
2681 movff lo_temp,hi ; now: lo = month, hi = day | |
2682 bra TFT_convert_date_short_common | |
2683 | |
2684 TFT_convert_date_short_1: | |
2685 decfsz EEDATA,F | |
2686 bra TFT_convert_date_short_0 ; opt_dateformat is 2 -> use (YY)MMDD | |
2687 ; opt_dateformat is 1 | |
2688 ; use DDMM(YY) | |
0 | 2689 TFT_convert_date_short_common: |
2690 bsf leftbind | |
582 | 2691 output_99x ; with lo = month or day |
2692 PUTC '.' | |
2693 movff hi,lo ; now lo = day or month | |
0 | 2694 output_99x |
2695 bcf leftbind | |
2696 return | |
2697 | |
2698 ;============================================================================= | |
2699 | |
2700 global TFT_date | |
2701 TFT_date: | |
582 | 2702 WIN_SMALL surf_date_column,surf_date_row ; Init new Wordprocessor |
0 | 2703 call TFT_standard_color |
582 | 2704 movff day,lo |
2705 movff month,hi | |
2706 movff year,up | |
560 | 2707 call TFT_convert_date ; converts into "DD/MM/YY" or "MM/DD/YY" or "YY/MM/DD" in postinc2 |
0 | 2708 STRCAT_PRINT "" |
2709 return | |
2710 | |
2711 ;============================================================================= | |
2712 | |
560 | 2713 global TFT_max_depth_alternative |
582 | 2714 TFT_max_depth_alternative: |
2715 bcf FLAG_TFT_max_depth_alt | |
560 | 2716 ; The "mask" |
582 | 2717 call TFT_divemask_color |
2718 WIN_TINY dm_mask_depth_column, dm_max_alt_row-.14 | |
560 | 2719 STRCPY_TEXT_PRINT tMaxDepth |
2720 | |
2721 ; The max. depth | |
2722 SAFE_2BYTE_COPY max_pressure, lo | |
2723 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
582 | 2724 call TFT_standard_color |
2725 TSTOSS opt_units ; 0=m, 1=ft | |
2726 bra TFT_max_depth_alt_metric | |
560 | 2727 ;TFT_max_depth_alt_imperial: |
2728 TFT_max_depth_alt_metric: | |
582 | 2729 WIN_LARGE dm_max_alt_column,dm_max_alt_row |
2730 bsf ignore_digit4 ; no 0.1m | |
560 | 2731 output_16 |
2732 STRCAT_PRINT "" | |
582 | 2733 |
560 | 2734 WIN_MEDIUM dm_max_dm_alt_column,dm_max_alt_row+.25 |
2735 SAFE_2BYTE_COPY max_pressure, lo | |
2736 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
582 | 2737 PUTC "." |
560 | 2738 movlw d'4' |
2739 movwf ignore_digits | |
582 | 2740 bsf ignore_digit5 |
2741 bsf leftbind | |
560 | 2742 output_16dp d'0' |
2743 STRCAT_PRINT "" ; Display decimeters | |
582 | 2744 bcf leftbind |
560 | 2745 return |
582 | 2746 |
2747 | |
560 | 2748 global TFT_max_depth |
2749 TFT_max_depth: | |
2750 bcf FLAG_TFT_max_depth | |
2751 btfsc FLAG_apnoe_mode ; different display in apnoe mode | |
582 | 2752 bra TFT_max_depth_apnoe |
560 | 2753 TFT_max_depth2: |
582 | 2754 SAFE_2BYTE_COPY max_pressure, lo |
560 | 2755 TFT_max_depth3: |
2756 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] | |
582 | 2757 TSTOSS opt_units ; 0=m, 1=ft |
560 | 2758 bra TFT_max_depth2_metric |
2759 ;TFT_max_depth2_imperial: | |
582 | 2760 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
|
2761 WIN_MEDIUM dm_max_depth_column, dm_max_depth_row |
582 | 2762 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
|
2763 WIN_MEDIUM dm_max_depth_column_nvsi, dm_max_depth_row |
0 | 2764 call TFT_standard_color |
2765 output_16_3 | |
2766 STRCAT_PRINT "" | |
2767 return | |
2768 | |
560 | 2769 TFT_max_depth2_metric: |
582 | 2770 WIN_MEDIUM dm_max_depth_column, dm_max_depth_row |
2771 TSTOSS opt_vsigraph ; 0=skip, 1=draw | |
2772 WIN_MEDIUM dm_max_depth_column_nvsi, dm_max_depth_row | |
2773 call TFT_standard_color | |
11 | 2774 |
2775 movlw .039 | |
2776 cpfslt hi | |
582 | 2777 bra max_depth_greater_99_84mtr |
11 | 2778 |
560 | 2779 btfsc max_depth_greater_100m ; Was depth>100m during last call |
2780 rcall TFT_clear_max_depth ; Yes, clear depth area | |
2781 bcf max_depth_greater_100m ; Do this once only... | |
11 | 2782 |
2783 movlw .039 | |
2784 cpfslt hi | |
582 | 2785 bra max_depth_greater_99_84mtr |
11 | 2786 |
2787 movlw HIGH d'1000' | |
2788 movwf sub_a+1 | |
2789 movlw LOW d'1000' | |
2790 movwf sub_a+0 | |
2791 movff hi,sub_b+1 | |
2792 movff lo,sub_b+0 | |
2793 incf sub_b+0,F | |
2794 movlw d'0' | |
2795 addwfc sub_b+1,F ; Add 1mbar offset | |
2796 call sub16 ; sub_c = sub_a - sub_b | |
582 | 2797 movlw ' ' |
11 | 2798 btfss neg_flag ; Depth lower then 10m? |
582 | 2799 movwf POSTINC2 ; Yes, add extra space |
2800 | |
2801 clrf sub_a+1 | |
11 | 2802 movlw d'99' |
2803 movwf sub_a+0 | |
2804 movff hi,sub_b+1 | |
2805 movff lo,sub_b+0 | |
2806 call subU16 ; sub_c = sub_a - sub_b | |
2807 btfss neg_flag ; Depth lower then 1m? | |
582 | 2808 bra tft_max_depth2 ; Yes, display manual Zero |
2809 | |
2810 bsf ignore_digit4 ; no 0.1m | |
2811 bsf leftbind | |
11 | 2812 output_16 |
2813 bra tft_max_depth3 | |
2814 | |
2815 tft_max_depth2: | |
582 | 2816 WIN_MEDIUM dm_max_depth_column, dm_max_depth_row |
2817 TSTOSS opt_vsigraph ; 0=skip, 1=draw | |
2818 WIN_MEDIUM dm_max_depth_column_nvsi, dm_max_depth_row | |
11 | 2819 STRCAT "0" |
2820 | |
2821 tft_max_depth3: | |
0 | 2822 call TFT_standard_color |
11 | 2823 STRCAT_PRINT "" ; Display full meters |
582 | 2824 bcf leftbind |
11 | 2825 |
2826 ; .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
|
2827 WIN_SMALL dm_max_depth_dm_column, dm_max_depth_dm_row |
582 | 2828 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
|
2829 WIN_SMALL dm_max_depth_dm_column_nvsi, dm_max_depth_dm_row |
11 | 2830 |
582 | 2831 SAFE_2BYTE_COPY max_pressure, lo |
560 | 2832 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] |
11 | 2833 |
582 | 2834 PUTC "." |
11 | 2835 |
2836 movlw d'4' | |
2837 movwf ignore_digits | |
2838 bsf ignore_digit5 | |
582 | 2839 bsf leftbind |
11 | 2840 output_16dp d'0' |
560 | 2841 STRCAT_PRINT "" ; Display decimeters |
582 | 2842 bcf leftbind |
11 | 2843 return |
2844 | |
582 | 2845 max_depth_greater_99_84mtr: ; Display only in full meters |
11 | 2846 btfss max_depth_greater_100m ; Is max depth>100m already? |
2847 rcall TFT_clear_max_depth ; No, clear max depth area and set flag | |
2848 ; Max. Depth is already in hi:lo | |
2849 ; Show max. depth in Full meters | |
2850 ; That means ignore figure 4 and 5 | |
582 | 2851 lfsr FSR2,buffer |
11 | 2852 bsf ignore_digit4 |
2853 bsf leftbind | |
0 | 2854 output_16 |
11 | 2855 bcf leftbind |
582 | 2856 STRCAT_PRINT "" ; Display full meters only |
2857 WIN_FONT FT_SMALL | |
0 | 2858 return |
2859 | |
582 | 2860 TFT_clear_max_depth: ; No, clear max. depth area and set flag |
2861 WIN_BOX_BLACK dm_max_depth_row, dm_max_depth_bot, dm_max_depth_column, dm_max_depth_rgt ;top, bottom, left, right | |
560 | 2862 bsf max_depth_greater_100m ; Set Flag |
11 | 2863 return |
2864 | |
2865 | |
560 | 2866 TFT_max_depth_apnoe: |
582 | 2867 btfss FLAG_active_descent ; Are we descending? |
2868 bra TFT_max_depth2 ; Yes, show normal max. | |
0 | 2869 SAFE_2BYTE_COPY apnoe_max_pressure, lo |
582 | 2870 bra TFT_max_depth3 ; Show apnoe_max_pressure as max. depth |
0 | 2871 |
2872 global TFT_display_apnoe_last_max | |
2873 TFT_display_apnoe_last_max: | |
582 | 2874 call TFT_divemask_color |
2875 WIN_TINY dm_apnoe_last_max_depth_text_col, dm_apnoe_last_max_depth_text_row | |
2876 STRCPY_TEXT_PRINT tApnoeMax | |
0 | 2877 |
2878 call TFT_standard_color | |
2879 SAFE_2BYTE_COPY max_pressure, lo | |
582 | 2880 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar] |
2881 TSTOSS opt_units ; 0=m, 1=ft | |
0 | 2882 bra TFT_display_apnoe_last_m_metric |
2883 ;TFT_display_apnoe_last_max_imperial | |
582 | 2884 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
|
2885 WIN_MEDIUM dm_apnoe_last_max_depth_column, dm_apnoe_last_max_depth_row |
0 | 2886 output_16 |
2887 STRCAT_PRINT "" | |
2888 return | |
2889 | |
2890 TFT_display_apnoe_last_m_metric: | |
582 | 2891 WIN_MEDIUM dm_apnoe_last_max_depth_column, dm_apnoe_last_max_depth_row |
2892 bsf ignore_digit5 ; do not display 1cm depth | |
2893 output_16dp d'3' | |
0 | 2894 STRCAT_PRINT "" |
2895 return | |
2896 | |
2897 ;============================================================================= | |
560 | 2898 |
0 | 2899 global TFT_divemins |
2900 TFT_divemins: | |
582 | 2901 bcf FLAG_TFT_divemins ; Clear flag |
0 | 2902 movff divemins+0,lo |
2903 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
|
2904 |
582 | 2905 ; Already showing divemins > 99min |
560 | 2906 btfsc no_more_divesecs ; Ignore seconds? |
582 | 2907 bra TFT_divemins2 ; Show minutes only |
2908 | |
2909 tstfsz hi ; hi = 0? | |
560 | 2910 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
|
2911 |
0 | 2912 movlw .99 |
582 | 2913 cpfsgt lo ; bigger than 99? |
2914 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
|
2915 |
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2916 TFT_divemins_clr: |
0 | 2917 ; Yes, remove second display for the rest of the dive and clear seconds |
582 | 2918 bsf no_more_divesecs ; Set flag |
0 | 2919 ; Clear rest of seconds |
582 | 2920 WIN_BOX_BLACK dm_divetime_row, dm_divetime_bot, dm_divetime_column, dm_divetime_rgt ;top, bottom, left, right |
2921 bra TFT_divemins2 ; Show minutes only | |
0 | 2922 |
2923 TFT_divemins1: | |
582 | 2924 ; Print out the minutes, up to 99min, only 2chars ! |
0 | 2925 call TFT_standard_color |
582 | 2926 WIN_MEDIUM dm_divetime_column, dm_divetime_row |
2927 output_99 ; displays only last two figures from a 8Bit value (0-99) | |
2928 STRCAT_PRINT "" ; Show minutes in large font | |
2929 | |
2930 ; Print out the seconds | |
2931 WIN_SMALL dm_divetime_secs_column, dm_divetime_secs_row ; left position for two sec figures | |
2932 PUTC ':' | |
405
08fea401be24
BUGFIX: Divetime >99mins was not displayed (Only OSTC2 with serial >= )
heinrichsweikamp
parents:
399
diff
changeset
|
2933 bsf leftbind |
582 | 2934 movff divesecs,lo |
560 | 2935 output_99x ; displays only last two figures from a 8Bit value with leading zero (00-99) |
582 | 2936 bcf leftbind |
2937 STRCAT_PRINT "" ; Show seconds in small font | |
0 | 2938 return |
2939 | |
2940 TFT_divemins2: | |
405
08fea401be24
BUGFIX: Divetime >99mins was not displayed (Only OSTC2 with serial >= )
heinrichsweikamp
parents:
399
diff
changeset
|
2941 ; Full minutes only |
0 | 2942 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
|
2943 WIN_MEDIUM dm_divetime_minsonly_column, dm_divetime_row |
582 | 2944 bcf leftbind |
2945 output_16_4 | |
2946 STRCAT_PRINT "" ; Show minutes in large font | |
2947 return | |
2948 | |
560 | 2949 global TFT_divemins_alternative |
2950 TFT_divemins_alternative: | |
582 | 2951 bcf FLAG_TFT_divemins ; Clear flag |
2952 call TFT_standard_color | |
2953 ; Print out the minutes (0-999) in large | |
2954 WIN_LARGE dm_divetime_alt_column, dm_divetime_alt_row | |
2955 movff divemins+0,lo | |
2956 movff divemins+1,hi | |
2957 output_16_3 ; limit to 999 and display only (0-999) | |
2958 STRCAT_PRINT "" ; Show minutes | |
2959 ; Print out the seconds in medium | |
2960 WIN_MEDIUM dm_divetime_alt_column+.60, dm_divetime_alt_row+.25 | |
2961 PUTC ":" | |
2962 bsf leftbind | |
2963 movff divesecs,lo | |
2964 output_99x ; displays only last two figures from a 8Bit value with leading zero (00-99) | |
2965 bcf leftbind | |
2966 STRCAT_PRINT "" ; Show seconds in small font | |
2967 return | |
0 | 2968 |
2969 ;============================================================================= | |
560 | 2970 |
0 | 2971 global TFT_display_apnoe_surface |
2972 TFT_display_apnoe_surface: | |
582 | 2973 call TFT_divemask_color |
2974 WIN_TINY dm_apnoe_surface_time_text_col, dm_apnoe_surface_time_text_row | |
2975 STRCPY_TEXT_PRINT tApnoeSurface | |
0 | 2976 |
2977 call TFT_standard_color | |
582 | 2978 WIN_MEDIUM dm_apnoe_surface_time_column, dm_apnoe_surface_time_row |
0 | 2979 movff apnoe_surface_mins,lo |
2980 output_8 | |
582 | 2981 PUTC ':' |
0 | 2982 movff apnoe_surface_secs,lo |
2983 output_99x | |
2984 STRCAT_PRINT "" | |
2985 return | |
2986 | |
2987 global TFT_apnoe_clear_surface | |
2988 TFT_apnoe_clear_surface: | |
2989 ; Clear Surface timer.... | |
582 | 2990 WIN_BOX_BLACK dm_apnoe_surface_time_text_row, .239, dm_apnoe_surface_time_text_col, .159 ;top, bottom, left, right |
0 | 2991 return |
2992 | |
2993 global TFT_display_apnoe_descent | |
560 | 2994 TFT_display_apnoe_descent: ; Descent divetime |
0 | 2995 movff apnoe_mins,lo |
582 | 2996 clrf hi |
300
5ad479f2a868
Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents:
275
diff
changeset
|
2997 WIN_MEDIUM dm_divetime_apnoe_column, dm_divetime_apnoe_row |
582 | 2998 output_16_3 ; displays only last three figures from a 16Bit value (0-999) |
0 | 2999 call TFT_standard_color |
582 | 3000 STRCAT_PRINT "" ; Show minutes in large font |
3001 WIN_SMALL dm_divetime_apnoe_secs_column, dm_divetime_apnoe_secs_row ; left position for two sec figures | |
3002 PUTC ':' | |
0 | 3003 bsf leftbind |
3004 movff apnoe_secs,lo | |
3005 output_99x | |
582 | 3006 bcf leftbind |
3007 STRCAT_PRINT "" ; Show seconds in small font | |
3008 | |
3009 call TFT_divemask_color | |
3010 WIN_TINY dm_total_apnoe_text_column,dm_total_apnoe_text_row | |
3011 STRCPY_TEXT_PRINT tApnoeTotal | |
38 | 3012 call TFT_standard_color |
3013 movff divemins,lo | |
582 | 3014 clrf hi |
3015 WIN_MEDIUM dm_apnoe_total_divetime_column, dm_apnoe_total_divetime_row | |
3016 output_16_3 ; displays only last three figures from a 16Bit value (0-999) | |
38 | 3017 call TFT_standard_color |
582 | 3018 STRCAT_PRINT "" ; Show minutes in large font |
3019 WIN_SMALL dm_apnoe_total_divetime_secs_col, dm_apnoe_total_divetime_secs_row ; left position for two sec figures | |
3020 PUTC ':' | |
38 | 3021 bsf leftbind |
3022 movff divesecs,lo | |
3023 output_99x | |
582 | 3024 bcf leftbind |
3025 STRCAT_PRINT "" ; Show seconds in small font | |
0 | 3026 return |
582 | 3027 |
0 | 3028 ;============================================================================= |
275 | 3029 ; Writes ostc #Serial and Firmware version in splash screen |
560 | 3030 |
0 | 3031 global TFT_serial |
587 | 3032 TFT_serial: |
582 | 3033 WIN_TINY .5,.225 |
3034 STRCPY "OSTC" ; Won't translate that... | |
3035 | |
3036 movlw 0x0A | |
3037 cpfseq hardware_flag | |
3038 bra TFT_serial2 | |
3039 STRCAT "3 #" | |
3040 bra TFT_serial_common | |
260 | 3041 TFT_serial2: |
582 | 3042 movlw 0x05 |
3043 cpfseq hardware_flag | |
3044 bra TFT_serial3 | |
3045 STRCAT " cR #" | |
587 | 3046 bra TFT_serial_common |
200 | 3047 TFT_serial3: |
582 | 3048 movlw 0x11 |
3049 cpfseq hardware_flag | |
3050 bra TFT_serial4 | |
3051 STRCAT "2 #" | |
3052 bra TFT_serial_common | |
260 | 3053 TFT_serial4: |
582 | 3054 movlw 0x1A |
3055 cpfseq hardware_flag | |
3056 bra TFT_serial5 | |
3057 STRCAT "3 #" | |
3058 ; bra TFT_serial_common | |
260 | 3059 TFT_serial5: |
3060 TFT_serial_common: | |
582 | 3061 rcall TFT_cat_serial |
3062 STRCAT " v" | |
3063 WIN_COLOR color_greenish | |
3064 rcall TFT_cat_firmware | |
3065 | |
3066 ifdef __DEBUG | |
3067 movlw color_grey ; Write header in blue when | |
3068 call TFT_set_color ; compiled in DEBUG mode... | |
3069 STRCAT_PRINT "DEBUG" | |
3070 call TFT_standard_color | |
587 | 3071 bcf win_invert |
3072 return | |
3073 else | |
3074 movlw softwareversion_beta ; =1: Beta, =0: Release, >= 2: Service Pack | |
3075 tstfsz WREG ; release? | |
3076 bra TFT_serial_6 ; NO | |
3077 bra TFT_serial_8 ; YES | |
3078 TFT_serial_6: | |
3079 decfsz WREG,F ; Beta? | |
3080 bra TFT_serial_7 ; NO | |
3081 STRCAT_PRINT "" ; YES | |
3082 call TFT_warnings_color ; | |
3083 WIN_LEFT .160-4*9/2 ; Right pad | |
3084 STRCPY_TEXT tBeta | |
3085 bra TFT_serial_8 | |
3086 TFT_serial_7: | |
3087 STRCAT " SP" | |
3088 movlw softwareversion_beta ; STRCAT destroyed WREG | |
3089 decf WREG,W | |
3090 movwf lo | |
3091 bsf leftbind | |
3092 output_8 | |
3093 bcf leftbind | |
3094 TFT_serial_8: | |
3095 STRCAT_PRINT "" | |
3096 call TFT_standard_color | |
3097 bcf win_invert | |
3098 return | |
582 | 3099 endif |
3100 | |
0 | 3101 |
3102 ;============================================================================= | |
3103 ; For the Information menu: append firmware x.yy version. | |
560 | 3104 |
582 | 3105 global info_menu_firmware |
3106 extern tFirmware | |
0 | 3107 info_menu_firmware: |
582 | 3108 lfsr FSR1,tFirmware |
3109 call strcat_text | |
3110 rcall TFT_cat_firmware | |
3111 ; Show language version | |
3112 IFNDEF french_italian | |
458 | 3113 STRCAT "_en+de" |
3114 ELSE | |
3115 STRCAT "_fr+it" | |
582 | 3116 ENDIF |
3117 bcf win_invert ; Reset invert flag | |
3118 return | |
3119 | |
3120 global TFT_cat_firmware | |
0 | 3121 TFT_cat_firmware: |
582 | 3122 movlw softwareversion_x |
3123 movwf lo | |
3124 bsf leftbind | |
3125 output_8 | |
3126 PUTC '.' | |
3127 movlw softwareversion_y | |
3128 movwf lo | |
3129 output_99x | |
3130 bcf leftbind | |
3131 ; Check firmware date | |
3132 movlw firmware_expire_year-.1 | |
3133 cpfsgt year ; > threshold? | |
3134 return | |
3135 movlw firmware_expire_month-.1 | |
3136 cpfsgt month ; > threshold? | |
3137 return | |
3138 movlw firmware_expire_day-.1 | |
3139 cpfsgt day ; > threshold? | |
3140 return | |
3141 | |
3142 ; Show in "change firmware" style | |
3143 movlw color_yellow | |
587 | 3144 bcf win_invert |
582 | 3145 goto TFT_set_color ; and return... |
0 | 3146 |
3147 ;----------------------------------------------------------------------------- | |
275 | 3148 ; For the Information menu: append serial number |
560 | 3149 |
582 | 3150 global info_menu_serial |
3151 extern tSerial | |
0 | 3152 info_menu_serial: |
582 | 3153 lfsr FSR1,tSerial |
3154 call strcat_text | |
3155 global TFT_cat_serial | |
0 | 3156 TFT_cat_serial: |
582 | 3157 clrf EEADRH |
3158 clrf EEADR ; Get Serial number LOW | |
3159 call read_eeprom ; read byte | |
3160 movff EEDATA,lo | |
3161 incf EEADR,F ; Get Serial number HIGH | |
3162 call read_eeprom ; read byte | |
3163 movff EEDATA,hi | |
3164 | |
3165 bsf leftbind | |
3166 output_16 | |
3167 bcf leftbind | |
3168 return | |
0 | 3169 |
3170 ;----------------------------------------------------------------------------- | |
3171 ; For the Information menu: Append total dives | |
560 | 3172 |
582 | 3173 global info_menu_total_dives |
3174 extern tTotalDives | |
0 | 3175 info_menu_total_dives: |
582 | 3176 lfsr FSR1,tTotalDives |
3177 call strcat_text | |
0 | 3178 TFT_cat_total_dives: |
3179 read_int_eeprom .2 | |
3180 movff EEDATA,lo | |
3181 read_int_eeprom .3 | |
3182 movff EEDATA,hi | |
3183 bsf leftbind | |
3184 output_16 | |
582 | 3185 bcf leftbind |
3186 return | |
0 | 3187 |
62 | 3188 ; For the Information menu: Append battery voltage |
582 | 3189 global info_menu_battery_volts |
3190 extern tBatteryV | |
62 | 3191 info_menu_battery_volts: |
582 | 3192 lfsr FSR1,tBatteryV |
3193 call strcat_text | |
3194 movff batt_voltage+1,hi | |
3195 movff batt_voltage+0,lo | |
62 | 3196 bsf leftbind |
582 | 3197 output_16dp .2 ; x.xxx |
3198 STRCAT "V(T" | |
3199 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 | |
3200 output_8 | |
3201 bcf leftbind | |
3202 PUTC ")" | |
3203 return | |
3204 | |
3205 ; For the Information menu: Append Uptime | |
3206 global info_menu_uptime | |
3207 extern tUptime | |
453
b4f28ab23b87
NEW: Show Uptime (Time since last firmware boot) in information menu
heinrichsweikamp
parents:
444
diff
changeset
|
3208 info_menu_uptime: |
582 | 3209 lfsr FSR1,tUptime |
3210 call strcat_text | |
3211 movff uptime+0,xC+0 | |
3212 movff uptime+1,xC+1 | |
3213 movff uptime+2,xC+2 | |
3214 movff uptime+3,xC+3 | |
3215 movlw LOW .3600 | |
3216 movwf xB+0 | |
3217 movlw HIGH .3600 | |
3218 movwf xB+1 ; One day = 3600s | |
3219 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
3220 ;xC+0:xC+1 -> Full hours | |
3221 movff xC+1,xA+1 | |
3222 movff xC+0,xA+0 | |
3223 clrf xB+1 | |
3224 movlw .24 | |
3225 movwf xB+0 | |
3226 call div16x16 ; xA/xB=xC with xA+0 as remainder | |
3227 movff xC+0,lo | |
3228 movff xC+1,hi ; Full days | |
3229 bsf leftbind | |
3230 output_16 | |
3231 PUTC "d" | |
3232 movff xA+0,lo ; Full hours | |
3233 output_8 | |
3234 PUTC "h" | |
3235 bcf leftbind | |
3236 return ; Done. | |
3237 | |
3238 extern tCalX,tCalY,tCalZ | |
3239 global menu_cal_x | |
3240 menu_cal_x: | |
3241 lfsr FSR1,tCalX | |
3242 call strcat_text | |
3243 movff compass_CX_f+0,lo | |
3244 movff compass_CX_f+1,hi | |
3245 call TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required | |
3246 bsf leftbind | |
3247 output_16 | |
3248 bcf leftbind | |
3249 return | |
3250 | |
3251 global menu_cal_y | |
3252 menu_cal_y: | |
3253 lfsr FSR1,tCalY | |
3254 call strcat_text | |
3255 movff compass_CY_f+0,lo | |
3256 movff compass_CY_f+1,hi | |
3257 call TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required | |
3258 bsf leftbind | |
3259 output_16 | |
3260 bcf leftbind | |
3261 return | |
3262 | |
3263 global menu_cal_z | |
3264 menu_cal_z: | |
3265 lfsr FSR1,tCalZ | |
3266 call strcat_text | |
3267 movff compass_CZ_f+0,lo | |
3268 movff compass_CZ_f+1,hi | |
3269 call TFT_convert_signed_16bit ; converts lo:hi into signed-short and adds '-' to POSTINC2 if required | |
3270 bsf leftbind | |
3271 output_16 | |
3272 bcf leftbind | |
3273 return | |
544
64a45f203144
NEW: Show Compass calibration results in Compass menu
heinrichsweikamp
parents:
535
diff
changeset
|
3274 |
453
b4f28ab23b87
NEW: Show Uptime (Time since last firmware boot) in information menu
heinrichsweikamp
parents:
444
diff
changeset
|
3275 |
0 | 3276 ;----------------------------------------------------------------------------- |
3277 ; ppO2 menu | |
560 | 3278 |
0 | 3279 global divesets_ppo2_min |
582 | 3280 extern tPPO2MIN |
0 | 3281 divesets_ppo2_min: |
582 | 3282 lfsr FSR1,tPPO2MIN |
3283 call strcat_text | |
560 | 3284 movff char_I_ppO2_min,lo |
582 | 3285 movlw ppo2_warning_low_default |
3286 bra divesets_ppo2_common | |
560 | 3287 |
3288 global divesets_ppo2_min_cc | |
3289 extern tPPO2MINCC | |
3290 divesets_ppo2_min_cc: | |
3291 lfsr FSR1,tPPO2MINCC | |
3292 call strcat_text | |
3293 movff char_I_ppO2_min_loop,lo | |
582 | 3294 movlw ppo2_warning_loop_default |
3295 bra divesets_ppo2_common | |
3296 | |
3297 global divesets_ppo2_max | |
3298 extern tPPO2Max | |
3299 extern tbar | |
3300 divesets_ppo2_max: | |
3301 lfsr FSR1,tPPO2Max | |
3302 call strcat_text | |
3303 movff char_I_ppO2_max,lo | |
3304 movlw ppo2_warning_high_default | |
560 | 3305 bra divesets_ppo2_common |
582 | 3306 |
3307 global divesets_ppo2_max_deco | |
3308 extern tPPO2DECO | |
3309 divesets_ppo2_max_deco: | |
3310 lfsr FSR1,tPPO2DECO | |
3311 call strcat_text | |
3312 movff char_I_ppO2_max_deco,lo | |
3313 movlw ppo2_warning_deco_default | |
3314 ;bra divesets_ppo2_common | |
3315 | |
3316 divesets_ppo2_common: | |
3317 movwf up ; Save default value | |
3318 clrf hi | |
3319 bsf leftbind | |
3320 output_16dp d'3' | |
3321 bcf leftbind | |
3322 lfsr FSR1,tbar | |
3323 call strcat_text | |
3324 movf up,W ; Default value | |
3325 cpfseq lo ; Current value | |
3326 bra divesets_ppo2_common2 ; Not default, add * | |
3327 return ; Default, Done. | |
3328 divesets_ppo2_common2: | |
3329 PUTC "*" | |
3330 return ; Done. | |
560 | 3331 |
3332 ;============================================================================= | |
582 | 3333 |
3334 global TFT_clear_warning_text | |
3335 TFT_clear_warning_text: | |
3336 btfss divemode ; in divemode? | |
3337 bra TFT_clear_warning_text2 ; No, setup for surface mode | |
3338 bcf FLAG_TFT_dive_warning_text_clear ; Clear flag | |
3339 btfsc alternative_divelayout | |
3340 bra TFT_clear_warning_text_2nd_row ; In Alt mode, clear only row 2 | |
3341 WIN_BOX_BLACK dm_warning_row, dm_warning_bot, dm_warning_column, dm_warning_rgt ; top, bottom, left, right | |
3342 return | |
3343 TFT_clear_warning_text2: | |
3344 WIN_BOX_BLACK surf_warning1_row, surf_warning2_row+.24, surf_warning1_column, surf_warning1_column+.76 ; top, bottom, left, right | |
3345 return | |
3346 | |
3347 global TFT_clear_warning_text_2nd_row | |
3348 TFT_clear_warning_text_2nd_row: | |
3349 btfss divemode ; in divemode? | |
3350 bra TFT_clear_warning_text_2nd_2 ; No, setup for surface mode | |
3351 bcf FLAG_TFT_dive_warning_text_clr2 ; Clear flag | |
3352 WIN_BOX_BLACK dm_warning2_row, dm_warning2_bot, dm_warning2_column, dm_warning2_rgt ; top, bottom, left, right | |
3353 return | |
3354 TFT_clear_warning_text_2nd_2: | |
3355 WIN_BOX_BLACK surf_warning2_row, surf_warning2_row+.24, surf_warning2_column, surf_warning2_column+.76 ; top, bottom, left, right | |
3356 return | |
3357 | |
3358 global TFT_fillup_with_spaces | |
3359 TFT_fillup_with_spaces: ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3360 movwf lo ; save max. string length into lo | |
3361 movf FSR2L,W ; Get current string length | |
3362 subwf lo,F ; lo-WREG | |
3363 btfsc STATUS,N ; longer then #lo already? | |
3364 return ; Yes, done. | |
3365 tstfsz lo ; Zero? | |
3366 bra TFT_fillup_with_spaces2 ; No. | |
3367 return ; Yes, done. | |
3368 TFT_fillup_with_spaces2: | |
3369 PUTC " " ; Add one space | |
3370 decfsz lo,F ; All done? | |
3371 bra TFT_fillup_with_spaces2 ; No, loop | |
3372 return ; Done. | |
3373 | |
3374 ;============================================================================= | |
3375 | |
0 | 3376 global TFT_desaturation_time |
3377 TFT_desaturation_time: | |
3378 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3379 tstfsz WREG ; Is there room for the warning? |
3380 return ; No | |
0 | 3381 STRCPY "Desat:" |
560 | 3382 movff int_O_desaturation_time+0,lo |
3383 movff int_O_desaturation_time+1,hi | |
3384 call convert_time ; converts hi:lo in minutes to hours (hi) and minutes (lo) | |
3385 bsf leftbind | |
3386 movf lo,W | |
3387 movff hi,lo | |
3388 movwf hi ; exchange lo and hi... | |
3389 output_8 ; Hours | |
3390 PUTC ':' | |
3391 movff hi,lo ; Minutes | |
0 | 3392 output_99x |
3393 bcf leftbind | |
582 | 3394 movlw surf_warning_length ; Only use surface string length |
3395 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3396 movlw .0 ; TODO - needed? | |
3397 movff WREG,buffer+11 ; TODO - needed? | |
560 | 3398 STRCAT_PRINT "" |
582 | 3399 bcf win_invert |
0 | 3400 return |
3401 | |
560 | 3402 |
0 | 3403 global TFT_nofly_time |
3404 TFT_nofly_time: | |
3405 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3406 tstfsz WREG ; Is there room for the warning? |
3407 return ; No | |
560 | 3408 movff char_I_altitude_wait,WREG |
3409 tstfsz WREG | |
3410 bra TFT_nofly_time_1 | |
0 | 3411 STRCPY "NoFly:" |
560 | 3412 bra TFT_nofly_time_2 |
3413 TFT_nofly_time_1: | |
3414 STRCPY "NoAlt:" | |
3415 TFT_nofly_time_2: | |
3416 movff int_O_nofly_time+0,lo | |
3417 movff int_O_nofly_time+1,hi | |
582 | 3418 call convert_time ; converts hi:lo in minutes to hours (hi) and minutes (lo) |
560 | 3419 bsf leftbind |
3420 movf lo,W | |
3421 movff hi,lo | |
582 | 3422 movwf hi ; exchange lo and hi... |
3423 output_8 ; Hours | |
560 | 3424 PUTC ':' |
582 | 3425 movff hi,lo ; Minutes |
0 | 3426 output_99x |
3427 bcf leftbind | |
582 | 3428 movlw surf_warning_length ; Only use surface string length |
3429 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3430 movlw .0 ; TODO - needed? | |
3431 movff WREG,buffer+11 ; TODO - needed? | |
3432 STRCAT_PRINT "" | |
3433 bcf win_invert | |
0 | 3434 return |
3435 | |
560 | 3436 ;============================================================================= |
3437 | |
582 | 3438 global TFT_warning_agf |
0 | 3439 TFT_warning_agf: |
3440 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3441 tstfsz WREG ; Is there room for the warning? |
3442 return ; No | |
3443 call TFT_attention_color | |
3444 STRCPY_TEXT tDiveaGF_active ; "aGF!" | |
3445 movlw dm_warning_length ; Divemode string length | |
3446 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3447 STRCAT_PRINT "" | |
3448 ;bcf win_invert | |
3449 ;return | |
560 | 3450 goto TFT_standard_color |
0 | 3451 |
582 | 3452 global TFT_warning_fallback |
560 | 3453 TFT_warning_fallback: ; Show fallback warning |
3454 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3455 tstfsz WREG ; Is there room for the warning? |
3456 return ; No | |
3457 call TFT_warnings_color | |
560 | 3458 STRCPY_TEXT tDiveFallback ; "Fallback!" |
582 | 3459 movlw dm_warning_length ; Divemode string length |
3460 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3461 STRCAT_PRINT "" | |
3462 goto TFT_standard_color ; and return... | |
560 | 3463 |
3464 | |
3465 global TFT_info_deco | |
582 | 3466 TFT_info_deco: ; show info when in decompression |
560 | 3467 rcall TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 3468 tstfsz WREG ; Is there room for the warning? |
3469 return ; NO - return | |
560 | 3470 movlw color_green ; YES - select green text color |
582 | 3471 call TFT_set_color ; set color |
3472 STRCPY_TEXT tDecoInfo ; write "Deco Zone" | |
3473 movlw dm_warning_length ; select Divemode string length | |
3474 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3475 STRCAT_PRINT "" ; print buffer | |
3476 goto TFT_standard_color ; and return... | |
3477 | |
3478 | |
3479 global TFT_warning_gf | |
3480 TFT_warning_gf: ; GF | |
560 | 3481 rcall TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 3482 tstfsz WREG ; Is there room for the warning? |
3483 return ; No | |
560 | 3484 movff int_O_gradient_factor+0,lo ; bank-safe copy gradient factor |
3485 movff int_O_gradient_factor+1,hi ; | |
582 | 3486 call TFT_color_code_gf ; Color-code Output |
3487 STRCPY "GF: " ; the two spaces are on purpose to align the output with other warnings' outputs | |
3488 bsf leftbind | |
560 | 3489 output_8 ; print value of lo only, int_O_gradient_factor is limited to 255 |
582 | 3490 PUTC "%" |
3491 movlw dm_warning_length ; Divemode string length | |
3492 btfss divemode ; In Divemode? | |
3493 movlw surf_warning_length ; No, use surface string length | |
3494 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3495 STRCAT_PRINT "" | |
3496 bcf leftbind | |
3497 bcf win_invert | |
3498 goto TFT_standard_color ; and return... | |
560 | 3499 |
3500 | |
3501 global TFT_warning_mbubbles | |
3502 TFT_warning_mbubbles: | |
3503 rcall TFT_warning_set_window ; sets the row and column for the current warning | |
582 | 3504 tstfsz WREG ; Is there room for the warning? |
3505 return ; NO | |
560 | 3506 call TFT_attention_color ; set attention color as default |
3507 movff char_O_deco_warnings,WREG ; bank-safe copy for deco warnings | |
3508 btfsc WREG,mbubble_warning ; are we in the microbubbles zone right now? | |
3509 call TFT_warnings_color ; YES - reconfigure to warning color | |
3510 STRCPY_TEXT tMicroBubbles | |
582 | 3511 movlw dm_warning_length ; divemode string length |
3512 btfss divemode ; in Divemode? | |
3513 movlw surf_warning_length ; NO - use surface string length | |
3514 rcall TFT_fillup_with_spaces ; fillup FSR2 with spaces (total string length in #WREG) | |
3515 STRCAT_PRINT "" | |
3516 goto TFT_standard_color ; and return... | |
560 | 3517 |
3518 | |
3519 global TFT_warning_outside | |
3520 TFT_warning_outside: | |
3521 rcall TFT_warning_set_window ; sets the row and column for the current warning | |
582 | 3522 tstfsz WREG ; is there room for the warning? |
3523 return ; NO | |
560 | 3524 call TFT_attention_color |
3525 movff char_O_deco_warnings,WREG ; bank-safe copy for deco warnings | |
3526 btfsc WREG,outside_warning ; are we outside the ZH-L16 model right now? | |
3527 call TFT_warnings_color ; YES - reconfigure to warning color | |
582 | 3528 STRCPY "X-ZHL16-X" |
3529 movlw dm_warning_length ; divemode string length | |
3530 btfss divemode ; in Divemode? | |
3531 movlw surf_warning_length ; NO - use surface string length | |
3532 rcall TFT_fillup_with_spaces ; fillup FSR2 with spaces (total string length in #WREG) | |
3533 STRCAT_PRINT "" | |
3534 goto TFT_standard_color ; and return... | |
560 | 3535 |
3536 | |
3537 global TFT_warning_gas_needs_warn | |
3538 global TFT_warning_gas_needs_att | |
3539 TFT_warning_gas_needs_warn: | |
3540 rcall TFT_warning_gas_needs_war_helper | |
3541 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3542 tstfsz WREG ; Is there room for the warning? |
3543 return ; No | |
560 | 3544 call TFT_warnings_color |
3545 bra TFT_warning_gas_needs_com | |
3546 TFT_warning_gas_needs_att: | |
3547 rcall TFT_warning_gas_needs_att_helper | |
3548 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3549 tstfsz WREG ; Is there room for the warning? |
3550 return ; No | |
560 | 3551 call TFT_attention_color |
3552 TFT_warning_gas_needs_com: | |
3553 STRCPY_TEXT tGasNeedsWarn ; "Gas Needs" | |
582 | 3554 movlw dm_warning_length ; Divemode string length |
3555 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3556 STRCAT_PRINT "" | |
3557 goto TFT_standard_color ; and return... | |
560 | 3558 |
3559 TFT_warning_gas_needs_war_helper: | |
3560 incf warning_counter,F ; increase counter | |
3561 btfsc gas_needs_warning ; is it a new warning? | |
3562 return ; NO - do not show the gas needs custom view again | |
3563 bsf gas_needs_warning ; YES - memorise it's an old now | |
3564 bra TFT_warning_gas_needs_helper_com | |
3565 TFT_warning_gas_needs_att_helper: | |
3566 incf warning_counter,F ; increase counter | |
3567 btfsc gas_needs_attention ; is it a new attention? | |
3568 return ; NO - do not show the gas needs custom view again | |
3569 bsf gas_needs_attention ; YES - memorise it's an old now | |
3570 TFT_warning_gas_needs_helper_com: | |
3571 movlw .12 ; customview number one below gas needs view | |
3572 movwf menupos3 ; set fake current view number | |
3573 bsf toggle_customview ; initiate toggle of customview -> gas needs view will be shown | |
582 | 3574 return |
560 | 3575 |
3576 | |
3577 global TFT_warning_IBCD | |
3578 TFT_warning_IBCD: | |
3579 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3580 tstfsz WREG ; Is there room for the warning? |
3581 return ; No | |
560 | 3582 call TFT_attention_color ; select attention color as default |
3583 STRCPY_TEXT tIBCD ; "IBCD N2He" | |
582 | 3584 movlw dm_warning_length ; Divemode string length |
3585 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3586 STRCAT_PRINT "" | |
3587 goto TFT_standard_color ; and return... | |
3588 | |
3589 | |
3590 global TFT_warning_sensor_disagree | |
3591 TFT_warning_sensor_disagree: ; Show sensor disagree warning | |
560 | 3592 rcall TFT_warning_sensor_dis_helper |
145
e3ac5b2021bc
NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents:
139
diff
changeset
|
3593 rcall TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 3594 tstfsz WREG ; Is there room for the warning? |
3595 return ; No | |
3596 call TFT_warnings_color | |
3597 STRCPY_TEXT tSensorDisagree ; "Sensors<>" | |
3598 movlw dm_warning_length ; Divemode string length | |
3599 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3600 STRCAT_PRINT "" | |
3601 goto TFT_standard_color ; and return... | |
560 | 3602 |
3603 TFT_warning_sensor_dis_helper: | |
3604 btfsc sensor_warning ; is it a new warning? | |
3605 return ; NO - do not show the gas needs custom view again | |
3606 bsf sensor_warning ; YES - memories it's an old warning now | |
3607 clrf menupos3 ; set fake current view number | |
3608 bsf toggle_customview ; initiate toggle of customview -> sensor view will be shown | |
3609 return | |
582 | 3610 |
560 | 3611 ;============================================================================= |
582 | 3612 |
3613 TFT_warning_set_window: ; Sets the row and column for the current warning | |
3614 ; ignore warning (now)? | |
3615 decf warning_counter,W ; -1 | |
3616 bcf STATUS,C | |
3617 btfss alternative_divelayout ; In alt mode, do not divide... | |
3618 rrcf WREG,W ; (warning_counter-1)/2 | |
3619 cpfseq warning_page | |
3620 retlw .255 ; WREG <> 0 -> Warning window not defined | |
3621 call TFT_standard_color | |
3622 btfss divemode ; in divemode? | |
3623 bra TFT_warning_set_window3 ; No, setup for surface mode | |
3624 btfss alternative_divelayout | |
3625 bra TFT_warning_set_window3a ; standard layout | |
3626 bra TFT_warning_set_window2a ; alternative layout (Only lower row used) | |
3627 TFT_warning_set_window3a: | |
3628 btfss warning_counter,0 ; Toggle with each warning | |
3629 bra TFT_warning_set_window2 | |
3630 WIN_SMALL dm_warning1_column, dm_warning1_row | |
3631 bcf second_row_warning ; =1: The second row contains a warning | |
3632 retlw .0 ; WREG=0 -> Warning window defined | |
0 | 3633 TFT_warning_set_window2: |
582 | 3634 bsf second_row_warning ; =1: The second row contains a warning |
3635 TFT_warning_set_window2a: | |
3636 WIN_SMALL dm_warning2_column, dm_warning2_row | |
3637 retlw .0 ; WREG=0 -> Warning window defined | |
0 | 3638 TFT_warning_set_window3: |
582 | 3639 btfss warning_counter,0 ; Toggle with each warning |
3640 bra TFT_warning_set_window4 | |
3641 WIN_SMALL surf_warning1_column,surf_warning1_row | |
3642 bcf second_row_warning ; =1: The second row contains a warning | |
3643 retlw .0 ; WREG=0 -> Warning window defined | |
0 | 3644 TFT_warning_set_window4: |
582 | 3645 WIN_SMALL surf_warning2_column,surf_warning2_row |
3646 bsf second_row_warning ; =1: The second row contains a warning | |
3647 retlw .0 ; WREG=0 -> Warning window defined | |
560 | 3648 |
309
efb53af0d62a
VSIbar #1: layout position changes
janos_kovacs <kovjanos@gmail.com>
parents:
307
diff
changeset
|
3649 |
0 | 3650 global TFT_update_batt_percent_divemode |
3651 TFT_update_batt_percent_divemode: | |
3652 rcall TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 3653 tstfsz WREG ; Is there room for the warning? |
3654 return ; No | |
3655 movff batt_percent,lo ; Get battery percent | |
3656 call TFT_color_code_battery ; Color-code battery percent | |
3657 STRCPY "Batt:" | |
0 | 3658 bsf leftbind |
3659 output_8 | |
3660 bcf leftbind | |
582 | 3661 PUTC "%" |
3662 movlw dm_warning_length ; Divemode string length | |
3663 btfss divemode ; In Divemode? | |
3664 movlw surf_warning_length ; No, use surface string length | |
3665 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
3666 STRCAT_PRINT "" | |
3667 bcf win_invert | |
560 | 3668 goto TFT_standard_color ; and return... |
3669 | |
3670 | |
582 | 3671 global TFT_gf_mask ; Setup Mask |
0 | 3672 TFT_gf_mask: |
582 | 3673 ; The mask |
3674 call TFT_divemask_color | |
3675 WIN_TINY dm_custom_gf_title_col1, dm_custom_gf_title_row | |
3676 STRCPY_TEXT_PRINT tGFactors | |
3677 WIN_TINY dm_custom_gf_title_col2, dm_custom_gf_title_row | |
3678 STRCPY_TEXT_PRINT taGFactors | |
3679 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row | |
3680 STRCPY_TEXT_PRINT tGFInfo | |
3681 ; Show GF (Static) | |
3682 call TFT_disabled_color | |
3683 btfss use_agf | |
3684 call TFT_standard_color | |
3685 WIN_STD dm_custom_gf_column, dm_custom_gf_row | |
3686 bsf leftbind | |
3687 movff opt_GF_low,lo | |
3688 output_8 | |
3689 PUTC "/" | |
3690 movff opt_GF_high,lo | |
3691 output_8 | |
3692 STRCAT_PRINT "" | |
3693 ; Show aGF (Static) | |
3694 call TFT_standard_color | |
3695 TSTOSS opt_enable_aGF ; =1: aGF can be selected underwater | |
3696 bra TFT_gf_mask2 ; Show "---" instead | |
3697 btfss use_agf | |
3698 call TFT_disabled_color | |
3699 WIN_STD dm_custom_agf_column, dm_custom_agf_row | |
3700 movff opt_aGF_low,lo | |
3701 output_8 | |
3702 PUTC "/" | |
3703 movff opt_aGF_high,lo | |
3704 output_8 | |
3705 STRCAT_PRINT "" | |
3706 bcf leftbind | |
3707 goto TFT_standard_color ; and return... | |
0 | 3708 |
3709 TFT_gf_mask2: | |
582 | 3710 WIN_STD dm_custom_agf_column+.10, dm_custom_agf_row |
3711 STRCPY_PRINT "---" | |
3712 bcf leftbind | |
3713 return | |
3714 | |
3715 | |
3716 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
|
3717 TFT_gf_mask_cGF: |
582 | 3718 ; The mask |
3719 call TFT_divemask_color | |
3720 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row | |
3721 STRCPY_TEXT_PRINT tGFInfo | |
3722 goto TFT_standard_color ; and return... | |
3723 | |
3724 global TFT_gf_info ; Show GF informations | |
0 | 3725 TFT_gf_info: |
582 | 3726 WIN_STD dm_custom_currentgf_column, dm_custom_currentgf_row |
3727 movff int_O_gradient_factor+0,lo ; gradient factor absolute (Non-GF model) | |
560 | 3728 movff int_O_gradient_factor+1,hi |
582 | 3729 call TFT_color_code_gf ; Color-code Output |
3730 output_8 ; print lo only, int_O_gradient_factor is limited to 255 | |
3731 STRCAT_PRINT "%" | |
3732 return | |
3733 | |
3734 | |
3735 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
|
3736 TFT_battinfo_tissues_clock_mask: |
582 | 3737 ; The mask |
3738 ; Put three columns at HUD positions | |
3739 call TFT_divemask_color | |
3740 btfsc FLAG_apnoe_mode ; In Apnoe mode? | |
3741 bra TFT_battinfo_tissues_clock_mask2 ; Yes | |
3742 btfsc FLAG_gauge_mode ; In Gauge mode? | |
3743 bra TFT_battinfo_tissues_clock_mask2 ; Yes | |
3744 WIN_TINY dm_custom_tissue_title_column, dm_custom_tissue_title_row | |
3745 STRCPY_TEXT_PRINT tDiveTissues | |
3746 TFT_battinfo_tissues_clock_mask2: ; Show only clock | |
3747 WIN_TINY dm_custom_ead_column, dm_custom_eadend_title_row | |
3748 STRCPY_TEXT_PRINT tBatteryV ; "Battery: " | |
3749 WIN_TINY dm_custom_clock_column, dm_custom_clock_title_row | |
3750 STRCPY_TEXT_PRINT tDiveClock | |
3751 goto TFT_standard_color ; and return... | |
3752 | |
3753 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
|
3754 TFT_battinfo_tissues_clock: |
582 | 3755 ; Update clock and date |
3756 WIN_SMALL dm_custom_clock_column, dm_custom_clock_row | |
3757 call TFT_clock2 ; print clock | |
3758 | |
3759 ; Show Battery info | |
3760 WIN_SMALL dm_custom_ead_column, dm_custom_ead_row | |
3761 movff batt_percent,lo ; Get battery percent | |
3762 call TFT_color_code_battery ; Color-code battery percent | |
3763 bsf leftbind | |
3764 output_8 | |
3765 bcf leftbind | |
3766 STRCAT "% " | |
3767 movlw 0x00 | |
3768 movff WREG,buffer+4 ; Only "xxx%" | |
3769 STRCAT_PRINT "" | |
3770 bcf win_invert | |
3771 call TFT_standard_color | |
3772 WIN_SMALL dm_custom_end_column, dm_custom_end_row | |
3773 movff batt_voltage+0,lo | |
3774 movff batt_voltage+1,hi | |
3775 bsf leftbind | |
3776 output_16dp .2 | |
3777 bcf leftbind | |
3778 PUTC 'V' | |
3779 movff buffer+5,buffer+4 | |
3780 movlw 0x00 | |
3781 movff WREG,buffer+5 ; Only "x.yzV" | |
3782 STRCAT_PRINT "" | |
3783 | |
3784 btfsc FLAG_apnoe_mode ; In Apnoe mode? | |
3785 return ; Yes, done. | |
3786 btfsc FLAG_gauge_mode ; In Gauge mode? | |
3787 return ; Yes, done. | |
3788 | |
3789 ; Show tissue diagram | |
3790 call TFT_divemask_color | |
3791 WIN_TINY dm_custom_tissue_N2_column, dm_custom_tissue_N2_row | |
3792 STRCPY_TEXT_PRINT tN2 | |
3793 WIN_TINY dm_custom_tissue_He_column, dm_custom_tissue_He_row | |
3794 STRCPY_TEXT_PRINT tHe | |
3795 bra DISP_tissue_saturation_graph ; Show char_O_tissue_N2_saturation and char_O_tissue_He_saturation and return... | |
3796 | |
3797 | |
3798 global TFT_pscr_info_mask | |
3799 TFT_pscr_info_mask: ; Show pSCR-ppO2, drop and lung ratio mask | |
3800 rcall TFT_mask_ppo2 | |
3801 call TFT_divemask_color | |
3802 WIN_TINY dm_custom_pscr_text_drop_column, dm_custom_pscr_text_row | |
3803 STRCPY_TEXT_PRINT tPSCR_O2_drop | |
3804 WIN_TINY dm_custom_pscr_text_ratio_column, dm_custom_pscr_text_row | |
3805 STRCPY_TEXT_PRINT tPSCR_lungratio | |
3806 goto TFT_standard_color ; and return... | |
3807 | |
3808 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
|
3809 TFT_pscr_info: |
582 | 3810 ;show ppO2 |
3811 WIN_MEDIUM dm_custom_ceiling_ppo2_val_col, dm_custom_ceiling_value_row | |
560 | 3812 movff int_O_pSCR_ppO2+0,lo ; copy pSCR ppO2 to hi:lo |
3813 movff int_O_pSCR_ppO2+1,hi | |
582 | 3814 call TFT_color_code_ppo2 ; color-code output |
560 | 3815 bsf leftbind |
582 | 3816 output_16dp .3 ; x.xx bar |
3817 bcf leftbind | |
3818 STRCAT_PRINT "" | |
3819 ; Show Drop | |
3820 WIN_STD dm_custom_pscr_drop_column,dm_custom_pscr_drop_row | |
560 | 3821 call TFT_standard_color |
3822 movff char_I_PSCR_drop,lo | |
582 | 3823 bsf leftbind |
3824 output_8 | |
3825 STRCAT_PRINT "%" | |
3826 ; Show lung ratio | |
3827 WIN_STD dm_custom_pscr_ratio_column,dm_custom_pscr_ratio_row | |
3828 movff char_I_PSCR_lungratio,lo | |
3829 bsf leftbind | |
3830 STRCPY "1/" | |
3831 output_8 | |
3832 STRCAT_PRINT "" | |
3833 bcf leftbind | |
3834 return | |
560 | 3835 |
3836 | |
3837 global TFT_gas_needs_mask | |
3838 TFT_gas_needs_mask: | |
582 | 3839 call TFT_divemask_color |
3840 WIN_TINY dm_custom_dyn_gas_mask_column-.10,dm_custom_dyn_gas_mask_row | |
3841 STRCPY_TEXT_PRINT tGasNeedsBar ; "Gas Needs (bar)" | |
560 | 3842 goto TFT_standard_color ; and return... |
3843 | |
3844 global TFT_gas_needs | |
582 | 3845 TFT_gas_needs: ; LIMITATION: there is only space for 4 gases on the screen - if 5 gases |
3846 bsf leftbind ; have a pres_need > 0, then only the first 4 will be shown! | |
560 | 3847 clrf up |
582 | 3848 WIN_SMALL dm_custom_dyn_gas_column1+.5,dm_custom_dyn_gas_row1 |
560 | 3849 call TFT_gas_needs_helper |
582 | 3850 WIN_SMALL dm_custom_dyn_gas_column1+.5,dm_custom_dyn_gas_row2 |
560 | 3851 call TFT_gas_needs_helper |
582 | 3852 WIN_SMALL dm_custom_dyn_gas_column2+.5,dm_custom_dyn_gas_row1 |
3853 call TFT_gas_needs_helper | |
3854 WIN_SMALL dm_custom_dyn_gas_column2+.5,dm_custom_dyn_gas_row2 | |
3855 call TFT_gas_needs_helper | |
560 | 3856 bcf leftbind |
3857 return | |
3858 | |
3859 TFT_gas_needs_helper: | |
3860 call TFT_standard_color | |
3861 movlw .5 ; number of gases | |
3862 cpfslt up ; check if all gases have been processed | |
3863 bra TFT_gas_needs_helper_1 ; yes -> clear display area | |
582 | 3864 movf up,W ; no -> get gas number and check if need of that gas is > 0 |
560 | 3865 rlncf WREG,W ; multipy by 2 |
582 | 3866 lfsr FSR1,int_O_tank_pres_need+1 ; read HIGH(int_O_tank_pres_need[up]) |
3867 movff PLUSW1,hi ; copy to temp storage hi | |
560 | 3868 btfss hi,int_is_zero ; check flag for pres_need == 0 |
3869 bra TFT_gas_needs_helper_2 ; no -> print gas type and pressure needed | |
3870 incf up,F ; yes -> increment to next gas... | |
3871 bra TFT_gas_needs_helper ; ...and try the next gas | |
3872 TFT_gas_needs_helper_1: ; no gases to show anymore, clear display area from potential remains of last invocation | |
582 | 3873 STRCAT_PRINT " ---- " ; overwrite outdated stuff if screen position is not needed |
560 | 3874 return |
3875 TFT_gas_needs_helper_2: ; output gas type and pressure needed | |
582 | 3876 movf up,W ; get gas number (0-4) to WREG |
3877 lfsr FSR1,opt_gas_O2_ratio ; read opt_gas_O2_ratio[WREG] | |
3878 movff PLUSW1,lo ; copy result to lo | |
3879 movf up,W ; get gas number (0-4) to WREG ; SHOULD NOT BE NEEDED AS movff SHOULD NOT ALTER wreg | |
3880 lfsr FSR1,opt_gas_He_ratio ; read opt_gas_He_ratio[WREG] | |
3881 movff PLUSW1,hi ; copy result to hi | |
3882 call customview_show_mix ; print "Air", "O2", "21/35", etc. | |
560 | 3883 STRCAT ":" |
582 | 3884 movf up,W ; get gas number (0-4) to WREG |
560 | 3885 rlncf WREG,W ; multipy by 2 |
582 | 3886 lfsr FSR1,int_O_tank_pres_need+0 ; read lower part of integer |
3887 movff PLUSW1,lo | |
3888 movf up,W ; get gas number (0-4) to WREG ; SHOULD NOT BE NEEDED AS movff SHOULD NOT ALTER wreg | |
560 | 3889 rlncf WREG,W ; multipy by 2 |
582 | 3890 lfsr FSR1,int_O_tank_pres_need+1 ; read upper part of integer |
3891 movff PLUSW1,hi | |
3892 btfsc hi,int_attention_flag ; check if attention flag is set (pres_need > pres_fill * threshold) | |
560 | 3893 call TFT_attention_color ; yes, print gas need in yellow |
582 | 3894 btfsc hi,int_warning_flag ; check if warning flag is set (pres_need > pres_fill) |
3895 call TFT_warnings_color ; yes, print gas need in red | |
560 | 3896 movff int_O_tank_pres_need+1,WREG ; get HIGH(int_O_tank_pres_need[0]) which hold flag for invalid data |
3897 btfsc WREG,int_invalid_flag ; check if invalid data flag is set | |
3898 call TFT_disabled_color ; yes, print gas need in disabled color | |
582 | 3899 bcf hi,int_attention_flag ; clear attention flag for attention color |
3900 bcf hi,int_warning_flag ; clear warning flag for warning color | |
560 | 3901 bcf hi,int_invalid_flag ; clear flag for invalid data (will actually only be set with 1st gas) |
582 | 3902 output_16_3 ; limit to 999 and display only (0-999) |
560 | 3903 STRCAT_PRINT " " ; adds a space to overwrite any potential remains of earlier outputs |
3904 incf up,F ; increment to next gas | |
582 | 3905 goto TFT_standard_color ; and return... |
3906 | |
3907 | |
3908 global TFT_mask_ppo2 ; helper function for several custom views | |
560 | 3909 TFT_mask_ppo2: |
582 | 3910 call TFT_divemask_color |
3911 btfss FLAG_ccr_mode ; in CCR mode? | |
3912 bra TFT_mask_ppo2a ; NO - continue checking for pSCR and OC | |
3913 btfsc is_bailout ; in bailout? | |
3914 bra TFT_mask_ppo2b ; YES | |
3915 WIN_TINY dm_custom_ceiling_ppo2_col_dil,dm_custom_ceiling_text_row ; tuned position for longer text | |
3916 STRCPY_TEXT_PRINT tppO2Dil ; print "ppO2(Dil)" | |
3917 goto TFT_standard_color ; and return... | |
560 | 3918 TFT_mask_ppo2a: |
582 | 3919 btfss FLAG_pscr_mode ; in pSCR mode? |
3920 bra TFT_mask_ppo2b ; NO - continue with OC mode (or bailout) | |
3921 btfsc is_bailout ; in bailout? | |
3922 bra TFT_mask_ppo2b ; YES | |
3923 WIN_TINY dm_custom_ceiling_ppo2_col_dil,dm_custom_ceiling_text_row ; tuned position for longer text | |
3924 STRCPY_TEXT_PRINT tppO2Mix ; print "ppO2(Mix)" | |
3925 goto TFT_standard_color ; and return... | |
560 | 3926 TFT_mask_ppo2b: ; OC mode or bailout |
582 | 3927 WIN_TINY dm_custom_ceiling_ppo2_column, dm_custom_ceiling_text_row ; normal position |
3928 STRCPY_TEXT_PRINT tppO2 ; in all other modes | |
3929 goto TFT_standard_color ; and return... | |
3930 | |
3931 | |
560 | 3932 global TFT_display_pure_ppo2 ; show ppO2 of the pure gas - helper function for several custom views |
3933 TFT_display_pure_ppo2: | |
582 | 3934 WIN_MEDIUM dm_custom_ceiling_ppo2_val_col, dm_custom_ceiling_value_row |
560 | 3935 movff int_O_pure_ppO2+0,lo ; copy ppO2 of the pure gas to hi:lo |
3936 movff int_O_pure_ppO2+1,hi | |
582 | 3937 call TFT_color_code_ppo2 ; color-code output |
560 | 3938 bsf leftbind |
582 | 3939 output_16dp .3 ; x.xx bar |
3940 bcf leftbind | |
3941 STRCAT_PRINT "" | |
560 | 3942 goto TFT_standard_color ; and return... |
582 | 3943 |
3944 | |
3945 global TFT_ppo2_ead_end_cns_mask ; Show ppO2, END/EAD and CNS mask | |
560 | 3946 TFT_ppo2_ead_end_cns_mask: |
582 | 3947 rcall TFT_mask_ppo2 |
3948 call TFT_divemask_color | |
3949 WIN_TINY dm_custom_ead_column, dm_custom_eadend_title_row | |
3950 STRCPY_TEXT_PRINT tDiveEAD_END | |
3951 WIN_TINY dm_custom_gf_title_col3, dm_custom_gf_title_row | |
3952 STRCPY_TEXT_PRINT tCNS2 | |
3953 goto TFT_standard_color ; and return... | |
3954 | |
3955 | |
3956 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
|
3957 TFT_ppo2_ead_end_cns: |
582 | 3958 ;show ppO2 |
3959 rcall TFT_display_pure_ppo2 ; show ppO2 of the pure gas | |
3960 ; Show END/EAD | |
3961 WIN_SMALL dm_custom_ead_column, dm_custom_ead_row | |
3962 STRCPY_TEXT tEAD ; EAD: | |
3963 movff char_O_EAD,lo | |
3964 rcall TFT_end_ead_common ; print "lo m" (or ft) and limit to 8 chars | |
3965 WIN_SMALL dm_custom_end_column, dm_custom_end_row | |
3966 STRCPY_TEXT tEND ; END: | |
3967 movff char_O_END,lo | |
3968 rcall TFT_end_ead_common ; print "lo m" (or ft) and limit to 8 chars | |
3969 ; Show CNS | |
3970 WIN_STD dm_custom_currentgf_column, dm_custom_currentgf_row | |
3971 movff int_O_CNS_fraction+0,lo | |
3972 movff int_O_CNS_fraction+1,hi | |
3973 call TFT_color_code_cns ; Color-code CNS output | |
3974 bsf leftbind | |
3975 output_16_3 ; Displays only 0...999 | |
3976 bcf leftbind | |
3977 STRCAT_PRINT "%" | |
3978 goto TFT_standard_color ; and return... | |
3979 | |
3980 TFT_end_ead_common: ; print "lo m" (or ft) and limit to 8 chars | |
3981 bsf leftbind | |
3982 TSTOSS opt_units ; 0=Meters, 1=Feets | |
0 | 3983 bra TFT_end_ead_common_metric |
3984 ;TFT_end_ead_common_imperial: | |
582 | 3985 movf lo,W ; With lo in m |
3986 mullw .100 ; PRODL:PRODH = mbar/min | |
0 | 3987 movff PRODL,lo |
3988 movff PRODH,hi | |
582 | 3989 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
3990 output_16_3 | |
3991 STRCAT_TEXT tFeets | |
3992 clrf WREG | |
3993 movff WREG,buffer+.8 ; limit string length to 8 | |
3994 bra TFT_end_ead_common_exit | |
0 | 3995 TFT_end_ead_common_metric: |
582 | 3996 output_8 |
3997 STRCAT_TEXT tMeters | |
0 | 3998 TFT_end_ead_common_exit: |
582 | 3999 bcf leftbind |
4000 movlw .8 | |
4001 rcall TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
4002 STRCAT_PRINT "" | |
4003 return | |
4004 | |
4005 | |
4006 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
|
4007 TFT_sensor_check_mask: |
582 | 4008 call TFT_divemask_color |
4009 WIN_TINY dm_custom_s_check_text_column, dm_custom_s_check_text_row | |
4010 STRCPY_TEXT_PRINT tSensorCheck | |
4011 WIN_TINY dm_custom_ppO2_text_column, dm_custom_s_check_text_row | |
4012 STRCPY_TEXT_PRINT tppO2O2 | |
4013 WIN_TINY dm_custom_ppDil_text_column, dm_custom_s_check_text_row | |
4014 STRCPY_TEXT_PRINT tppO2Dil | |
4015 goto TFT_standard_color ; and return... | |
4016 | |
4017 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
|
4018 TFT_sensor_check: |
582 | 4019 ; Show ppO2 of O2 in this depth |
4020 WIN_MEDIUM dm_custom_s_check_ppo2_o2_column, dm_custom_s_check_value_row | |
560 | 4021 movff int_O_O2_ppO2+0,lo ; copy ppO2 of pure O2 to hi:lo |
4022 movff int_O_O2_ppO2+1,hi | |
582 | 4023 call TFT_color_code_ppo2 ; color-code output |
560 | 4024 bsf leftbind |
582 | 4025 output_16dp .3 ; x.xx bar |
4026 bcf leftbind | |
4027 STRCAT_PRINT "" | |
4028 ; Show ppO2 of the diluent in this depth | |
4029 WIN_MEDIUM dm_custom_s_check_ppo2_dil_col, dm_custom_s_check_value_row | |
560 | 4030 movff int_O_pure_ppO2+0,lo ; copy ppO2 of pure gas to hi:lo |
4031 movff int_O_pure_ppO2+1,hi | |
582 | 4032 call TFT_color_code_ppo2 ; color-code output |
560 | 4033 bsf leftbind |
582 | 4034 output_16dp .3 ; x.xx bar |
4035 bcf leftbind | |
4036 STRCAT_PRINT "" | |
560 | 4037 goto TFT_standard_color ; and return... |
4038 | |
4039 ;============================================================================= | |
413
12e85930d95c
NEW: New Customview shows ppO2(O2) and ppO2(Diluent) during CCR mode
heinrichsweikamp
parents:
412
diff
changeset
|
4040 |
582 | 4041 global TFT_surface_lastdive |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4042 TFT_surface_lastdive: |
582 | 4043 call TFT_divemask_color |
4044 WIN_TINY surf_gaslist_column,surf_gaslist_row+.5 | |
4045 STRCAT_TEXT_PRINT tLastDive ; Last Dive: | |
4046 WIN_TINY surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.1)+.5 | |
4047 STRCAT_TEXT_PRINT tDivetime ; Divetime | |
4048 WIN_TINY surf_gaslist_column,surf_gaslist_row+(surf_gaslist_spacing*.2)+.5 | |
4049 STRCAT_TEXT_PRINT tMaxDepth ; Max. Depth | |
4050 call TFT_standard_color | |
4051 WIN_SMALL surf_gaslist_column+.48,surf_gaslist_row | |
4052 | |
560 | 4053 movff int_O_desaturation_time+0,lo ; bank-safe copies |
4054 movff int_O_desaturation_time+1,WREG | |
4055 iorwf lo,W ; check if desaturation time is zero | |
582 | 4056 bz TFT_surface_lastdive_1 ; YES - show last dive time |
560 | 4057 movff surface_interval+0,lo ; NO - show dive interval |
4058 movff surface_interval+1,hi | |
582 | 4059 call convert_time ; lo=mins, hi=hours |
560 | 4060 movf hi,W |
4061 movff lo,hi | |
582 | 4062 movwf lo ; exchange lo and hi |
4063 bsf leftbind | |
560 | 4064 output_99x |
582 | 4065 PUTC 'h' |
560 | 4066 movff hi,lo |
4067 output_99x | |
4068 STRCAT_PRINT "m " | |
4069 bra TFT_surface_lastdive_2 | |
4070 TFT_surface_lastdive_1: | |
582 | 4071 movff lastdive_time+0,xC+0 |
4072 movff lastdive_time+1,xC+1 | |
4073 movff lastdive_time+2,xC+2 | |
4074 movff lastdive_time+3,xC+3 | |
4075 movlw LOW .3600 | |
4076 movwf xB+0 | |
4077 movlw HIGH .3600 | |
4078 movwf xB+1 ; One day = 3600s | |
4079 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
4080 ;xC+0:xC+1 -> Full hours | |
4081 movff xC+1,xA+1 | |
4082 movff xC+0,xA+0 | |
4083 clrf xB+1 | |
4084 movlw .24 | |
4085 movwf xB+0 | |
4086 call div16x16 ;xA/xB=xC with xA+0 as remainder | |
4087 movff xC+0,lo | |
4088 movff xC+1,hi ; Full days | |
4089 bsf leftbind | |
4090 output_16 | |
4091 PUTC "d" | |
4092 movff xA+0,lo ; Full hours | |
4093 output_8 | |
560 | 4094 STRCAT_PRINT "h " |
4095 TFT_surface_lastdive_2: | |
582 | 4096 WIN_SMALL surf_gaslist_column+.48,surf_gaslist_row+(surf_gaslist_spacing*.1) |
4097 movff lastdive_duration+0,lo | |
4098 movff lastdive_duration+1,hi | |
4099 output_16 ; divetime minutes | |
4100 PUTC ":" | |
4101 movff lastdive_duration+2,lo | |
4102 output_99x ; divetime seconds | |
4103 STRCAT_PRINT "" | |
4104 WIN_SMALL surf_gaslist_column+.48,surf_gaslist_row+(surf_gaslist_spacing*.2) | |
4105 movff lastdive_maxdepth+0,lo | |
4106 movff lastdive_maxdepth+1,hi | |
4107 TSTOSS opt_units ; 0=Meters, 1=Feets | |
4108 bra TFT_surface_lastdive_metric | |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4109 ;imperial |
582 | 4110 rcall convert_mbar_to_feet ; convert value in lo:hi from mbar to feet |
4111 output_16_3 ; limit to 999 and display only (0-999) | |
4112 STRCAT_TEXT tFeets1 | |
4113 bra TFT_surface_lastdive2 | |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4114 |
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4115 TFT_surface_lastdive_metric: |
582 | 4116 bsf ignore_digit5 ; no cm... |
4117 movlw d'1' ; +1 | |
4118 movff WREG,ignore_digits ; no 1000m | |
4119 output_16dp .3 ; xxx.y | |
4120 STRCAT_TEXT tMeters | |
503
4542d03f748a
NEW: Last Dive customviews in surface mode with divetime, depth and interval
heinrichsweikamp
parents:
490
diff
changeset
|
4121 TFT_surface_lastdive2: |
582 | 4122 STRCAT_PRINT "" |
4123 bcf leftbind | |
4124 return ; Done. | |
560 | 4125 |
4126 ;============================================================================= | |
582 | 4127 |
4128 global TFT_surface_tissues | |
4129 TFT_surface_tissues: ; Show Tissue diagram in surface mode | |
4130 WIN_SMALL surf_tissue_N2_column,surf_tissue_N2_row | |
4131 STRCPY_TEXT_PRINT tN2 | |
4132 WIN_SMALL surf_tissue_He_column,surf_tissue_He_row | |
4133 STRCPY_TEXT_PRINT tHe | |
4134 | |
4135 movlw color_deepblue | |
4136 call TFT_set_color ; Make this configurable? | |
4137 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.29,.29 | |
4138 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.37,.37 | |
4139 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.45,.45 | |
4140 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.53,.53 | |
4141 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.61,.61 | |
4142 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.69,.69 | |
4143 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.77,.77 | |
4144 WIN_FRAME_COLOR16 surf_tissue_diagram_top+.23,surf_tissue_diagram_bottom-.4,.85,.85 | |
4145 WIN_FRAME_STD surf_tissue_diagram_top, surf_tissue_diagram_bottom, surf_tissue_diagram_left, surf_tissue_diagram_right ; outer frame | |
0 | 4146 |
4147 movlw .1 | |
582 | 4148 movff WREG,win_height ; row bottom (0-239) |
4149 | |
4150 ;---- Draw N2 Tissues ---------------------------------------------------- | |
4151 | |
4152 movlw surf_tissue_diagram_left+.4 ; start position for N2 bars | |
4153 movff WREG,win_leftx2 ; column left (0-159) | |
560 | 4154 movlw surf_tissue_diagram_right - surf_tissue_diagram_left - .4 ; max width for N2 bars |
582 | 4155 movff WREG,win_width |
0 | 4156 |
4157 lfsr FSR2, char_O_tissue_N2_saturation | |
4158 movlw d'16' | |
582 | 4159 movwf lo ; 16 tissues |
4160 clrf hi ; row offset | |
0 | 4161 surf_tissue_saturation_graph_N2: |
582 | 4162 movlw surf_tissue_diagram_top+.23 ; surface mode |
4163 addwf hi,W | |
4164 movff WREG,win_top ; row top (0-239) | |
4165 rcall surf_tissue_saturation_loop ; show one tissue | |
4166 decfsz lo,F | |
0 | 4167 bra surf_tissue_saturation_graph_N2 |
4168 | |
582 | 4169 ;---- Draw He Tissues ---------------------------------------------------- |
4170 | |
560 | 4171 movlw surf_tissue_diagram_left + .24 ; start position for He bars (.15 without x2) |
582 | 4172 movff WREG,win_leftx2 ; column left (0-159) |
560 | 4173 movlw surf_tissue_diagram_right - surf_tissue_diagram_left - .24 ; max width for He bars |
582 | 4174 movff WREG,win_width |
4175 | |
0 | 4176 lfsr FSR2, char_O_tissue_He_saturation |
4177 movlw d'16' | |
582 | 4178 movwf lo ; 16 tissues |
4179 clrf hi ; row offset | |
0 | 4180 surf_tissue_saturation_graph_He: |
582 | 4181 movlw surf_tissue_diagram_top+.23+.57 ; surface mode |
4182 addwf hi,W | |
4183 movff WREG,win_top ; row top (0-239) | |
4184 rcall surf_tissue_saturation_loop ; show one tissue | |
4185 decfsz lo,F | |
0 | 4186 bra surf_tissue_saturation_graph_He |
582 | 4187 |
4188 WIN_SMALL surf_tissue_He_column+.22,surf_tissue_He_row ; position in-between tissue bars | |
560 | 4189 movff int_O_CNS_fraction+0,lo |
4190 movff int_O_CNS_fraction+1,hi | |
582 | 4191 call TFT_color_code_cns |
4192 STRCPY_TEXT tCNS2 ; CNS: | |
560 | 4193 bsf leftbind |
582 | 4194 output_16_3 ; Displays only 0...999 |
560 | 4195 bcf leftbind |
4196 STRCAT_PRINT "%" | |
582 | 4197 goto TFT_standard_color ; and return... |
0 | 4198 |
4199 surf_tissue_saturation_loop: | |
582 | 4200 call TFT_standard_color |
4201 movlw .2 ; row spacing | |
4202 addwf hi,F | |
4203 movf POSTINC2,W ; get tissue load | |
560 | 4204 bcf WREG,7 ; clear flag bit for sat/desat info (not used in surface mode) |
4205 rlncf WREG,W ; multiply with 2 (previously cleared bit 7 will be rotated to bit 0) | |
4206 incf WREG,W ; add 1 for a minimum visible bar (He-bars could be invisible else-wise) | |
582 | 4207 movwf up |
4208 movff win_width+0,WREG ; get max window width (win_width) | |
4209 cpfslt up ; skip if WREG < win_width | |
4210 movwf up ; crop length to win_width | |
560 | 4211 ; no need to be able to draw longer bars – |
4212 ; we are at the surface and if bars would | |
4213 ; even touch the max length possible here, | |
4214 ; the diver would be in severe decompression | |
4215 ; issues if not dead already... | |
582 | 4216 movff up,win_bargraph |
4217 clrf win_width+1 | |
4218 goto TFT_box ; and return... | |
0 | 4219 |
4220 ;============================================================================= | |
560 | 4221 ; Draw saturation graph in dive mode. |
4222 | |
0 | 4223 DISP_tissue_saturation_graph: |
582 | 4224 ;---- Draw Frame |
4225 call TFT_standard_color | |
4226 WIN_FRAME_COLOR16 dm_custom_tissue_diagram_top, dm_custom_tissue_diagram_bottom, dm_custom_tissue_diagram_left, .159 ; outer frame | |
0 | 4227 |
4228 movlw .1 | |
582 | 4229 movff WREG,win_height ; row bottom (0-239) |
4230 | |
4231 ;---- Draw N2 Tissues ---------------------------------------------------- | |
4232 | |
4233 movlw dm_custom_tissue_diagram_left+.3 ; divemode | |
4234 movff WREG,win_leftx2 ; column left (0-159) | |
4235 movlw .159-dm_custom_tissue_diagram_left-.4 ; width | |
4236 movff WREG,win_width | |
0 | 4237 |
4238 lfsr FSR2, char_O_tissue_N2_saturation | |
4239 movlw d'16' | |
582 | 4240 movwf lo ; 16 tissues |
4241 clrf hi ; row offset | |
0 | 4242 tissue_saturation_graph_N2: |
582 | 4243 movlw dm_custom_tissue_diagram_top+.3 ; divemode |
4244 rcall tissue_saturation_graph_loop ; show one tissue | |
4245 decfsz lo,F | |
0 | 4246 bra tissue_saturation_graph_N2 |
4247 | |
582 | 4248 ;---- Draw He Tissues ---------------------------------------------------- |
4249 | |
560 | 4250 movlw dm_custom_tissue_diagram_left + .8 ; divemode |
4251 movff WREG,win_leftx2 ; column left (0-159) | |
4252 movlw .159 - dm_custom_tissue_diagram_left - .14 ; width | |
4253 movff WREG,win_width | |
582 | 4254 |
0 | 4255 lfsr FSR2, char_O_tissue_He_saturation |
4256 movlw d'16' | |
582 | 4257 movwf lo ; 16 tissues |
4258 clrf hi ; row offset | |
0 | 4259 tissue_saturation_graph_He: |
582 | 4260 movlw dm_custom_tissue_diagram_top+.3+.22 ; divemode |
4261 rcall tissue_saturation_graph_loop ; show one tissue | |
4262 decfsz lo,F | |
0 | 4263 bra tissue_saturation_graph_He |
560 | 4264 goto TFT_standard_color ; and return... |
0 | 4265 |
4266 tissue_saturation_graph_loop: | |
582 | 4267 addwf hi,W |
4268 movff WREG,win_top ; row top (0-239) | |
4269 movlw color_cyan ; preset color for tissues with decreasing pressure | |
4270 call TFT_set_color | |
4271 incf hi,F | |
0 | 4272 movf POSTINC2,W |
560 | 4273 btfss WREG,7 ; check fs flag for increasing tissue pressure set |
4274 bra tissue_saturation_graph_loop_1 ; NO - keep color | |
582 | 4275 movwf up ; YES - buffer WREG |
4276 movlw color_orange ; select color for tissues with increasing pressure | |
4277 call TFT_set_color ; change color | |
4278 movf up,W ; restore WREG | |
560 | 4279 tissue_saturation_graph_loop_1: |
4280 bcf WREG,7 ; clear flag bit | |
582 | 4281 bcf STATUS,C |
4282 rrcf WREG ; divide by 2 | |
560 | 4283 incf WREG,W ; add a bit for a minimum visible bar |
582 | 4284 movwf up |
4285 movf win_width,W ; get max window width (win_width) | |
4286 cpfslt up ; skip if WREG < win_width | |
4287 movwf up | |
4288 movff up,win_bargraph | |
4289 clrf win_width+1 | |
4290 goto TFT_box ; and return... | |
560 | 4291 |
4292 ;============================================================================= | |
55 | 4293 |
0 | 4294 global TFT_display_cns |
4295 TFT_display_cns: | |
560 | 4296 call TFT_warning_set_window ; Sets the row and column for the current warning |
582 | 4297 tstfsz WREG ; Is there room for the warning? |
4298 return ; No | |
4299 STRCPY_TEXT tCNS ; CNS: | |
4300 movff int_O_CNS_fraction+0,lo | |
4301 movff int_O_CNS_fraction+1,hi | |
4302 call TFT_color_code_cns ; Color-code CNS output | |
4303 bsf leftbind | |
4304 output_16_3 ; Displays only 0...999 | |
4305 bcf leftbind | |
4306 PUTC "%" | |
4307 movlw dm_warning_length ; Divemode string length | |
4308 btfss divemode ; In Divemode? | |
4309 movlw surf_warning_length ; No, use surface string length | |
4310 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
560 | 4311 STRCAT_PRINT "" |
4312 bcf win_invert | |
4313 goto TFT_standard_color ; and return... | |
4314 | |
4315 | |
4316 global TFT_display_eod_cns | |
4317 TFT_display_eod_cns: | |
4318 call TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 4319 tstfsz WREG ; Is there room for the warning? |
4320 return ; No | |
560 | 4321 call TFT_warnings_color ; switch to warnings (red) text color |
4322 STRCPY_TEXT tCNSeod ; end-of-dive CNS warning text | |
582 | 4323 movlw dm_warning_length ; Divemode string length |
4324 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
0 | 4325 STRCAT_PRINT "" |
560 | 4326 goto TFT_standard_color ; and return... |
4327 | |
4328 | |
582 | 4329 global TFT_display_ppo2 |
560 | 4330 TFT_display_ppo2: |
4331 call TFT_warning_set_window ; Sets the row and column for the current warning | |
582 | 4332 tstfsz WREG ; Is there room for the warning? |
4333 return ; No | |
560 | 4334 movff int_O_pure_ppO2+0,lo ; copy ppO2 of the pure gas (OC: = breathed gas, loop: = diluent/premix) to hi:lo |
4335 movff int_O_pure_ppO2+1,hi | |
582 | 4336 call TFT_color_code_ppo2 ; Color-code output |
4337 btfss FLAG_ccr_mode ; in CCR mode? | |
4338 bra TFT_display_diluent_1 ; NO - continue with pSCR or OC | |
4339 btfsc is_bailout ; YES - in bailout? | |
4340 bra TFT_display_diluent_2 ; YES - continue with OC | |
4341 STRCPY_TEXT tdil ; NO - print "Dil:" | |
4342 bra TFT_display_diluent_3 | |
560 | 4343 TFT_display_diluent_1: |
582 | 4344 btfss FLAG_pscr_mode ; in pSCR mode? |
4345 bra TFT_display_diluent_2 ; NO - continue with pSCR or OC | |
4346 btfsc is_bailout ; YES - in bailout? | |
4347 bra TFT_display_diluent_2 ; YES - continue with OC | |
4348 STRCPY_TEXT tmix ; NO - print "Mix:" | |
4349 bra TFT_display_diluent_3 | |
560 | 4350 TFT_display_diluent_2: |
582 | 4351 STRCPY_TEXT tppO2 ; OC mode or bailout, print "ppO2:" |
560 | 4352 TFT_display_diluent_3: |
4353 bsf leftbind | |
582 | 4354 output_16dp .3 ; x.xx bar |
4355 bcf leftbind | |
4356 movlw dm_warning_length ; Divemode string length | |
4357 call TFT_fillup_with_spaces ; Fillup FSR2 with spaces (Total string length in #WREG) | |
560 | 4358 STRCAT_PRINT "" |
4359 goto TFT_standard_color ; and return... | |
582 | 4360 |
560 | 4361 ;============================================================================= |
582 | 4362 |
0 | 4363 global TFT_LogOffset_Logtitle |
4364 TFT_LogOffset_Logtitle: | |
4365 STRCPY_TEXT tLogOffset | |
4366 PUTC ":" | |
4367 call do_logoffset_common_read ; Offset into lo:hi | |
4368 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
|
4369 output_16_4 |
0 | 4370 bcf leftbind |
4371 PUTC " " | |
582 | 4372 return ; No "_PRINT" here... |
4373 | |
560 | 4374 ;============================================================================= |
582 | 4375 |
0 | 4376 global adjust_depth_with_salinity |
582 | 4377 global adjust_depth_with_salinity_log |
0 | 4378 adjust_depth_with_salinity: ; computes salinity setting into lo:hi [mbar] |
582 | 4379 btfsc simulatormode_active ; Do not apply salinity in simulator mode |
0 | 4380 return |
582 | 4381 movff opt_salinity,WREG ; 0-5% |
560 | 4382 adjust_depth_with_salinity_log: ; computes salinity setting (FROM WREG!) into lo:hi [mbar] |
582 | 4383 addlw d'100' ; 1.00kg/l |
4384 movwf up | |
4385 | |
0 | 4386 movlw d'105' ; 105% ? |
582 | 4387 cpfslt up ; Salinity higher limit |
0 | 4388 return ; Out of limit, do not adjust lo:hi |
4389 movlw d'99' ; 99% ? | |
582 | 4390 cpfsgt up ; Salinity lower limit |
0 | 4391 return ; Out of limit, do not adjust lo:hi |
4392 | |
4393 movff lo,xA+0 | |
4394 movff hi,xA+1 | |
4395 | |
4396 movlw d'102' ; 0,98bar/10m | |
4397 movwf xB+0 | |
4398 clrf xB+1 | |
560 | 4399 call mult16x16 ; xA*xB=xC (lo:hi * 100) |
582 | 4400 movff up,xB+0 ; Salinity |
0 | 4401 clrf xB+1 |
582 | 4402 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder |
0 | 4403 movff xC+0,lo |
4404 movff xC+1,hi ; restore lo and hi with updated value | |
4405 return | |
4406 | |
560 | 4407 ;============================================================================= |
582 | 4408 |
4409 global convert_mbar_to_feet ; convert value in lo:hi from mbar to feet | |
4410 convert_mbar_to_feet: ; convert value in lo:hi from mbar to feet | |
0 | 4411 movff lo,xA+0 |
4412 movff hi,xA+1 | |
4413 | |
582 | 4414 movlw LOW d'328' ; 328feet/100m |
0 | 4415 movwf xB+0 |
582 | 4416 movlw HIGH d'328' |
0 | 4417 movwf xB+1 |
4418 | |
582 | 4419 call mult16x16 ; xA*xB=xC (lo:hi * 328) |
4420 | |
4421 movlw d'50' ; round up | |
0 | 4422 addwf xC+0,F |
4423 movlw 0 | |
4424 addwfc xC+1,F | |
4425 addwfc xC+2,F | |
4426 addwfc xC+3,F | |
4427 | |
582 | 4428 movlw LOW .10000 |
4429 movwf xB+0 | |
4430 movlw HIGH .10000 | |
4431 movwf xB+1 | |
4432 | |
4433 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
0 | 4434 |
4435 movff xC+0,lo | |
582 | 4436 movff xC+1,hi ; restore lo and hi with updated value |
0 | 4437 return |
4438 | |
560 | 4439 ;============================================================================= |
4440 | |
582 | 4441 global convert_celsius_to_fahrenheit ; convert value in lo:hi from celsius to fahrenheit |
4442 convert_celsius_to_fahrenheit: ; convert value in lo:hi from celsius to fahrenheit | |
4443 movff lo,xA+0 ; temperature in 1/10 of °C | |
4444 movff hi,xA+1 | |
4445 | |
4446 movlw LOW d'1000' ; offset °C value by 1000 to get out of any negative numbers | |
4447 addwf xA+0,F | |
4448 movlw HIGH d'1000' | |
4449 addwfc xA+1,F | |
4450 | |
4451 movlw d'18' ; adjust scaling: 1°C = 1.8°F | |
4452 movwf xB+0 | |
4453 clrf xB+1 | |
4454 | |
4455 call mult16x16 ; xA*xB=xC (lo:hi * 18) | |
4456 | |
4457 movlw d'10' | |
4458 movwf xB+0 | |
4459 clrf xB+1 | |
4460 | |
4461 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder | |
4462 | |
4463 movlw LOW d'1480' ; adjust offset: subtract above offset of 1000 * 1.8 = 1800 now and add 320 => subtract 1480 | |
4464 subwf xC+0,F | |
4465 movlw HIGH d'1480' | |
4466 subwfb xC+1,F | |
4467 | |
4468 movff xC+0,lo | |
4469 movff xC+1,hi ; restore lo and hi with updated value | |
4470 return | |
560 | 4471 |
480
ad8acade5567
NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents:
477
diff
changeset
|
4472 ;============================================================================= |
560 | 4473 |
0 | 4474 END |