annotate code_part1/OSTC_code_asm_part1/divemode.asm @ 842:454ef5c2e6aa default tip

Bugfix: Auto-SP did not show >9m for some 2C hardware versions in German language firmware Make year settings until 2040 possible (This is likely the final release for this model)
author heinrichsweikamp
date Sat, 29 Nov 2025 14:11:07 +0100
parents ab68f28514e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1
815
2a0e5d884fc3 BUGFIX: Fix licence in German
heinrichsweikamp
parents: 813
diff changeset
2 ; OSTC Mk.2, 2N and 2C - diving computer code
807
c50296c3059e BUGFIX: Divetime had unwanted "." behind the minutes
heinrichsweikamp
parents: 801
diff changeset
3 ; Copyright (C) 2015 HeinrichsWeikamp GbR
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 ; This program is free software: you can redistribute it and/or modify
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 ; it under the terms of the GNU General Public License as published by
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 ; the Free Software Foundation, either version 3 of the License, or
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8 ; (at your option) any later version.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 ; This program is distributed in the hope that it will be useful,
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13 ; GNU General Public License for more details.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 ; You should have received a copy of the GNU General Public License
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 ; Mainroutines for divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 ; written: 10/01/05
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 ; last updated: 15/05/08
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23 ; known bugs:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24 ; ToDo:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 diveloop:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 call diveloop_boot ; Boot tasks for all modes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28
256
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
29 ; start timer3 for deco routine CPU usesage monitor
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
30 movlw b'00000011'
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
31 movwf T3CON ; Timer3 with 32768Hz clock running
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
32
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
33 ; Startup Tasks for all modes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
34 ostc_debug 'R' ; Sends debug-information to screen if debugmode active
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
35 call DISP_ClearScreen ; clean up DISPLAY
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
36 call DISP_divemode_mask ; Display mask
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
37 call DISP_temp_divemode ; Displays temperature
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
38 call DISP_active_gas_divemode ; Display gas
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
39
626
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
40 ; Reload last customview
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
41 read_int_eeprom d'94' ; Read last selected customview dive mode into EEDATA
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
42 movff EEDATA,menupos3 ; Copy to menupos3
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
43 call customview_toggle2 ; Show customview
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
44
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
45 btfsc FLAG_apnoe_mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
46 bsf realdive ; Set Realdive flag in Apnoe mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
48 btfsc gauge_mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
49 bra diveloop_loop ; Skip in gauge mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
50 btfsc FLAG_apnoe_mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
51 bra diveloop_loop ; Skip in apnoe mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
53 ; Startup Tasks for deco modes
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
54 call DISP_display_ndl_mask ; display "no stop" if not in gauge or apnoe mode
780
de7fa2316913 add simple gas change countdown
heinrichsweikamp
parents: 776
diff changeset
55 GETCUSTOM8 d'55'
de7fa2316913 add simple gas change countdown
heinrichsweikamp
parents: 776
diff changeset
56 movwf apnoe_surface_mins
de7fa2316913 add simple gas change countdown
heinrichsweikamp
parents: 776
diff changeset
57 clrf apnoe_surface_secs
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58
413
46c1818ab589 testing
heinrichsweikamp
parents: 408
diff changeset
59 btfss FLAG_const_ppO2_mode ; only in const_ppO2_mode
46c1818ab589 testing
heinrichsweikamp
parents: 408
diff changeset
60 bra diveloop_loop ; OC modes, skip
404
cd48cdb6e1ae Add a setpoint change to the first depth sample in CC mode
heinrichsweikamp
parents: 398
diff changeset
61 bsf setpoint_changed ; Add a setpoint change to the first depth sample in CC mode
407
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
62 bsf event_occured ; set global event flag
404
cd48cdb6e1ae Add a setpoint change to the first depth sample in CC mode
heinrichsweikamp
parents: 398
diff changeset
63
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
64 diveloop_loop: ; The diveloop starts here
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
65 btfss onesecupdate ; tasks any new second
263
27c9bb14b008 making the seconds display in divemode smoother...
heinrichsweikamp
parents: 257
diff changeset
66 bra diveloop_loop3
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
67
801
heinrichsweikamp
parents: 793
diff changeset
68 bcf onesecupdate ; one seconds update, clear flag here in case it's set again in ISR before all tasks are done.
heinrichsweikamp
parents: 793
diff changeset
69
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 btfsc gauge_mode ; Only in gauge mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
71 bra diveloop_loop1a ; One Second Tasks in Gauge mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
72 btfsc FLAG_apnoe_mode ; Only in apnoe mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
73 bra diveloop_loop1b ; One Second Tasks in Apnoe mode
617
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
74
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
75 ; Update divetime
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
76 call customview_second ; Do every-second tasks for the custom view area
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
77 GETCUSTOM8 d'38' ; Show seconds (=1?)
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
78 movwf lo
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
79 movlw d'1'
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
80 cpfseq lo ; =1?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
81 bra diveloop_loop1y ; No, minutes only
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
82 bsf update_divetime ; Set Update flag
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
83 diveloop_loop1y:
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
84 btfss update_divetime ; display new divetime?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
85 bra diveloop_loop1z ; No
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
86 btfsc premenu ; Is the divemode menu active?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
87 bra diveloop_loop1z ; Yes
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
88 call DISP_divemins ; Display (new) divetime!
617
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
89 diveloop_loop1z:
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
90 bcf update_divetime ; clear flag
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
91
780
de7fa2316913 add simple gas change countdown
heinrichsweikamp
parents: 776
diff changeset
92 call DISP_show_gas_change_countdown ; Show the gas change countdown (If required)
de7fa2316913 add simple gas change countdown
heinrichsweikamp
parents: 776
diff changeset
93
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
94 btfsc FLAG_const_ppO2_mode ; only in const_ppO2_mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
95 bra diveloop_loop1c ; One Second Tasks in const_ppO2 mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
96
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
97 ; Tasks only for OC modes
599
76b85952b9cd minor display update
heinrichsweikamp
parents: 598
diff changeset
98 btfsc show_safety_stop ; Show the safety stop?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
99 call DISP_show_safety_stop ; Yes, show/delete if done.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
100 call check_ppO2 ; check ppO2 and displays warning if required
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
101 call calc_deko_divemode ; calculate decompression and display result (any two seconds)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
102 bra diveloop_loop1x ; Common Tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
103
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
104 ; Tasks only for Gauge mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105 diveloop_loop1a:
106
966ebf905514 bugfix in output16_3_call
heinrichsweikamp
parents: 98
diff changeset
106 btfss premenu ; Is the divemode menu active?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
107 call DISP_divemins ; display (new) divetime!
623
3f1a85ce7785 v2.50 rc2
heinrichsweikamp
parents: 622
diff changeset
108 call customview_second ; Do every-second tasks for the custom view area
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
109 call timeout_divemode ; dive finished? This routine sets the required flags
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
110
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
111 btfsc twosecupdate ; two seconds after the last call
263
27c9bb14b008 making the seconds display in divemode smoother...
heinrichsweikamp
parents: 257
diff changeset
112 bra diveloop_loop1a2 ; Common Tasks
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113
263
27c9bb14b008 making the seconds display in divemode smoother...
heinrichsweikamp
parents: 257
diff changeset
114 bsf twosecupdate ; Routines used in the "other second"
27c9bb14b008 making the seconds display in divemode smoother...
heinrichsweikamp
parents: 257
diff changeset
115 call calc_average_depth ; calculate average depth
494
e9b1f162799d testing graphical velocity
heinrichsweikamp
parents: 492
diff changeset
116 call calc_velocity ; calculate vertical velocity and display if > threshold (every two seconds)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
117
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
118 bra diveloop_loop1x ; Common Tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
119
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
120 diveloop_loop1a2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
121 bcf twosecupdate
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
122 bra diveloop_loop1x ; Common Tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
124 ; Tasks only for Apnoe mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
125 diveloop_loop1b:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
126 call divemode_apnoe_tasks ; 1 sec. Apnoe tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 bra diveloop_loop1x ; Common Tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
128
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 ; Tasks only for ppO2 mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130 diveloop_loop1c:
599
76b85952b9cd minor display update
heinrichsweikamp
parents: 598
diff changeset
131 btfsc show_safety_stop ; Show the safety stop?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
132 call DISP_show_safety_stop ; Yes, show/delete if done.
819
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
133 call check_dive_autosp ; Check for Auto-SP
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
134 call DISP_const_ppO2_value ; display const ppO2 setting in [bar]
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135 call calc_deko_divemode ; calculate decompression and display result (any two seconds)
3
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
136 btfsc is_bailout ; Are we in Bailout mode?
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
137 call check_ppO2_bail ; Yes, display ppO2 (If required)
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
138
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 bra diveloop_loop1x ; Common Tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
141 ; Common Tasks for all modes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
142 diveloop_loop1x:
617
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
143 ; call customview_second ; Do every-second tasks for the custom view area
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
144 ;
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
145 ; GETCUSTOM8 d'38' ; Show seconds (=1?)
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
146 ; movwf lo
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
147 ; movlw d'1'
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
148 ; cpfseq lo ; =1?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
149 ; bra diveloop_loop1y ; No, minutes only
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
150 ; bsf update_divetime ; Set Update flag
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
151 ;diveloop_loop1y:
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
152 ; btfss update_divetime ; display new divetime?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
153 ; bra diveloop_loop1z ; No
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
154 ; btfsc premenu ; Is the divemode menu active?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
155 ; bra diveloop_loop1z ; Yes
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
156 ; call DISP_divemins ; Display (new) divetime!
617
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
157 ;
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
158 ;diveloop_loop1z:
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
159 ; bcf update_divetime ; clear flag
263
27c9bb14b008 making the seconds display in divemode smoother...
heinrichsweikamp
parents: 257
diff changeset
160
617
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
161 btfsc ppO2_show_value ; show ppO2?
8d1ff6fc54f5 update divetime at begin of new second
heinrichsweikamp
parents: 615
diff changeset
162 call check_ppO2 ; check ppO2 and displays warning if required
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
163 call timeout_divemode ; dive finished? This routine sets the required flags
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
164 btfsc low_battery_state ; If battery is low, then...
141
622da16b768f LowBatt! Warning in divemode
heinrichsweikamp
parents: 131
diff changeset
165 call update_batt_voltage_divemode ; Display Battery Warning Text
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
166 btfsc premenu ; is Menu? displayed?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
167 call timeout_premenu_divemode ; No, so check for timeout premenu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
168 btfsc menubit ; is the Dive mode menu displayed?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
169 call timeout_divemenu ; Yes, so check for timeout divemenu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
170 call set_leds_divemode ; Sets warnings, if required. Also Sets buzzer
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
171 btfsc enter_error_sleep ; Enter Fatal Error Routine?
813
c87b9f2fb2f6 wakeup from deep sleep mode automatically upon USB connect
heinrichsweikamp
parents: 807
diff changeset
172 goto fatal_error_sleep ; Yes (In Sleepmode.asm!)
492
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
173
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
174 diveloop_loop3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
175 btfss menubit ; Divemode menu active?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
176 call test_switches_divemode ; No, Check switches normal
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
177
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
178 btfsc menubit ; Divemode menu active?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
179 call test_switches_divemode_menu ; Yes, check switches divemode menu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
180
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
181 btfss divemode ; Dive finished?
498
4c7f7807b250 minor fixes in german layout
heinrichsweikamp
parents: 494
diff changeset
182 goto end_dive ; Dive finished!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
183
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
184 btfsc pressure_refresh ; new pressure available?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
185 call update_divemode1 ; Yes, display new depth
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
186 bcf pressure_refresh ; until new pressure is available
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
187
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
188 btfsc oneminupdate ; one minute tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
189 call update_divemode60 ; Update clock, etc.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
190
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
191 btfsc store_sample ; store new sample?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
192 call store_dive_data ; Store profile data
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
193
98
6f8e3a08011e 1.73beta rc1 (Added new customview for divemode)
heinrichsweikamp
parents: 83
diff changeset
194 btfsc toggle_customview ; Next view?
6f8e3a08011e 1.73beta rc1 (Added new customview for divemode)
heinrichsweikamp
parents: 83
diff changeset
195 call customview_toggle ; Yes, show next customview (and delete this flag)
6f8e3a08011e 1.73beta rc1 (Added new customview for divemode)
heinrichsweikamp
parents: 83
diff changeset
196
335
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
197 btfsc simulatormode_active ; Is Simualtor mode active ?
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
198 bra diveloop_loop4 ; YES: don't sleep
2
d11ef8dc4b2c Bugfix: PC simulator
heinrichsweikamp
parents: 0
diff changeset
199
335
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
200 btfsc menubit ; Sleep only with inactive menu...
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
201 bra diveloop_loop5
2
d11ef8dc4b2c Bugfix: PC simulator
heinrichsweikamp
parents: 0
diff changeset
202
722
c6d57bed1ba0 button behaviour during dive mode
heinrichsweikamp
parents: 720
diff changeset
203 bcf T0CON,TMR0ON ; Stop Timer0 before sleep
c6d57bed1ba0 button behaviour during dive mode
heinrichsweikamp
parents: 720
diff changeset
204 nop
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
205 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
206 nop
335
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
207 bra diveloop_loop ; Loop the divemode
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
208
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
209 diveloop_loop4: ; And test screen dumps too!
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
210 btfsc uart_dump_screen ; Asked to dump screen contains ?
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
211 call dump_screen ; Yes!
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
212
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 323
diff changeset
213 diveloop_loop5:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
214 bra diveloop_loop ; Loop the divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
215
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
216 timeout_premenu_divemode:
128
4c588c3d1f12 Saturation graphs in customview divemode
JeanDo
parents: 124
diff changeset
217 incf timeout_counter3,F ; Yes...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
218
128
4c588c3d1f12 Saturation graphs in customview divemode
JeanDo
parents: 124
diff changeset
219 GETCUSTOM8 d'4' ; loads premenu_timeout into WREG
4c588c3d1f12 Saturation graphs in customview divemode
JeanDo
parents: 124
diff changeset
220 cpfsgt timeout_counter3 ; ... longer then premenu_timeout
4c588c3d1f12 Saturation graphs in customview divemode
JeanDo
parents: 124
diff changeset
221 return ; No!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
222
128
4c588c3d1f12 Saturation graphs in customview divemode
JeanDo
parents: 124
diff changeset
223 bcf premenu ; Yes, so clear "Menu?" and clear pre_menu bit
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
224 call DISP_menu_clear ; Remove "Menu?"
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
225 call DISP_divemode_mask ; And redraw mask (Redraw missing "T" from "Tauchzeit" in german text version)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
226 call DISP_divemins ; Redraw divetime
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
227 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
228
128
4c588c3d1f12 Saturation graphs in customview divemode
JeanDo
parents: 124
diff changeset
229 divemode_apnoe_tasks: ; 1 sec. Apnoe tasks
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
230 call DISP_divemins ; display (new) divetime!
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
231 call DISP_display_apnoe_descent ; Show descent timer
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
233 btfsc divemode2 ; Time running?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
234 bra divemode_apnoe_tasks2 ; New descent, reset data if flag is set
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
235
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
236 call DISP_display_apnoe_surface
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
237 incf apnoe_surface_secs,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
238 movlw d'60'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
239 cpfseq apnoe_surface_secs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
240 bra divemode_apnoe_tasks1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
241 clrf apnoe_surface_secs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
242 incf apnoe_surface_mins,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
243
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
244 divemode_apnoe_tasks1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
245 bcf FLAG_active_descent ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
246 btfsc divemode2 ; Time running?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
247 return ; Yes, return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
248
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
249 bsf FLAG_active_descent ; Set Flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
250 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
251
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
252 divemode_apnoe_tasks2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
253 btfss FLAG_active_descent ; Are descending?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
254 return ; No, We are at the surface
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
255 call apnoe_calc_maxdepth ; Yes!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
256
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
257 divemode_apnoe_tasks3:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
258 call DISP_apnoe_clear_surface ; Clear Surface timer
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
259
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
260 clrf apnoe_timeout_counter ; Delete timeout
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
261 clrf apnoe_surface_secs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
262 clrf apnoe_surface_mins
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
263 clrf apnoe_secs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
264 clrf apnoe_mins ; Reset Descent time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
265 clrf max_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
266 clrf max_pressure+1 ; Reset Max. Depth
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
267 bcf FLAG_active_descent ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
268 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
269
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
270 apnoe_calc_maxdepth:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
271 movff apnoe_max_pressure+0,sub_a+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
272 movff apnoe_max_pressure+1,sub_a+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
273 movff max_pressure+0,sub_b+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
274 movff max_pressure+1,sub_b+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
275 call sub16 ; sub_c = sub_a - sub_b
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
276 ; apnoe_max_pressure<max_pressure -> neg_flag=1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
277 ; max_pressure<=apnoe_max_pressure -> neg_flag=0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
278 btfss neg_flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
279 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
280 ;apnoe_max_pressure<max_pressure
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
281 movff max_pressure+0,apnoe_max_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
282 movff max_pressure+1,apnoe_max_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
283 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
284
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
285 set_leds_divemode:
550
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
286 movff char_O_gradient_factor,lo ; gradient factor absolute (Non-GF model)
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
287 movff char_I_deco_model,hi
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
288 decfsz hi,F ; jump over next line if char_I_deco_model == 1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
289 movff char_O_relative_gradient_GF,lo ; gradient factor relative (GF model)
550
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
290
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
291 GETCUSTOM8 d'14' ; threshold for LED warning into WREG
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
292 cpfslt lo ; Lower then actual warning?
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
293 rcall warn_gf1 ; No, show warning and set flags
9e20de11fb78 GF warning in logbook memory
heinrichsweikamp
parents: 537
diff changeset
294 return ; Yes, return
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
295
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
296 warn_gf1:
659
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
297 movlw d'2' ; Type of alarm (Deco Stop missed/GF violated)
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
298 movwf AlarmType ; Copy to alarm Register
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
299 bsf event_occured ; Set Event Flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
300 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
301
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
302 calc_deko_divemode:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
303 btfsc twosecupdate ; two seconds after the last call
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
304 bra calc_deko_divemode2 ; Yes, calculate and display deco data ("first second")
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
305
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
306 bsf twosecupdate ; No, but next second!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
307 ; Routines used in the "other second"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
308 call calc_average_depth ; calculate average depth
494
e9b1f162799d testing graphical velocity
heinrichsweikamp
parents: 492
diff changeset
309 call calc_velocity ; calculate vertical velocity and display if > threshold (every two seconds)
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
310 call set_reset_safety_stop ; Set flags for safety stop and/or reset safety stop
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
311
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
312 ; Calculate CNS
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
313 clrf WREG
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
314 movff WREG,char_I_step_is_1min ; Make sure to be in 2sec mode.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
315
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
316 read_int_eeprom d'34' ; Read deco data
595
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
317 movlw .6
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
318 cpfseq EEDATA ; in pscr-mode?
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
319 rcall set_actual_ppo2 ; No, set char_I_actual_ppO2
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
320
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
321 calc_deko_divemode1a:
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 115
diff changeset
322 call deco_calc_CNS_fraction ; calculate CNS
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
323 movlb b'00000001' ; rambank 1 selected
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
324
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
325 ; Check if CNS should be displayed
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
326 movff char_O_CNS_fraction,lo ; copy into bank1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
327 GETCUSTOM8 d'27' ; cns_display_high
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
328 subwf lo,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
329 btfsc STATUS,C
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
330 call DISP_display_cns ; Show CNS
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
331 call check_gas_change ; Checks if a better gas should be selected (by user)
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
332
513
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
333 ;NOTE: always set full gas list, because the user can switch gas,
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
334 ; even in NDL mode...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
335
286
5351d47ee28a Active gas flags simplified
heinrichsweikamp
parents: 281
diff changeset
336 ; Copy all gases to char_I_deco_N2_ratio and char_I_deco_He_ratio
507
ed51a7a89d9a minor cleanups for TESTING mode
JeanDo
parents: 505
diff changeset
337 divemode_check_decogases: ; CALLed from Simulator, too
522
e33a8ac4b660 New ASSERT_BANK1 macro for software proofing.
JeanDo
parents: 517
diff changeset
338 ASSERT_BANK1 .10001 ; Just make sure everything is correct.
e33a8ac4b660 New ASSERT_BANK1 macro for software proofing.
JeanDo
parents: 517
diff changeset
339
e33a8ac4b660 New ASSERT_BANK1 macro for software proofing.
JeanDo
parents: 517
diff changeset
340 clrf EEADRH ; Make sure to select eeprom bank 0
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
341
513
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
342 read_int_eeprom d'7' ; Read He ratio
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
343 movff EEDATA,char_I_deco_He_ratio+0 ; And copy into hold register
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
344 read_int_eeprom d'6' ; Read O2 ratio
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
345 movff char_I_deco_He_ratio+0,WREG ; Get back He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
346 addwf EEDATA,W ; O2 + He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
347 sublw d'100' ; 100 - (O2 + He) -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
348 movff WREG, char_I_deco_N2_ratio+0; Push N2 to C code;
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
349
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
350 read_int_eeprom d'11' ; Read He ratio
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
351 movff EEDATA,char_I_deco_He_ratio+1 ; And copy into hold register
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
352 read_int_eeprom d'10' ; Read O2 ratio
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
353 movff char_I_deco_He_ratio+1,WREG ; Get back He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
354 addwf EEDATA,W ; O2 + He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
355 sublw d'100' ; 100 - (O2 + He) -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
356 movff WREG, char_I_deco_N2_ratio+1; Push N2 to C code;
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
357
291
916df3161d52 Fix gaslist: use current value instead of default.
JeanDo
parents: 290
diff changeset
358 read_int_eeprom d'15' ; Read He ratio
224
49c90c5d9603 Gas usage
JeanDo
parents: 222
diff changeset
359 movff EEDATA,char_I_deco_He_ratio+2 ; And copy into hold register
291
916df3161d52 Fix gaslist: use current value instead of default.
JeanDo
parents: 290
diff changeset
360 read_int_eeprom d'14' ; Read O2 ratio
513
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
361 movff char_I_deco_He_ratio+2,WREG ; Get back He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
362 addwf EEDATA,W ; O2 + He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
363 sublw d'100' ; 100 - (O2 + He) -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
364 movff WREG, char_I_deco_N2_ratio+2; Push N2 to C code;
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
365
291
916df3161d52 Fix gaslist: use current value instead of default.
JeanDo
parents: 290
diff changeset
366 read_int_eeprom d'19' ; Read He ratio
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
367 movff EEDATA,char_I_deco_He_ratio+3 ; And copy into hold register
311
91371c7553f5 BUGFIX typo when passing Gas#4 to deko model (bug#43)
JeanDo
parents: 301
diff changeset
368 read_int_eeprom d'18' ; Read O2 ratio
513
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
369 movff char_I_deco_He_ratio+3,WREG ; Get back He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
370 addwf EEDATA,W ; O2 + He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
371 sublw d'100' ; 100 - (O2 + He) -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
372 movff WREG, char_I_deco_N2_ratio+3; Push N2 to C code;
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
373
291
916df3161d52 Fix gaslist: use current value instead of default.
JeanDo
parents: 290
diff changeset
374 read_int_eeprom d'23' ; Read He ratio
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
375 movff EEDATA,char_I_deco_He_ratio+4; And copy into hold register
291
916df3161d52 Fix gaslist: use current value instead of default.
JeanDo
parents: 290
diff changeset
376 read_int_eeprom d'22' ; Read O2 ratio
513
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
377 movff char_I_deco_He_ratio+4,WREG ; Get back He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
378 addwf EEDATA,W ; O2 + He -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
379 sublw d'100' ; 100 - (O2 + He) -> WREG
c9f19a546e64 BUGFIX MISSING movlb for gaslist (simulator).
JeanDo
parents: 507
diff changeset
380 movff WREG, char_I_deco_N2_ratio+4; Push N2 to C code;
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
381
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
382 ; Copy depth of enabled gas into char_I_deco_gas_change
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
383 ; Note gaslist_active is inited in diveloop_boot, and edited by
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
384 ; the de-activation menu. So don't reread it from eeprom here.
39
1705b3f7e5b3 1.62 beta rc2
heinrichsweikamp
parents: 38
diff changeset
385
281
f8f865c70a0d no more sorted gaslist...
heinrichsweikamp
parents: 274
diff changeset
386 read_int_eeprom d'28' ; read gas_change_depth Gas1
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
387 btfss gaslist_active,0 ; Apply depth?
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
388 clrf EEDATA ; No, clear!
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
389 movff EEDATA,char_I_deco_gas_change+0 ; Yes!
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
390
281
f8f865c70a0d no more sorted gaslist...
heinrichsweikamp
parents: 274
diff changeset
391 read_int_eeprom d'29' ; read gas_change_depth Gas2
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
392 btfss gaslist_active,1 ; Apply depth?
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
393 clrf EEDATA ; No, clear!
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
394 movff EEDATA,char_I_deco_gas_change+1 ; Yes!
45
985607cfb813 1.65beta
heinrichsweikamp
parents: 44
diff changeset
395
281
f8f865c70a0d no more sorted gaslist...
heinrichsweikamp
parents: 274
diff changeset
396 read_int_eeprom d'30' ; read gas_change_depth Gas3
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
397 btfss gaslist_active,2 ; Apply depth?
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
398 clrf EEDATA ; No, clear!
222
638f8e17bd51 Prototyping deco_gas_volumes() to compute gas consumption per tank with decoplanning.
JeanDo
parents: 221
diff changeset
399 movff EEDATA,char_I_deco_gas_change+2 ; Yes!
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
400
281
f8f865c70a0d no more sorted gaslist...
heinrichsweikamp
parents: 274
diff changeset
401 read_int_eeprom d'31' ; read gas_change_depth Gas4
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
402 btfss gaslist_active,3 ; Apply depth?
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
403 clrf EEDATA ; No, clear!
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
404 movff EEDATA,char_I_deco_gas_change+3 ; Yes!
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
405
281
f8f865c70a0d no more sorted gaslist...
heinrichsweikamp
parents: 274
diff changeset
406 read_int_eeprom d'32' ; read gas_change_depth Gas5
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
407 btfss gaslist_active,4 ; Apply depth?
221
448478ceccea new sorted_gaslist_active flag register
heinrichsweikamp
parents: 220
diff changeset
408 clrf EEDATA ; No, clear!
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
409 movff EEDATA,char_I_deco_gas_change+4 ; Yes!
33
6e5db85382a2 Speedy simulator! New Deco code test 1
heinrichsweikamp
parents: 25
diff changeset
410 return
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
411
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
412 set_reset_safety_stop: ; Set flags for safety stop and/or reset safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
413 GETCUSTOM8 d'65' ; Use safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
414 decfsz WREG,F ; WREG=1?
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
415 bra delete_safety_stop ; No, don't show safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
416
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
417 btfsc dekostop_active ; Is a deco stop displayed?
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
418 bra delete_safety_stop ; Yes, don't show safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
419 ; Below "safety_stop_reset"? Set flag and reset count-down timer
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
420 SAFE_2BYTE_COPY rel_pressure, lo
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
421 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar]
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
422 movff lo,sub_a+0
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
423 movff hi,sub_a+1
675
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
424 GETCUSTOM8 .73 ; Safety Stop Reset Depth [dm]
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
425 mullw .10
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
426 movff PRODL,sub_b+0
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
427 movff PRODH,sub_b+1
603
530a5c994ca2 remove safety stop when <3m
heinrichsweikamp
parents: 599
diff changeset
428 call subU16 ; sub_c = sub_a - sub_b
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
429 btfss neg_flag
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
430 bra reset_safety_stop ; Below 10m, reset safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
431
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
432 ; Above "safety_stop_end"? Clear flag.
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
433 SAFE_2BYTE_COPY rel_pressure, lo
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
434 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar]
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
435 movff lo,sub_a+0
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
436 movff hi,sub_a+1
675
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
437 GETCUSTOM8 .72 ; Safety Stop End Depth [dm]
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
438 mullw .10
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
439 movff PRODL,sub_b+0
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
440 movff PRODH,sub_b+1
603
530a5c994ca2 remove safety stop when <3m
heinrichsweikamp
parents: 599
diff changeset
441 call subU16 ; sub_c = sub_a - sub_b
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
442 btfsc neg_flag
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
443 bra delete_safety_stop ; Above 3m, remove safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
444
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
445 ; Above "safety_stop_start"? Activate safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
446 SAFE_2BYTE_COPY rel_pressure, lo
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
447 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar]
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
448 movff lo,sub_a+0
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
449 movff hi,sub_a+1
675
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
450 GETCUSTOM8 .71 ; Safety Stop Start Depth [dm]
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
451 mullw .10
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
452 movff PRODL,sub_b+0
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
453 movff PRODH,sub_b+1
603
530a5c994ca2 remove safety stop when <3m
heinrichsweikamp
parents: 599
diff changeset
454 call subU16 ; sub_c = sub_a - sub_b
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
455 btfsc neg_flag
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
456 bra acivate_safety_stop ; Above 5m, activate safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
457
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
458 bra reset_safety_stop2 ; Pause safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
459
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
460 acivate_safety_stop:
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
461 tstfsz safety_stop_countdown ; Countdown at zero?
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
462 bsf show_safety_stop ; No, Set flag!
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
463 return
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
464
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
465 delete_safety_stop:
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
466 clrf safety_stop_countdown ; reset timer
603
530a5c994ca2 remove safety stop when <3m
heinrichsweikamp
parents: 599
diff changeset
467 bra reset_safety_stop2 ; Remove saftestop from display
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
468
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
469 reset_safety_stop:
675
0211d9b9f0ca NEW: CF70: Safety Stop Duration [s]
heinrichsweikamp
parents: 672
diff changeset
470 GETCUSTOM8 .70 ; Safety Stop Duration [s]
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
471 movwf safety_stop_countdown ; reset timer
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
472 reset_safety_stop2:
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
473 btfss safety_stop_active ; Safety stop shown
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
474 return ; No, don't delete it
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
475 bcf show_safety_stop ; Clear flag
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
476 bcf safety_stop_active ; Clear flag
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
477 call DISP_clear_decoarea ; Yes, Clear stop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
478 goto DISP_display_ndl_mask ; Show NDL again (And return)
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
479
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
480 ;-----------------------------------------------------------------------------
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
481 ; calculate ppO2 in 0.01bar (e.g. 150 = 1.50 bar ppO2)
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
482 set_actual_ppo2:
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
483 SAFE_2BYTE_COPY amb_pressure, xA ; P_amb in millibar (1000 = 1.00 bar).
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
484 movlw d'10'
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
485 movwf xB+0
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
486 clrf xB+1
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
487 call div16x16 ; xC=p_amb/10 (100 = 1.00 bar).
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
488 movff xC+0,xA+0
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
489 movff xC+1,xA+1
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
490 movff char_I_O2_ratio,xB+0
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
491 clrf xB+1
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
492 call mult16x16 ; char_I_O2_ratio * (p_amb/10)
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
493 movff xC+0,xA+0
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
494 movff xC+1,xA+1
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
495 movlw d'100'
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
496 movwf xB+0
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
497 clrf xB+1
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
498 call div16x16 ; xC=(char_I_O2_ratio * p_amb/10)/100
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
499
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
500 ; Copy ppO2 for CNS calculation
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
501 tstfsz xC+1 ; Is ppO2 > 2.55bar ?
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
502 setf xC+0 ; yes: bound to 2.55... better than wrap around.
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
503
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
504 movff xC+0, char_I_actual_ppO2 ; copy last ppO2 to buffer register
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
505 btfsc FLAG_const_ppO2_mode ; do in const_ppO2_mode
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
506 movff char_I_const_ppO2, char_I_actual_ppO2 ; copy last ppO2 to buffer register
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
507 return
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
508
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
509 reset_decompression_gases: ; reset the deco gas while in NDL
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
510 ostc_debug 'F' ; Sends debug-information to screen if debugmode active
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
511 lfsr FSR2,char_I_deco_gas_change
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
512 clrf POSTINC2 ; Clear Gas1
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
513 clrf POSTINC2
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
514 clrf POSTINC2
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
515 clrf POSTINC2
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
516 clrf POSTINC2 ; Clear Gas5
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
517 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
518
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
519 calc_deko_divemode2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
520 bcf twosecupdate
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
521
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
522 btfsc gauge_mode ; ignore decompression calculation in gauge mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
523 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
524 btfsc FLAG_apnoe_mode ; ignore decompression calculation in apnoe mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
525 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
526
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
527 ostc_debug 'B' ; Sends debug-information to screen if debugmode active
313
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
528 ; Send nes state to screen, if debugmode active
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
529 movff char_O_deco_status,WREG ; Status before call
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
530 addlw '0' ; Convert to ascii char
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
531 call ostc_debug1 ; and send.
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
532
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
533 call divemode_prepare_flags_for_deco
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
534 clrf WREG
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
535 movff WREG,char_I_step_is_1min ; Force 2 second deco mode
40
92001c045088 1.62 beta release
heinrichsweikamp
parents: 39
diff changeset
536
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
537 movff char_I_O2_ratio,lo_temp ; Backup original value for everything
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
538 movff char_I_N2_ratio,hi_temp ; Backup original value for everything
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
539
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
540 read_int_eeprom d'34' ; Read deco data
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
541 movlw .6
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
542 cpfseq EEDATA
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
543 bra calc_deko_divemode2a
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
544 ; in PSCR mode, compute fO2 into char_I_O2_ratio
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
545 call compute_pscr_ppo2 ; pSCR ppO2 into sub_c:2
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
546 movff sub_c+0,xA+0
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
547 movff sub_c+1,xA+1
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
548 movlw LOW .10
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
549 movwf xB+0
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
550 movlw HIGH .10
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
551 movwf xB+1
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
552 call mult16x16 ;xA*xB=xC -> xC:4 = ppO2*10
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
553 SAFE_2BYTE_COPY amb_pressure, xB
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
554 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
555 ; xC+0 has O2 in percent
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
556 movff xC+0,char_I_O2_ratio
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
557
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
558 movff char_I_He_ratio, wait_temp ; copy into bank1 register
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
559 bsf STATUS,C ; Borrow bit
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
560 movlw d'100' ; 100%
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
561 subfwb wait_temp,W ; minus He
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
562 bsf STATUS,C ; Borrow bit
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
563 subfwb xC+0,W ; minus O2
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
564 movff WREG, char_I_N2_ratio ; = N2!
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
565
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
566 calc_deko_divemode2a:
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
567
256
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
568 clrf TMR3L
537
3091628b2742 BUGFIX: Spurious logbook read issue
heinrichsweikamp
parents: 532
diff changeset
569 nop ; See errata DS80284E-page 2
256
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
570 clrf TMR3H ; Reset Timer3
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
571
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 115
diff changeset
572 call deco_calc_hauptroutine ; calc_tissue
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
573 movlb b'00000001' ; rambank 1 selected
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
574 ostc_debug 'C' ; Sends debug-information to screen if debugmode active
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
575
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
576 movff lo_temp,char_I_O2_ratio ; Restore original value for everything
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
577 movff hi_temp,char_I_N2_ratio ; Restore original value for everything
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
578
256
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
579 btfss debug_mode ; Are we in debugmode?
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
580 bra calc_deko_divemode4 ; No...
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
581
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
582 ; Show timer3 reading converted into ms (Error: +2,3%) in custom area
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
583 movff TMR3L,lo
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
584 movff TMR3H,hi
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
585 bcf STATUS,C
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
586 rrcf hi
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
587 rrcf lo ;/2
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
588 bcf STATUS,C
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
589 rrcf hi
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
590 rrcf lo ;/4
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
591 bcf STATUS,C
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
592 rrcf hi
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
593 rrcf lo ;/8
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
594 bcf STATUS,C
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
595 rrcf hi
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
596 rrcf lo ;/16
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
597 bcf STATUS,C
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
598 rrcf hi
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
599 rrcf lo ;/32
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
600
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
601 WIN_TOP .216
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
602 WIN_LEFT .100
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
603 WIN_FONT FT_SMALL
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
604 STRCPY "ms:"
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
605 output_16
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
606 call word_processor
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
607
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
608 calc_deko_divemode4:
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
609 movff char_O_deco_status,WREG ; Is a compute cycle finished ?
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
610 iorwf WREG,F
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
611 btfss STATUS,Z
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
612 return ; Return is status <> 0
256
d8dfbc7041b0 added CPU time debugger
heinrichsweikamp
parents: 254
diff changeset
613
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
614 ; Check if deco stops are necessary ?
665
259e4c1bf3c2 grey-out TTS and ceiling after gas change (until new plan is ready)
heinrichsweikamp
parents: 659
diff changeset
615 bcf decoplan_invalid ; The decoplan is valid
169
e26f49674956 Merge decoplan display for both GF and Buhlmann models.
JeanDo
parents: 167
diff changeset
616 movff char_O_first_deco_depth,wait_temp ; copy ceiling to temp register
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
617 tstfsz wait_temp ; Ceiling<0m?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
618 bra calc_deko_divemode3 ; Yes!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
619
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
620 btfsc dekostop_active ; Already in nodeco mode ?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
621 call DISP_display_ndl_mask ; Clear deco data, display nostop time
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
622 bcf dekostop_active ; clear flag
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
623
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
624 clrf decodata+0 ; for profile memory
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
625 movff char_O_nullzeit,decodata+1 ; nostop time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
626
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
627 call DISP_display_ndl ; display no deco limit
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
628
323
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
629 calc_deko_divemode5:
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
630 ; Check if extra cycles are needed to compute @5 variant:
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
631 btfss tts_extra_time ; Is @5 displayed ?
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
632 return ; No: don't compute it.
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
633
313
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
634 decfsz apnoe_mins ; Reached count-down ?
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
635 return ; No: don't compute yet.
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
636
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
637 movlw .6
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
638 movff WREG,char_O_deco_status ; Stole next cycles for @5 variant.
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
639
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
640 movlw .2 ; Restart countdown.
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
641 movwf apnoe_mins
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
642 return
323
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
643
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
644 calc_deko_divemode3:
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
645 btfss dekostop_active ; Already in deco mode ?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
646 call DISP_display_deko_mask ; clear nostop time, display decodata
323
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
647 bsf dekostop_active ; Set flag
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
648
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
649 movff char_O_first_deco_depth,decodata+0 ; ceiling
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
650 movff char_O_first_deco_time,decodata+1 ; length of first stop in minues
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
651
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
652 call DISP_display_deko ; display decodata
323
b7940978edc9 Fix "Future TTS" display customview.
JeanDo
parents: 319
diff changeset
653 bra calc_deko_divemode5
313
11be2470b9eb Fix @5 preventing main computation
JeanDo
parents: 312
diff changeset
654
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 116
diff changeset
655 ;-----------------------------------------------------------------------------
69
df2d3b28947f 1.71beta for Mk.2
heinrichsweikamp
parents: 68
diff changeset
656
237
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
657 divemode_prepare_flags_for_deco:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
658 SAFE_2BYTE_COPY amb_pressure,int_I_pres_respiration ; copy result to deco routine
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
659
197
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
660 GETCUSTOM8 d'11' ; Saturation multiplier %
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
661 movff WREG,char_I_saturation_multiplier
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
662 GETCUSTOM8 d'12' ; Desaturation multiplier %
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
663 movff WREG,char_I_desaturation_multiplier
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
664 GETCUSTOM8 d'16' ; Deco distance to decostop in 1/10 meter for simulation
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
665 movff WREG,char_I_deco_distance
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
666 GETCUSTOM8 d'29' ; Depth Last Deco in meter for simulation
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
667 movff WREG,char_I_depth_last_deco
203
2d9af08ed0ac BUGFIX Gas switch
JeanDo
parents: 197
diff changeset
668 movff divemins+0,int_I_divemins+0 ; Current dive time.
2d9af08ed0ac BUGFIX Gas switch
JeanDo
parents: 197
diff changeset
669 movff divemins+1,int_I_divemins+1
197
f15e804ff67f Gas switch delay
JeanDo
parents: 180
diff changeset
670 goto restart_set_modes_and_flags ; Sets decomode (char_I_deco_model) and flags (again)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
671
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
672 ;-----------------------------------------------------------------------------
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
673
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
674 store_dive_data: ; CF20 seconds gone
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
675 bcf store_sample ; update only any CF20 seconds
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
676 bsf update_divetime ; update divemins every CF20 seconds
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
677
233
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
678 ifndef __DEBUG
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
679 btfsc simulatormode_active ; Are we in simulator mode?
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
680 return ; Yes, discard everything
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
681 endif
33
6e5db85382a2 Speedy simulator! New Deco code test 1
heinrichsweikamp
parents: 25
diff changeset
682
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
683 btfsc header_stored ; Header already stored?
71
6beb680a6130 1.72beta - color-coded gaslist, small fix with stopwatch
heinrichsweikamp
parents: 69
diff changeset
684 bra store_dive_data2 ; Yes, store only profile data
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
685 bsf header_stored ; Store header
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
686
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
687 movff eeprom_address+0, eeprom_header_address+0 ; store startposition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
688 movff eeprom_address+1, eeprom_header_address+1 ; store startposition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
689
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
690 ; shift address for header
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
691 ; the header will be stored after the dive
457
993e681e89cf no decodata in logbook for apnea dives
heinrichsweikamp
parents: 453
diff changeset
692 incf_eeprom_address d'57' ; Macro, that adds 8Bit to eeprom_address:2
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
693
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
694 store_dive_data2:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
695 SAFE_2BYTE_COPY rel_pressure, lo
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
696 movf lo,W ; store depth with every sample
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
697 call write_external_eeprom
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
698 movf hi,W
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
699 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
700
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
701 ;First, find out how many bytes will append to this sample....
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
702 clrf ProfileFlagByte ; clear number of bytes to append
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
703
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
704 ; Check Extented informations
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
705 decfsz divisor_temperature,W ; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
706 bra check_extended1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
707 movlw d'2' ; Information length
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
708 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
709 check_extended1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
710 decfsz divisor_deco,W ; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
711 bra check_extended2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
712 movlw d'2' ; Information length
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
713 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
714 check_extended2:
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
715 decfsz divisor_gf,W ; Check divisor
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
716 bra check_extended3
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
717 movlw d'1' ; Information length
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
718 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
719 check_extended3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
720 decfsz divisor_ppo2,W ; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
721 bra check_extended4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
722 movlw d'3' ; Information length
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
723 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
724 check_extended4:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
725 decfsz divisor_deco_debug,W; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
726 bra check_extended5
630
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
727 movlw d'15' ; Information length
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
728 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
729 check_extended5:
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
730 decfsz divisor_cns,W ; Check divisor
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
731 bra check_extended6
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
732 movlw d'1' ; Information length
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
733 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
734 check_extended6:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
735
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
736 ; Second, check global event flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
737 btfss event_occured ; Check global event flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
738 bra store_dive_data3 ; No Event
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
739 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
740 addwf ProfileFlagByte,F ; add one byte (The EventByte)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
741
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
742 clrf EventByte ; reset EventByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
743
659
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
744 movf AlarmType,W ; Type of alarm Bit 0-3
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
745 addwf EventByte,F ; Copy to EventByte Bit 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
746 clrf AlarmType ; Reset AlarmType
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
747
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
748 ; Third, check events and add aditional bytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
749 btfss manual_gas_changed ; Check flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
750 bra check_event1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
751 movlw d'2' ; Information length
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
752 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
753 bsf EventByte,4 ; Also set Flag in EventByte!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
754 check_event1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
755 btfss stored_gas_changed ; Check flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
756 bra check_event2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
757 movlw d'1' ; Information length
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
758 addwf ProfileFlagByte,F ; add to ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
759 bsf EventByte,5 ; Also set Flag in EventByte!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
760 check_event2:
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
761 btfss setpoint_changed ; Check flag
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
762 bra check_event3
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
763 movlw d'1' ; Information length
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
764 addwf ProfileFlagByte,F ; add to ProfileFlagByte
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
765 bsf EventByte,6 ; Also set Flag in EventByte!
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
766 check_event3:
730
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
767 btfss store_bailout_event ; Check flag
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
768 bra check_event4
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
769 movlw d'2' ; Information length
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
770 addwf ProfileFlagByte,F ; add to ProfileFlagByte
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
771 bsf EventByte,7 ; Also set Flag in EventByte!
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
772 check_event4:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
773 bsf ProfileFlagByte,7 ; Set EventByte Flag in ProfileFlagByte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
774
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
775 store_dive_data3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
776 movf ProfileFlagByte,W ; finally, write ProfileFlagByte!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
777 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
778
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
779 btfss event_occured ; Check global event flag (again)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
780 bra store_dive_data4 ; No Event
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
781
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
782 ; Store the EventByte + additional bytes now
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
783 movf EventByte,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
784 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
785
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
786 btfss manual_gas_changed ; Check flag
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
787 bra store_dive_data3a
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
788 read_int_eeprom d'24' ; % O2 Gas6
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
789 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
790 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
791 read_int_eeprom d'25' ; % He Gas6
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
792 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
793 call write_external_eeprom
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
794 bcf manual_gas_changed ; Clear this event
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
795
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
796 store_dive_data3a:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
797 btfss stored_gas_changed ; Check flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
798 bra store_dive_data3b
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
799 movf active_gas,W ; Store active gas
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
800 call write_external_eeprom
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
801 bcf stored_gas_changed ; Clear this event
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
802 store_dive_data3b:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
803
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
804 store_dive_data4:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
805
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
806 ; Store extended informations
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
807 decfsz divisor_temperature,F ; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
808 bra store_extended1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
809 rcall store_dive_temperature
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
810 store_extended1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
811 decfsz divisor_deco,F ; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
812 bra store_extended2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
813 rcall store_dive_decodata
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
814 store_extended2:
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
815 decfsz divisor_gf,F ; Check divisor
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
816 bra store_extended3
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
817 rcall store_dive_gf
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
818 store_extended3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
819 decfsz divisor_ppo2,F ; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
820 bra store_extended4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
821 rcall store_dive_ppo2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
822 store_extended4:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
823 decfsz divisor_deco_debug,F; Check divisor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
824 bra store_extended5
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
825 rcall store_dive_decodebug
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
826 store_extended5:
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
827 decfsz divisor_cns,F ; Check divisor
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
828 bra store_extended6
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
829 rcall store_dive_cns
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
830 store_extended6:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
831
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
832 ; The next block is required to take care of "store never"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
833 btfsc divisor_temperature,7 ; Test highest Bit (Register must have been zero before the "decfsz" command!)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
834 clrf divisor_temperature ; And clear register again, so it will never reach zero...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
835 btfsc divisor_deco,7 ; Test highest Bit (Register must have been zero before the "decfsz" command!)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
836 clrf divisor_deco ; And clear register again, so it will never reach zero...
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
837 btfsc divisor_gf,7 ; Test highest Bit (Register must have been zero before the "decfsz" command!)
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
838 clrf divisor_gf ; And clear register again, so it will never reach zero...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
839 btfsc divisor_ppo2,7 ; Test highest Bit (Register must have been zero before the "decfsz" command!)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
840 clrf divisor_ppo2 ; And clear register again, so it will never reach zero...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
841 btfsc divisor_deco_debug,7 ; Test highest Bit (Register must have been zero before the "decfsz" command!)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
842 clrf divisor_deco_debug ; And clear register again, so it will never reach zero...
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
843 btfsc divisor_cns,7 ; Test highest Bit (Register must have been zero before the "decfsz" command!)
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
844 clrf divisor_cns ; And clear register again, so it will never reach zero...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
845
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
846 ostc_debug 'D' ; Sends debug-information to screen if debugmode active
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
847
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
848 ; SetPoint change appended to information due to compatibility reasons
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
849 btfss setpoint_changed ; Check flag
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
850 bra store_dive_data5
447
b63a90a87fe2 apply stored setpoint to log
heinrichsweikamp
parents: 416
diff changeset
851 movff ppO2_setpoint_store,WREG ; SetPoint in cbar
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
852 call write_external_eeprom
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
853 bcf setpoint_changed ; Clear this event
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
854
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
855 store_dive_data5:
730
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
856 btfss store_bailout_event ; Check flag
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
857 bra store_dive_data6
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
858 movff char_I_O2_ratio,WREG
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
859 call write_external_eeprom
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
860 movff char_I_He_ratio,WREG
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
861 call write_external_eeprom
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
862 bcf store_bailout_event ; Clear this event
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
863 store_dive_data6:
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
864 bcf event_occured ; Clear the global event flag
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
865 return ; Done. (Sample with all informations written to EEPROM)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
866
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
867 store_dive_cns:
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
868 movff char_O_CNS_fraction,WREG
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
869 call write_external_eeprom ; Store in EEPROM
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
870 GETCUSTOM8 d'26'
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
871 movwf divisor_cns ; Reload divisor from CF
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
872 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
873
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
874 store_dive_decodebug:
630
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
875 movff char_O_deco_time_for_log+.0,WREG ; 3m
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
876 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
877 movff char_O_deco_time_for_log+.1,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
878 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
879 movff char_O_deco_time_for_log+.2,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
880 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
881 movff char_O_deco_time_for_log+.3,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
882 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
883 movff char_O_deco_time_for_log+.4,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
884 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
885 movff char_O_deco_time_for_log+.5,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
886 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
887 movff char_O_deco_time_for_log+.6,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
888 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
889 movff char_O_deco_time_for_log+.7,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
890 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
891 movff char_O_deco_time_for_log+.8,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
892 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
893 movff char_O_deco_time_for_log+.9,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
894 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
895 movff char_O_deco_time_for_log+.10,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
896 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
897 movff char_O_deco_time_for_log+.11,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
898 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
899 movff char_O_deco_time_for_log+.12,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
900 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
901 movff char_O_deco_time_for_log+.13,WREG
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
902 call write_external_eeprom
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
903 movff char_O_deco_time_for_log+.14,WREG ; 45m
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
904 call write_external_eeprom
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
905 GETCUSTOM8 d'25'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
906 movwf divisor_deco_debug ; Reload divisor from CF
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
907 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
908
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
909 store_dive_ppo2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
910 movlw 0x00 ; Dummy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
911 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
912 movlw 0x00 ; Dummy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
913 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
914 movlw 0x00 ; Dummy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
915 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
916 GETCUSTOM8 d'24'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
917 movwf divisor_ppo2 ; Reload divisor from CF
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
918 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
919
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
920 store_dive_gf:
375
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
921 movff char_O_gradient_factor,WREG ; gradient factor absolute
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
922 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
923 GETCUSTOM8 d'23'
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
924 movwf divisor_gf ; Reload divisor from CF
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
925 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
926
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
927 store_dive_decodata:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
928 movf decodata+0,W ; =0:no stop dive, if in deco mode: ceiling in m
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
929 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
930 movf decodata+1,W ; no stop time of length of first stop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
931 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
932 GETCUSTOM8 d'22'
457
993e681e89cf no decodata in logbook for apnea dives
heinrichsweikamp
parents: 453
diff changeset
933
993e681e89cf no decodata in logbook for apnea dives
heinrichsweikamp
parents: 453
diff changeset
934 btfsc FLAG_apnoe_mode ; in Apnoe mode?
993e681e89cf no decodata in logbook for apnea dives
heinrichsweikamp
parents: 453
diff changeset
935 movlw d'0' ; Yes, set to zero
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
936 movwf divisor_deco ; Reload divisor from CF
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
937 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
938
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
939 store_dive_temperature:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
940 SAFE_2BYTE_COPY temperature,lo
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
941 movf lo,W ; append temperature to current sample!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
942 call write_external_eeprom
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
943 movf hi,W
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
944 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
945 GETCUSTOM8 d'21'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
946 movwf divisor_temperature ; Reload divisor from CF
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
947 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
948
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
949 calc_velocity: ; called every two seconds
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
950 btfss divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
951 bra do_not_display_velocity ; display velocity only in divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
952
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
953 calc_velocity2:
839
ab68f28514e0 undo faulty 6 seconds velocity from rev. 834
heinrichsweikamp
parents: 834
diff changeset
954 SAFE_2BYTE_COPY amb_pressure, sub_a
ab68f28514e0 undo faulty 6 seconds velocity from rev. 834
heinrichsweikamp
parents: 834
diff changeset
955 movff last_pressure+0,sub_b+0
ab68f28514e0 undo faulty 6 seconds velocity from rev. 834
heinrichsweikamp
parents: 834
diff changeset
956 movff last_pressure+1,sub_b+1
ab68f28514e0 undo faulty 6 seconds velocity from rev. 834
heinrichsweikamp
parents: 834
diff changeset
957 movff sub_a+0,last_pressure+0 ; store old value for velocity
ab68f28514e0 undo faulty 6 seconds velocity from rev. 834
heinrichsweikamp
parents: 834
diff changeset
958 movff sub_a+1,last_pressure+1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
959
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
960 call sub16 ; sub_c = amb_pressure - last_pressure
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
961
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
962 movff sub_c+0,xA+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
963 movff sub_c+1,xA+1
494
e9b1f162799d testing graphical velocity
heinrichsweikamp
parents: 492
diff changeset
964 movlw d'39' ;77 when called every second....
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
965 movwf xB+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
966 clrf xB+1
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
967 call mult16x16 ; differential pressure in mbar*77...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
968 movff xC+0,divA+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
969 movff xC+1,divA+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
970 movlw d'7'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
971 movwf divB
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
972 call div16 ; devided by 2^7 equals velocity in m/min
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
973
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
974 movlw d'99'
492
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
975 cpfsgt divA ; Limit to 99m/min max.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
976 bra calc_velocity3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
977 movwf divA ; divA=99
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
978
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
979 calc_velocity3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
980 GETCUSTOM8 d'5' ; threshold for display vertical velocity
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
981 subwf divA+0,W ;
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
982
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
983 btfss STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
984 bra do_not_display_velocity
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
985
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
986 update_velocity:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
987 bsf display_velocity
492
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
988
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
989 GETCUSTOM8 d'60' ; use graphic velocity (=1)?
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
990 movwf lo
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
991 movlw d'1'
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
992 cpfseq lo ; =1?
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
993 bra update_velocity1 ; No
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
994
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
995 call DISP_display_velocity_graphical
492
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
996 return
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
997
19b9e19ea4da +CHANGE: Velocity display updated every second
heinrichsweikamp
parents: 486
diff changeset
998 update_velocity1:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
999 call DISP_display_velocity
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1000 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1001
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1002 do_not_display_velocity:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1003 btfss display_velocity ; Velocity was not displayed, do not delete
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1004 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1005
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1006 bcf display_velocity ; Velocity was displayed, delete velocity now
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1007 call DISP_display_velocity_clear
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1008 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1009
237
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
1010 check_ppO2: ; check current ppO2 and display warning if required
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
1011 btfsc FLAG_const_ppO2_mode ; ignore in ppO2 mode....
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1012 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1013
3
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
1014 check_ppO2_bail: ; In CC mode but bailout active!
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1015 read_int_eeprom d'34' ; Read deco data
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1016 movlw .6
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1017 cpfseq EEDATA
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1018 bra check_ppO2_non_pscr
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1019 ; in PSCR mode
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1020 call compute_pscr_ppo2 ; pSCR ppO2 into sub_c:2
595
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1021 movff sub_c+0,xA+0
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1022 movff sub_c+1,xA+1
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1023 movlw d'100'
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1024 movwf xB+0
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1025 clrf xB+1
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1026 call div16x16 ; /100
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1027 tstfsz xC+1 ; Is ppO2 > 2.55bar ?
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1028 setf xC+0 ; yes: bound to 2.55... better than wrap around.
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1029 movff xC+0,char_I_actual_ppO2 ; copy last ppO2 to buffer register (for pSCR CNS)
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1030 clrf xC+2
16f4eafc197e CNS for pSCR-GF fixed.
heinrichsweikamp
parents: 593
diff changeset
1031 clrf xC+3
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1032 movff sub_c+0,xC+0
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1033 movff sub_c+1,xC+1 ; copy for comptibility
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1034 bra check_ppO2_check
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1035
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1036 check_ppO2_non_pscr:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1037 SAFE_2BYTE_COPY amb_pressure, xA
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1038 movlw d'10'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1039 movwf xB+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1040 clrf xB+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1041 call div16x16 ; xC=p_amb/10
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1042 movff xC+0,xA+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1043 movff xC+1,xA+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1044 movff char_I_O2_ratio,xB+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1045 clrf xB+1
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1046 call mult16x16 ; char_I_O2_ratio * p_amb/10 -> xC:4
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1047 ; bra check_ppO2_check
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 577
diff changeset
1048 check_ppO2_check:
74
a1ccb92b59cd 1.72beta release
heinrichsweikamp
parents: 71
diff changeset
1049 ; Check very high ppO2 manually
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1050 tstfsz xC+2 ; char_I_O2_ratio * p_amb/10 > 65536, ppO2>6,55bar?
74
a1ccb92b59cd 1.72beta release
heinrichsweikamp
parents: 71
diff changeset
1051 bra check_ppO2_bail2 ; Yes, display Value!
a1ccb92b59cd 1.72beta release
heinrichsweikamp
parents: 71
diff changeset
1052
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1053 ; Check if ppO2 should be displayed
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1054 movff xC+0,sub_b+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1055 movff xC+1,sub_b+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1056 GETCUSTOM8 d'19' ; ppo2_display_high
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1057 mullw d'100' ; ppo2_display_high*100
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1058 movff PRODL,sub_a+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1059 movff PRODH,sub_a+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1060 call sub16
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1061 bcf ppO2_show_value ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1062 btfsc neg_flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1063 bsf ppO2_show_value ; set flag if required
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1064
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1065 ;check if we are within our warning thresholds!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1066 movff xC+0,sub_b+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1067 movff xC+1,sub_b+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1068 GETCUSTOM8 d'18' ; ppo2_warning_high
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1069 mullw d'100' ; ppo2_warning_high*100
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1070 movff PRODL,sub_a+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1071 movff PRODH,sub_a+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1072 call sub16
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1073 btfss neg_flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1074 bra check_ppO2_0 ; Not too high
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1075
74
a1ccb92b59cd 1.72beta release
heinrichsweikamp
parents: 71
diff changeset
1076 check_ppO2_bail2:
a1ccb92b59cd 1.72beta release
heinrichsweikamp
parents: 71
diff changeset
1077 bsf ppO2_show_value ; set flag if required
659
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
1078 movlw d'5' ; Type of alarm (ppO High Warning)
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
1079 movwf AlarmType ; Copy to alarm Register
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1080 bsf event_occured ; Set Event Flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1081
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1082 check_ppO2_0:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1083 movff xC+0,sub_b+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1084 movff xC+1,sub_b+1
210
f60acc323701 mini-cleanup
heinrichsweikamp
parents: 203
diff changeset
1085 GETCUSTOM8 d'17' ; ppo2_warning_low
f60acc323701 mini-cleanup
heinrichsweikamp
parents: 203
diff changeset
1086 mullw d'100' ; ppo2_warning_low*100
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1087 movff PRODL,sub_a+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1088 movff PRODH,sub_a+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1089 call sub16
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1090 btfsc neg_flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1091 bra check_ppO2_1 ; Not too low
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1092
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1093 bsf ppO2_show_value ; show ppO2 if below threshold!
659
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
1094 movlw d'4' ; Type of alarm (ppO Low Warning)
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
1095 movwf AlarmType ; Copy to alarm Register
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1096 bsf event_occured ; Set Event Flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1097
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1098 check_ppO2_1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1099 btfsc ppO2_show_value ; show value?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1100 bra check_ppO2_2 ; yes!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1101
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1102 btfss ppO2_display_active ; is the value displayed?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1103 bra check_ppO2_3 ; No, so clear not required
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1104
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1105 call DISP_show_ppO2_clear; Clear ppO2 value
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1106 bcf ppO2_display_active ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1107 bra check_ppO2_3 ; done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1108
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1109 check_ppO2_2:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1110 call DISP_show_ppO2 ; Display ppO2 (stored in xC)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1111 bsf ppO2_display_active ; Set flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1112
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1113 check_ppO2_3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1114 return ; done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1115
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1116 ;=============================================================================
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1117 ; Compare all enabled gas in list, to see if a better one is available.
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1118 ;
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1119 ; Output: better_gas_available, better_gas_number
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1120 ;
210
f60acc323701 mini-cleanup
heinrichsweikamp
parents: 203
diff changeset
1121 check_gas_change: ; Checks if a better gas should be selected (by user)
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1122 bcf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1123
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1124 SAFE_2BYTE_COPY rel_pressure,xA
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1125 movlw d'100'
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1126 movwf xB+0
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1127 clrf xB+1
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1128 call div16x16 ; compute depth in full m -> result in xC+0
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1129
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1130 check_gas_change1: ; check gas1
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1131 btfss gaslist_active,0 ; check active flag
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1132 bra check_gas_change2 ; skip inactive gases!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1133 movlw d'1'
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1134 cpfseq active_gas ; is this gas currently selected?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1135 bra check_gas_change1x ; No...
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1136 bra check_gas_change2 ; Yes, skip depth check
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1137 check_gas_change1x:
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1138 read_int_eeprom d'28' ; read gas_change_depth
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1139 movlw minimum_change_depth
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1140 cpfsgt EEDATA ; Change depth>minimum_change_depth?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1141 bra check_gas_change2 ; No, Change depth not deep enough, skip!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1142 movf xC+0,W ; load depth in m into WREG
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1143 cpfsgt EEDATA ; gas_change_depth < current depth?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1144 bra check_gas_change2 ; No, check next gas
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1145 movlw .1
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1146 movwf better_gas_number ; number (1-5) of the "better gas" in divemode, =0: no better gas available
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1147 movlw better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1148 subwf EEDATA,W ; Change depth-better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1149 cpfslt xC+0 ; current depth<Change depth-better_gas_window?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1150 bsf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1151
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1152 check_gas_change2: ; check gas2
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1153 btfss gaslist_active,1 ; check active flag
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1154 bra check_gas_change3 ; skip inactive gases!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1155 movlw d'2'
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1156 cpfseq active_gas ; is this gas currently selected?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1157 bra check_gas_change2x ; No...
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1158 bra check_gas_change3 ; Yes, skip depth check
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1159 check_gas_change2x:
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1160 read_int_eeprom d'29' ; read gas_change_depth
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1161 movlw minimum_change_depth
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1162 cpfsgt EEDATA ; Change depth>minimum_change_depth?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1163 bra check_gas_change3 ; No, Change depth not deep enough, skip!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1164 movf xC+0,W ; load depth in m into WREG
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1165 cpfsgt EEDATA ; gas_change_depth < current depth?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1166 bra check_gas_change3 ; No, check next gas
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1167 movlw .2
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1168 movwf better_gas_number ; number (1-5) of the "better gas" in divemode, =0: no better gas available
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1169 movlw better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1170 subwf EEDATA,W ; Change depth-better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1171 cpfslt xC+0 ; current depth<Change depth-better_gas_window?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1172 bsf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1173
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1174 check_gas_change3: ; check gas3
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1175 btfss gaslist_active,2 ; check active flag
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1176 bra check_gas_change4 ; skip inactive gases!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1177 movlw d'3'
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1178 cpfseq active_gas ; is this gas currently selected?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1179 bra check_gas_change3x ; No...
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1180 bra check_gas_change4 ; Yes, skip depth check
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1181 check_gas_change3x:
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1182 read_int_eeprom d'30' ; read gas_change_depth
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1183 movlw minimum_change_depth
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1184 cpfsgt EEDATA ; Change depth>minimum_change_depth?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1185 bra check_gas_change4 ; No, Change depth not deep enough, skip!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1186 movf xC+0,W ; load depth in m into WREG
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1187 cpfsgt EEDATA ; gas_change_depth < current depth?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1188 bra check_gas_change4 ; No, check next gas
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1189 movlw .3
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1190 movwf better_gas_number ; number (1-5) of the "better gas" in divemode, =0: no better gas available
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1191 movlw better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1192 subwf EEDATA,W ; Change depth-better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1193 cpfslt xC+0 ; current depth<Change depth-better_gas_window?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1194 bsf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1195
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1196 check_gas_change4: ; check gas4
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1197 btfss gaslist_active,3 ; check active flag
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1198 bra check_gas_change5 ; skip inactive gases!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1199 movlw d'4'
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1200 cpfseq active_gas ; is this gas currently selected?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1201 bra check_gas_change4x ; No...
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1202 bra check_gas_change5 ; Yes, skip depth check
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1203 check_gas_change4x:
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1204 read_int_eeprom d'31' ; read gas_change_depth
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1205 movlw minimum_change_depth
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1206 cpfsgt EEDATA ; Change depth>minimum_change_depth?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1207 bra check_gas_change5 ; No, Change depth not deep enough, skip!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1208 movf xC+0,W ; load depth in m into WREG
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1209 cpfsgt EEDATA ; gas_change_depth < current depth?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1210 bra check_gas_change5 ; No, check next gas
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1211 movlw .4
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1212 movwf better_gas_number ; number (1-5) of the "better gas" in divemode, =0: no better gas available
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1213 movlw better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1214 subwf EEDATA,W ; Change depth-better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1215 cpfslt xC+0 ; current depth<Change depth-better_gas_window?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1216 bsf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1217
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1218 check_gas_change5: ; check gas5
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1219 btfss gaslist_active,4 ; check active flag
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1220 bra check_gas_change6 ; skip inactive gases!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1221 movlw d'5'
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1222 cpfseq active_gas ; is this gas currently selected?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1223 bra check_gas_change5x ; No...
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1224 bra check_gas_change6 ; Yes, skip depth check
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1225 check_gas_change5x:
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1226 read_int_eeprom d'32' ; read gas_change_depth
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1227 movlw minimum_change_depth
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1228 cpfsgt EEDATA ; Change depth>minimum_change_depth?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1229 bra check_gas_change6 ; No, Change depth not deep enough, skip!
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1230 movf xC+0,W ; load depth in m into WREG
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1231 cpfsgt EEDATA ; gas_change_depth < current depth?
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1232 bra check_gas_change6 ; No, check next gas
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1233 movlw .5
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1234 movwf better_gas_number ; number (1-5) of the "better gas" in divemode, =0: no better gas available
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1235 movlw better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1236 subwf EEDATA,W ; Change depth-better_gas_window
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1237 cpfslt xC+0 ; current depth<Change depth-better_gas_window?
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1238 bsf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1239
612
ec2cfd4b748b Blink better gas in bailout case (if CF42=1)
heinrichsweikamp
parents: 603
diff changeset
1240 check_gas_change6:
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1241 btfss better_gas_available ; Is a better gas available
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1242 clrf better_gas_number ; No, clear better gas register
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
1243
612
ec2cfd4b748b Blink better gas in bailout case (if CF42=1)
heinrichsweikamp
parents: 603
diff changeset
1244 btfsc is_bailout ;=1: CC mode, but bailout active!
ec2cfd4b748b Blink better gas in bailout case (if CF42=1)
heinrichsweikamp
parents: 603
diff changeset
1245 bra check_gas_change7 ; In bailout, blink better gas (if required)
ec2cfd4b748b Blink better gas in bailout case (if CF42=1)
heinrichsweikamp
parents: 603
diff changeset
1246
505
24e018713ea2 fix bb bug #66: CCR air mode: should not blink for my bailout
heinrichsweikamp
parents: 498
diff changeset
1247 btfsc FLAG_const_ppO2_mode ; in ppO2 mode?
24e018713ea2 fix bb bug #66: CCR air mode: should not blink for my bailout
heinrichsweikamp
parents: 498
diff changeset
1248 bcf better_gas_available ; Yes, do not blink better gas
24e018713ea2 fix bb bug #66: CCR air mode: should not blink for my bailout
heinrichsweikamp
parents: 498
diff changeset
1249
612
ec2cfd4b748b Blink better gas in bailout case (if CF42=1)
heinrichsweikamp
parents: 603
diff changeset
1250 check_gas_change7:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1251 call DISP_active_gas_divemode; Display gas, if required (and with "*" if required...)
8
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1252 return
d8b426d71282 1.52 rc2
heinrichsweikamp
parents: 4
diff changeset
1253
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1254 ;=============================================================================
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
1255
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1256 calculate_noflytime:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1257 ; calculate nofly time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1258 movff int_O_desaturation_time+0,xA+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1259 movff int_O_desaturation_time+1,xA+1
251
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1260
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1261 btfsc xA+1,7 ; Is desat time negatif ?
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1262 bra calculate_noflytime_3 ; Then surely not valid !
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1263
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1264 tstfsz xA+0 ; Desat=0?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1265 bra calculate_noflytime2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1266 tstfsz xA+1 ; Desat=0?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1267 bra calculate_noflytime2
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1268
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1269 calculate_noflytime_3:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1270 ; Desaturation time = zero
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1271 clrf nofly_time+0 ; Clear nofly time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1272 clrf nofly_time+1 ; Clear nofly time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1273 bcf nofly_active ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1274 return
218
f4b79292e31f BUGFIX NoFly time
JeanDo
parents: 210
diff changeset
1275
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1276 calculate_noflytime2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1277 movff xA+0,int_I_temp+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1278 movff xA+1,int_I_temp+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1279 GETCUSTOM8 .13 ; nofly_time_ratio
218
f4b79292e31f BUGFIX NoFly time
JeanDo
parents: 210
diff changeset
1280 movff WREG,char_I_temp
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1281 ostc_debug 'K' ; Sends debug-information to screen if debugmode active
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 115
diff changeset
1282 call deco_calc_percentage
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1283 movlb b'00000001' ; select ram bank 1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1284 ostc_debug 'L' ; Sends debug-information to screen if debugmode active
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1285 movff int_I_temp+0,xA+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1286 movff int_I_temp+1,xA+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1287 tstfsz xA+0 ; Desat=0?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1288 bra calculate_noflytime_2_final
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1289 tstfsz xA+1 ; Desat=0?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1290 bra calculate_noflytime_2_final
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1291 bra calculate_noflytime_3
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1292
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1293 calculate_noflytime_2_final:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1294 movff xA+0,nofly_time+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1295 movff xA+1,nofly_time+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1296 bsf nofly_active ; Set flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1297 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1298
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1299 end_dive:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1300 btfss realdive ; dive longer then one minute
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1301 goto end_dive_common ; No, discard everything
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1302
233
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1303 ; In DEBUG compile, keep all simulated dives in logbook, Desat time, nofly, etc...
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1304 ifndef __DEBUG
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1305 btfsc simulatormode_active ; Are we in simulator mode?
793
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1306 goto end_dive_common_sim ; Yes, discard everything
233
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1307 endif
33
6e5db85382a2 Speedy simulator! New Deco code test 1
heinrichsweikamp
parents: 25
diff changeset
1308
83
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 75
diff changeset
1309 ; Dive finished (and longer then one minute or Apnoe timeout occured)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1310
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1311 btfsc FLAG_apnoe_mode ; Calc max. depth (again) for very short apnoe dives
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
1312 call apnoe_calc_maxdepth
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1313
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1314 ; calculate desaturation time
251
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1315 movff last_surfpressure_30min+0,int_I_pres_surface+0 ; Pass surface to desat routine !
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1316 movff last_surfpressure_30min+1,int_I_pres_surface+1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1317
251
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1318 GETCUSTOM8 d'12' ; Desaturation multiplier %
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1319 movff WREG,char_I_desaturation_multiplier
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1320
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1321 ostc_debug 'G' ; Sends debug-information to screen if debugmode active
251
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 250
diff changeset
1322 call deco_calc_desaturation_time ; calculate desaturation time
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1323 movlb b'00000001' ; select ram bank 1
453
38b38b105782 compute desat based on 30min old surface pressure
heinrichsweikamp
parents: 447
diff changeset
1324 call calc_deko_surfmode2 ; work-around for nofly bug
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1325 rcall calculate_noflytime ; Calc NoFly time
486
c7b663939737 making waitms speed-independent, desat-time fix
heinrichsweikamp
parents: 458
diff changeset
1326 movff int_O_desaturation_time+0,desaturation_time_buffer+0
c7b663939737 making waitms speed-independent, desat-time fix
heinrichsweikamp
parents: 458
diff changeset
1327 movff int_O_desaturation_time+1,desaturation_time_buffer+1
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1328 ostc_debug 'H' ; Sends debug-information to screen if debugmode active
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1329 ; store header and ...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1330 movlw 0xFD ; .... End-of-Profile Bytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1331 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1332 movlw 0xFD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1333 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1334 movlw 0xFE ; This positon will be overwritten for the next profile
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1335 call write_external_eeprom ; and is required to find the newest dive after a firmware reset
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1336
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1337 movff eeprom_header_address+0, eeprom_address+0 ; set header adress
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1338 movff eeprom_header_address+1, eeprom_address+1 ; write header
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1339
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1340 movlw 0xFA ; Header start
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1341 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1342 movlw 0xFA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1343 call write_external_eeprom
349
ed137d66ac65 Preparations for new "0x21" logbook format
heinrichsweikamp
parents: 344
diff changeset
1344 movlw logbook_profile_version ; Defined in definitions.asm
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1345 call write_external_eeprom
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 228
diff changeset
1346 movf month,W ; Date
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1347 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1348 movf day,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1349 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1350 movf year,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1351 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1352 movf hours,W ; End of dive time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1353 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1354 movf mins,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1355 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1356
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1357 btfss FLAG_apnoe_mode ; Store apnoe max or normal max (Which is only max from the last descent)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1358 bra end_dive1 ; Store normal depth
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1359
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1360 movff apnoe_max_pressure+0,lo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1361 movff apnoe_max_pressure+1,hi
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1362 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar]
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1363 movff lo,apnoe_max_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1364 movff hi,apnoe_max_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1365
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1366 movf apnoe_max_pressure+0,W ; Max. depth
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1367 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1368 movf apnoe_max_pressure+1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1369 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1370 bra end_dive2 ; skip
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1371
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1372 end_dive1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1373 movff max_pressure+0,lo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1374 movff max_pressure+1,hi
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1375 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar]
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1376 movff lo,max_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1377 movff hi,max_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1378
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1379 movf max_pressure+0,W ; Max. depth
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1380 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1381 movf max_pressure+1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1382 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1383
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1384 end_dive2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1385 movf divemins+0,W ; divetime minutes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1386 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1387 movf divemins+1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1388 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1389 movf divesecs,W ; divetime seconds
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1390 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1391 movf mintemp+0,W ; minimum temperature
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1392 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1393 movf mintemp+1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1394 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1395 movf last_surfpressure_30min+0,W ; airpressure before dive
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1396 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1397 movf last_surfpressure_30min+1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1398 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1399 movff int_O_desaturation_time+0,lo ;
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1400 movff int_O_desaturation_time+1,hi
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1401 movf lo,W ; desaturation time in minutes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1402 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1403 movf hi,W ;
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1404 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1405
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1406 ; Gases....
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1407 btfsc FLAG_const_ppO2_mode
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1408 bra end_dive3 ; Store diluents instead of gases
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1409
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1410 read_int_eeprom d'6' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1411 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1412 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1413 read_int_eeprom d'7' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1414 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1415 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1416 read_int_eeprom d'10' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1417 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1418 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1419 read_int_eeprom d'11' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1420 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1421 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1422 read_int_eeprom d'14' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1423 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1424 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1425 read_int_eeprom d'15' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1426 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1427 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1428 read_int_eeprom d'18' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1429 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1430 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1431 read_int_eeprom d'19' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1432 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1433 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1434 read_int_eeprom d'22' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1435 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1436 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1437 read_int_eeprom d'23' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1438 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1439 call write_external_eeprom
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1440 bra end_dive4
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1441
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1442 end_dive3:
709
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1443 ; New in 2.52 Diluents stored seperately in EEPROM Bank0
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1444 ;Byte96-97:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1445 ;Diluent 1 Default (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1446 ;Byte98-99:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1447 ;Diluent 1 Current (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1448 ;Byte100-101:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1449 ;Diluent 2 Default (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1450 ;Byte102-103:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1451 ;Diluent 2 Current (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1452 ;Byte104-105:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1453 ;Diluent 3 Default (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1454 ;Byte106-107:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1455 ;Diluent 3 Current (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1456 ;Byte108-109:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1457 ;Diluent 4 Default (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1458 ;Byte110-111:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1459 ;Diluent 4 Current (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1460 ;Byte112-113:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1461 ;Diluent 5 Default (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1462 ;Byte114-115:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1463 ;Diluent 5 Current (%O2,%He)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1464 ;Byte116:
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1465 ;First Diluent (1-5)
732
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1466 read_int_eeprom d'97' ; Read byte (stored in EEDATA)
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1467 movf EEDATA,W
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1468 call write_external_eeprom
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1469 read_int_eeprom d'98' ; Read byte (stored in EEDATA)
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1470 movf EEDATA,W
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1471 call write_external_eeprom
732
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1472 read_int_eeprom d'101' ; Read byte (stored in EEDATA)
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1473 movf EEDATA,W
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1474 call write_external_eeprom
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1475 read_int_eeprom d'102' ; Read byte (stored in EEDATA)
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1476 movf EEDATA,W
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1477 call write_external_eeprom
732
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1478 read_int_eeprom d'105' ; Read byte (stored in EEDATA)
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1479 movf EEDATA,W
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1480 call write_external_eeprom
709
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1481 read_int_eeprom d'106' ; Read byte (stored in EEDATA)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1482 movf EEDATA,W
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1483 call write_external_eeprom
732
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1484 read_int_eeprom d'109' ; Read byte (stored in EEDATA)
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1485 movf EEDATA,W
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1486 call write_external_eeprom
709
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1487 read_int_eeprom d'110' ; Read byte (stored in EEDATA)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1488 movf EEDATA,W
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1489 call write_external_eeprom
732
920afa50bb0b dive header diluent list (again)...
heinrichsweikamp
parents: 730
diff changeset
1490 read_int_eeprom d'113' ; Read byte (stored in EEDATA)
709
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1491 movf EEDATA,W
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1492 call write_external_eeprom
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1493 read_int_eeprom d'114' ; Read byte (stored in EEDATA)
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1494 movf EEDATA,W
74878be38d4c bugfix diluent store positions
heinrichsweikamp
parents: 686
diff changeset
1495 call write_external_eeprom
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1496
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1497 end_dive4:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1498 read_int_eeprom d'24' ; % O2 Gas6
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1499 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1500 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1501 read_int_eeprom d'25' ; % He Gas6
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1502 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1503 call write_external_eeprom
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1504
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1505 movlw .33 ; Start gas
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1506 btfsc FLAG_const_ppO2_mode ; In CCR mode?
816
df8cd5ffd993 BUGFIX: Load first diluent if <> 1 correctly
heinrichsweikamp
parents: 815
diff changeset
1507 movlw .115 ; Yes, use start Diluent instead
656
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1508 movwf EEADR
5063fb9f07db 2.55beta release
heinrichsweikamp
parents: 655
diff changeset
1509 call read_eeprom
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1510 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1511 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1512
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1513 movlw softwareversion_x ; Firmware version
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1514 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1515 movlw softwareversion_y
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1516 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1517 movf batt_voltage+0,W ; Battery voltage
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1518 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1519 movf batt_voltage+1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1520 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1521
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1522 GETCUSTOM8 d'20' ; sampling rate in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1523 btfsc FLAG_apnoe_mode ; Apnoe mode?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1524 movlw d'1' ; Apnoe sampling rate
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1525 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1526
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1527 movlw d'2' ; information size temperature
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1528 movwf temp1 ; copy to bits 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1529 swapf temp1,F ; swap nibbels 0-3 with 4-7
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1530 GETCUSTOM8 d'21' ; Divisor temperature
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1531 addwf temp1,W ; copy to bits 0-3, result in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1532 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1533
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1534 movlw d'2' ; information size deco
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1535 movwf temp1 ; copy to bits 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1536 swapf temp1,F ; swap nibbels 0-3 with 4-7
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1537 GETCUSTOM8 d'22' ; Divisor deco
458
d300e6ad6f66 Store divisor_deco=0 for apnoe dives
heinrichsweikamp
parents: 457
diff changeset
1538 btfsc FLAG_apnoe_mode ; in Apnoe mode?
d300e6ad6f66 Store divisor_deco=0 for apnoe dives
heinrichsweikamp
parents: 457
diff changeset
1539 movlw d'0' ; Yes, set to zero
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1540 addwf temp1,W ; copy to bits 0-3, result in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1541 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1542
376
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 375
diff changeset
1543 movlw d'1' ; information size GF
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1544 movwf temp1 ; copy to bits 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1545 swapf temp1,F ; swap nibbels 0-3 with 4-7
376
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 375
diff changeset
1546 GETCUSTOM8 d'23' ; Divisor GF
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1547 addwf temp1,W ; copy to bits 0-3, result in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1548 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1549
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1550 movlw d'3' ; information size pp02
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1551 movwf temp1 ; copy to bits 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1552 swapf temp1,F ; swap nibbels 0-3 with 4-7
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1553 GETCUSTOM8 d'24' ; Divisor pp02
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1554 addwf temp1,W ; copy to bits 0-3, result in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1555 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1556
630
6526a5b058b7 Fill char_O_deco_time_for_log array with stop times
heinrichsweikamp
parents: 627
diff changeset
1557 movlw d'15' ; information size Decodebug
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1558 movwf temp1 ; copy to bits 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1559 swapf temp1,F ; swap nibbels 0-3 with 4-7
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1560 GETCUSTOM8 d'25' ; Divisor Decodebug
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1561 addwf temp1,W ; copy to bits 0-3, result in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1562 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1563
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
1564 movlw d'1' ; information size cns
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1565 movwf temp1 ; copy to bits 0-3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1566 swapf temp1,F ; swap nibbels 0-3 with 4-7
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
1567 GETCUSTOM8 d'26' ; Divisor cns
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1568 addwf temp1,W ; copy to bits 0-3, result in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1569 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1570
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1571 read_int_eeprom d'26' ; Read Salinity from EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1572 movf EEDATA,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1573 call write_external_eeprom ; Store Salinity to Dive
253
3a4096f32526 show CNS in logbook for all dives made with V1.84beta and later
heinrichsweikamp
parents: 251
diff changeset
1574
3a4096f32526 show CNS in logbook for all dives made with V1.84beta and later
heinrichsweikamp
parents: 251
diff changeset
1575 movff char_O_CNS_fraction,WREG ; copy into bank1
3a4096f32526 show CNS in logbook for all dives made with V1.84beta and later
heinrichsweikamp
parents: 251
diff changeset
1576 call write_external_eeprom ; Stores CNS%
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1577
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 349
diff changeset
1578 movff avr_rel_pressure_total+0,WREG ; Average Depth
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 349
diff changeset
1579 call write_external_eeprom
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 349
diff changeset
1580 movff avr_rel_pressure_total+1,WREG ; Average Depth
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 349
diff changeset
1581 call write_external_eeprom
357
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
1582
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
1583 movff total_divetime_seconds+0,WREG ; Total dive time (Regardless of CF01)
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
1584 call write_external_eeprom
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
1585 movff total_divetime_seconds+1,WREG ; Total dive time (Regardless of CF01)
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
1586 call write_external_eeprom
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
1587
375
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1588 movlw d'32' ; GF_lo
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1589 movff char_I_deco_model,lo
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1590 decfsz lo,F ; jump over next line if char_I_deco_model == 1
375
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1591 movlw d'11' ; Saturation Multiplier
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1592 call getcustom8_1 ; Get Custom function #WREG
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1593 call write_external_eeprom ; write WREG into external memory
375
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1594
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1595 movlw d'33' ; GF_hi
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1596 movff char_I_deco_model,lo
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1597 decfsz lo,F ; jump over next line if char_I_deco_model == 1
375
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1598 movlw d'12' ; Desaturation Multiplier
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1599 call getcustom8_1 ; Get Custom function #WREG
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1600 call write_external_eeprom ; write WREG into external memory
375
84a1762de6ab show saturation multiplier in logbook
heinrichsweikamp
parents: 374
diff changeset
1601
373
8781d1cf96d8 added GF_hi, GF_lo and deco model to dive header
Heinrichsweikamp
parents: 367
diff changeset
1602 read_int_eeprom d'34' ; Read deco modell
8781d1cf96d8 added GF_hi, GF_lo and deco model to dive header
Heinrichsweikamp
parents: 367
diff changeset
1603 movf EEDATA,W
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
1604 call write_external_eeprom ; write WREG into external memory
373
8781d1cf96d8 added GF_hi, GF_lo and deco model to dive header
Heinrichsweikamp
parents: 367
diff changeset
1605
634
6cbdfd1b9dcf NEW: CF29 stored in divelog header (Byte 52)
heinrichsweikamp
parents: 630
diff changeset
1606 GETCUSTOM8 d'29' ; Last decostop [m]
6cbdfd1b9dcf NEW: CF29 stored in divelog header (Byte 52)
heinrichsweikamp
parents: 630
diff changeset
1607 call write_external_eeprom ; write WREG into external memory
6cbdfd1b9dcf NEW: CF29 stored in divelog header (Byte 52)
heinrichsweikamp
parents: 630
diff changeset
1608
672
e2bb4f745f3a Store Gas active" flag register in logbook
heinrichsweikamp
parents: 666
diff changeset
1609 movff gaslist_active,WREG ; "Gas active" flag register
e2bb4f745f3a Store Gas active" flag register in logbook
heinrichsweikamp
parents: 666
diff changeset
1610 call write_external_eeprom ; write WREG into external memory
e2bb4f745f3a Store Gas active" flag register in logbook
heinrichsweikamp
parents: 666
diff changeset
1611
790
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1612 movff on_time_seconds+0,xC+0
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1613 movff on_time_seconds+1,xC+1
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1614 movff on_time_seconds+2,xC+2
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1615 clrf xC+4
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1616 movlw LOW .3600
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1617 movwf xB+0
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1618 movlw HIGH .3600
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1619 movwf xB+1
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1620 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1621 movf xC+0,W
53425d598585 NEW: Store useage timer in logbook header (Byte 54)
heinrichsweikamp
parents: 780
diff changeset
1622 call write_external_eeprom ; Full hours of on-time since last full charge
349
ed137d66ac65 Preparations for new "0x21" logbook format
heinrichsweikamp
parents: 344
diff changeset
1623
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1624 movlw 0xFB ; Header stop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1625 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1626 movlw 0xFB
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1627 call write_external_eeprom
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1628
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1629 ; Increase total dive counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1630 read_int_eeprom d'2' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1631 movff EEDATA,temp1 ; Low byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1632 read_int_eeprom d'3' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1633 movff EEDATA,temp2 ; high byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1634 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1635 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1636 addwf temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1637 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1638 addwfc temp2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1639 movff temp1,EEDATA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1640 write_int_eeprom d'2' ; write byte stored in EEDATA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1641 movff temp2,EEDATA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1642 write_int_eeprom d'3' ; write byte stored in EEDATA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1643
626
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
1644 ; Save dive mode custom view
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
1645 movff menupos3,EEDATA ; Copy to EEDATA
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
1646 write_int_eeprom d'94' ; Write last selected customview dive mode into EEPROM
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 623
diff changeset
1647
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1648 GETCUSTOM15 .28 ; Logbook Offset -> lo, hi
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1649 tstfsz lo ; lo=0?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1650 bra change_logbook_offset1 ; No, adjust offset
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1651 tstfsz hi ; hi=0?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1652 bra change_logbook_offset1 ; No, adjust offset
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1653 bra change_logbook_offset2 ; lo=0 and hi=0 -> skip Offset routine
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1654 change_logbook_offset1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1655 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1656 addwf lo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1657 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1658 addwfc hi
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1659 movlw d'112' ; CF28 *4 Bytes...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1660 addlw 0x82
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1661 movwf EEADR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1662 movff lo,EEDATA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1663 call write_eeprom ; Lowbyte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1664 movlw d'112' ; CF28 *4 Bytes...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1665 addlw 0x83
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1666 movwf EEADR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1667 movff hi,EEDATA
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1668 call write_eeprom ; Highbyte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1669
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1670 change_logbook_offset2:
25
99512945c7a1 1.61 beta rc2
heinrichsweikamp
parents: 21
diff changeset
1671 bcf LED_blue
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1672 clrf surface_interval+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1673 clrf surface_interval+1 ; Clear surface interval timer
33
6e5db85382a2 Speedy simulator! New Deco code test 1
heinrichsweikamp
parents: 25
diff changeset
1674
6e5db85382a2 Speedy simulator! New Deco code test 1
heinrichsweikamp
parents: 25
diff changeset
1675 end_dive_common:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1676 bcf simulatormode_active ; if we were in simulator mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1677
407
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1678 ; In DEBUG compile, keep all simulated dives in logbook, Desat time, nofly, etc...
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1679 ifndef __DEBUG
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1680 btfsc restore_deco_data ; Restore decodata?
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1681 call simulator_restore_tissue_data ; Yes!
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1682 endif
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1683
720
4452837aff37 Vault date and time during update
heinrichsweikamp
parents: 709
diff changeset
1684 goto surfloop_no_display_init ; and return to surfaceloop
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1685
793
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1686 end_dive_common_sim:
801
heinrichsweikamp
parents: 793
diff changeset
1687 tstfsz surface_interval+0 ; Was interval zero?
heinrichsweikamp
parents: 793
diff changeset
1688 bra end_dive_common_sim2 ; No
heinrichsweikamp
parents: 793
diff changeset
1689 tstfsz surface_interval+1 ; Was interval zero?
heinrichsweikamp
parents: 793
diff changeset
1690 bra end_dive_common_sim2 ; No
heinrichsweikamp
parents: 793
diff changeset
1691 bra end_dive_common ; Yes, done.
heinrichsweikamp
parents: 793
diff changeset
1692
heinrichsweikamp
parents: 793
diff changeset
1693 end_dive_common_sim2:
793
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1694 movf divemins+0,W
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1695 addwf surface_interval+0,F
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1696 movf divemins+1,W
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1697 addwfc surface_interval+1 ; Add simulated divetime to surface interval
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1698 bra end_dive_common
55bd11e07d9f BUGFIX: Surface interval was paused during simulator
heinrichsweikamp
parents: 790
diff changeset
1699
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1700 timeout_divemode:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1701 btfss realdive ; Dive longer then one minute
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1702 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1703
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1704 btfsc FLAG_apnoe_mode ; In Apnoe mode?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1705 bra timeout_divemode2 ; Yes, use CF30 [min] for timeout
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1706
233
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1707 ifndef __DEBUG
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1708 btfsc simulatormode_active ; In Simulator mode?
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1709 bra timeout_divemode3 ; Yes, use fixed 5 seconds timeout
2cbaa01dac26 Hunting for NoFly (bug BB13)... not found yet...
JeanDo
parents: 229
diff changeset
1710 endif
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1711
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1712 bcf divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1713 incf timeout_counter,F
352
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1714 movlw d'0'
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1715 addwfc timeout_counter2,F ; timeout is 15bits
572
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1716
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1717 GETCUSTOM15 d'2' ; diveloop_timeout -> lo:hi
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1718
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1719 btfss dekostop_active ; Is a deco stop displayed?
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1720 bra timeout_divemode1 ; No, use normal CF02 timeout
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1721
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1722 ; Yes, use 10minutes counter
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1723 movlw LOW .600
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1724 movwf lo
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1725 movlw HIGH .600
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1726 movwf hi
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1727
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1728 timeout_divemode1:
352
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1729 movff lo,sub_a+0
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1730 movff hi,sub_a+1
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1731 movff timeout_counter, sub_b+0
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1732 movff timeout_counter2, sub_b+1
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1733 call sub16 ; sub_c = sub_a - sub_b
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1734 btfss neg_flag ; Result negative?
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
1735 bsf divemode ; No, set flag
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1736 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1737
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1738 timeout_divemode2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1739 incf timeout_counter,F ; seconds...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1740 movlw d'60'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1741 cpfseq timeout_counter ; timeout_counter=60?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1742 return ; No.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1743
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1744 clrf timeout_counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1745 bcf divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1746 incf apnoe_timeout_counter,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1747 GETCUSTOM8 d'30' ; apnoe timeout [min]
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1748 cpfseq apnoe_timeout_counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1749 bsf divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1750 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1751
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1752 timeout_divemode3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1753 bcf divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1754 incf timeout_counter,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1755 movlw d'5' ; Fixed timeout of 5 seconds
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1756 cpfsgt timeout_counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1757 bsf divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1758 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1759
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1760 update_divemode1: ; update any second
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1761 call set_dive_modes ; tests if depth>threshold
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1762
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1763 btfsc divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1764 call set_max_depth ; update max. depth if required
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1765
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1766 btfsc divemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1767 call set_min_temp ; store min. temp if required
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1768
342
06299199dfb9 Fix bad max depth value (fix sub16 to avoid trashing sub_b).
JeanDo
parents: 341
diff changeset
1769 bcf temp_changed ; Display temperature?
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1770 SAFE_2BYTE_COPY temperature,lo
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1771 movf lo,W
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1772 cpfseq last_temperature+0
342
06299199dfb9 Fix bad max depth value (fix sub16 to avoid trashing sub_b).
JeanDo
parents: 341
diff changeset
1773 bsf temp_changed ; Yes
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1774 movf hi,W
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1775 cpfseq last_temperature+1
342
06299199dfb9 Fix bad max depth value (fix sub16 to avoid trashing sub_b).
JeanDo
parents: 341
diff changeset
1776 bsf temp_changed ; Yes
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1777 btfsc temp_changed
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1778 call DISP_temp_divemode ; Displays temperature
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1779
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1780 bcf pres_changed ; Display new depth?
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1781 SAFE_2BYTE_COPY amb_pressure, lo
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1782 movf lo,W
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1783 cpfseq last_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1784 bsf pres_changed ; Yes
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1785 movf hi,W
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1786 cpfseq last_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1787 bsf pres_changed ; Yes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1788
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1789 btfsc simulatormode_active ; always update depth when in simulator mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1790 bsf pres_changed
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1791
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1792 btfsc pres_changed
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1793 call DISP_depth ; Displays new depth
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1794 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1795
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1796 update_divemode60: ; update any minute
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1797 call get_battery_voltage ; gets battery voltage
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1798 call set_powersafe ; red LED blinking if battery is low
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1799 call DISP_max_pressure ; No, use normal max. depth
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1800 call check_temp_extrema ; check for new temperature extremas
98
6f8e3a08011e 1.73beta rc1 (Added new customview for divemode)
heinrichsweikamp
parents: 83
diff changeset
1801 call customview_minute ; Do every-minute tasks for the custom view area
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1802 bcf oneminupdate
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1803 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1804
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1805 set_max_depth:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1806 movff max_pressure+0,sub_a+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1807 movff max_pressure+1,sub_a+1
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1808 SAFE_2BYTE_COPY rel_pressure, sub_b
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1809 call sub16 ; sub_c = sub_a - sub_b
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1810 ; max_pressure<rel_pressure -> neg_flag=1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1811 ; rel_pressure<=max_pressure -> neg_flag=0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1812 btfss neg_flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1813 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1814 ;max_pressure<rel_pressure
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1815 movff sub_b+0,max_pressure+0
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1816 movff sub_b+1,max_pressure+1
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1817 call DISP_max_pressure ; No, use normal max. depth
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1818 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1819
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1820 set_min_temp:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1821 movff mintemp+0,sub_a+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1822 movff mintemp+1,sub_a+1
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1823 SAFE_2BYTE_COPY temperature,sub_b
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1824 call sub16 ; sub_c = sub_a - sub_b
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1825 ; mintemp<T -> neg_flag=1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1826 ; T<=mintemp -> neg_flag=0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1827 btfsc neg_flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1828 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1829 ;mintemp>=T
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1830 movff sub_b+0,mintemp+0
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1831 movff sub_b+1,mintemp+1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1832 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1833
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1834 set_dive_modes:
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1835 btfsc high_altitude_mode ; In high altitude (Fly) mode?
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1836 bra set_dive_modes3 ; Yes!
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1837
615
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1838 btfss divemode ; In divemode?
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1839 bra set_dive_modes0 ; No.
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1840
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1841 ; in Divemode, check threshold from CF01
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1842 GETCUSTOM8 .1 ; loads dive_threshold in WREG
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1843 movwf sub_a+0 ; dive_treshold is in cm
686
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1844
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1845 movlw .20
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1846 cpfsgt sub_a+0
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1847 movwf sub_a+0 ; Make sure to have at least 20cm threshold
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1848
615
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1849 clrf sub_a+1
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1850 bra set_dive_modes1 ; Done.
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1851
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1852 set_dive_modes0:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1853 GETCUSTOM8 .0 ; loads dive_threshold in WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1854 movwf sub_a+0 ; dive_treshold is in cm
686
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1855
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1856 movlw .20
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1857 cpfsgt sub_a+0
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1858 movwf sub_a+0 ; Make sure to have at least 20cm threshold
8ffbd5cb4b42 Hard-coded min. Values for CF00 and CF01
heinrichsweikamp
parents: 685
diff changeset
1859
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1860 clrf sub_a+1
615
3ab53b57f879 Bugfix: CF01 for end-of-dive detection
heinrichsweikamp
parents: 612
diff changeset
1861 bra set_dive_modes1 ; Done.
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1862
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1863 set_dive_modes1:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1864 SAFE_2BYTE_COPY rel_pressure, sub_b
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1865 call sub16 ; sub_c = sub_a - sub_b
342
06299199dfb9 Fix bad max depth value (fix sub16 to avoid trashing sub_b).
JeanDo
parents: 341
diff changeset
1866
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1867 btfss neg_flag
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1868 bra set_dive_modes2 ; too shallow (rel_pressure<dive_threshold)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1869
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1870 btfsc realdive ; Dive longer than one minute?
572
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1871 clrf timeout_counter ; Yes, reset timout counter (Low Byte)
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1872 btfsc realdive ; Dive longer than one minute?
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1873 clrf timeout_counter2 ; Yes, reset timout counter (High Byte)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1874
408
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1875 set_dive_modes_common:
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1876 bsf divemode ; (Re-)Set divemode flag
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1877 bsf divemode2 ; displayed divetime is running
408
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1878 btfsc timeout_display ; Was the timeout displayed?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1879 call DISP_divemode_timeout_clear ; Yes, Clear (once)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1880 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1881
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1882 set_dive_modes2:
407
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1883 bcf divemode2 ; Stop time
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1884 btfss realdive ; dive longer then one minute?
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
1885 bcf divemode ; no -> this was no real dive
408
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1886
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1887 btfss divemode ; Are we still diving?
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1888 return ; No, return
572
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1889 ; Yes, show divemode timeout
408
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1890
572
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1891 btfsc menubit ; Divemode menu active?
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1892 return ; Yes, return
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1893 btfsc FLAG_apnoe_mode ; In Apnoe mode?
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1894 return ; Yes, return
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1895 btfsc gauge_mode ; In Gauge mode?
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1896 return ; Yes, return
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1897
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1898
408
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
1899 btfss dekostop_active ; Is a deco stop displayed?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1900 call DISP_divemode_timeout ; No, show the divemode timeout here...
572
80a1d2d5a9ee timeout display when deco stops are violated
heinrichsweikamp
parents: 550
diff changeset
1901 btfsc dekostop_active ; Is a deco stop displayed?
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
1902 call DISP_divemode_timeout2 ; Yes, show red warning divemode counter
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1903 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1904
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1905 set_dive_modes3: ; High-altitude mode
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1906 btfsc realdive ; dive longer then one minute?
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1907 bra set_dive_modes0 ; Yes -> this is a real dive -> Use CF00 threshold for ascend
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1908
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1909 movlw HIGH d'300' ; hard-wired 300cm threshold
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1910 movwf sub_a+1
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1911 movlw LOW d'300' ; hard-wired 300cm threshold
239
3ed240d60341 High altitude (Plane/Fly) mode added
heinrichsweikamp
parents: 237
diff changeset
1912 movwf sub_a+0
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1913 bra set_dive_modes1
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 413
diff changeset
1914
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1915 set_powersafe:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1916 btfsc low_battery_state ; battery warning alread active?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1917 bra set_powersafe2 ; Yes, but is it still required?
826
2151c4135fad CHANGE: Battery percent based on ON-Time instead of battery voltage
heinrichsweikamp
parents: 819
diff changeset
1918
2151c4135fad CHANGE: Battery percent based on ON-Time instead of battery voltage
heinrichsweikamp
parents: 819
diff changeset
1919 call update_batt_get_percent_in_lo
2151c4135fad CHANGE: Battery percent based on ON-Time instead of battery voltage
heinrichsweikamp
parents: 819
diff changeset
1920 movlw d'20' ; 20%
2151c4135fad CHANGE: Battery percent based on ON-Time instead of battery voltage
heinrichsweikamp
parents: 819
diff changeset
1921 cpfsgt lo
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1922 bra set_powersafe1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1923 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1924
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1925 set_powersafe1:
659
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
1926 movlw d'7' ; Type of alarm (Battery Low)
ef198c1669f1 minor, docu update
heinrichsweikamp
parents: 656
diff changeset
1927 movwf AlarmType ; Copy to alarm Register
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1928 bsf event_occured ; Set Event Flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1929 bsf low_battery_state ; set flag for battery warning
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1930 return ; return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1931
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1932 set_powersafe2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1933 movlw d'13' ; 3,584V
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1934 cpfsgt batt_voltage+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1935 bra set_powersafe1 ; Still to low
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1936 bcf low_battery_state ; clear flag for battery warning mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1937 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1938
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1939 calc_average_depth:
776
heinrichsweikamp
parents: 732
diff changeset
1940 btfsc reset_average_depth ; Reset the Average depth?
111
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
1941 rcall reset_average1 ; Reset the resettable average depth
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
1942
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1943 ; 1. Add new 2xdepth to the Sum of depths registers
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
1944 SAFE_2BYTE_COPY rel_pressure, b0_lo ; Buffer...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1945
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1946 movf b0_lo,w
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1947 addwf average_depth_hold+0,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1948 movf b0_hi,w
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1949 addwfc average_depth_hold+1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1950 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1951 addwfc average_depth_hold+2,F
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1952 addwfc average_depth_hold+3,F ; Will work up to 9999mbar*60*60*24=863913600mbar
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1953
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1954 movf b0_lo,w
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1955 addwf average_depth_hold+0,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1956 movf b0_hi,w
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1957 addwfc average_depth_hold+1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1958 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1959 addwfc average_depth_hold+2,F
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1960 addwfc average_depth_hold+3,F ; Will work up to 9999mbar*60*60*24=863913600mbar
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1961
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1962 ; Do the same for the _total registers (Non-Resettable)
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1963 movf b0_lo,w
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1964 addwf average_depth_hold_total+0,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1965 movf b0_hi,w
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1966 addwfc average_depth_hold_total+1,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1967 movlw d'0'
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1968 addwfc average_depth_hold_total+2,F
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1969 addwfc average_depth_hold_total+3,F ; Will work up to 9999mbar*60*60*24=863913600mbar
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1970
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1971 movf b0_lo,w
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1972 addwf average_depth_hold_total+0,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1973 movf b0_hi,w
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1974 addwfc average_depth_hold_total+1,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1975 movlw d'0'
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1976 addwfc average_depth_hold_total+2,F
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 386
diff changeset
1977 addwfc average_depth_hold_total+3,F ; Will work up to 9999mbar*60*60*24=863913600mbar
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1978
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1979 ; 2. Compute Average Depth on base of average_divesecs:2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1980 movff average_divesecs+0,xB+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1981 movff average_divesecs+1,xB+1 ; Copy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1982 movff average_depth_hold+0,xC+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1983 movff average_depth_hold+1,xC+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1984 movff average_depth_hold+2,xC+2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1985 movff average_depth_hold+3,xC+3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1986
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1987 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1988 movff xC+0,avr_rel_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1989 movff xC+1,avr_rel_pressure+1
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1990
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1991 ; Compute Total Average Depth on base of divemins:2 and divesecs
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1992 movff divemins+0,xA+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1993 movff divemins+1,xA+1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1994 movlw d'60'
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1995 movwf xB+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1996 clrf xB+1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1997 call mult16x16 ; xC:4=xA:2*xB:2
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1998 movf divesecs,W
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
1999 addwf xC+0,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2000 movlw d'0'
228
6d4e29d80ff3 1.83beta release, 1.84beta start
heinrichsweikamp
parents: 224
diff changeset
2001 addwfc xC+1,F ; xC:2 holds total dive seconds
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2002 movlw d'3' ; 2+1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2003 btfss divesecs,0 ; divesecs even?
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2004 movlw d'2' ; Yes, do not add +1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2005 addwf xC+0,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2006 movlw d'0'
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2007 addwfc xC+1,F
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2008 ; Ignore xC+2 and xC+3. Total Average will only work up to divetime=1092:16
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2009 movff xC+0,xB+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2010 movff xC+1,xB+1 ; Copy
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2011 movff average_depth_hold_total+0,xC+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2012 movff average_depth_hold_total+1,xC+1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2013 movff average_depth_hold_total+2,xC+2
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2014 movff average_depth_hold_total+3,xC+3
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2015
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2016 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2017 movff xC+0,avr_rel_pressure_total+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2018 movff xC+1,avr_rel_pressure_total+1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2019
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2020 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2021
111
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2022 reset_average1:
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2023 clrf average_depth_hold+0
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2024 clrf average_depth_hold+1
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2025 clrf average_depth_hold+2
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2026 clrf average_depth_hold+3 ; Clear average depth register
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2027 movlw d'2'
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2028 movwf average_divesecs+0
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2029 clrf average_divesecs+1
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2030 bcf reset_average_depth ; Clear flag
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2031 return
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2032
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
2033 ;=============================================================================
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2034 ; Check for Auto-SP
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2035 ;
819
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2036 check_dive_autosp: ; Check for Auto-SP
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2037 read_int_eeprom .116
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2038 tstfsz EEDATA ; =0: Manual
819
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2039 bra check_dive_autosp2
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2040 return ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2041 check_dive_autosp2:
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2042 SAFE_2BYTE_COPY rel_pressure,xA
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2043 movlw d'100'
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2044 movwf xB+0
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2045 clrf xB+1
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2046 call div16x16 ; compute depth in full m -> result in xC+0
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2047 ; Check SP1
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2048 btfsc sp1_switched ;=1: This setpoint has been autoselected already
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2049 bra check_dive_autosp3 ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2050 read_int_eeprom .117 ; Get depth in m
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2051 tstfsz EEDATA ; =?
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2052 bra $+4 ; No, continue
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2053 bra check_dive_autosp3 ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2054 decf EEDATA,W ; -1 -> WREG
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2055 cpfsgt xC+0 ; Compare with depth
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2056 bra check_dive_autosp3 ; lower depth, do not switch
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2057 ; auto switch to SP1
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2058 read_int_eeprom .36 ; Get Setpoint
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2059 movff EEDATA, char_I_const_ppO2 ; Use SetPoint
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2060 movff EEDATA, ppO2_setpoint_store ; Store also in this byte...
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2061 bsf setpoint_changed
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2062 bsf event_occured ; set global event flag
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2063 bsf sp1_switched ; Set flag
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2064 check_dive_autosp3:
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2065 ; Check SP2
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2066 btfsc sp2_switched ;=1: This setpoint has been autoselected already
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2067 bra check_dive_autosp4 ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2068 read_int_eeprom .118 ; Get depth in m
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2069 tstfsz EEDATA ; =?
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2070 bra $+4 ; No, continue
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2071 bra check_dive_autosp4 ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2072 decf EEDATA,W ; -1 -> WREG
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2073 cpfsgt xC+0 ; Compare with depth
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2074 bra check_dive_autosp4 ; lower depth, do not switch
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2075 ; auto switch to SP2
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2076 read_int_eeprom .37 ; Get Setpoint
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2077 movff EEDATA, char_I_const_ppO2 ; Use SetPoint
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2078 movff EEDATA, ppO2_setpoint_store ; Store also in this byte...
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2079 bsf setpoint_changed
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2080 bsf event_occured ; set global event flag
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2081 bsf sp2_switched ; Set flag
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2082 check_dive_autosp4:
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2083 ; Check SP3
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2084 btfsc sp3_switched ;=1: This setpoint has been autoselected already
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2085 bra check_dive_autosp5 ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2086 read_int_eeprom .119 ; Get depth in m
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2087 tstfsz EEDATA ; =?
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2088 bra $+4 ; No, continue
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2089 bra check_dive_autosp5 ; Skip check
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2090 decf EEDATA,W ; -1 -> WREG
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2091 cpfsgt xC+0 ; Compare with depth
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2092 bra check_dive_autosp5 ; lower depth, do not switch
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2093 ; auto switch to SP3
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2094 read_int_eeprom .38 ; Get Setpoint
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2095 movff EEDATA, char_I_const_ppO2 ; Use SetPoint
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2096 movff EEDATA, ppO2_setpoint_store ; Store also in this byte...
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2097 bsf setpoint_changed
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2098 bsf event_occured ; set global event flag
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2099 bsf sp3_switched ; Set flag
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2100 check_dive_autosp5:
95c08c0cfc29 3.04 beta release
heinrichsweikamp
parents: 818
diff changeset
2101 return ; Done.
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2102
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2103 ;=============================================================================
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
2104 ; Setup everything to enter divemode.
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
2105 ;
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2106 diveloop_boot:
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
2107 ostc_debug 'Q' ; Sends debug-information to screen if debugmode active
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2108 clrf max_pressure+0 ; clear some variables
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2109 clrf max_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2110 clrf avr_rel_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2111 clrf avr_rel_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2112
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2113 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2114 movwf apnoe_max_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2115 clrf apnoe_max_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2116 clrf apnoe_surface_mins
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2117 clrf apnoe_mins
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2118 clrf apnoe_secs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2119 clrf divemins+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2120 clrf divemins+1
357
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
2121 clrf total_divetime_seconds+0
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 352
diff changeset
2122 clrf total_divetime_seconds+1
407
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2123 bsf divemode2 ; displayed divetime is running (Divetime starts HERE)
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2124
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2125 clrf EEADRH ; Make sure to select eeprom bank 0
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
2126 call DISP_brightness_low
407
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2127 read_int_eeprom d'90' ; Brightness offset? (Dim>0, Normal = 0)
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2128 movlw d'0'
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2129 cpfsgt EEDATA
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 675
diff changeset
2130 call DISP_brightness_full
407
47b1135cbff3 BUGFIX: SetPoint recording for logbook
heinrichsweikamp
parents: 406
diff changeset
2131
666
3282581fe178 Allow gf switch
heinrichsweikamp
parents: 665
diff changeset
2132 bcf use_aGF
408
3e0192f6c241 NEW: End-of-Dive countdown displayed after surfacing
heinrichsweikamp
parents: 407
diff changeset
2133 bcf timeout_display
98
6f8e3a08011e 1.73beta rc1 (Added new customview for divemode)
heinrichsweikamp
parents: 83
diff changeset
2134 bcf menu3_active
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2135 clrf divesecs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2136 clrf samplesecs
627
8d2dc109ecfc NEW: Gaslist highlights "better gas" in divemode
heinrichsweikamp
parents: 626
diff changeset
2137 clrf better_gas_number ; number (1-5) of the "better gas" in divemode, =0: no better gas available
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2138 clrf apnoe_timeout_counter ; timeout in minutes
352
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
2139 clrf timeout_counter ; takes care of the timeout (Low byte)
544a96faa9f3 New "Quit sim" option in simulated dive mode, CF02 now allows more then 240seconds, Bugfix with runtime=1min in runtime simulator
Heinrichsweikamp
parents: 351
diff changeset
2140 clrf timeout_counter2 ; takes care of the timeout (High byte)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2141 clrf AlarmType ; Clear all alarms
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2142 bcf event_occured ; clear flag
274
a728b4a1b660 Setpoint changes stored in profile, EAD and END displayed in divemode (Customview 7)
heinrichsweikamp
parents: 263
diff changeset
2143 bcf setpoint_changed ; clear flag
730
ae641bcb0d02 store a bailout event in the logbook
heinrichsweikamp
parents: 722
diff changeset
2144 bcf store_bailout_event ; clear flag
111
ed7826c740a0 1.74beta rc1
heinrichsweikamp
parents: 106
diff changeset
2145 rcall reset_average1 ; Reset the resettable average depth
129
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2146 clrf average_depth_hold_total+0
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2147 clrf average_depth_hold_total+1
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2148 clrf average_depth_hold_total+2
06c4899ddb4b Custom views in dive mode configrable (New CF50-CF53)
Heinrichsweikamp
parents: 124
diff changeset
2149 clrf average_depth_hold_total+3 ; Clear Non-Resettable Average
517
a73a452ca155 Backed out changeset: b498245da3f1
heinrichsweikamp
parents: 516
diff changeset
2150 bcf depth_greater_100m ; clear flag
577
e3ffc6d62a63 minor clean
heinrichsweikamp
parents: 572
diff changeset
2151 ; setf last_diluent ; to be displayed after first calculation (range: 0 to 100 [%])
665
259e4c1bf3c2 grey-out TTS and ceiling after gas change (until new plan is ready)
heinrichsweikamp
parents: 659
diff changeset
2152 bcf dekostop_active
259e4c1bf3c2 grey-out TTS and ceiling after gas change (until new plan is ready)
heinrichsweikamp
parents: 659
diff changeset
2153 bcf decoplan_invalid
3
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
2154 bcf is_bailout ;=1: CC mode, but bailout active!
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
2155 bcf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
2156 bcf tts_extra_time ;=1: Compute TTS if extra time spent at current depth
598
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
2157 bcf show_safety_stop ;=1: Show the safety stop
f3735da18809 NEW: CF65: Show a safety stop for no-deco dives
heinrichsweikamp
parents: 595
diff changeset
2158 clrf safety_stop_countdown ; Clear count-down
780
de7fa2316913 add simple gas change countdown
heinrichsweikamp
parents: 776
diff changeset
2159 bcf gaschange_cnt_active ; Do not show the countdown on start
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2160 ; clear auto-SP flags
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2161 bcf sp1_switched
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2162 bcf sp2_switched
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2163 bcf sp3_switched
312
b7e4e74c0e17 New @5 variant: compute TTS if staying some extra time (CF58) at current depth.
JeanDo
parents: 311
diff changeset
2164
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2165 call get_free_EEPROM_location ; get last position in external EEPROM, may be up to 2 secs!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2166
319
4159c31abe31 BUGFIX surface pressure for deco in altitude.
JeanDo
parents: 313
diff changeset
2167 btfsc simulatormode_active
237
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2168 bra diveloop_boot_1
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2169 ; Normal mode = Surface pressure is the pressure 30mn before dive.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2170 movff last_surfpressure_30min+0,int_I_pres_surface+0 ; LOW copy surfacepressure to deco routine
237
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2171 movff last_surfpressure_30min+1,int_I_pres_surface+1 ; HIGH copy surfacepressure to deco routine
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2172 bra diveloop_boot_2
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2173
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2174 diveloop_boot_1:
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2175 ; Simulator mode: Surface pressure is 1bar.
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2176 movlw LOW .1000
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2177 movff WREG,int_I_pres_surface+0 ; LOW copy surfacepressure to deco routine
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2178 movlw HIGH .1000
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2179 movff WREG,int_I_pres_surface+1 ; HIGH copy surfacepressure to deco routine
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2180
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2181 diveloop_boot_2:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 323
diff changeset
2182 SAFE_2BYTE_COPY temperature,mintemp ; Reset Min-Temp registers
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2183
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2184 ; Init profile recording parameters
237
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2185 GETCUSTOM8 d'20' ; sample rate
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2186 movwf samplesecs_value ; to avoid EEPROM access in the ISR
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2187 GETCUSTOM8 d'21'
237
55178aa1f972 Hunting for NoFly bug...
JeanDo
parents: 233
diff changeset
2188 movwf divisor_temperature ; load divisors for profile storage
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2189 GETCUSTOM8 d'22'
457
993e681e89cf no decodata in logbook for apnea dives
heinrichsweikamp
parents: 453
diff changeset
2190 btfsc FLAG_apnoe_mode ; in Apnoe mode?
993e681e89cf no decodata in logbook for apnea dives
heinrichsweikamp
parents: 453
diff changeset
2191 movlw d'0' ; Yes, set to zero
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2192 movwf divisor_deco
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2193 GETCUSTOM8 d'23'
374
6ee9c849ad92 GF profile. GF and Decotype in Logbok
Heinrichsweikamp
parents: 373
diff changeset
2194 movwf divisor_gf
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2195 GETCUSTOM8 d'24'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2196 movwf divisor_ppo2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2197 GETCUSTOM8 d'25'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2198 movwf divisor_deco_debug
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2199 GETCUSTOM8 d'26'
367
584741726190 CNS Profile added
Heinrichsweikamp
parents: 361
diff changeset
2200 movwf divisor_cns
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2201
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2202 btfss FLAG_apnoe_mode ; In Apnoe mode?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2203 bra divemode1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2204 ; Overwrite some parameters in Apnoe mode....
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2205 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2206 movwf samplesecs_value ; to avoid EEPROM access in the ISR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2207
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2208 divemode1:
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2209 read_int_eeprom d'36' ; Read SP 1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2210 btfsc FLAG_const_ppO2_mode
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2211 movff EEDATA,char_I_const_ppO2 ; Set ppO2 setpoint if in ppO2 mode
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2212 movff EEDATA,ppO2_setpoint_store ; Store also in this byte...
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2213 bsf sp1_switched ; Set flag so we won't auto-switch to it again
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2214
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 16
diff changeset
2215 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2216 bcf low_battery_state ; clear flag for battery warning mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2217 bcf header_stored
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2218 bcf premenu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2219 bcf realdive
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2220 bsf update_divetime ; set flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2221 btfss simulatormode_active ; do not disable in simulator mode!
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
2222 call disable_rs232 ; Disable RS232
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2223
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2224 ; Read Start Gas and configure char_I_He_ratio, char_I_O2_ratio and char_I_N2_ratio
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2225 set_first_gas:
647
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2226 btfsc FLAG_const_ppO2_mode
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2227 bra set_first_gas_ccr ; In CCR mode
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2228 read_int_eeprom d'33' ; Read byte (stored in EEDATA)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2229 movff EEDATA,active_gas ; Read start gas (1-5)
353
b5b030c1ae7e Avoid spurious switch-depth stops with 3 or more gas.
JeanDo
parents: 349
diff changeset
2230 movff EEDATA,char_I_current_gas
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2231
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2232 decf active_gas,W ; Gas 0-4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2233 mullw d'4'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2234 movf PRODL,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2235 addlw d'7' ; = address for He ratio
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2236 movwf EEADR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2237 call read_eeprom ; Read He ratio
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2238 movff EEDATA,char_I_He_ratio ; And copy into hold register
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2239
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2240 decf EEADR,F
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2241 call read_eeprom ; Read O2 ratio
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2242 movff EEDATA, char_I_O2_ratio ; O2 ratio
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 291
diff changeset
2243
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2244 movff char_I_He_ratio, wait_temp ; copy into bank1 register
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2245 bsf STATUS,C ; Borrow bit
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2246 movlw d'100' ; 100%
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2247 subfwb wait_temp,W ; minus He
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2248 bsf STATUS,C ; Borrow bit
311
91371c7553f5 BUGFIX typo when passing Gas#4 to deko model (bug#43)
JeanDo
parents: 301
diff changeset
2249 subfwb EEDATA,W ; minus O2
91371c7553f5 BUGFIX typo when passing Gas#4 to deko model (bug#43)
JeanDo
parents: 301
diff changeset
2250 movff WREG, char_I_N2_ratio ; = N2!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2251
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
2252 ; Configure gaslist_active flag register
281
f8f865c70a0d no more sorted gaslist...
heinrichsweikamp
parents: 274
diff changeset
2253 read_int_eeprom d'27'
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 287
diff changeset
2254 movff EEDATA, gaslist_active
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2255 return ; Done with "boot"
647
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2256
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2257 set_first_gas_ccr: ; Set Diluent
655
8c01edcf57fc Allow any diluent to be "First gas" in CCR modes
heinrichsweikamp
parents: 647
diff changeset
2258 call get_first_diluent ; Read first diluent into lo(O2) and hi(He)
8c01edcf57fc Allow any diluent to be "First gas" in CCR modes
heinrichsweikamp
parents: 647
diff changeset
2259 movff hi,char_I_He_ratio ; And copy into hold register
8c01edcf57fc Allow any diluent to be "First gas" in CCR modes
heinrichsweikamp
parents: 647
diff changeset
2260 movff lo, char_I_O2_ratio ; O2 ratio
647
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2261 movff char_I_He_ratio, wait_temp ; copy into bank1 register
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2262 bsf STATUS,C ; Borrow bit
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2263 movlw d'100' ; 100%
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2264 subfwb wait_temp,W ; minus He
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2265 bsf STATUS,C ; Borrow bit
655
8c01edcf57fc Allow any diluent to be "First gas" in CCR modes
heinrichsweikamp
parents: 647
diff changeset
2266 subfwb lo,W ; minus O2
647
e6ac142e82b0 New Diluent Submenu in Divemode
heinrichsweikamp
parents: 643
diff changeset
2267 movff WREG, char_I_N2_ratio ; = N2!
816
df8cd5ffd993 BUGFIX: Load first diluent if <> 1 correctly
heinrichsweikamp
parents: 815
diff changeset
2268 read_int_eeprom d'115' ; Read First Diluent (1-5)
655
8c01edcf57fc Allow any diluent to be "First gas" in CCR modes
heinrichsweikamp
parents: 647
diff changeset
2269 movff EEDATA,active_diluent
818
3d9f56e0d18c more auto-sp work
heinrichsweikamp
parents: 816
diff changeset
2270 return ; Done with "boot"