annotate code_part1/OSTC_code_asm_part1/dive_icons.asm @ 128:4c588c3d1f12

Saturation graphs in customview divemode
author JeanDo
date Tue, 04 Jan 2011 15:14:42 +0100
parents 6a94f96e9cea
children 8bda2452a532
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 -------------------------------------------
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
59 ; EEADR <-- gas# + 6
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
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
66 read_int_eeprom d'27' ; read gas flag register --> hi
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
67 movff EEDATA,hi
121
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
68 rrcf hi ; Dummy shift first... why does it works ?
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
69 setf lo ; Start with gas# -1
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
70 clrf PRODL ; =0 : no nitrox found yet.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
71
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
72 dive_type_loop:
121
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
73 incf lo,F ; Next gaz number.
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
74
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
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
78 incf lo,W ; Current gas# 1..5
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
79 subwf EEDATA,W ; == first ?
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
80 bz dive_type_loop_2 ; YES: analyse that gas !
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
81
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
82 rrcf hi ; Check next enabled flag ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
83 bnc dive_type_loop_9 ; Disabled.
121
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
84
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
85 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
86 addwf lo,W
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
87 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
88 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
89 clrf WREG
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
90 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
91 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
92
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
93 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
94 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
95 rlncf WREG
e0f29e20bd24 Mix-type icons: check apnoe/gauge/CF#41, depth=0, and first gas. Changed colors.
JeanDo
parents: 110
diff changeset
96 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
97 movwf EEADR ; address in EEPROM for current O2.
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
98 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
99
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
100 movlw .21
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
101 cpfseq EEDATA ; O2 == 21% ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
102 setf PRODL ; NO: not simple air !
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
103
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
104 incf EEADR ; Read He %
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
105 call read_eeprom
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
106 decf EEADR
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
107 clrf WREG ; H2 == 0% ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
108 cpfseq EEDATA
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
109 bra dive_trimix_icon ; No: go for the Tx icon, now.
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 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
112 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
113 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
114 bra dive_type_loop ; NO: loop...
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
115
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
116 btfsc PRODL,0 ; Did we find a nitrox gaz ?
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
117 bra dive_nitrox_icon ; YES: display nitrox icon.;.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
118
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
119 ;---- Draw air ---------------------------------------------------
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
120 dive_air_icon:
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
121 movlw HIGH(dive_air_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
122 movwf TBLPTRH
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
123 movlw LOW(dive_air_block)
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
124 movwf TBLPTRL
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
125 bra dive_gaz_99
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
126
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
127 dive_nitrox_icon:
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
128 movlw HIGH(dive_nitrox_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_nitrox_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_trimix_icon:
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
135 movlw HIGH(dive_trimix_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_trimix_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
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
140 dive_gaz_99:
123
6a94f96e9cea The big cleanup, again.
JeanDo
parents: 121
diff changeset
141 call color_image
110
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
142 movlb 1 ; Back to bank 1.
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
143 return
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
144
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
145 ;=============================================================================
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 #include dive_air.inc
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
148 #include dive_nitrox.inc
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
149 #include dive_trimix.inc
8aa8acada0fd Display deco-type icon in surface mode.
JeanDo
parents:
diff changeset
150