annotate code_part1/OSTC_code_asm_part1/dive_icons.asm @ 334:4ccdc72ec0e5

BUGFIX minor error in gas-switch algo (spurious surface decostop rarely added).
author JeanDo
date Thu, 12 May 2011 13:59:13 +0200
parents 8bda2452a532
children 420e62cd88ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
1 ;=============================================================================
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
2 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
3 ; File dive_icons.asm
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
4 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
5 ; Draw Air/Nitrox/Trimix colored icon on surface mode.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
6 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
7 ; This program is free software: you can redistribute it and/or modify
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
8 ; it under the terms of the GNU General Public License as published by
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
9 ; the Free Software Foundation, either version 3 of the License, or
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
10 ; (at your option) any later version.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
11 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
12 ; This program is distributed in the hope that it will be useful,
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
13 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
14 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
15 ; GNU General Public License for more details.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
16 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
17 ; You should have received a copy of the GNU General Public License
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
18 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
19 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
20 ; Copyright (c) 2010, JD Gascuel.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
21 ;=============================================================================
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
22 ; HISTORY
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
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
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
25 ;
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
26 ; RATIONALS: Enabled gazes are used to predict TTS in divemode, hence they
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
27 ; are a critical aspect that should be double-checked before dive.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
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
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
30 ;=============================================================================
123
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
31 mixtype_icons code
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
32
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
33 ;=============================================================================
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
34 ; Display either Air, Nitrox, or Trimix icon (in surface mode).
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
35 ; Inputs: None: explore the gaz list.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
36 ; Ouputs: None.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
37 ; Trashed: hi:lo, PROD, and registers trashed by color_processor.asm
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
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.
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
44
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
45 ;---- 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
46 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
47 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
48 return ; NO: return
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
49
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
50 ;---- Common setup -----------------------------------------------
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
51 movlw .170
123
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
52 movff WREG, win_top
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
53 movlw .110
123
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
54 movff WREG, win_leftx2
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
55 movlw UPPER(dive_air_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
56 movwf TBLPTRU
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
57
121
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
58 ;---- Explore gas list -------------------------------------------
145
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
59 ; 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
60 ; 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
61 ; 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
62 ; 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
63 ; 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
64 ; EEADR+4 = next gaz current O2%
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
65
145
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
66 clrf EEADRH ; read gas flag register --> hi
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
67 movlw .27
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
68 movwf EEADR
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
69 call read_eeprom
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
70 movff EEDATA,hi
145
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
71 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
72 setf lo ; Start with gas# -1
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
73 clrf PRODL ; =0 : no nitrox found yet.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
74
121
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
75 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
76 movwf EEADR
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
77 call read_eeprom
145
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
78 movff EEDATA,PRODH ; first --> PRODH (1..5)
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
79
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
80 dive_type_loop:
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
81 incf lo,F ; Next gaz number. Range 0..4
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
82
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
83 rrcf hi,F ; Rotate BEFORE checking active gas!
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
84
121
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
85 incf lo,W ; Current gas# 1..5
145
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
86 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
87 bz dive_type_loop_2 ; YES: analyse that gas !
145
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
88
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
89 btfss hi,0 ; Is this gas enabled ?
8bda2452a532 FIX bad mix icon when active gas in not G1.
JeanDo
parents: 123
diff changeset
90 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
91
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
92 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
93 addwf lo,W
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
94 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
95 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
96 clrf WREG
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
97 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
98 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
99
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
100 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
101 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
102 rlncf WREG
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
103 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
104 movwf EEADR ; address in EEPROM for current O2.
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
105 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
106
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
107 movlw .21
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
108 cpfseq EEDATA ; O2 == 21% ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
109 setf PRODL ; NO: not simple air !
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
111 incf EEADR ; Read He %
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
112 call read_eeprom
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
113 decf EEADR
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
114 clrf WREG ; H2 == 0% ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
115 cpfseq EEDATA
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
116 bra dive_trimix_icon ; No: go for the Tx icon, now.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
117
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
118 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
119 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
120 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
121 bra dive_type_loop ; NO: loop...
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
122
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
123 btfsc PRODL,0 ; Did we find a nitrox gaz ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
124 bra dive_nitrox_icon ; YES: display nitrox icon.;.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
125
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
126 ;---- Draw air ---------------------------------------------------
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
127 dive_air_icon:
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
128 movlw HIGH(dive_air_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
129 movwf TBLPTRH
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
130 movlw LOW(dive_air_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
131 movwf TBLPTRL
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
132 bra dive_gaz_99
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
133
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
134 dive_nitrox_icon:
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
135 movlw HIGH(dive_nitrox_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
136 movwf TBLPTRH
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
137 movlw LOW(dive_nitrox_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
138 movwf TBLPTRL
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
139 bra dive_gaz_99
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
140
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
141 dive_trimix_icon:
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
142 movlw HIGH(dive_trimix_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
143 movwf TBLPTRH
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
144 movlw LOW(dive_trimix_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
145 movwf TBLPTRL
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
146
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
147 dive_gaz_99:
123
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
148 call color_image
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
149 movlb 1 ; Back to bank 1.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
150 return
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
151
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
152 ;=============================================================================
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
153
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
154 #include dive_air.inc
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
155 #include dive_nitrox.inc
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
156 #include dive_trimix.inc
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
157