annotate code_part1/OSTC_code_asm_part1/simulator.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 2a0e5d884fc3
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: 807
diff changeset
2 ; OSTC Mk.2, 2N and 2C - diving computer code
807
c50296c3059e BUGFIX: Divetime had unwanted "." behind the minutes
heinrichsweikamp
parents: 760
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 ; menu "Simulator"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 ; written: 081210
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 ; last updated: 081210
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
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
26 ;=============================================================================
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
27 ; Temp data, local to this module, moved to ACCES0 area.
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
28 ;
760
e16e636def61 2.74 release
heinrichsweikamp
parents: 719
diff changeset
29 ; CBLOCK tmp ; Into safe (from C library) area.
e16e636def61 2.74 release
heinrichsweikamp
parents: 719
diff changeset
30 ; sim_btm_time ; Simulated bottom time
e16e636def61 2.74 release
heinrichsweikamp
parents: 719
diff changeset
31 ; sim_btm_depth ; Simulated max depth
e16e636def61 2.74 release
heinrichsweikamp
parents: 719
diff changeset
32 ; sim_CNS ; Backup CNS value during decoplanning.
e16e636def61 2.74 release
heinrichsweikamp
parents: 719
diff changeset
33 ; ENDC
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
34
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
35 ;=============================================================================
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
36
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
37 menu_simulator:
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: 344
diff changeset
38 movlw d'3'
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
39 movwf sim_btm_time ; Bottom time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
40 movlw d'15'
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
41 movwf sim_btm_depth ; Max. Depth
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
42 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
43 movwf menupos
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
44 clrf WREG ; Interval
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
45 movff WREG,char_I_dive_interval
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
46
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47 menu_simulator1:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
48 call DISP_brightness_full ;max. brightness
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
49 call DISP_ClearScreen
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
50 call DISP_simulator_mask
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
51
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52 menu_simulator2:
576
ab2686087bce faster font display, code cleaning
heinrichsweikamp
parents: 575
diff changeset
53 call menu_pre_loop_common ; Clear some menu flags, timeout and switches
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
54 call DISP_simulator_data
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
55 call DISP_menu_cursor
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
56
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
57 menu_simulator_loop:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58 call check_switches_menu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
59 menu_simulator_loop2:
575
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
60 btfsc onesecupdate
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
61 call menu_check_dive_and_timeout ; "Goto restart" or sets sleepmode flag
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
62 bcf onesecupdate ; End of one second tasks
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
63
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
64 btfsc menubit2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
65 goto menu_simulator_do ; call submenu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
66
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
67 btfss menubit
35
d4f0c097a7fa preparations for new gaslist
heinrichsweikamp
parents: 34
diff changeset
68 goto menu_simulator_exit
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
69
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 btfsc sleepmode
35
d4f0c097a7fa preparations for new gaslist
heinrichsweikamp
parents: 34
diff changeset
71 goto menu_simulator_exit
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
72
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
73 bra menu_simulator_loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
74
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
75 menu_simulator_do: ; calls submenu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
76 dcfsnz menupos,F
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
77 bra simulator_inc_interval
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
78 dcfsnz menupos,F
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
79 bra simulator_startdive
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
80 dcfsnz menupos,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
81 bra simulator_inc_bottomtime
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
82 dcfsnz menupos,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
83 bra simulator_inc_maxdepth
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
84 dcfsnz menupos,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
85 bra simulator_calc_deco
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
86
35
d4f0c097a7fa preparations for new gaslist
heinrichsweikamp
parents: 34
diff changeset
87 menu_simulator_exit:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
88 movlw d'4'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
89 movwf menupos
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
90 goto more_menu2 ; exit...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
91
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
92 simulator_inc_interval:
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
93 movff char_I_dive_interval,PRODL
389
a59532d2daf8 Change increment interval by 30min.
JeanDo
parents: 385
diff changeset
94 movlw .3
a59532d2daf8 Change increment interval by 30min.
JeanDo
parents: 385
diff changeset
95 addwf PRODL,F
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
96 movlw .24*6 ; Max 24h delay.
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
97 cpfslt PRODL
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
98 clrf PRODL
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
99 movff PRODL,char_I_dive_interval
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
100
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
101 movlw d'1'
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
102 movwf menupos
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
103 bra menu_simulator2
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
104
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105 simulator_inc_bottomtime:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
106 movlw d'2'
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
107 addwf sim_btm_time,F ; Here: Bottomtime in m
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
108 movlw d'199'
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
109 cpfslt sim_btm_time
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
110 movwf sim_btm_time
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
111 movlw d'3'
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
112 movwf menupos
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113 bra menu_simulator2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
114
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
115 simulator_inc_maxdepth:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
116 movlw d'3'
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
117 addwf sim_btm_depth,F ; Here: Maxdepth in m
415
d022c62a1df5 fixing issue with end-of-dive threshold in high-altitude mode
heinrichsweikamp
parents: 398
diff changeset
118 movlw d'120'
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
119 cpfslt sim_btm_depth
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
120 movwf sim_btm_depth
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
121 movlw d'4'
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
122 movwf menupos
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123 bra menu_simulator2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
124
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
125 ;=============================================================================
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
126
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 simulator_startdive:
33
6e5db85382a2 Speedy simulator! New Deco code test 1
heinrichsweikamp
parents: 32
diff changeset
128 ; Descent to -15m depth
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 ; Set standalone_simulator flag (Displays Simulator menu during simulation by pressing ENTER button)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130 ; Clear standalone_simulator after (any) dive
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
131 bsf simulatormode_active ; normal simulator mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
132 bsf standalone_simulator ; Standalone Simulator active
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
133
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
134 movff sim_btm_depth,xA+0
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135 clrf xA+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
136 movlw d'100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
137 movwf xB+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
138 clrf xB+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 call mult16x16 ;xA*xB=xC ; Depth in m*100
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140
62
2972a06b0785 1.71 beta in work
heinrichsweikamp
parents: 59
diff changeset
141 movlw LOW d'1000'
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
142 addwf xC+0,F
62
2972a06b0785 1.71 beta in work
heinrichsweikamp
parents: 59
diff changeset
143 movlw HIGH d'1000'
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 390
diff changeset
144 addwfc xC+1,F ; add 1000mbar
62
2972a06b0785 1.71 beta in work
heinrichsweikamp
parents: 59
diff changeset
145
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
146 movff xC+0,sim_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
147 movff xC+1,sim_pressure+1
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 292
diff changeset
148
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 292
diff changeset
149 ; This override is done in ISR too, but do it right now also:
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 292
diff changeset
150 movff sim_pressure+0,amb_pressure+0
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
151 movff sim_pressure+1,amb_pressure+1
385
af703be9ead2 Fix simulator start
heinrichsweikamp
parents: 370
diff changeset
152 call comp_air_pressure0 ; Make sure to have depth in rel_pressure:2
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
153
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
154 bcf menubit2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
155 bcf menubit3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
156 bcf menubit
576
ab2686087bce faster font display, code cleaning
heinrichsweikamp
parents: 575
diff changeset
157 call wait_switches ; Waits until switches are released, resets flag if button stays pressed!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
158
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
159 call simulator_save_tissue_data ; Stores 32 floats "pre_tissue" into bank3
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
160
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
161 movff char_I_dive_interval,WREG ; Any interval ?
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
162 iorlw 0 ; Test for null
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
163 btfss STATUS,Z
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
164 call deco_calc_dive_interval ; NZ: call interval subroutine.
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
165 movlb 1
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
166
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
167 movlw d'3' ; Begin of deco cycle (reset table).
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
168 movff WREG,char_O_deco_status ; Reset Deco module.
200
0a3ca358c684 BUGFIX clear decotable at begin of simulator mode.
JeanDo
parents: 197
diff changeset
169
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
170 bsf divemode ; Set divemode flag
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
171 ostc_debug 'P' ; Sends debug-information to screen if debugmode active
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
172 goto diveloop ; Start Divemode
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
173
279
8514588eb6a2 Mark gas-switch stops for decoplans, displayed in yellow.
JeanDo
parents: 278
diff changeset
174 ;=============================================================================
8514588eb6a2 Mark gas-switch stops for decoplans, displayed in yellow.
JeanDo
parents: 278
diff changeset
175 ; Show decoplanning result.
8514588eb6a2 Mark gas-switch stops for decoplans, displayed in yellow.
JeanDo
parents: 278
diff changeset
176 ;
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
177 simulator_show_decoplan:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
178 call DISP_ClearScreen
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
179 call DISP_simdata_screen
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
180 call divemenu_see_decoplan
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
181
184
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
182 WIN_LEFT .0
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
183 call DISP_standard_color
184
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
184
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
185 ; Display TTS, if any...
168
494587193f5d Use 16bits for TTS sum.
JeanDo
parents: 159
diff changeset
186 movff int_O_ascenttime+0,lo
494587193f5d Use 16bits for TTS sum.
JeanDo
parents: 159
diff changeset
187 movff int_O_ascenttime+1,hi
494587193f5d Use 16bits for TTS sum.
JeanDo
parents: 159
diff changeset
188 movf lo,W
494587193f5d Use 16bits for TTS sum.
JeanDo
parents: 159
diff changeset
189 iorwf hi,W
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
190 bz simulator_decoplan_notts
184
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
191
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
192 WIN_TOP .162
184
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
193 lfsr FSR2, letter
279
8514588eb6a2 Mark gas-switch stops for decoplans, displayed in yellow.
JeanDo
parents: 278
diff changeset
194 OUTPUTTEXT .85 ; TTS
184
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
195 STRCAT ": "
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
196 bsf leftbind
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
197 output_16
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
198 STRCAT_PRINT "'"
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
199
016c45a0caaf Enable to compile p2_deco.c on other platforms.
JeanDo
parents: 169
diff changeset
200 simulator_decoplan_notts:
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
201 WIN_TOP .190 ; Print calculated CNS before and after dive
440
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
202
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
203 incf sim_CNS,W ; Detect CNS simulation overflow.
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
204 bz simulator_decoplan_cns_1
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
205
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
206 movlw .100 ; Detect if CNS > 100%
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
207 cpfslt sim_CNS
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
208 call DISP_warnings_color ; Yes: draw in red !
440
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
209
445
6e57b5bb98ce localisation part 1 from Sergei
heinrichsweikamp
parents: 442
diff changeset
210 STRCPY TXT_CNS4
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
211 movff char_O_CNS_fraction,lo ; Current CNS, before dive.
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
212 output_8
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
213 STRCAT "%\x92" ; Right-arrow
440
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
214
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
215 movff sim_CNS,lo ; Get back CNS value.
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
216 output_8 ; CNS after dive.
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
217 STRCAT_PRINT "%"
440
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
218 bra simulator_decoplan_cns_2
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
219
440
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
220 simulator_decoplan_cns_1:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
221 call DISP_warnings_color ; Yes: draw in red !
445
6e57b5bb98ce localisation part 1 from Sergei
heinrichsweikamp
parents: 442
diff changeset
222 STRCPY_PRINT TXT_CNSGR10
440
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
223
a17b85b0fbcc NEW: Decoplanner Warms in red if CNS is too high.
JeanDo
parents: 439
diff changeset
224 simulator_decoplan_cns_2:
717
91ae251d379f "ostc3-style" menu titles
heinrichsweikamp
parents: 682
diff changeset
225 call DISP_divemask_color
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
226 DISPLAYTEXT .188 ; Sim. Results:
717
91ae251d379f "ostc3-style" menu titles
heinrichsweikamp
parents: 682
diff changeset
227 call DISP_standard_color
34
5dbdc08e5460 New Simulator results screen
heinrichsweikamp
parents: 33
diff changeset
228
64
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
229 simulator_show_decoplan1:
576
ab2686087bce faster font display, code cleaning
heinrichsweikamp
parents: 575
diff changeset
230 call wait_switches ; Waits until switches are released, resets flag if button stays pressed!
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
231 simulator_show_decoplan2:
575
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
232 btfsc uart_dump_screen ; Asked to dump screen contains ?
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
233 call dump_screen ; Yes!
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
234
575
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
235 btfsc onesecupdate
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
236 call menu_check_dive_and_timeout ; "Goto restart" or sets sleepmode flag
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
237
cbdcbbc91877 some code cleaning
heinrichsweikamp
parents: 537
diff changeset
238 bcf onesecupdate ; End of one second tasks
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
239
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
240 simulator_show_decoplan3:
64
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
241 btfsc switch_right
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
242 bra menu_simulator1 ; Quit display
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
243
64
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
244 btfsc switch_left
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
245 bra simulator_show_decoplan5 ; Next decoplan-page.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
246
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
247 btfsc sleepmode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
248 goto more_menu
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
249
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
250 bra simulator_show_decoplan2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
251
64
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
252 simulator_show_decoplan5:
124
4f9f477bb452 Rewrite display of decoplan:
JeanDo
parents: 123
diff changeset
253 incf decoplan_page,F
64
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
254 btfsc last_ceiling_gf_shown ; last ceiling shown?
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
255 bra simulator_show_decoplan5_0 ; All done, clear and return
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
256
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
257 call DISP_decoplan ; Re-Draw Current page of GF Decoplan
64
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
258 bra simulator_show_decoplan1
e8756eba54ee 1.71beta - more deco
heinrichsweikamp
parents: 63
diff changeset
259
231
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
260 ;---- In OCR mode, show the gas Usage special page ---------------------------
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
261 simulator_show_decoplan5_0:
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
262 btfss display_see_deco ; Already displayed ?
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
263 bra menu_simulator1 ; Exit to menu.
231
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
264
169
e26f49674956 Merge decoplan display for both GF and Buhlmann models.
JeanDo
parents: 168
diff changeset
265 bcf display_see_deco ; clear flag
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
266
231
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
267 btfsc FLAG_const_ppO2_mode ; In CCR mode ?
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
268 bra menu_simulator1 ; YES: finished.
231
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
269
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 279
diff changeset
270 ; Make sure to pass first gas
240
d995e220ddac BUGFIX Gas Usage when first gas is not #1 (bug BB22).
JeanDo
parents: 236
diff changeset
271 clrf EEADRH
290
4dbff2aa31ee Hunting for refusing to ignore disabled gas in list...
JeanDo
parents: 279
diff changeset
272 read_int_eeprom .33 ; First gas.
240
d995e220ddac BUGFIX Gas Usage when first gas is not #1 (bug BB22).
JeanDo
parents: 236
diff changeset
273 movff EEDATA,char_I_first_gas
225
2dc4a7340510 BUGFIX Gas usage for unsorted gas list.
JeanDo
parents: 224
diff changeset
274
2dc4a7340510 BUGFIX Gas usage for unsorted gas list.
JeanDo
parents: 224
diff changeset
275 ; Compute gas consumption for each tank.
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
276 call deco_gas_volumes
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
277 movlb 1
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
278
230
9406a5b0ba5e BUGFIX Clear bottom stops when display gas usage (bug BB23)
JeanDo
parents: 229
diff changeset
279 ; Clear the complete stop result column:
682
8aaacf6eee3f right allignment
heinrichsweikamp
parents: 681
diff changeset
280 WIN_BOX_BLACK .0, .239, .85, .159 ;top, bottom, left, right
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
281
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
282 movlw d'10'
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
283 movwf waitms_temp ; Row for gas list is .10+.25
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
284 clrf wait_temp ; Gas counter
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
285 lfsr FSR0,int_O_gas_volumes ; Initialize indexed addressing.
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
286
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
287 WIN_LEFT .90 ; Set column
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
288 call DISP_standard_color
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
289
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
290 simulator_show_decoplan5_loop:
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
291 incf wait_temp,F ; Increment gas #
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
292
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
293 movlw .25
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
294 addwf waitms_temp,F ; Increase row position
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
295 movff waitms_temp,win_top ; Set Row
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
296
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
297 movff POSTINC0,lo ; Read (16bit) result, low first,
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
298 movff POSTINC0,hi ; then high.
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
299 movf lo,W ; Null ?
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
300 iorwf hi,W
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
301 bz simulator_show_decoplan5_1 ; Skip printing.
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
302
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
303 movf lo,W ; == 65535 (saturated ?)
225
2dc4a7340510 BUGFIX Gas usage for unsorted gas list.
JeanDo
parents: 224
diff changeset
304 andwf hi,W
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
305 incf WREG
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
306 bnz simulator_show_decoplan5_2
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
307 call DISP_warnings_color
265
ab8ce7de2b46 BUGFIX zero gas rate (bug bb28).
JeanDo
parents: 263
diff changeset
308 STRCPY_PRINT "= xxxx.x"
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
309 call DISP_standard_color
265
ab8ce7de2b46 BUGFIX zero gas rate (bug bb28).
JeanDo
parents: 263
diff changeset
310 bra simulator_show_decoplan5_1
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
311
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
312 simulator_show_decoplan5_2:
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
313 STRCPY "= "
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
314
232
59c479181724 Gas Usage: left aligned (bug BB25).
JeanDo
parents: 231
diff changeset
315 bsf leftbind
441
4826dd98514b NEW: Decoplanner OC volumes in liters (or bars), up to 65000.
JeanDo
parents: 440
diff changeset
316 output_16 ; No decimal anymore.
232
59c479181724 Gas Usage: left aligned (bug BB25).
JeanDo
parents: 231
diff changeset
317 bcf leftbind
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
318 call word_processor ; No unit: can be bars or litters.
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
319
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
320 ; Loop for all 5 gas
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
321 simulator_show_decoplan5_1:
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
322 movlw d'5' ; list all five gases
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
323 cpfseq wait_temp ; All gases shown?
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
324 bra simulator_show_decoplan5_loop ; No
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
325
719
ad5ab9910820 decoplan bargraph
heinrichsweikamp
parents: 717
diff changeset
326 call DISP_divemask_color
231
f9d42f8ff97b BUGFIX Don't show (nosense) gas consumption in CCR mode (bug BB20).
JeanDo
parents: 230
diff changeset
327 DISPLAYTEXTH .301 ; OCR Gas Usage:
719
ad5ab9910820 decoplan bargraph
heinrichsweikamp
parents: 717
diff changeset
328 call DISP_standard_color
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
329
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
330 bra simulator_show_decoplan1
169
e26f49674956 Merge decoplan display for both GF and Buhlmann models.
JeanDo
parents: 168
diff changeset
331
271
5c17b2b4b9dd Minor comments
JeanDo
parents: 270
diff changeset
332 ;=============================================================================
5c17b2b4b9dd Minor comments
JeanDo
parents: 270
diff changeset
333 ; OSTC Simulator: compute a new runtime
5c17b2b4b9dd Minor comments
JeanDo
parents: 270
diff changeset
334 ;
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
335 simulator_calc_deco:
664
9c13bf8a3033 Ignore decoplanner in gauge and apnoe mode
heinrichsweikamp
parents: 596
diff changeset
336 btfsc gauge_mode ; In Gauge mode?
9c13bf8a3033 Ignore decoplanner in gauge and apnoe mode
heinrichsweikamp
parents: 596
diff changeset
337 bra menu_simulator ; Yes, igonore decoplaner
9c13bf8a3033 Ignore decoplanner in gauge and apnoe mode
heinrichsweikamp
parents: 596
diff changeset
338 btfsc FLAG_apnoe_mode ; In Apnoe mode?
9c13bf8a3033 Ignore decoplanner in gauge and apnoe mode
heinrichsweikamp
parents: 596
diff changeset
339 bra menu_simulator ; Yes, igonore decoplaner
9c13bf8a3033 Ignore decoplanner in gauge and apnoe mode
heinrichsweikamp
parents: 596
diff changeset
340
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
341 call simulator_save_tissue_data ; Stores 32 floats "pre_tissue" into bank3
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
342
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
343 movff char_I_dive_interval,WREG ; Any interval ?
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
344 iorlw 0 ; Test for null
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
345 btfss STATUS,Z
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
346 call deco_calc_dive_interval ; NZ: call interval subroutine.
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
347 movlb 1
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
348
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
349 bsf simulatormode_active ; normal simulator mode
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
350 bsf standalone_simulator ; Standalone Simulator active
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
351 bsf no_sensor_int ; Disable sensor interrupt
390
a847f416e67e Debugging timer1
heinrichsweikamp
parents: 389
diff changeset
352 clrf T3CON ; Disable timer3 counter,
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
353 clrf TMR3L ; so the simu won't stop right away.
537
3091628b2742 BUGFIX: Spurious logbook read issue
heinrichsweikamp
parents: 519
diff changeset
354 nop
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
355 clrf TMR3H
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
356
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
357 call diveloop_boot ; configure gases, etc.
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
358
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
359 ; Save dive parameters for gas volume estimation:
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
360 movff sim_btm_depth,char_I_bottom_depth
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
361 movff sim_btm_time,char_I_bottom_time
224
49c90c5d9603 Gas usage
JeanDo
parents: 200
diff changeset
362
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
363 movff sim_btm_depth,xA+0 ; Bottom depth.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
364 clrf xA+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
365 movlw d'100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
366 movwf xB+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
367 clrf xB+1
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
368 call mult16x16 ;xA*xB=xC, Depth in m*100
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
369
62
2972a06b0785 1.71 beta in work
heinrichsweikamp
parents: 59
diff changeset
370 movlw LOW d'1000'
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
371 addwf xC+0,F
62
2972a06b0785 1.71 beta in work
heinrichsweikamp
parents: 59
diff changeset
372 movlw HIGH d'1000'
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 390
diff changeset
373 addwfc xC+1,F ; add 1000mbar
62
2972a06b0785 1.71 beta in work
heinrichsweikamp
parents: 59
diff changeset
374
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
375 movff xC+0,sim_pressure+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
376 movff xC+1,sim_pressure+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
377
717
91ae251d379f "ostc3-style" menu titles
heinrichsweikamp
parents: 682
diff changeset
378 call DISP_divemask_color
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
379 DISPLAYTEXT .12 ; "Wait..."
717
91ae251d379f "ostc3-style" menu titles
heinrichsweikamp
parents: 682
diff changeset
380 call DISP_standard_color
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
381
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 292
diff changeset
382 ; This override is done in ISR too, but do it right now also:
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 292
diff changeset
383 movff sim_pressure+0,amb_pressure+0
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
384 movff sim_pressure+1,amb_pressure+1
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
385
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
386 call divemode_check_decogases ; Checks for decogases and sets the gases
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
387 call divemode_prepare_flags_for_deco
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
388 call set_first_gas ; Set current N2/He/O2 ratios.
593
46e9ccd0eca7 pSCR CNS in simulator
heinrichsweikamp
parents: 592
diff changeset
389 call set_actual_ppo2 ; Then configure char_I_actual_ppO2 (For CNS)
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
390
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
391 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: 576
diff changeset
392 movlw .6
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
393 cpfseq EEDATA
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
394 bra simulator_calc_deco1
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
395 ; 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: 576
diff changeset
396 call compute_pscr_ppo2 ; pSCR ppO2 into sub_c:2
596
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
397 movff sub_c+0,xA+0
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
398 movff sub_c+1,xA+1
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
399 movlw d'100'
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
400 movwf xB+0
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
401 clrf xB+1
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
402 call div16x16 ; /100
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
403 tstfsz xC+1 ; Is ppO2 > 2.55bar ?
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
404 setf xC+0 ; yes: bound to 2.55... better than wrap around.
d7eeaffd8fc1 CNS in planner (pSCR-GF)
heinrichsweikamp
parents: 593
diff changeset
405 movff xC+0,char_I_actual_ppO2 ; copy last ppO2 to buffer register (for pSCR CNS)
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
406 movff sub_c+0,xA+0
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
407 movff sub_c+1,xA+1
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
408 movlw LOW .10
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
409 movwf xB+0
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
410 movlw HIGH .10
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
411 movwf xB+1
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
412 call mult16x16 ;xA*xB=xC -> xC:4 = ppO2*1000
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
413
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
414 SAFE_2BYTE_COPY amb_pressure, xB
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
415 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: 576
diff changeset
416 ; xC+0 has O2 in percent
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
417 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: 576
diff changeset
418
593
46e9ccd0eca7 pSCR CNS in simulator
heinrichsweikamp
parents: 592
diff changeset
419
592
cda5b45b953f NEW: Deco mode "pSCR-GF": Computes deco and CNS based on pSCR parameters (CF62/63)
heinrichsweikamp
parents: 576
diff changeset
420 simulator_calc_deco1:
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
421 ; First minute is special: init everything.
200
0a3ca358c684 BUGFIX clear decotable at begin of simulator mode.
JeanDo
parents: 197
diff changeset
422 movlw d'3' ; Begin of deco cycle (reset table).
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
423 movff WREG,char_O_deco_status ; Reset Deco module.
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
424
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
425 movlw d'1'
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
426 movff WREG,char_I_step_is_1min ; 1 minute mode.
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
427
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
428 call deco_calc_hauptroutine ; Reset table + sim one minute for descent.
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
429 call deco_calc_CNS_fraction ; Also calculate CNS (in 1min loop)
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
430 movlb b'00000001' ; rambank 1 selected
32
a776039bda63 simulator-speed increased
heinrichsweikamp
parents: 31
diff changeset
431
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
432 decf sim_btm_time,F ; One minute done.
439
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
433 bz simulator_calc_deco_loop_end
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
434
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
435 ; Loop for bottom time duration
32
a776039bda63 simulator-speed increased
heinrichsweikamp
parents: 31
diff changeset
436 simulator_calc_deco_loop2:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
437 call DISP_simulator_data ; Update display of bottom time.
32
a776039bda63 simulator-speed increased
heinrichsweikamp
parents: 31
diff changeset
438
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
439 call deco_calc_tissue ; JUST calc tissue (faster).
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
440 call deco_calc_CNS_fraction ; Also calculate CNS (in 1min loop)
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
441 movlb b'00000001' ; rambank 1 selected
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
442 ostc_debug 'C' ; Sends debug-information to screen if debugmode active
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
443
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
444 decfsz sim_btm_time,F ; Decrement bottom time,
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
445 bra simulator_calc_deco_loop2 ; and loop while not finished.
32
a776039bda63 simulator-speed increased
heinrichsweikamp
parents: 31
diff changeset
446
439
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
447 ; Now the bottom time is finish, restart a full ascent simulation:
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
448 simulator_calc_deco_loop_end:
32
a776039bda63 simulator-speed increased
heinrichsweikamp
parents: 31
diff changeset
449 movlw d'0'
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
450 movff WREG,char_I_step_is_1min ; Back to 2 second deco mode
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
451
271
5c17b2b4b9dd Minor comments
JeanDo
parents: 270
diff changeset
452 clrf timeout_counter2 ; timeout used as maxloop here
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
453 movff char_I_bottom_depth,char_O_deco_last_stop
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
454
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
455 simulator_calc_deco2:
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
456 call deco_calc_hauptroutine ; calc_tissue
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
457 movlb b'00000001' ; rambank 1 selected
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
458
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
459 movff char_O_deco_last_stop,sim_btm_depth
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 664
diff changeset
460 call DISP_simulator_data ; Animate ascent simu.
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
461
271
5c17b2b4b9dd Minor comments
JeanDo
parents: 270
diff changeset
462 dcfsnz timeout_counter2,F ; Abort loop (max. 256 tries)?
262
a9f8c87dda06 Quick fix for non-stopping simulator
heinrichsweikamp
parents: 240
diff changeset
463 bra simulator_calc_deco3 ; Yes...
a9f8c87dda06 Quick fix for non-stopping simulator
heinrichsweikamp
parents: 240
diff changeset
464
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
465 movff char_O_deco_status,WREG
278
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
466 iorwf WREG ; deco_status=0 if decompression calculation done
17aab4ca0547 BUGFIX CCR decoplan fails (bug bb42).
JeanDo
parents: 271
diff changeset
467 bnz simulator_calc_deco2 ; Not finished
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
468
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
469 ; Finished
262
a9f8c87dda06 Quick fix for non-stopping simulator
heinrichsweikamp
parents: 240
diff changeset
470 simulator_calc_deco3:
439
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
471 call deco_calc_CNS_planning ; Compute cNS after full ascent.
442
9cec10e64077 movlb after deco_calc_CNS_planning
heinrichsweikamp
parents: 441
diff changeset
472 movlb 0x01 ; Back to RAM Bank1
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
473 movff char_O_CNS_fraction,sim_CNS ; Save calculated CNS.
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
474 rcall simulator_restore_tissue_data ; Restore CNS & 32 floats "pre_tissue" from vault
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
475
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
476 bcf simulatormode_active ; normal simulator mode
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
477 bcf standalone_simulator ; Standalone Simulator active
269
be06783f533b hunting for bug#30 - solved by disabling timer3 (?)
heinrichsweikamp
parents: 265
diff changeset
478 bcf no_sensor_int ; Re-enable sensor interrupt
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
479
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
480 WAITMS d'250'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
481 WAITMS d'250'
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
482 WAITMS d'250' ; Wait for Pressure Sensor to get real pressure again...
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
483
335
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 292
diff changeset
484 movlw d'5' ; Pre-Set Cursor to "Show Decoplan"
197
f15e804ff67f Gas switch delay
JeanDo
parents: 184
diff changeset
485 movwf menupos
430
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
486 movff char_I_bottom_time,sim_btm_time ; Restore bottom time,
f36b93f2fbed Minor logbook cleanups.
JeanDo
parents: 415
diff changeset
487 movff char_I_bottom_depth,sim_btm_depth ; and depth.
369
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
488
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
489 clrf timeout_counter2 ; Restart menu timeout.
93c0cb14b0d2 Dive interval function
JeanDo
parents: 344
diff changeset
490 bra simulator_show_decoplan ; Done.
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
491
439
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
492 ;=============================================================================
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
493
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
494 simulator_save_tissue_data:
335
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 292
diff changeset
495 bsf restore_deco_data ; Set restore flag
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 292
diff changeset
496 ostc_debug 'S' ; Sends debug-information to screen if debugmode active
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 108
diff changeset
497 call deco_push_tissues_to_vault
335
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 292
diff changeset
498 movlb 0x01 ; Back to RAM Bank1
d36fe3651d56 Updated to 1.91beta
JeanDo
parents: 292
diff changeset
499 ostc_debug 'T' ; Sends debug-information to screen if debugmode active
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
500 return
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
501
439
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
502 ;=============================================================================
b9cf06de8aca BUGFIX: Decoplanner accumulates CNS during ascent (bug #55)
JeanDo
parents: 430
diff changeset
503
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
504 simulator_restore_tissue_data:
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 225
diff changeset
505 bcf restore_deco_data ; clear restore flag
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 225
diff changeset
506 ostc_debug 'S' ; Sends debug-information to screen if debugmode active
292
21a0f7393468 New CNS calculation in decoplan.
JeanDo
parents: 290
diff changeset
507 call deco_pull_tissues_from_vault ; Restore CNS too...
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
508 movlb 0x01 ; Back to RAM Bank1
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 225
diff changeset
509 ostc_debug 'T' ; Sends debug-information to screen if debugmode active
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
510
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
511 ostc_debug 'G' ; Sends debug-information to screen if debugmode active
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 108
diff changeset
512 call deco_calc_desaturation_time ; calculate desaturation time
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 225
diff changeset
513 movlb b'00000001' ; select ram bank 1
519
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
514
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
515 ; Reset gradient factor until next computation, to avoid spurious
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
516 ; displays after simulation.
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
517 clrf WREG
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
518 movff WREG,char_O_gradient_factor
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
519 movff WREG,char_O_relative_gradient_GF
154b1d1c489e NEW added GF surface display.
JeanDo
parents: 445
diff changeset
520
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 225
diff changeset
521 ; Note: should not reset nofly-time here: the true value have continued to be decremented
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 225
diff changeset
522 ; during simulation, which is the right thing to do...
49
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
523 ostc_debug 'H' ; Sends debug-information to screen if debugmode active
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
524
cd5b650920f6 1.70...
heinrichsweikamp
parents: 47
diff changeset
525 return