annotate src/convert.asm @ 627:bf5fee575701

minor cleanup, reset rx circuity
author heinrichsweikamp
date Sun, 30 Jun 2019 23:22:32 +0200
parents c40025d8e750
children cd58f7fc86db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
3 ; File convert.asm combined next generation V3.0.1
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; Converts register values to string
heinrichsweikamp
parents:
diff changeset
6 ;
heinrichsweikamp
parents:
diff changeset
7 ; Copyright (c) 2011, Matthias Heinrichs, HeinrichsWeikamp, all right reserved.
heinrichsweikamp
parents:
diff changeset
8 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
9 ; HISTORY
heinrichsweikamp
parents:
diff changeset
10 ; 2007-10-07 : [MH] Creation for OSTC sources
heinrichsweikamp
parents:
diff changeset
11 ; 2010-12-10 : [jDG] Optimize macro size
heinrichsweikamp
parents:
diff changeset
12 ;
heinrichsweikamp
parents:
diff changeset
13
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
14 #include "hwos.inc" ; Mandatory header
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
15
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
16 convert CODE
0
heinrichsweikamp
parents:
diff changeset
17
heinrichsweikamp
parents:
diff changeset
18 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
19
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
20 global output99_call
0
heinrichsweikamp
parents:
diff changeset
21 output99_call:
heinrichsweikamp
parents:
diff changeset
22 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
23 incf ignore_digits,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
24 clrf cvt_temp4
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
25 ;bra output99
0
heinrichsweikamp
parents:
diff changeset
26
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
27
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
28 global output99
0
heinrichsweikamp
parents:
diff changeset
29 output99:
heinrichsweikamp
parents:
diff changeset
30 movlw d'99'
heinrichsweikamp
parents:
diff changeset
31 cpfslt lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
32 movwf lo ; limit to 99
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
33 movff lo,cvt_temp_lo
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
34 clrf cvt_temp_hi
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
35 bcf pre_zero_flag ; do not display leading zeros
0
heinrichsweikamp
parents:
diff changeset
36
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
37 LCD_val99_2:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
38 movlw .10 ; 10
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
39 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
40 clrf cvt_temp3
0
heinrichsweikamp
parents:
diff changeset
41 rcall DEC2ASCII
heinrichsweikamp
parents:
diff changeset
42
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
43 movlw .1 ; 1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
44 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
45 clrf cvt_temp3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
46 bsf pre_zero_flag ; last figure, display zero (0)
0
heinrichsweikamp
parents:
diff changeset
47 rcall DEC2ASCII
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
48 return
0
heinrichsweikamp
parents:
diff changeset
49
heinrichsweikamp
parents:
diff changeset
50 global output99x_call
heinrichsweikamp
parents:
diff changeset
51 output99x_call:
heinrichsweikamp
parents:
diff changeset
52 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
53 incf ignore_digits,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
54 clrf cvt_temp4
0
heinrichsweikamp
parents:
diff changeset
55
heinrichsweikamp
parents:
diff changeset
56 movlw d'99'
heinrichsweikamp
parents:
diff changeset
57 cpfslt lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
58 movwf lo ; limit to 99
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
59 movff lo,cvt_temp_lo
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
60 clrf cvt_temp_hi
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
61 bsf pre_zero_flag ; display leading zeros
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
62 bra LCD_val99_2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
63
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
64
0
heinrichsweikamp
parents:
diff changeset
65 global output8_call
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
66 output8_call:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
67 clrf ignore_digits
0
heinrichsweikamp
parents:
diff changeset
68 incf ignore_digits,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
69 clrf cvt_temp4
0
heinrichsweikamp
parents:
diff changeset
70
heinrichsweikamp
parents:
diff changeset
71 output8:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
72 movff lo,cvt_temp_lo
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
73 clrf cvt_temp_hi
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
74 bcf pre_zero_flag ; do not display leading zeros
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
75 movlw .100 ; 100
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
76 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
77 clrf cvt_temp3
0
heinrichsweikamp
parents:
diff changeset
78 rcall DEC2ASCII
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
79 bra LCD_val99_2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
80
0
heinrichsweikamp
parents:
diff changeset
81
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
82 global output16_4_call
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
83 output16_4_call: ; limit to 9999
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
84 bsf show_last4
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
85 ; 9999 = 27 0F = [39][15]
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
86 movlw .40
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
87 cpfslt hi ; hi < 40 ?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
88 bra output16_4_call_2 ; NO - hi >= 40, do limit
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
89 ; YES - hi <= 39
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
90 movlw .39
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
91 cpfseq hi ; hi = 39 ?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
92 bra output16_4_call_3 ; NO - hi < 39, no limit needed
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
93 ; YES - hi = 39
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
94 movlw .15
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
95 cpfslt lo ; lo < 15
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
96 movwf lo ; NO - lo >= 15, set lo = 15
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
97 ; YES - lo <= 14 or lo set to =15
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
98 bra output16_4_call_3 ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
99
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
100 output16_4_call_2: ; set to 9999
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
101 MOVLI .9999,mpr
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
102 output16_4_call_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
103 bra output16_call
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
104
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
105
0
heinrichsweikamp
parents:
diff changeset
106 global output16_3_call
heinrichsweikamp
parents:
diff changeset
107 global output16_call
heinrichsweikamp
parents:
diff changeset
108 global output16
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
109 output16_3_call: ; limit to 999
225
31088352ee32 BUGFIX: Show dives with >999mins divetime correctly
heinrichsweikamp
parents: 0
diff changeset
110 bsf show_last3
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
111 ; Limit to 3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
112 movlw .4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
113 cpfslt hi
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
114 bra output16_3_call_2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
115 movlw .3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
116 cpfseq hi ; = 3 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
117 bra output16_3_call_3 ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
118 movlw .231 ; limit to 231(+768=999...)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
119 cpfslt lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
120 movwf lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
121 bra output16_3_call_3 ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
122 output16_3_call_2: ; set to .999
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
123 MOVLI .999,mpr
225
31088352ee32 BUGFIX: Show dives with >999mins divetime correctly
heinrichsweikamp
parents: 0
diff changeset
124 output16_3_call_3:
0
heinrichsweikamp
parents:
diff changeset
125 output16_call:
heinrichsweikamp
parents:
diff changeset
126 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
127 incf ignore_digits,F
heinrichsweikamp
parents:
diff changeset
128 clrf WREG
heinrichsweikamp
parents:
diff changeset
129 output16:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
130 movwf cvt_temp4 ; passed from output16dp macro, cleared by others.
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
131 bcf all_zeros_flag ; do not display any zero from here unless there was at least one figure /zero
0
heinrichsweikamp
parents:
diff changeset
132 bsf leading_zeros
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
133 tstfsz cvt_temp4 ; display leading zeros at all?
0
heinrichsweikamp
parents:
diff changeset
134 bcf leading_zeros
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
135 bsf DP_done2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
136 tstfsz cvt_temp4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
137 bcf DP_done2 ; decimal point not yet set
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
138 movff lo,cvt_temp_lo ; copy hi:lo to cvt_temp_hi:cvt_temp_lo
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
139 movff hi,cvt_temp_hi ; ...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
140 bcf pre_zero_flag ; do not display leading zeros
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
141 movlw b'00010000' ; 10000s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
142 movwf cvt_temp2
0
heinrichsweikamp
parents:
diff changeset
143 movlw b'00100111'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
144 movwf cvt_temp3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
145 btfsc show_last3 ; display only last three figures?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
146 bra output16_sk5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
147 btfsc show_last4 ; display only last four figures?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
148 bra output16_sk5
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
149 rcall DEC2ASCII ; NO - show all, here: 5th order digit
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
150
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
151 output16_sk5:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
152 bcf show_last4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
153 movlw b'11101000' ; 1000s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
154 movwf cvt_temp2
0
heinrichsweikamp
parents:
diff changeset
155 movlw b'00000011'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
156 movwf cvt_temp3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
157 btfsc DP_done2 ; is there a decimal point at all?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
158 bra output16_2 ; NO - use normal display mode
0
heinrichsweikamp
parents:
diff changeset
159
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
160 btfsc all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
161 bra output16_1 ; there was a figure /zero already
0
heinrichsweikamp
parents:
diff changeset
162
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
163 bsf pre_zero_flag ; display figure if zero?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
164 decfsz cvt_temp4,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
165 bcf pre_zero_flag ; NO
0
heinrichsweikamp
parents:
diff changeset
166
heinrichsweikamp
parents:
diff changeset
167 output16_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
168 btfsc DP_done ; decimal point set already?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
169 bsf pre_zero_flag ; YES - so display the rest
0
heinrichsweikamp
parents:
diff changeset
170 output16_2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
171 btfss show_last3 ; display only last three figures?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
172 rcall DEC2ASCII ; NO - show all. Here: 4th order digit
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
173 bcf show_last3 ; YES - so display the rest
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
174 movlw b'01100100' ; 100s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
175 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
176 clrf cvt_temp3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
177 btfsc ignore_digit3 ; ignore 3rd-5th digit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
178 bra output16_5 ; YES - skip the rest
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
179 btfsc DP_done2 ; is there a decimal point at all?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
180 bra output16_3 ; NO - use normal display mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
181 btfsc all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
182 bra output16_2_1 ; there was a figure /zero already
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
183 bsf pre_zero_flag ; display figure if zero?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
184 decfsz cvt_temp4,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
185 bcf pre_zero_flag ; NO
0
heinrichsweikamp
parents:
diff changeset
186
heinrichsweikamp
parents:
diff changeset
187 output16_2_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
188 btfsc DP_done ; decimal point set already?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
189 bsf pre_zero_flag ; YES - so display the rest
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
190 btfsc DP_done2 ; is there a decimal point at all?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
191 bsf pre_zero_flag ; NO - so display the rest
0
heinrichsweikamp
parents:
diff changeset
192 output16_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
193 rcall DEC2ASCII ; 3th order digit...
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
194 movlw b'00001010' ; 10s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
195 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
196 clrf cvt_temp3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
197 btfsc DP_done2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
198 bra output16_4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
199 btfsc all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
200 bra output16_3_1 ; there was a figure /zero already
0
heinrichsweikamp
parents:
diff changeset
201 bsf pre_zero_flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
202 decfsz cvt_temp4,W
0
heinrichsweikamp
parents:
diff changeset
203 bcf pre_zero_flag
heinrichsweikamp
parents:
diff changeset
204
heinrichsweikamp
parents:
diff changeset
205 output16_3_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
206 btfsc DP_done
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
207 bsf pre_zero_flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
208 btfsc DP_done2
0
heinrichsweikamp
parents:
diff changeset
209 bsf pre_zero_flag
heinrichsweikamp
parents:
diff changeset
210 output16_4:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
211 btfsc ignore_digit4 ; ignore 4-5th digit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
212 bra output16_5 ; YES - skip the rest
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
213 rcall DEC2ASCII ; 2nd order digit
0
heinrichsweikamp
parents:
diff changeset
214
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
215 movlw b'00000001' ; 1s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
216 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
217 clrf cvt_temp3
0
heinrichsweikamp
parents:
diff changeset
218 bsf pre_zero_flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
219 btfss ignore_digit5 ; ignore 5th digit?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
220 rcall DEC2ASCII ; 1st order digit
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
221 bcf ignore_digit5 ; YES - clear flag
0
heinrichsweikamp
parents:
diff changeset
222 output16_5:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
223 bcf ignore_digit4 ; clear flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
224 bcf ignore_digit3 ; clear flag
0
heinrichsweikamp
parents:
diff changeset
225 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
226 incf ignore_digits,F
heinrichsweikamp
parents:
diff changeset
227 bcf DP_done
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
228 return ; done with convert.asm...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
229
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
230
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
231 DEC2ASCII:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
232 clrf cvt_temp1 ; converts into ASCII code
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
233 DEC2ASCII_2:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
234 movf cvt_temp3,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
235 subwf cvt_temp_hi,W
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
236 btfss STATUS,C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
237 bra DEC2ASCII_4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
238 bnz DEC2ASCII_3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
239 movf cvt_temp2,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
240 subwf cvt_temp_lo,W
0
heinrichsweikamp
parents:
diff changeset
241 btfss STATUS,C
heinrichsweikamp
parents:
diff changeset
242 bra DEC2ASCII_4
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
243 DEC2ASCII_3:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
244 movf cvt_temp3,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
245 subwf cvt_temp_hi,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
246 movf cvt_temp2,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
247 subwf cvt_temp_lo,F
0
heinrichsweikamp
parents:
diff changeset
248 btfss STATUS,C
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
249 decf cvt_temp_hi,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
250 incf cvt_temp1,F
0
heinrichsweikamp
parents:
diff changeset
251 bsf pre_zero_flag
heinrichsweikamp
parents:
diff changeset
252 bra DEC2ASCII_2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
253 DEC2ASCII_4:
0
heinrichsweikamp
parents:
diff changeset
254 decfsz ignore_digits,F
heinrichsweikamp
parents:
diff changeset
255 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
256 incf ignore_digits,F ; so ignore_digits stays zero for the test above
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
257 movlw '0' ; offset for ASCII-value
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
258 addwf cvt_temp1,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
259 btfsc pre_zero_flag ; is this a leading zero?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
260 bra DEC2ASCII_4_1 ; NO
0
heinrichsweikamp
parents:
diff changeset
261 btfsc leftbind
heinrichsweikamp
parents:
diff changeset
262 bra DEC2ASCII_6
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
263 movlw ' ' ; instead of leading zeros a space!
0
heinrichsweikamp
parents:
diff changeset
264 bra DEC2ASCII_5
heinrichsweikamp
parents:
diff changeset
265 DEC2ASCII_4_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
266 bsf all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
267 DEC2ASCII_5:
0
heinrichsweikamp
parents:
diff changeset
268 movwf POSTINC2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
269 DEC2ASCII_6:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
270 decfsz cvt_temp4,F ; set decimal point?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
271 RETURN ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
272 movlw "." ; YES
0
heinrichsweikamp
parents:
diff changeset
273 movwf POSTINC2
heinrichsweikamp
parents:
diff changeset
274 bsf DP_done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
275 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
276
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
277
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
278 global outputHEX_call
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
279 outputHEX_call: ; coverts 8 Bit integer into two hex digits
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
280 movwf cvt_temp1 ; copy byte to process from WREG to local temp
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
281 swapf cvt_temp1,F ; swap nibbles to process upper nibble first
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
282 rcall outputHEX_nibble ; print nibble as ASCII
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
283 swapf cvt_temp1,F ; swap back to process lower nibble
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
284 outputHEX_nibble:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
285 movff cvt_temp1,cvt_temp2 ; create a working copy
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
286 movlw 0x0F ; mask for lower nibble
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
287 andwf cvt_temp2,F ; isolate lower nibble
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
288 movlw 0x30 ; offset from binary 0 to ASCII code for "0"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
289 addwf cvt_temp2,F ; add offset
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
290 movlw 0x39 ; ASCII code for "9"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
291 cpfsgt cvt_temp2 ; character code in cvt_temp2 pointing to something after "9"?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
292 bra outputHEX_1 ; NO - character code represents "0"..."9", can be printed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
293 movlw 0x07 ; YES - offset from ASCII code for character after "9" to character "A"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
294 addwf cvt_temp2,F ; - add offset, character code now represents "A"..."F", can be printed now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
295 outputHEX_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
296 movff cvt_temp2,POSTINC2 ; copy character code to output buffer
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
297 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
298
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
299
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
300 END