annotate code_part1/OSTC_code_asm_part1/interface.asm @ 842:454ef5c2e6aa default tip

Bugfix: Auto-SP did not show >9m for some 2C hardware versions in German language firmware Make year settings until 2040 possible (This is likely the final release for this model)
author heinrichsweikamp
date Sat, 29 Nov 2025 14:11:07 +0100
parents 2a0e5d884fc3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1
815
2a0e5d884fc3 BUGFIX: Fix licence in German
heinrichsweikamp
parents: 807
diff changeset
2 ; OSTC Mk.2, 2N and 2C - diving computer code
807
c50296c3059e BUGFIX: Divetime had unwanted "." behind the minutes
heinrichsweikamp
parents: 720
diff changeset
3 ; Copyright (C) 2015 HeinrichsWeikamp GbR
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 ; This program is free software: you can redistribute it and/or modify
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 ; it under the terms of the GNU General Public License as published by
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 ; the Free Software Foundation, either version 3 of the License, or
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8 ; (at your option) any later version.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 ; This program is distributed in the hope that it will be useful,
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13 ; GNU General Public License for more details.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 ; You should have received a copy of the GNU General Public License
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 ; Interface, Downloader, MD2 Hash send routine
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 ; written: 10/30/05
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 ; last updated: 12/27/07
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23 ; known bugs:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24 ; ToDo:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 uart_store_tissues:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 bcf uart_store_tissue_data ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
29 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
30 call simulator_save_tissue_data ; store and set flag for automatic restore
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
31 movlw 'k' ; send echo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
32 movwf TXREG ; When done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
33 call rs232_wait_tx ; wait for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
34 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
35 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
36 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
37
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
38 ; reset Decodata
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
39 reset_decodata:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
40 bcf uart_reset_decodata ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
41 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
42 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
43
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
44 call deco_clear_tissue ; Reset Decodata
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
45 movlb b'00000001' ; select ram bank 1
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
46 call deco_calc_desaturation_time ; calculate desaturation time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47 movlb b'00000001' ; select ram bank 1
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
48 call deco_clear_CNS_fraction ; clear CNS
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
49 movlb b'00000001' ; select ram bank 1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
50
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 116
diff changeset
51 clrf nofly_time+0 ; Clear nofly time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52 clrf nofly_time+1 ; Clear nofly time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
53
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
54 movlw 'h' ; send echo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
55 movwf TXREG ; When done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
56 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
57
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58 bsf oneminupdate ; set flag, so display will be updated at once
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
59 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
60 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
61 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
62
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
63 ; send internal EEPROM BANK 0 via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
64 send_int_eeprom_b0:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
65 bcf uart_send_int_eeprom ; clear flag
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
66 movlw .0 ; Point to Bank0
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
67 rcall send_internal_eeprom1 ; sends complete 1st. page of internal EEPROM
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
68 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
69
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 ; send internal EEPROM BANK 1 via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
71 send_int_eeprom_b1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
72 bcf uart_send_int_eeprom2 ; clear flag
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
73 movlw d'1'
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
74 movwf EEADRH ; Point to Bank1
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
75 rcall send_internal_eeprom1 ; sends complete 2nd page of internal EEPROM
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
76 goto surfloop_loop ; return to surface loop
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
77
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
78 ; send internal EEPROM BANK 2 via the UART
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
79 send_int_eeprom_b2:
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
80 bcf uart_send_int_eeprom3 ; clear flag
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
81 movlw d'2'
703
39e02673db4c some cleanup
heinrichsweikamp
parents: 681
diff changeset
82 movwf EEADRH ; Point to Bank2
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
83 rcall send_internal_eeprom1 ; sends complete 2nd page of internal EEPROM
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
84 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
85
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
86
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
87 ; Send firmware version and 16bytes MD2 hash via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
88 send_md2_hash:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
89 bcf uart_send_hash ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
90 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
91 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
92
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
93 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
94 movlw softwareversion_x ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
95 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
96 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
97 movlw softwareversion_y ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
98 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
99
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
100 lfsr FSR2, char_O_hash
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
101 movlw d'16'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
102 movwf temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
103 send_md2_hash2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
104 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105 movff POSTINC2,TXREG ; copy hash byte to TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
106 decfsz temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
107 bra send_md2_hash2 ; loop 16 times
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
108
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
109 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
110 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
111 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
112
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
114 ; Sends first 256Byte from internal and first 32KB from external EEPROM using the UART module
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
115 menu_interface:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
116 bcf dump_external_eeprom ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
117 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
118 bsf LED_blue
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 578
diff changeset
119 call DISP_ClearScreen
717
91ae251d379f "ostc3-style" menu titles
heinrichsweikamp
parents: 703
diff changeset
120 call DISP_divemask_color
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
121 DISPLAYTEXT .15 ; "Interface"
717
91ae251d379f "ostc3-style" menu titles
heinrichsweikamp
parents: 703
diff changeset
122 call DISP_standard_color
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123 movlw d'5'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
124 movwf uart1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
125 menu_interface1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
126 movlw 0xAA ; Startbytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
128 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 decfsz uart1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130 bra menu_interface1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
131 movlw 0x55 ; finish preamble
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
132 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
133
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
134 DISPLAYTEXT .16 ; "Start"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
136 call get_free_EEPROM_location ;
376
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
137
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
138 movlw d'1' ; increase
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 addwf eeprom_address+0,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140 movlw d'0'
455
c512a868937c last work for 2.0: Fixing 32kB boundary read for logbook
heinrichsweikamp
parents: 376
diff changeset
141 addwfc eeprom_address+1,F
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
142
376
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
143 ;For debug only
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
144 ;clrf eeprom_address+0,F
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
145 ;clrf eeprom_address+1,F
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
146
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
147 DISPLAYTEXT .17 ; "Data"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
148
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
149 movlw .0 ; Point to Bank0
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
150 rcall send_internal_eeprom1 ; sends complete 1st. page of internal EEPROM
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
151 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
152
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
153 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
154 movff batt_voltage+0,TXREG ; Battery
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
155
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
156 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
157 movff batt_voltage+1,TXREG ; Battery
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
158
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
159 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
160 movlw softwareversion_x ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
161 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
162
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
163 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
164 movlw softwareversion_y ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
165 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
166
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
167 DISPLAYTEXT .18 ; "Header"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
168
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
169 setf uart1_temp ; low address counter
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
170 setf uart2_temp ; high address counter
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
171
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
172 menu_interface3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
173 bsf SSPCON2,SEN ; Start condition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
174 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
175
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
176 movlw b'10101110' ; Bit0=0: WRITE, Bit0=1: READ, BLOCK2
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
177 btfss eeprom_address+1,7 ; Access Block2?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
178 movlw b'10100110' ; No, -> Bit0=0: WRITE, Bit0=1: READ, BLOCK1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
179 movwf SSPBUF ; control byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
180 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
181 btfsc SSPCON2,ACKSTAT
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
182 bra menu_interface3 ; No Ack, try again!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
183
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
184 movff eeprom_address+1,SSPBUF ; High Address byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
185 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
186 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
187 movff eeprom_address+0,SSPBUF ; Low Address byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
188 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
189 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
190 bsf SSPCON2,RSEN ; Start condition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
191 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
192
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
193 movlw b'10101111' ; Bit0=0: WRITE, Bit0=1: READ, BLOCK2
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
194 btfss eeprom_address+1,7 ; Access Block2?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
195 movlw b'10100111' ; No, -> Bit0=0: WRITE, Bit0=1: READ, BLOCK1
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
196
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
197 movwf SSPBUF ; control byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
198 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
199 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
200
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
201 DISPLAYTEXT .19 ; "Profile"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
202
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
203 menu_interface2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
204 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
205
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
206 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
207 addwf uart1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
208 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
209 addwfc uart2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
210
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
211 ; Slow but safe...
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
212 call I2CREAD2 ; same as I2CREAD but with automatic address increase
350
7250ca7c8d24 64kByte logbook (Still incompatible to existing PC software)
heinrichsweikamp
parents: 229
diff changeset
213 movff SSPBUF, TXREG
7250ca7c8d24 64kByte logbook (Still incompatible to existing PC software)
heinrichsweikamp
parents: 229
diff changeset
214
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
215 movlw 0xFF
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
216 cpfseq uart2_temp ;=0xFFFF?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
217 bra menu_interface2 ; No, continue
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
218 cpfseq uart1_temp ;=0xFFFF?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
219 bra menu_interface2 ; No, continue
350
7250ca7c8d24 64kByte logbook (Still incompatible to existing PC software)
heinrichsweikamp
parents: 229
diff changeset
220
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
221 DISPLAYTEXT .20 ; Done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
222
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
223 WAITMS d'250'
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
224 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
225 bsf PIE1,RCIE ; Interrupt for RS232
720
4452837aff37 Vault date and time during update
heinrichsweikamp
parents: 717
diff changeset
226 goto surfloop_no_display_init ; back to surfacemode
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
227
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
228 send_internal_eeprom1:
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
229 movwf EEADRH ; Point to Bank "WREG"
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
230 bcf PIE1,RCIE ; No Interrupt for UART
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
231 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
232 clrf uart1_temp ; Send the total of 256bytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
233 clrf EEADR ; Send bytes 0-255 from internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
234 send_internal_eeprom2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
235 call read_eeprom ; read byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
236 movff EEDATA,TXREG ; send byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
237 incf EEADR,F ; increase pointer
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
238 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
239 decfsz uart1_temp,F ; until limit reached
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
240 bra send_internal_eeprom2
578
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
241 clrf EEADRH ; Point to Bank0
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
242 bcf LED_blue
fbd5e2b75a63 adding access to CF64-CF95
heinrichsweikamp
parents: 455
diff changeset
243 bsf PIE1,RCIE ; Interrupt for RS232
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
244 return