Mercurial > public > mk2
comparison code_part1/OSTC_code_asm_part1/menu_ppO2.asm @ 0:96a35aeda5f2
Initial setup
author | heinrichsweikamp |
---|---|
date | Tue, 12 Jan 2010 15:05:59 +0100 |
parents | |
children | 6a94f96e9cea |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:96a35aeda5f2 |
---|---|
1 | |
2 ; OSTC - diving computer code | |
3 ; Copyright (C) 2008 HeinrichsWeikamp GbR | |
4 | |
5 ; This program is free software: you can redistribute it and/or modify | |
6 ; it under the terms of the GNU General Public License as published by | |
7 ; the Free Software Foundation, either version 3 of the License, or | |
8 ; (at your option) any later version. | |
9 | |
10 ; This program is distributed in the hope that it will be useful, | |
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 ; GNU General Public License for more details. | |
14 | |
15 ; You should have received a copy of the GNU General Public License | |
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 | |
18 | |
19 ; Constant ppO2 Setup menu | |
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com | |
21 ; written: 08/04/04 | |
22 ; last updated: 080904 | |
23 ; known bugs: | |
24 ; ToDo: | |
25 | |
26 menu_const_ppO2: | |
27 movlw d'1' | |
28 movwf menupos | |
29 | |
30 bcf menubit4 | |
31 bcf cursor | |
32 bcf sleepmode | |
33 clrf decodata+0 ; Here: # of SP | |
34 bcf first_FA ; Here: =1: -, =0: + | |
35 bcf second_FA ; Here: =1: 1, =0: 10 steps | |
36 | |
37 menu_const_ppO20: | |
38 call PLED_ClearScreen | |
39 call PLED_topline_box | |
40 | |
41 WIN_INVERT .1 ; Init new Wordprocessor | |
42 DISPLAYTEXT .111 ; Constant ppO2 Setup | |
43 WIN_INVERT .0 ; Init new Wordprocessor | |
44 | |
45 | |
46 menu_const_ppO21: | |
47 clrf timeout_counter2 | |
48 bcf menubit2 | |
49 bcf menubit3 | |
50 | |
51 WIN_LEFT .20 | |
52 WIN_TOP .35 | |
53 lfsr FSR2,letter | |
54 OUTPUTTEXT .112 ; SP# | |
55 movff decodata+0,lo | |
56 incf lo,F | |
57 bsf leftbind | |
58 output_99 | |
59 movlw ' ' | |
60 movwf POSTINC2 | |
61 movlw '(' | |
62 movwf POSTINC2 | |
63 | |
64 OUTPUTTEXT d'192' ; Dil. | |
65 movlw ' ' | |
66 movwf POSTINC2 | |
67 | |
68 read_int_eeprom d'33' ; Read byte (stored in EEDATA) | |
69 movff EEDATA,active_gas ; Read start gas (1-5) | |
70 | |
71 decf active_gas,W ; Gas 0-4 | |
72 mullw d'4' | |
73 movf PRODL,W | |
74 addlw d'6' ; = address for O2 ratio | |
75 movwf EEADR | |
76 call read_eeprom ; Read O2 ratio | |
77 movff EEDATA, lo ; O2 ratio | |
78 | |
79 | |
80 bsf leftbind | |
81 output_99 | |
82 | |
83 movlw '/' | |
84 movwf POSTINC2 | |
85 | |
86 decf active_gas,W ; Gas 0-4 | |
87 mullw d'4' | |
88 movf PRODL,W | |
89 addlw d'7' ; = address for He ratio | |
90 movwf EEADR | |
91 call read_eeprom ; Read He ratio | |
92 movff EEDATA,lo ; And copy into hold register | |
93 | |
94 bsf leftbind | |
95 output_99 | |
96 movlw ')' | |
97 movwf POSTINC2 | |
98 call word_processor | |
99 | |
100 | |
101 WIN_LEFT .20 | |
102 WIN_TOP .65 | |
103 | |
104 lfsr FSR2,letter | |
105 OUTPUTTEXT .97 ; "Current: " | |
106 movf decodata+0,W | |
107 addlw d'36' ; offset in eeprom | |
108 movwf EEADR | |
109 call read_eeprom ; ppO2 value | |
110 movff EEDATA,lo | |
111 clrf hi | |
112 bsf leftbind | |
113 output_16dp d'3' | |
114 bcf leftbind | |
115 movlw 'B' | |
116 movwf POSTINC2 | |
117 movlw 'a' | |
118 movwf POSTINC2 | |
119 movlw 'r' | |
120 movwf POSTINC2 | |
121 movlw ' ' | |
122 movwf POSTINC2 | |
123 call word_processor | |
124 | |
125 WIN_LEFT .20 | |
126 WIN_TOP .95 | |
127 | |
128 lfsr FSR2,letter | |
129 OUTPUTTEXT d'190' ; ppO2 + | |
130 call word_processor | |
131 | |
132 WIN_LEFT .20 | |
133 WIN_TOP .125 | |
134 | |
135 lfsr FSR2,letter | |
136 OUTPUTTEXT d'191' ; ppO2 - | |
137 call word_processor | |
138 | |
139 WIN_LEFT .20 | |
140 WIN_TOP .155 | |
141 | |
142 lfsr FSR2,letter | |
143 OUTPUTTEXT .89 ; "Default: " | |
144 movlw '1' | |
145 movwf POSTINC2 | |
146 movlw '.' | |
147 movwf POSTINC2 | |
148 movlw '0' | |
149 movwf POSTINC2 | |
150 movlw '0' | |
151 movwf POSTINC2 | |
152 call word_processor | |
153 | |
154 DISPLAYTEXT .11 ; Exit | |
155 call wait_switches ; Waits until switches are released, resets flag if button stays pressed! | |
156 call PLED_menu_cursor | |
157 | |
158 menu_const_ppO2_loop: | |
159 call check_switches_logbook | |
160 | |
161 btfsc menubit3 | |
162 bra menu_const_ppO22 ; move cursor | |
163 | |
164 btfsc menubit2 | |
165 bra do_menu_const_ppO2 ; call submenu | |
166 | |
167 btfsc divemode | |
168 goto restart ; dive started! | |
169 | |
170 btfsc onesecupdate | |
171 call timeout_surfmode | |
172 | |
173 btfsc onesecupdate | |
174 call set_dive_modes | |
175 | |
176 bcf onesecupdate ; 1 sec. functions done | |
177 | |
178 btfsc sleepmode | |
179 bra exit_menu_const_ppO2 | |
180 | |
181 bra menu_const_ppO2_loop | |
182 | |
183 menu_const_ppO22: | |
184 incf menupos,F | |
185 | |
186 movlw d'2' | |
187 cpfseq menupos ; =2? | |
188 bra menu_const_ppO22a ; No | |
189 incf menupos,F ; Skip pos. 2 | |
190 | |
191 menu_const_ppO22a: | |
192 movlw d'7' | |
193 cpfseq menupos ; =7? | |
194 bra menu_const_ppO23 ; No | |
195 movlw d'1' | |
196 movwf menupos | |
197 | |
198 menu_const_ppO23: | |
199 clrf timeout_counter2 | |
200 call PLED_menu_cursor | |
201 | |
202 ; debounce switches | |
203 call wait_switches ; Waits until switches are released, resets flag if button stays pressed! | |
204 bcf menubit3 ; clear flag | |
205 bra menu_const_ppO2_loop | |
206 | |
207 do_menu_const_ppO2: | |
208 dcfsnz menupos,F | |
209 bra next_ppO2 | |
210 dcfsnz menupos,F | |
211 bra change_ppo2_plus | |
212 dcfsnz menupos,F | |
213 bra change_ppo2_plus | |
214 dcfsnz menupos,F | |
215 bra change_ppo2_minus | |
216 dcfsnz menupos,F | |
217 bra change_ppo2_reset | |
218 exit_menu_const_ppO2: ; exit... | |
219 movlw d'2' | |
220 movwf menupos | |
221 goto more_menu2 | |
222 | |
223 change_ppo2_plus: | |
224 movf decodata+0,W ; read current value | |
225 addlw d'36' ; offset in memory | |
226 movwf EEADR | |
227 call read_eeprom ; Low-value | |
228 movff EEDATA,lo | |
229 | |
230 incf lo,F ; increase depth | |
231 movlw d'251' | |
232 cpfseq lo | |
233 bra change_ppo2_plus2 | |
234 movlw d'250' | |
235 movwf lo | |
236 change_ppo2_plus2: | |
237 movff lo,EEDATA ; write result | |
238 call write_eeprom ; save result in EEPROM | |
239 movlw d'3' | |
240 movwf menupos | |
241 bra menu_const_ppO21 | |
242 | |
243 change_ppo2_minus: | |
244 movf decodata+0,W ; read current value | |
245 addlw d'36' ; offset in memory | |
246 movwf EEADR | |
247 call read_eeprom ; Low-value | |
248 movff EEDATA,lo | |
249 | |
250 decf lo,F ; decrease depth | |
251 movlw d'255' | |
252 cpfseq lo | |
253 bra change_ppo2_minus2 | |
254 movlw d'0' | |
255 movwf lo | |
256 | |
257 change_ppo2_minus2: | |
258 movff lo,EEDATA ; write result | |
259 call write_eeprom ; save result in EEPROM | |
260 | |
261 movlw d'4' | |
262 movwf menupos | |
263 bra menu_const_ppO21 | |
264 | |
265 change_ppo2_reset: ; reset to 1.00Bar | |
266 movf decodata+0,W ; read current value | |
267 addlw d'36' ; offset in memory | |
268 movwf EEADR | |
269 movlw d'100' | |
270 movwf EEDATA | |
271 call write_eeprom ; save result in EEPROM | |
272 movlw d'5' | |
273 movwf menupos | |
274 bra menu_const_ppO21 | |
275 | |
276 next_ppO2: | |
277 incf decodata+0,F | |
278 movlw d'3' | |
279 cpfseq decodata+0 ; =3? | |
280 bra next_ppO22 | |
281 clrf decodata+0 ; yes, so reset to zero | |
282 next_ppO22: | |
283 movlw d'1' | |
284 movwf menupos | |
285 bra menu_const_ppO21 |