Mercurial > public > mk2
annotate code_part1/OSTC_code_asm_part1/dive_icons.asm @ 660:99dea4fe641f
2.56beta release
author | heinrichsweikamp |
---|---|
date | Thu, 08 Nov 2012 17:15:40 +0100 |
parents | 420e62cd88ad |
children |
rev | line source |
---|---|
110 | 1 ;============================================================================= |
2 ; | |
3 ; File dive_icons.asm | |
4 ; | |
5 ; Draw Air/Nitrox/Trimix colored icon on surface mode. | |
6 ; | |
7 ; This program is free software: you can redistribute it and/or modify | |
8 ; it under the terms of the GNU General Public License as published by | |
9 ; the Free Software Foundation, either version 3 of the License, or | |
10 ; (at your option) any later version. | |
11 ; | |
12 ; This program is distributed in the hope that it will be useful, | |
13 ; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 ; GNU General Public License for more details. | |
16 ; | |
17 ; You should have received a copy of the GNU General Public License | |
18 ; along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 ; | |
20 ; Copyright (c) 2010, JD Gascuel. | |
21 ;============================================================================= | |
22 ; HISTORY | |
23 ; 2010-12-21 : [jDG] Creation | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
24 ; 2011-01-03 : [jDG] Force first gas to be active from depth=0. |
110 | 25 ; |
26 ; RATIONALS: Enabled gazes are used to predict TTS in divemode, hence they | |
27 ; are a critical aspect that should be double-checked before dive. | |
28 ; | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
29 ; Known bug: |
110 | 30 ;============================================================================= |
123 | 31 mixtype_icons code |
32 | |
33 ;============================================================================= | |
110 | 34 ; Display either Air, Nitrox, or Trimix icon (in surface mode). |
35 ; Inputs: None: explore the gaz list. | |
36 ; Ouputs: None. | |
37 ; Trashed: hi:lo, PROD, and registers trashed by color_processor.asm | |
38 dive_type_icons: | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
39 ;---- Don't display when not in the right deco mode -------------- |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
40 btfsc FLAG_apnoe_mode ; Apnoe selected ? |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
41 return ; YES: just return. |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
42 btfsc gauge_mode ; gauge mode ? |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
43 return ; YES: also return. |
644 | 44 btfsc FLAG_const_ppO2_mode; Not in CC modes |
45 return | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
46 |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
47 ;---- Don't display CF#41 is false ------------------------------- |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
48 GETCUSTOM8 d'41' ; Read CF#41 |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
49 btfss WREG,0 ; Set ? |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
50 return ; NO: return |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
51 |
110 | 52 ;---- Common setup ----------------------------------------------- |
53 movlw .170 | |
123 | 54 movff WREG, win_top |
110 | 55 movlw .110 |
123 | 56 movff WREG, win_leftx2 |
110 | 57 movlw UPPER(dive_air_block) |
58 movwf TBLPTRU | |
59 | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
60 ;---- Explore gas list ------------------------------------------- |
145 | 61 ; EEADR <-- 4*gas# + 6 |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
62 ; EEADR-2 = default O2% |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
63 ; EEADR-1 = default He% |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
64 ; EEADR+0 = current O2% |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
65 ; EEADR+1 = current He% |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
66 ; EEADR+4 = next gaz current O2% |
110 | 67 |
145 | 68 clrf EEADRH ; read gas flag register --> hi |
69 movlw .27 | |
70 movwf EEADR | |
71 call read_eeprom | |
110 | 72 movff EEDATA,hi |
145 | 73 rlcf hi,F ; Push a dummy bit. |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
74 setf lo ; Start with gas# -1 |
110 | 75 clrf PRODL ; =0 : no nitrox found yet. |
76 | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
77 movlw .33 ; Read first gas #. |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
78 movwf EEADR |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
79 call read_eeprom |
145 | 80 movff EEDATA,PRODH ; first --> PRODH (1..5) |
81 | |
82 dive_type_loop: | |
83 incf lo,F ; Next gaz number. Range 0..4 | |
84 | |
85 rrcf hi,F ; Rotate BEFORE checking active gas! | |
86 | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
87 incf lo,W ; Current gas# 1..5 |
145 | 88 subwf PRODH,W ; == first gas ? |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
89 bz dive_type_loop_2 ; YES: analyse that gas ! |
145 | 90 |
91 btfss hi,0 ; Is this gas enabled ? | |
92 bra dive_type_loop_9 ; No: disabled. | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
93 |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
94 movlw .28 ; Switch depth is at gas#+28 |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
95 addwf lo,W |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
96 movwf EEADR ; address in EEPROM. |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
97 call read_eeprom ; Read depth |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
98 clrf WREG |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
99 cpfsgt EEDATA ; is depth > 0 ? |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
100 bra dive_type_loop_9 ; NO: disabled too. |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
101 |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
102 dive_type_loop_2: |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
103 rlncf lo,W ; Gas# times 4 |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
104 rlncf WREG |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
105 addlw 4+2 ; 6 + 4 * gas# |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
106 movwf EEADR ; address in EEPROM for current O2. |
110 | 107 call read_eeprom ; Read O2 % |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
108 |
110 | 109 movlw .21 |
110 cpfseq EEDATA ; O2 == 21% ? | |
111 setf PRODL ; NO: not simple air ! | |
112 | |
113 incf EEADR ; Read He % | |
114 call read_eeprom | |
115 decf EEADR | |
116 clrf WREG ; H2 == 0% ? | |
117 cpfseq EEDATA | |
118 bra dive_trimix_icon ; No: go for the Tx icon, now. | |
119 | |
120 dive_type_loop_9: | |
121
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
121 movlw 4 ; Already done all gas ? (index 0..4) |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
122 cpfseq lo ; gas# == 4 ? |
e0f29e20bd24
Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents:
110
diff
changeset
|
123 bra dive_type_loop ; NO: loop... |
110 | 124 |
125 btfsc PRODL,0 ; Did we find a nitrox gaz ? | |
126 bra dive_nitrox_icon ; YES: display nitrox icon.;. | |
127 | |
128 ;---- Draw air --------------------------------------------------- | |
129 dive_air_icon: | |
130 movlw HIGH(dive_air_block) | |
131 movwf TBLPTRH | |
132 movlw LOW(dive_air_block) | |
133 movwf TBLPTRL | |
134 bra dive_gaz_99 | |
135 | |
136 dive_nitrox_icon: | |
137 movlw HIGH(dive_nitrox_block) | |
138 movwf TBLPTRH | |
139 movlw LOW(dive_nitrox_block) | |
140 movwf TBLPTRL | |
141 bra dive_gaz_99 | |
142 | |
143 dive_trimix_icon: | |
144 movlw HIGH(dive_trimix_block) | |
145 movwf TBLPTRH | |
146 movlw LOW(dive_trimix_block) | |
147 movwf TBLPTRL | |
148 | |
149 dive_gaz_99: | |
123 | 150 call color_image |
110 | 151 movlb 1 ; Back to bank 1. |
152 return | |
153 | |
154 ;============================================================================= | |
155 | |
156 #include dive_air.inc | |
157 #include dive_nitrox.inc | |
158 #include dive_trimix.inc | |
159 |