annotate src/options.asm @ 615:b87f23fae743

work on new battery menu
author heinrichsweikamp
date Sat, 02 Feb 2019 17:39:44 +0100
parents d866684249bd
children c40025d8e750
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
3 ; File options.asm REFACTORED VERSION V2.99g
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; Manage all options data.
heinrichsweikamp
parents:
diff changeset
6 ;
heinrichsweikamp
parents:
diff changeset
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
heinrichsweikamp
parents:
diff changeset
8 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
9 ; HISTORY
heinrichsweikamp
parents:
diff changeset
10 ; 2011-07-12 : [jDG] Creation.
heinrichsweikamp
parents:
diff changeset
11 ;
heinrichsweikamp
parents:
diff changeset
12
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
13 #include "hwos.inc" ; mandatory header
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
14 #include "strings.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
15 #include "convert.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
16 #include "ghostwriter.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
17 #include "eeprom_rs232.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
18 #include "external_flash.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
19 #include "wait.inc"
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
20 #include "shared_definitions.h"
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
21 #include "gaslist.inc"
0
heinrichsweikamp
parents:
diff changeset
22
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
23 extern write_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
24 extern read_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
25 extern eeprom_serial_save,eeprom_opt_backup
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
26 extern option_table_begin,option_table_end
0
heinrichsweikamp
parents:
diff changeset
27
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
28 options CODE
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
29
0
heinrichsweikamp
parents:
diff changeset
30 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
31 ; Reset all options to factory defaults
0
heinrichsweikamp
parents:
diff changeset
32 ;
heinrichsweikamp
parents:
diff changeset
33 ; INPUT: none
heinrichsweikamp
parents:
diff changeset
34 ; OUTPUT: none
heinrichsweikamp
parents:
diff changeset
35 ; TRASH: TBLPTR, TABLAT, WREG, FSR0, FSR1, FSR2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
36 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
37 global option_reset_all ; reset all options to factory default
0
heinrichsweikamp
parents:
diff changeset
38 option_reset_all:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
39 clrf EEADRH
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
40 read_int_eeprom .2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
41 tstfsz EEDATA ; number of total dives = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
42 bra option_reset_all2 ; NO - skip resetting logbook
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
43 read_int_eeprom .3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
44 tstfsz EEDATA ; number of total dives = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
45 bra option_reset_all2 ; NO - skip resetting logbook
0
heinrichsweikamp
parents:
diff changeset
46
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
47 clrf EEDATA
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
48 write_int_eeprom .4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
49 write_int_eeprom .5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
50 write_int_eeprom .6
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
51 write_int_eeprom .2 ; delete total dive counter, too
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
52 write_int_eeprom .3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
53 call ext_flash_erase_logbook ; complete logbook
0
heinrichsweikamp
parents:
diff changeset
54
heinrichsweikamp
parents:
diff changeset
55 option_reset_all2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
56 clrf lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
57 clrf hi
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
58 call do_logoffset_common_write ; reset logbook offset
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
59 movlw LOW(option_table_begin) ; point to option table begin
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
60 movwf FSR0L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
61 movlw HIGH(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
62 movwf FSR0H
0
heinrichsweikamp
parents:
diff changeset
63 option_reset_all_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
64 movlw LOW(option_table_end) ; get low byte of end of table address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
65 cpfseq FSR0L ; does it equal the current pointer position?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
66 bra option_reset_all_2 ; NO - more options to process
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
67 movlw HIGH(option_table_end) ; get high byte of end of table address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
68 cpfseq FSR0H ; does it equal the current pointer position?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
69 bra option_reset_all_2 ; NO - more options to process
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
70 return ; YES to both - end of option table reached, done
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
71 option_reset_all_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
72 rcall option_reset ; reset one option...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
73 bra option_reset_all_1 ; ... and loop
0
heinrichsweikamp
parents:
diff changeset
74
heinrichsweikamp
parents:
diff changeset
75 ;=============================================================================
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
76 ; Check all option and reset option if out of min/max boundary
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
77 ;
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
78 ; INPUT: none
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
79 ; OUTPUT: none
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
80 ; TRASH: TBLPTR, TABLAT, WREG, FSR0, FSR1, FSR2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
81 ;
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
82 global option_check_all ; check all options and reset options if out of min/max boundary
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
83 option_check_all:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
84 movlw LOW(option_table_begin) ; point to option table begin
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
85 movwf FSR0L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
86 movlw HIGH(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
87 movwf FSR0H
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
88
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
89 option_check_all_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
90 movlw LOW(option_table_end) ; get low byte of end of table address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
91 cpfseq FSR0L ; does it equal the current pointer position?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
92 bra option_check_all_2 ; NO - more options to process
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
93 movlw HIGH(option_table_end) ; get high byte of end of table address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
94 cpfseq FSR0H ; does it equal the current pointer position?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
95 bra option_check_all_2 ; NO - more options to process
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
96 bra option_check_all_3 ; YES to both - end of option table reached
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
97 option_check_all_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
98 rcall option_check ; check one option...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
99 bra option_check_all_1 ; ... and loop
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
100
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
101 option_check_all_3:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
102 bsf FLAG_diluent_setup ; setup checking diluents
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
103 call gaslist_cleanup_list ; check and correct multiple or none First diluent
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
104 bcf FLAG_diluent_setup ; setup checking gases
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
105 call gaslist_cleanup_list ; check and correct multiple or none First gas
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
106 call option_cleanup_oCCRMode ; check and correct sensor mode
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
107 call option_cleanup_GF ; check and correct GFlow <= GFhigh
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
108 return ; all done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
109
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
110 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
111 ; Read option handle
heinrichsweikamp
parents:
diff changeset
112 ; INPUT: FSR0 = option handle
heinrichsweikamp
parents:
diff changeset
113 ; OUTPUT: FSR1 = address of variable.
heinrichsweikamp
parents:
diff changeset
114 ; TRASH: TBLPTR, TABLAT, WREG, FSR0, FSR1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
115 ;
0
heinrichsweikamp
parents:
diff changeset
116 option_read:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
117 movff FSR0L,TBLPTRL
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
118 movlw HIGH(option_table_begin) ; get 8 high bits.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
119 andlw 0xF0 ; keep only the 4 highest ones
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
120 iorwf FSR0H,W ; cat with the known 4 lower ones
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
121 movwf TBLPTRH ; we have the high byte
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
122 movlw UPPER(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
123 movwf TBLPTRU
0
heinrichsweikamp
parents:
diff changeset
124
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
125 ; Read type, default and register from table
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
126 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
127 movff TABLAT,opt_type
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
128 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
129 movff TABLAT,opt_default
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
130 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
131 movff TABLAT,opt_inc
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
132 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
133 movff TABLAT,opt_min
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
134 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
135 movff TABLAT,opt_max
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
136 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
137 movff TABLAT,opt_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
138 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
139 movff TABLAT,opt_unit+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
140 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
141 movff TABLAT,opt_unit+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
142 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
143 movff TABLAT,FSR1L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
144 tblrd*+
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
145 movff TABLAT,FSR1H
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
146 movff TBLPTRL,FSR0L ; advance handle, too, for reset_all
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
147 movff TBLPTRH,FSR0H
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
148 return
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
149
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
150 ;=============================================================================
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
151 ; Check one option and reset if it's out of it's min/max boundaries
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
152 ; INPUT: FSR0 = option handle
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
153 ; OUTPUT: none
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
154 ; TRASH: TBLPTR, TABLAT, WREG, FSR1, FSR2, lo
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
155 ;
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
156 option_check:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
157 ; Read type, default and register from table
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
158 rcall option_read
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
159
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
160 ; Switch on type
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
161 movf opt_type,W ; get option type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
162 xorlw 2 ; type == STRING ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
163 bz option_check_string ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
164 movf opt_type,W ; get option type (again)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
165 xorlw 1 ; type == ENUM8 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
166 bz option_check_enum8 ; YES - check if lower then max. value only
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
167 ; NO to all - must be integer then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
168 tstfsz opt_min ; opt_min = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
169 bra option_check_both ; NO - check it
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
170 bra option_check_enum8 ; check max only
220
effd7259f5a5 make button sensitivity configurable (cR hardware)
heinrichsweikamp
parents: 185
diff changeset
171
effd7259f5a5 make button sensitivity configurable (cR hardware)
heinrichsweikamp
parents: 185
diff changeset
172 option_check_both:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
173 decf opt_min,W ; check against minimum value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
174 cpfsgt INDF1 ; bigger then opt_min - 1 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
175 bra option_check_reset ; NO - reset option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
176 option_check_enum8: ; check against maximum value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
177 infsnz opt_max,W ; max = 255?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
178 return ; YES - ignore the max. test
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
179 cpfslt INDF1 ; NO - smaller then opt_max + 1 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
180 bra option_check_reset ; NO - reset option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
181 return ; YES - in range, return
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
182
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
183 option_check_reset:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
184 movff opt_default,INDF1 ; reset option to default
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
185 return ; done
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
186
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
187 option_check_string:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
188 return
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 18
diff changeset
189
0
heinrichsweikamp
parents:
diff changeset
190 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
191 ; Reset an option to its default value
0
heinrichsweikamp
parents:
diff changeset
192 ; INPUT: FSR0 = option handle
heinrichsweikamp
parents:
diff changeset
193 ; OUTPUT: none
heinrichsweikamp
parents:
diff changeset
194 ; TRASH: TBLPTR, TABLAT, WREG, FSR1, FSR2
heinrichsweikamp
parents:
diff changeset
195 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
196 global option_reset ; reset FSR0 option to factory default
0
heinrichsweikamp
parents:
diff changeset
197 option_reset:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
198 ; Read type, default and register from table
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
199 rcall option_read ; read option data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
200 movf opt_type,W ; get option type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
201 xorlw 2 ; Type == STRING ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
202 bz opt_reset_string ; YES - special copy
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
203 movff opt_default,INDF1 ; NO - just a 8 bit indirect copy
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
204 return
0
heinrichsweikamp
parents:
diff changeset
205 opt_reset_string:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
206 movff FSR1L,FSR2L ; set string destination address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
207 movff FSR1H,FSR2H ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
208 movff opt_default+0,FSR1L ; get handle to multi-lingual text in FSR1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
209 movff opt_default+1,FSR1H ; ...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
210 movff TBLPTRL,opt_backup_tbl+0 ; TBLPTR trashed by text routine...
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
211 movff TBLPTRH,opt_backup_tbl+1 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
212 movff TBLPTRU,opt_backup_tbl+2 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
213 call strcat_text ; copy translated text to FSR2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
214 movff opt_backup_tbl+0,TBLPTRL ; restore TBLPTR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
215 movff opt_backup_tbl+1,TBLPTRH ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
216 movff opt_backup_tbl+2,TBLPTRU ; ...
0
heinrichsweikamp
parents:
diff changeset
217
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
218 return
0
heinrichsweikamp
parents:
diff changeset
219
heinrichsweikamp
parents:
diff changeset
220 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
221 ; Save all options to EEPROM
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
222 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
223 global option_save_all ; save options to EEPROM
0
heinrichsweikamp
parents:
diff changeset
224 option_save_all:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
225 ;---- Save option serial into EEPROM to detect reset and new version
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
226 movlw LOW(eeprom_serial_save)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
227 movwf EEADR
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
228 movlw HIGH(eeprom_serial_save)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
229 movwf EEADRH
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
230 movlw LOW(eeprom_opt_serial)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
231 movwf EEDATA
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
232 call write_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
233 incf EEADR,F
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
234 movlw HIGH(eeprom_opt_serial)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
235 movwf EEDATA
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
236 call write_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
237
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
238 ;---- Save all options
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
239 movlw LOW(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
240 movwf FSR0L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
241 movlw HIGH(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
242 movwf FSR0H
0
heinrichsweikamp
parents:
diff changeset
243
heinrichsweikamp
parents:
diff changeset
244 option_save_all_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
245 movlw LOW(option_table_end)
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
246 cpfseq FSR0L
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
247 bra option_save_all_2 ; not yet done...
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
248 movlw HIGH(option_table_end)
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
249 cpfseq FSR0H
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
250 bra option_save_all_2 ; not yet done...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
251 return ; all done
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
252 option_save_all_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
253 rcall option_save ; save one option...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
254 bra option_save_all_1 ; ...and loop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
255
0
heinrichsweikamp
parents:
diff changeset
256
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
257 global option_save
0
heinrichsweikamp
parents:
diff changeset
258 option_save:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
259 rcall option_read
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
260 incf opt_eeprom,W ; should we save it ?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
261 btfsc STATUS,Z ; EEPROM address is FFh ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
262 return ; YES - nothing to do
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
263 movf opt_eeprom,W ; compute backup address in EEPROM
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
264 addlw LOW(eeprom_opt_backup) ; add offset
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
265 movwf EEADR
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
266 movlw HIGH(eeprom_opt_backup)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
267 btfsc STATUS,C ; > 256 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
268 addlw .1 ; YES - +1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
269 movwf EEADRH
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
270 movf opt_type,W ; get option type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
271 xorlw 2 ; option type is string ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
272 bz option_save_string ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
273 movff INDF1,EEDATA ; one byte to be saved to EEPROM
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
274 btfss EEADRH,1 ; EEADR:EEADRH < 512 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
275 call write_eeprom ; YES - write
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
276 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
277 option_save_string:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
278 movff POSTINC1,EEDATA ; write one byte
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
279 btfss EEADRH,1 ; EEADR:EEADRH < 512 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
280 call write_eeprom ; Yes - write
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
281 infsnz EEADR,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
282 incf EEADRH,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
283 decfsz opt_max ; decrement string length
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
284 bra option_save_string ; loop while not finished
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
285 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
286
0
heinrichsweikamp
parents:
diff changeset
287 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
288
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
289 global option_restore_all ; restore options from EEPROM
0
heinrichsweikamp
parents:
diff changeset
290 option_restore_all:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
291 ;---- Read option serial from EEPROM
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
292 movlw LOW(eeprom_serial_save)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
293 movwf EEADR
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
294 movlw HIGH(eeprom_serial_save)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
295 movf EEADRH
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
296 call read_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
297 movlw LOW(eeprom_opt_serial)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
298 xorwf EEDATA,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
299 bnz option_restore_bad ; auto reset if changed
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
300 incf EEADR,F
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
301 call read_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
302 movlw HIGH(eeprom_opt_serial)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
303 xorwf EEDATA,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
304 bz option_restore_ok ; auto reset if changed
0
heinrichsweikamp
parents:
diff changeset
305
heinrichsweikamp
parents:
diff changeset
306 option_restore_bad:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
307 call option_reset_all ; reset RAM contains
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
308 goto option_save_all ; then save to EEPROM
0
heinrichsweikamp
parents:
diff changeset
309
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
310 ;---- Proper restore
0
heinrichsweikamp
parents:
diff changeset
311 option_restore_ok:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
312 movlw LOW(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
313 movwf FSR0L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
314 movlw HIGH(option_table_begin)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
315 movwf FSR0H
0
heinrichsweikamp
parents:
diff changeset
316
heinrichsweikamp
parents:
diff changeset
317 option_restore_all_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
318 movlw LOW(option_table_end)
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
319 cpfseq FSR0L
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
320 bra option_restore_all_2 ; not yet done...
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
321 movlw HIGH(option_table_end)
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
322 cpfseq FSR0H
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
323 bra option_restore_all_2 ; not yet done...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
324 return ; all done
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 560
diff changeset
325 option_restore_all_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
326 rcall option_restore ; Restore one option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
327 bra option_restore_all_1 ; and loop
0
heinrichsweikamp
parents:
diff changeset
328
heinrichsweikamp
parents:
diff changeset
329 option_restore:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
330 rcall option_read
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
331 incf opt_eeprom,W ; shall we save it ?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
332 btfsc STATUS,Z ; EEPROM address is FFh ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
333 return ; YES - nothing to do.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
334 movf opt_eeprom,W ; compute backup address in EEPROM
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
335 addlw LOW(eeprom_opt_backup) ; add offset
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
336 movwf EEADR
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
337 movlw HIGH(eeprom_opt_backup)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
338 btfsc STATUS,C ; > 256 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
339 addlw .1 ; YES - +1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
340 movwf EEADRH
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
341 movf opt_type,W ; get option type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
342 xorlw 2 ; Option type is string?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
343 bz option_restore_string ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
344 call read_eeprom ; read one byte from EEPROM
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
345 movff EEDATA, INDF1 ; restore option register
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
346 return
0
heinrichsweikamp
parents:
diff changeset
347 option_restore_string:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
348 call read_eeprom ; read one byte, and...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
349 movff EEDATA,POSTINC1 ; ... restore it
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
350 infsnz EEADR,F
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
351 incf EEADRH,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
352 decfsz opt_max ; decrement string length
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
353 bra option_restore_string ; loop while not finished
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
354 return
0
heinrichsweikamp
parents:
diff changeset
355
heinrichsweikamp
parents:
diff changeset
356 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
357 ; Increment an option, based on type, and boundary
0
heinrichsweikamp
parents:
diff changeset
358 ; INPUT: FSR0 = option handle
heinrichsweikamp
parents:
diff changeset
359 ; OUTPUT: none
heinrichsweikamp
parents:
diff changeset
360 ; TRASH: TBLPTR, TABLAT, WREG, FSR0, FSR1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
361 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
362 global option_inc ; increment FSR0 option
0
heinrichsweikamp
parents:
diff changeset
363 option_inc:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
364 ; read type, default and register from table
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
365 rcall option_read
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
366
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
367 ; switch on type
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
368 movf opt_type,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
369 bz option_inc_uint8
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
370 dcfsnz WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
371 bra option_inc_enum8
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
372 dcfsnz WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
373 bra option_inc_string
0
heinrichsweikamp
parents:
diff changeset
374
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
375 option_inc_uint8: ; default type too...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
376 movf INDF1,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
377 addwf opt_inc,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
378 cpfslt opt_max
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
379 bra option_inc_uint8_0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
380 movf opt_min,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
381 option_inc_uint8_0:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
382 movwf INDF1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
383 option_inc_uint8_1:
533
dfac393b2199 CHANGE: CCR Calibration gas range limited to O2% 21-25 and 95-100 to save button presses
heinrichsweikamp
parents: 418
diff changeset
384 ; Now some rather crude hack into this routine to make CCR Calibration more convenient:
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
385 movlw .149 ; EEPROM address of option CalGasO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
386 cpfseq opt_eeprom ; editing CalGasO2 right now?
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
387 bra option_inc_uint8_2 ; NO - check next option
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
388 movff opt_dive_mode,WREG ; YES - get dive mode: 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
389 decfsz WREG,W ; - in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
390 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
391 movlw .26 ; YES -
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
392 cpfseq INDF1 ; - option value = 26 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
393 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
394 movlw .95 ; YES - advance it to 95
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
395 movwf INDF1 ; - store it
533
dfac393b2199 CHANGE: CCR Calibration gas range limited to O2% 21-25 and 95-100 to save button presses
heinrichsweikamp
parents: 418
diff changeset
396 return
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
397 option_inc_uint8_2:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
398 movlw .12 ; EEPROM address of option opt_GF_low
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
399 cpfseq opt_eeprom ; editing opt_GF_low right now?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
400 bra option_inc_uint8_3 ; NO - check next option
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
401 movff opt_GF_high,WREG ; get value of associated GF high into WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
402 cpfsgt INDF1 ; GF low > GF high?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
403 return ; NO - setting ok, done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
404 movff opt_min,INDF1 ; YES - wrap around to minimum value
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
405 return ; - done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
406 option_inc_uint8_3:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
407 movlw .13 ; EEPROM address of option opt_GF_high
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
408 cpfseq opt_eeprom ; editing opt_GF_high right now?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
409 bra option_inc_uint8_4 ; NO - check next option
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
410 movff opt_GF_low,WREG ; get value of associated GF low into WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
411 cpfslt INDF1 ; GF high < GF low?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
412 return ; NO - setting ok, done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
413 movwf INDF1 ; YES - rise GF high to GF low
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
414 return ; - done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
415 option_inc_uint8_4:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
416 movlw .17 ; EEPROM address of option opt_aGF_low
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
417 cpfseq opt_eeprom ; editing opt_aGF_low right now?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
418 bra option_inc_uint8_5 ; NO - check next option
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
419 movff opt_aGF_high,WREG ; get value of associated GF high into WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
420 cpfsgt INDF1 ; GF low > GF high?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
421 return ; NO - setting ok, done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
422 movff opt_min,INDF1 ; YES - wrap around to minimum value
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
423 return ; - done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
424 option_inc_uint8_5:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
425 movlw .18 ; EEPROM address of option opt_aGF_high
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
426 cpfseq opt_eeprom ; editing opt_aGF_high right now?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
427 bra option_inc_uint8_6 ; NO - check next option
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
428 movff opt_aGF_low,WREG ; get value of associated GF low into WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
429 cpfslt INDF1 ; GF high < GF low?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
430 return ; NO - setting ok, done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
431 movwf INDF1 ; YES - rise GF high to GF low
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
432 return ; - done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
433 option_inc_uint8_6:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
434 return ; all done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
435
0
heinrichsweikamp
parents:
diff changeset
436
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
437 option_inc_enum8: ; always +1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
438 incf INDF1,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
439 cpfsgt opt_max
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
440 clrf WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
441 movwf INDF1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
442 option_inc_enum8_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
443 ; Now some rather crude hack into this routine to unify CCR & pSCR mode setting
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
444 movlw .25 ; EEPROM address of option oCCRMode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
445 cpfseq opt_eeprom ; editing oCCRMode right now?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
446 bra option_inc_enum8_2 ; NO - check next option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
447 btfsc analog_o2_input ; YES - does hosting OSTC have an analog interface?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
448 bra option_inc_enum8_1a ; YES - setting 'sensor' allowed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
449 btfsc optical_input ; does hosting OSTC have an optical interface?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
450 bra option_inc_enum8_1a ; YES - setting 'sensor' allowed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
451 movf INDF1,W ; NO to both - get mode (=0: fixed SP, =1: Sensor, =2: AutoSP)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
452 xorlw .1 ; - in sensor mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
453 bnz option_inc_enum8_1a ; NO - continue with next check
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
454 incf INDF1,F ; YES - advance option value to AutoSP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
455 option_inc_enum8_1a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
456 movff opt_dive_mode,WREG ; get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
457 xorlw .4 ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
458 bnz option_inc_enum8_1_exit ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
459 bcf INDF1,1 ; YES - clear bit 1 because opt_ccr_mode may only be 0 or 1 (reverts AutoSP to calculated SP)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
460 option_inc_enum8_1_exit:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
461 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
462 option_inc_enum8_2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
463 ; (unused)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
464 option_inc_enum8_3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
465
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
466 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
467 global option_cleanup_oTrMode_CCR ; embedded clean-up entry-point
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
468 global option_cleanup_oTrMode_no_CCR ; embedded clean-up entry-point
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
469 ; Now some rather crude hack to correct opt_TR_mode in dependency of opt_dive_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
470 movlw .8 ; EEPROM address of option opt_dive_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
471 cpfseq opt_eeprom ; editing opt_dive_mode right now?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
472 bra option_inc_enum8_4 ; NO - check next option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
473 movff opt_dive_mode,WREG ; YES - get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
474 decfsz WREG,W ; dive mode = 1 CCR?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
475 bra option_inc_enum8_3a ; NO - in any other mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
476 option_cleanup_oTrMode_CCR: ; entry point from cleanup during restart
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
477 movff opt_TR_mode,WREG ; YES - get TR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
478 xorlw .2 ; - mode = 2 (ind.double)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
479 bnz option_inc_enum8_3_exit ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
480 bra option_inc_enum8_3_reset ; YES - revert mode to 1 (on)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
481 option_inc_enum8_3a: ; any mode other than CCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
482 option_cleanup_oTrMode_no_CCR: ; entry point from cleanup during restart
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
483 movff opt_TR_mode,WREG ; get TR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
484 xorlw .3 ; mode = 3 (CCR Dil+O2)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
485 bnz option_inc_enum8_3_exit ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
486 option_inc_enum8_3_reset: ; YES - revert to mode 1 (on)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
487 movlw .1 ; load coding of mode "on"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
488 movff WREG,opt_TR_mode ; write to option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
489 option_inc_enum8_3_exit:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
490 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
491 option_inc_enum8_4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
492 ; Now some rather crude hack to advance opt_TR_mode in dependency of opt_dive_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
493 movlw .222 ; EEPROM address of option opt_TR_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
494 cpfseq opt_eeprom ; editing opt_TR_mode right now?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
495 bra option_inc_enum8_5 ; NO - check next option
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
496 movff opt_dive_mode,WREG ; YES - get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
497 decfsz WREG,W ; dive mode = 1 CCR?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
498 bra option_inc_enum8_4a ; NO - in any other mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
499 movf INDF1,W ; YES - get option value (TR mode)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
500 xorlw .2 ; - mode = 2 (ind.double)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
501 bnz option_inc_enum8_4_exit ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
502 incf INDF1,F ; YES - advance option value to 3 (CCR Dil+O2)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
503 bra option_inc_enum8_4_exit ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
504 option_inc_enum8_4a: ; any mode other than CCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
505 movf INDF1,W ; get option value (TR mode)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
506 xorlw .3 ; mode = 3 (CCR Dil+O2)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
507 bnz option_inc_enum8_4_exit ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
508 clrf INDF1 ; YES - advance option value to 0 "off"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
509 option_inc_enum8_4_exit:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
510 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
511 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
512
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
513 option_inc_enum8_5:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
514 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
515
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
516
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
517 option_inc_string: ; no editing available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
518 return
0
heinrichsweikamp
parents:
diff changeset
519
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
520
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
521 global option_cleanup_oCCRMode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
522 global option_cleanup_oCCRMode_pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
523 global option_cleanup_oCCRMode_CCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
524 option_cleanup_oCCRMode: ; in pSCR mode, revert AutoSP (2) to calculated SP (0), in pSCR and CCR revert Sensor to fixed SP if no sensor interface available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
525 banksel opt_dive_mode ; select options bank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
526 movf opt_dive_mode,W ; get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
527 xorlw .4 ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
528 bnz option_cleanup_oCCRMode_CCR ; NO - check if sensor is available on hosting OSTC
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
529 option_cleanup_oCCRMode_pSCR: ; jump-in from start.asm if known to be in pSCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
530 banksel opt_ccr_mode ; select options bank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
531 bcf opt_ccr_mode,1 ; YES - clear bit 1 because opt_ccr_mode may only be 0 or 1 (reverts AutoSP to calculated SP)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
532 option_cleanup_oCCRMode_CCR: ; continue from above & jump-in from start.asm if known to be in CCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
533 banksel common ; flags are located in bank common
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
534 btfsc analog_o2_input ; does hosting OSTC have an analog interface?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
535 bra option_cleanup_oCCRMode_exit ; YES - setting 'sensor' allowed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
536 btfsc optical_input ; does hosting OSTC have an optical interface?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
537 bra option_cleanup_oCCRMode_exit ; YES - setting 'sensor' allowed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
538 banksel opt_ccr_mode ; NO to both - select options bank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
539 movf opt_ccr_mode,W ; - get CCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
540 xorlw .1 ; - CCR mode = sensor?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
541 bnz option_cleanup_oCCRMode_exit ; NO - ok
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
542 clrf opt_ccr_mode ; - YES - set CCR mode to fixed SP (0)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
543 option_cleanup_oCCRMode_exit:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
544 banksel common ; back to bank common
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
545 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
546
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
547 option_cleanup_GF:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
548 ; cleanup normal GF
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
549 movff opt_GF_high,WREG ; copy normal GF high to WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
550 movff opt_GF_low,lo ; copy normal GF low to lo
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
551 cpfsgt lo ; GF low > GF high ?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
552 bra option_cleanup_GF_2 ; NO - option ok, check next option
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
553 movwf lo ; YES - copy GF high to lo
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
554 movlw .100 ; - load GF low limit of 100% into WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
555 cpfsgt lo ; - lo > 100 ?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
556 bra option_cleanup_GF_1 ; NO - correct GF low to GF high
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
557 movwf lo ; YES - correct GF low to 100%
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
558 option_cleanup_GF_1:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
559 movff lo,opt_GF_low ; store corrected GF low
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
560 option_cleanup_GF_2:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
561 ; cleanup alternative GF
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
562 movff opt_aGF_high,WREG ; copy alternative GF high to WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
563 movff opt_aGF_low,lo ; copy alternative GF low to lo
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
564 cpfsgt lo ; GF low > GF high ?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
565 bra option_cleanup_GF_4 ; NO - option ok, check next option
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
566 movwf lo ; YES - copy GF high to lo
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
567 movlw .100 ; - load GF low limit of 100% into WREG
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
568 cpfsgt lo ; - lo > 100 ?
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
569 bra option_cleanup_GF_3 ; NO - correct GF low to GF high
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
570 movwf lo ; YES - correct GF low to 100%
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
571 option_cleanup_GF_3:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
572 movff lo,opt_aGF_low ; store corrected GF low
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
573 option_cleanup_GF_4:
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
574 return ; done
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
575
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
576
0
heinrichsweikamp
parents:
diff changeset
577 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
578 ; Strcat option into FSR2 buffer
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
579 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
580 global option_draw ; STRCAT FRS0 option
0
heinrichsweikamp
parents:
diff changeset
581 option_draw:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
582 ; Read type, default and register from table
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
583 rcall option_read
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
584
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
585 ; Switch on type
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
586 movf opt_type,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
587 bz option_draw_uint8
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
588 dcfsnz WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
589 bra option_draw_enum8
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
590 dcfsnz WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
591 bra option_draw_string
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
592 return ; unknown, return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
593 option_draw_string:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
594 movff POSTINC1,POSTINC2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
595 decfsz opt_max
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
596 bra option_draw_string
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
597 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
598
0
heinrichsweikamp
parents:
diff changeset
599
heinrichsweikamp
parents:
diff changeset
600 option_draw_uint8:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
601 movff INDF1,lo ; draw value
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
602 bsf leftbind
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
603 output_8
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
604 bcf leftbind
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
605 clrf INDF2 ; make sure to close string
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
606 movf opt_unit+0,W ; is there a unit to append?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
607 iorwf opt_unit+1,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
608 rcall option_draw_unit ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
609 movf opt_default,W ; get default value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
610 cpfseq lo ; compare with current value, equal?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
611 bra option_draw_uint8_2 ; NO - not default, add *
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
612 return ; YES - default, done
0
heinrichsweikamp
parents:
diff changeset
613 option_draw_uint8_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
614 PUTC "*" ; print "*"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
615 return ; done
0
heinrichsweikamp
parents:
diff changeset
616 option_draw_unit:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
617 movff opt_unit+0,FSR1L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
618 movff opt_unit+1,FSR1H
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
619 goto strcat_text
0
heinrichsweikamp
parents:
diff changeset
620
heinrichsweikamp
parents:
diff changeset
621
heinrichsweikamp
parents:
diff changeset
622 ;---- Draw an enumerated value (set of translated strings)
heinrichsweikamp
parents:
diff changeset
623 option_draw_enum8:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
624 movf INDF1,W ; get current value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
625 cpfsgt opt_max ; bound value
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
626 clrf WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
627 addwf WREG ; *= 2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
628 addwf opt_inc,W ; base text + 2 * value
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
629 movwf FSR1L
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
630 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
631 addwfc opt_min,W ; propagate carry...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
632 movwf FSR1H ; ...into FSR1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
633 goto strcat_text
0
heinrichsweikamp
parents:
diff changeset
634
heinrichsweikamp
parents:
diff changeset
635
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
636 END