Mercurial > public > hwos_code
annotate src/divemenu_tree.asm @ 560:b7eb98dbd800
bump to 2.96beta (REFACTORED VERSION)
author | heinrichsweikamp |
---|---|
date | Wed, 31 Jan 2018 19:39:37 +0100 |
parents | ad7dc231c180 |
children | 54346c651b6a |
rev | line source |
---|---|
0 | 1 ;============================================================================= |
2 ; | |
560 | 3 ; File divemenu_tree.asm REFACTORED VERSION V2.96a |
0 | 4 ; |
275 | 5 ; OSTC dive mode menu |
0 | 6 ; |
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. | |
8 ;============================================================================= | |
9 ; HISTORY | |
10 ; 2013-02-02 : [mH] Made out of menu_tree.asm | |
11 | |
275 | 12 #include "hwos.inc" ; Mandatory header |
0 | 13 #include "menu_processor.inc" |
14 #include "shared_definitions.h" ; Mailbox from/to p2_deco.c | |
15 #include "tft_outputs.inc" | |
16 #include "customview.inc" | |
17 #include "strings.inc" | |
195 | 18 #include "calibrate.inc" |
0 | 19 |
560 | 20 |
0 | 21 divegui CODE |
22 ;============================================================================= | |
23 ; Main Menu | |
560 | 24 global do_main_divemenu |
0 | 25 do_main_divemenu: |
560 | 26 call menu_processor_reset ; restart from first icon. |
0 | 27 |
28 do_continue_main_divemenu: | |
560 | 29 call menu_processor_pop ; drop exit line. |
30 call menu_processor_pop ; drop exit line. | |
0 | 31 |
560 | 32 btfsc FLAG_ccr_mode |
33 bra main_divemenu_loop ; goto CCR / pSCR Menu menu | |
34 btfsc FLAG_pscr_mode | |
35 bra main_divemenu_loop ; goto CCR / pSCR Menu menu | |
36 | |
37 main_divemenu_OC: | |
38 bcf ccr_diluent_setup | |
39 bcf is_bailout_menu | |
40 movlw .1 | |
41 movwf menupos ; Set to first option in divemode menu | |
485 | 42 |
560 | 43 MENU_BEGIN tMainMenu, .5 |
44 MENU_CALL tDivemenu_Gaslist, do_divemode_gaslist | |
45 MENU_CALL tDivemenu_ResetAvg, do_reset_average | |
46 MENU_CALL tDivemenu_ToggleGF, do_toggle_gf | |
47 MENU_CALL tDivemenu_Marker, do_set_marker | |
48 MENU_CALL tExit, do_exit_divemode_menu | |
49 MENU_END | |
0 | 50 |
560 | 51 main_divemenu_loop: |
52 bsf ccr_diluent_setup ; default to operations on diluents | |
53 bcf is_bailout_menu ; default to none-bailout menu | |
0 | 54 movlw .1 |
560 | 55 movwf menupos ; Set to first option in divemode menu |
485 | 56 |
57 btfsc FLAG_pscr_mode | |
560 | 58 bra main_divemenu_pscr ; PSCR Menu |
485 | 59 |
0 | 60 MENU_BEGIN tMainMenu, .6 |
61 MENU_CALL tDiveBailout, do_divemode_gaslist_bail | |
62 MENU_CALL tDivemenu_Setpoint, do_divemode_splist | |
63 MENU_CALL tDivemenu_Gaslist, do_divemode_gaslist | |
560 | 64 MENU_CALL tDivemenu_ResetAvg, do_reset_average |
65 MENU_CALL tDivemenu_ToggleGF, do_toggle_gf | |
0 | 66 MENU_CALL tExit, do_exit_divemode_menu |
67 MENU_END | |
485 | 68 |
69 main_divemenu_pscr: | |
560 | 70 movf hardware_flag,W |
71 sublw 0x11 ; 2 with BLE | |
72 btfsc STATUS,Z | |
73 bra main_divemenu_pscr_no_sensors | |
74 movf hardware_flag,W | |
75 sublw 0x13 ; + | |
76 btfsc STATUS,Z | |
77 bra main_divemenu_pscr_no_sensors | |
78 | |
485 | 79 MENU_BEGIN tMainMenu, .6 |
80 MENU_CALL tDiveBailout, do_divemode_gaslist_bail | |
560 | 81 MENU_CALL tCCRSensor, do_divemode_setpoint_pscr |
82 MENU_CALL tDivemenu_Gaslist, do_divemode_gaslist | |
83 MENU_CALL tDivemenu_ResetAvg, do_reset_average | |
84 MENU_CALL tDivemenu_ToggleGF, do_toggle_gf | |
85 MENU_CALL tExit, do_exit_divemode_menu | |
86 MENU_END | |
87 | |
88 main_divemenu_pscr_no_sensors: | |
89 MENU_BEGIN tMainMenu, .6 | |
90 MENU_CALL tDiveBailout, do_divemode_gaslist_bail | |
91 MENU_CALL tDivemenu_Gaslist, do_divemode_gaslist | |
92 MENU_CALL tDivemenu_ResetAvg, do_reset_average | |
93 MENU_CALL tDivemenu_ToggleGF, do_toggle_gf | |
94 MENU_CALL tDivemenu_Marker, do_set_marker | |
485 | 95 MENU_CALL tExit, do_exit_divemode_menu |
96 MENU_END | |
560 | 97 |
0 | 98 |
560 | 99 do_toggle_gf: |
100 movff char_I_deco_model,WREG ; 0 = ZH-L16, 1 = ZH-L16-GF | |
101 decfsz WREG,W ; Toggle GF only in GF modes - in GF mode? | |
102 bra do_continue_main_divemenu ; No, do nothing and return | |
103 TSTOSS opt_enable_aGF ; =1: aGF can be selected underwater | |
104 bra do_continue_main_divemenu ; No, do nothing and return | |
105 movlw .4 ; Set customview to 5 (GF informations) | |
106 movwf menupos3 ; Customview to come-1 | |
107 bsf toggle_customview ; Set flag, the customview will be toggled very soon now... | |
108 movlw .1 | |
109 movwf menupos ; Set to first option in divemode menu | |
110 | |
111 MENU_BEGIN tDivemenu_ToggleGF, .2 | |
112 MENU_CALL tDivemenu_ToggleGF, do_togglegf | |
113 MENU_CALL tExit, do_continue_main_divemenu | |
114 MENU_END | |
0 | 115 |
560 | 116 do_togglegf: |
117 ;TSTOSS opt_enable_aGF ; =1: aGF can be selected underwater ## check is now done before entering menu | |
118 ;bra do_exit_divemode_menu ; continue with exiting menu code | |
119 bsf toggle_gf ; Set flag... | |
120 bra do_exit_divemode_menu ; continue with exiting menu code | |
121 | |
122 | |
123 do_set_marker: | |
124 movlw d'6' ; Type of Alarm (Manual Marker) | |
125 movwf AlarmType ; Copy to Alarm Register | |
126 bsf event_occured ; Set Event Flag | |
127 bra do_exit_divemode_menu ; And exit | |
53
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
128 |
560 | 129 |
130 do_reset_average: | |
131 bsf reset_average_depth ; Set Flag | |
132 bra do_exit_divemode_menu ; continue with exiting menu code | |
0 | 133 |
560 | 134 |
135 do_switch_sensor: ; entry point when coming from switch to sensor | |
136 movlw .1 ; Switch to Sensor | |
137 movff WREG,opt_ccr_mode ; =0: Fixed SP (CCR) / calculated (pSCR), =1: Sensor, =2: Auto SP | |
138 bra do_switch_sp_com ; continue with common part | |
139 | |
140 do_switch_sp: ; entry point when coming from manual setpoint selection (CCR) | |
141 decf menupos,W ; 1-5 -> 0-4 | |
0 | 142 lfsr FSR1,char_I_setpoint_cbar |
560 | 143 movff PLUSW1,char_I_const_ppO2 ; setup fixed setpoint |
352
5c6da9fa5cb0
add setpoint change to first sample in CCR mode
heinrichsweikamp
parents:
275
diff
changeset
|
144 movff char_I_const_ppO2,WREG |
560 | 145 call transmit_setpoint ; tansmit current setpoint from WREG (in cbar) to external electronics |
146 bcf setpoint_fallback ; clear fallback condition (stops fallback warning) | |
147 clrf WREG ; Switch to fixed SP | |
148 movff WREG,opt_ccr_mode ; =0: Fixed SP (CCR) / calculated (pSCR), =1: Sensor, =2: Auto SP | |
149 bra do_switch_sp_com | |
0 | 150 |
560 | 151 do_switch_sp_calc: ; entry point when coming from switch to calculated ppO2 (pSCR) |
152 bcf setpoint_fallback ; clear fallback condition (stops fallback warning) | |
153 clrf WREG ; Switch to fixed SP | |
154 movff WREG,opt_ccr_mode ; =0: Fixed SP (CCR) / calculated (pSCR), =1: Sensor, =2: Auto SP | |
155 movff WREG,char_I_const_ppO2 ; set setpoint to 0, this forces deco engine to take the computed ppO2 | |
97
53a99a2dc6a1
CHANGE: Always compute bailout plan based on all active gases
heinrichsweikamp
parents:
53
diff
changeset
|
156 |
560 | 157 do_switch_sp_com: ; merge point to common part |
158 bsf event_occured ; set global event byte | |
159 bsf setpoint_changed ; set flag (for profile) | |
0 | 160 |
161 ; Clear some flags in case we were in bailout before... | |
560 | 162 bcf is_bailout ; end bailout mode |
163 ;bcf is_bailout_menu ; not needed | |
164 bcf better_gas_available ; =1: A better gas is available and a gas change is advised in divemode | |
165 bcf blinking_better_gas ; clear blinking flag | |
166 call customview_mask ; update customview mask to (eventually) rewrite ppO2(Dil): to ppO2: | |
167 | |
168 movff active_diluent,menupos ; reconfigure last diluent (menupos is transfer register for selected gas/diluent towards gas_switched_common:) | |
169 bsf divemode_gaschange ; initiate reconfiguration to loop mode on last diluent | |
170 | |
171 bra do_exit_divemode_menu ; continue with exiting menu code | |
0 | 172 |
560 | 173 |
174 do_divemode_gaslist_bail: ; entry point from CCR/pSCR to bailout to OC gases | |
175 bcf ccr_diluent_setup ; switch to OC gases | |
176 bsf is_bailout_menu ; flag it is a bailout action | |
177 do_divemode_gaslist: ; entry point for switching: OC -> gases, loop -> diluents | |
178 btfsc is_bailout ; in bailout mode? | |
179 bcf ccr_diluent_setup ; yes - for safety reasons, redirect to OC (bailout) gases | |
180 do_divemode_gaslist_com: | |
181 bsf short_gas_decriptions | |
182 movlw .1 | |
183 movwf menupos ; Set to first option in divemode menu | |
0 | 184 MENU_BEGIN tGaslist, .6 |
185 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
186 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
187 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
188 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
189 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
560 | 190 MENU_CALL tMore, do_divemode_gaslist_more |
0 | 191 MENU_END |
192 | |
193 do_divemode_gaslist_more: | |
560 | 194 movlw .1 |
195 movwf menupos ; Set to first option in divemode menu | |
196 | |
197 movff char_I_O2_ratio,gas6_O2_ratio ; initialize gas6 with currently breathed gas - O2 ratio | |
198 movff char_I_He_ratio,gas6_He_ratio ; initialize gas6 with currently breathed gas - He ratio | |
199 | |
200 do_divemode_gaslist_more_loop: | |
0 | 201 MENU_BEGIN tGaslist, .6 |
202 MENU_CALL tO2Plus, do_dive_pO2 | |
203 MENU_CALL tO2Minus, do_dive_mO2 | |
204 MENU_CALL tHePlus, do_dive_pHe | |
205 MENU_CALL tHeMinus, do_dive_mHe | |
560 | 206 MENU_DYNAMIC gaslist_strcat_gas6, do_switch_gas6 |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
207 MENU_CALL tDivemenu_LostGas, do_lost_gas |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
208 MENU_END |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
209 |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
210 do_lost_gas: |
560 | 211 movlw .1 |
212 movwf menupos ; Set to first option in divemode menu | |
213 do_lost_gas_loop: | |
214 bsf short_gas_decriptions | |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
215 MENU_BEGIN tDivemenu_LostGas, .6 |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
216 MENU_DYNAMIC gaslist_strcat_gas_mod, do_toggle_active ; Toggle the gas (in)active |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
217 MENU_DYNAMIC gaslist_strcat_gas_mod, do_toggle_active ; Toggle the gas (in)active |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
218 MENU_DYNAMIC gaslist_strcat_gas_mod, do_toggle_active ; Toggle the gas (in)active |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
219 MENU_DYNAMIC gaslist_strcat_gas_mod, do_toggle_active ; Toggle the gas (in)active |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
220 MENU_DYNAMIC gaslist_strcat_gas_mod, do_toggle_active ; Toggle the gas (in)active |
560 | 221 MENU_CALL tExit, do_exit_divemode_menu |
0 | 222 MENU_END |
223 | |
560 | 224 |
225 do_switch_gas6: | |
226 movlw .6 ; gas 6 | |
227 movwf menupos ; transfer register for selected gas towards gas_switched_common: | |
228 bsf gas6_changed ; set flag for profile recording | |
229 ;bra do_switch_gas ; continue with common gas-switched code | |
230 | |
231 do_switch_gas: | |
232 bsf divemode_gaschange ; Set flag, will also trigger restart of deco_engine | |
233 btfsc is_bailout_menu ; Bailout confirmed? | |
234 bsf is_bailout ; begin bailout mode | |
235 call customview_mask ; update custom view mask to (eventually) rewrite ppO2(Dil): to ppO2: | |
236 ;bra do_exit_divemode_menu ; continue with exiting menu code | |
237 | |
238 do_exit_divemode_menu: | |
239 extern timeout_divemode_menu2 | |
240 call timeout_divemode_menu2 | |
241 clrf STKPTR | |
242 extern diveloop_loop4 | |
243 goto diveloop_loop4 | |
244 | |
245 | |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
246 do_toggle_active: |
560 | 247 extern restart_deco_engine_wo_ceiling |
248 call restart_deco_engine_wo_ceiling | |
511
7db10ebae205
BUGFIX: Lost Diluent now possible in CCR and PSCR mode
heinrichsweikamp
parents:
502
diff
changeset
|
249 movlw .5 |
560 | 250 btfsc ccr_diluent_setup ; diluents? |
251 addwf menupos,F ; yes 1-5 -> 6-10 | |
252 decf menupos,W ; -> 0-4 for gases / 5-9 for diluents | |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
253 lfsr FSR1,opt_gas_type+0 |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
254 movff PLUSW1,lo |
560 | 255 tstfsz lo ; Already disabled? |
256 bra do_toggle_active2 ; No, disable now! | |
257 lfsr FSR1,opt_gas_type_backup+0 ; copy opt_gas_type_backup+W back to opt_gas_type+W | |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
258 movff PLUSW1,lo |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
259 lfsr FSR1,opt_gas_type+0 |
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
260 movff lo,PLUSW1 |
560 | 261 lfsr FSR1,opt_OC_bail_gas_change_backup+0 ; copy opt_OC_bail_gas_change_backup+W back to opt_OC_bail_gas_change+W |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
262 movff PLUSW1,lo |
560 | 263 lfsr FSR1,opt_OC_bail_gas_change+0 |
403
6e60012bb3fc
NEW: "Lost Gas" feature allows disabling gases during the dive
heinrichsweikamp
parents:
401
diff
changeset
|
264 movff lo,PLUSW1 |
560 | 265 bra do_toggle_active3 |
266 do_toggle_active2: | |
267 clrf PLUSW1 ; 0=Disabled, 1=First, 2=Travel, 3=Deco | |
268 lfsr FSR1,opt_OC_bail_gas_change+0 | |
269 clrf PLUSW1 ; also delete change depth here to have the menu updated immediately | |
270 do_toggle_active3: | |
511
7db10ebae205
BUGFIX: Lost Diluent now possible in CCR and PSCR mode
heinrichsweikamp
parents:
502
diff
changeset
|
271 movlw .5 |
560 | 272 btfsc ccr_diluent_setup ; use OC gases? |
273 subwf menupos,F ; Back to 1-5 | |
274 bra do_lost_gas_loop ; Return to list and show updated result | |
511
7db10ebae205
BUGFIX: Lost Diluent now possible in CCR and PSCR mode
heinrichsweikamp
parents:
502
diff
changeset
|
275 |
0 | 276 |
277 do_dive_pO2: | |
560 | 278 banksel gas6_O2_ratio |
279 incf gas6_O2_ratio,F ; O2++ | |
280 movf gas6_He_ratio,W | |
281 addwf gas6_O2_ratio,W | |
282 movwf gas6_temp | |
283 movlw .101 | |
284 cpfslt gas6_temp ; O2+He<101? | |
285 decf gas6_O2_ratio,F ; O2-- (Unchanged) | |
286 banksel common | |
287 bra do_divemode_gaslist_more_loop | |
288 | |
0 | 289 do_dive_mO2: |
560 | 290 banksel gas6_O2_ratio |
291 decf gas6_O2_ratio,F ; O2-- | |
292 movlw gaslist_min_o2 | |
293 cpfslt gas6_O2_ratio | |
294 bra do_dive_mO2_done | |
295 movlw gaslist_min_o2 | |
296 movwf gas6_O2_ratio | |
297 do_dive_mO2_done: | |
298 banksel common | |
299 bra do_divemode_gaslist_more_loop | |
0 | 300 |
301 do_dive_pHe: | |
560 | 302 banksel gas6_O2_ratio |
303 incf gas6_He_ratio,F ; He++ | |
304 movf gas6_He_ratio,W | |
305 addwf gas6_O2_ratio,W | |
306 movwf lo | |
307 movlw .101 | |
308 cpfslt lo ; O2+He<101? | |
309 decf gas6_He_ratio,F ; Yes, He-- (Unchanged) | |
310 banksel common | |
311 bra do_divemode_gaslist_more_loop | |
0 | 312 |
313 do_dive_mHe: | |
560 | 314 banksel gas6_O2_ratio |
315 decf gas6_He_ratio,F ; He-- | |
316 bnn do_dive_mHe_done | |
317 clrf gas6_He_ratio | |
318 do_dive_mHe_done: | |
319 banksel common | |
320 bra do_divemode_gaslist_more_loop | |
0 | 321 |
322 do_divemode_splist: | |
560 | 323 bsf short_gas_decriptions |
324 movlw .1 | |
325 movwf menupos ; Set to first option in divemode menu | |
326 | |
327 movf hardware_flag,W | |
328 sublw 0x11 ; 2 with BLE | |
329 btfsc STATUS,Z | |
330 bra do_divemode_splist_no_sensor ; no sensor | |
331 movf hardware_flag,W | |
332 sublw 0x13 ; + | |
333 btfsc STATUS,Z | |
334 bra do_divemode_splist_no_sensor ; no sensor | |
335 | |
336 do_divemode_splist_with_sensor: | |
0 | 337 MENU_BEGIN tGaslist, .6 |
338 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
339 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
340 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
341 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
342 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
560 | 343 MENU_CALL tCCRSensor, do_divemode_sensor |
0 | 344 MENU_END |
345 | |
560 | 346 do_divemode_splist_no_sensor: |
249 | 347 MENU_BEGIN tGaslist, .5 |
348 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
349 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
350 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
351 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
352 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
353 MENU_END | |
354 | |
355 | |
0 | 356 do_divemode_sensor: |
560 | 357 clrf menupos3 ; show customview 1 (HUD Data) |
358 bsf toggle_customview | |
0 | 359 movlw .1 |
560 | 360 movwf menupos ; Set to 1st option: use sensors |
361 do_divemode_sensor_loop: | |
362 MENU_BEGIN tGaslist, .6 | |
363 MENU_CALL tDivemenu_UseSensor, do_switch_sensor | |
364 MENU_CALL tBack, do_divemode_splist | |
0 | 365 MENU_CALL tExit, do_continue_main_divemenu |
560 | 366 MENU_CALL tDiveHudMask1, do_toggle_sensor |
367 MENU_CALL tDiveHudMask2, do_toggle_sensor | |
368 MENU_CALL tDiveHudMask3, do_toggle_sensor | |
0 | 369 MENU_END |
370 | |
560 | 371 do_divemode_setpoint_pscr: |
0 | 372 movlw .1 |
560 | 373 movwf menupos ; Set to 1st option: use calculated ppO2 |
374 MENU_BEGIN tGaslist, .6 | |
375 MENU_CALL tCalculated, do_switch_sp_calc | |
376 MENU_CALL tDivemenu_UseSensor, do_switch_sensor | |
0 | 377 MENU_CALL tExit, do_continue_main_divemenu |
560 | 378 MENU_CALL tDiveHudMask1, do_toggle_sensor |
379 MENU_CALL tDiveHudMask2, do_toggle_sensor | |
380 MENU_CALL tDiveHudMask3, do_toggle_sensor | |
0 | 381 MENU_END |
382 | |
560 | 383 do_toggle_sensor: |
384 decf menupos,f ; 4, 5, 6 -> 3, 4, 5 | |
385 decf menupos,f ; 3, 4, 5 -> 2, 3, 4 | |
386 decf menupos,f ; 2, 3, 4 -> 1, 2, 3 | |
387 dcfsnz menupos ; 1, 2, 3 -> 0, 1, 2 | |
388 btg use_O2_sensor1 ; = | |
389 dcfsnz menupos ; 0, 1, 2 -> -1, 0, 1 | |
390 btg use_O2_sensor2 ; = | |
391 dcfsnz menupos ; -1,0, 1 -> -2,-1, 0 | |
392 btg use_O2_sensor3 ; = | |
393 movlw .1 | |
394 movwf menupos | |
395 bra do_divemode_sensor_loop | |
396 | |
397 | |
0 | 398 END |