annotate src/convert.asm @ 604:ca4556fb60b9

bump to 2.99beta, work on 3.00 stable
author heinrichsweikamp
date Thu, 22 Nov 2018 19:47:26 +0100
parents b455b31ce022
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 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
3 ; File convert.asm ## V2.98c
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
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
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
0
heinrichsweikamp
parents:
diff changeset
25
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
26
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
27 global output99
0
heinrichsweikamp
parents:
diff changeset
28 output99:
heinrichsweikamp
parents:
diff changeset
29 movlw d'99'
heinrichsweikamp
parents:
diff changeset
30 cpfslt lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
31 movwf lo ; limit to 99
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
32 movff lo,lo_temp
0
heinrichsweikamp
parents:
diff changeset
33 clrf hi_temp
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
34 bcf pre_zero_flag ; do not display leading zeros
0
heinrichsweikamp
parents:
diff changeset
35
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
36 LCD_val99_2:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
37 movlw .10 ; 10
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
38 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
39 clrf cvt_temp3
0
heinrichsweikamp
parents:
diff changeset
40 rcall DEC2ASCII
heinrichsweikamp
parents:
diff changeset
41
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
42 movlw .1 ; 1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
43 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
44 clrf cvt_temp3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
45 bsf pre_zero_flag ; last figure, display zero (0)
0
heinrichsweikamp
parents:
diff changeset
46 rcall DEC2ASCII
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
47 return
0
heinrichsweikamp
parents:
diff changeset
48
heinrichsweikamp
parents:
diff changeset
49 global output99x_call
heinrichsweikamp
parents:
diff changeset
50 output99x_call:
heinrichsweikamp
parents:
diff changeset
51 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
52 incf ignore_digits,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
53 clrf cvt_temp4
0
heinrichsweikamp
parents:
diff changeset
54
heinrichsweikamp
parents:
diff changeset
55 movlw d'99'
heinrichsweikamp
parents:
diff changeset
56 cpfslt lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
57 movwf lo ; limit to 99
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
58 movff lo, lo_temp
0
heinrichsweikamp
parents:
diff changeset
59 clrf hi_temp
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
60 bsf pre_zero_flag ; display leading zeros
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
61 bra LCD_val99_2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
62
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
63
0
heinrichsweikamp
parents:
diff changeset
64 global output8_call
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
65 output8_call:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
66 clrf ignore_digits
0
heinrichsweikamp
parents:
diff changeset
67 incf ignore_digits,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
68 clrf cvt_temp4
0
heinrichsweikamp
parents:
diff changeset
69
heinrichsweikamp
parents:
diff changeset
70 output8:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
71 movff lo, lo_temp
0
heinrichsweikamp
parents:
diff changeset
72 clrf hi_temp
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
73 bcf pre_zero_flag ; do not display leading zeros
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
74 movlw .100 ; 100
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
75 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
76 clrf cvt_temp3
0
heinrichsweikamp
parents:
diff changeset
77 rcall DEC2ASCII
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
78 bra LCD_val99_2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
79
0
heinrichsweikamp
parents:
diff changeset
80
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
81 global output16_4_call
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
82 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
83 bsf show_last4
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
84 ; 9999 = 27 0F = [39][15]
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
85 movlw .40
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
86 cpfslt hi ; hi < 40 ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
87 bra output16_4_call_2 ; NO - hi >= 40, do limit
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
88 ; Yes, hi <= 39
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
89 movlw .39
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
90 cpfseq hi ; hi = 39 ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
91 bra output16_4_call_3 ; NO - hi < 39, no limit needed
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
92 ; Yes, hi = 39
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
93 movlw .15
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
94 cpfslt lo ; lo < 15
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
95 movwf lo ; NO - lo >= 15, set lo = 15.
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
96 ; Yes, lo <= 14 or lo set to =15
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
97 bra output16_4_call_3 ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
98 output16_4_call_2: ; set to 9999
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
99 movlw LOW .9999
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
100 movwf lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
101 movlw HIGH .9999
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
102 movwf hi
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
103 output16_4_call_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
104 bra output16_call
300
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
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
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
114 bra output16_3_call_2
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
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
123 movlw LOW .999
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
124 movwf lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
125 movlw HIGH .999
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
126 movwf hi
225
31088352ee32 BUGFIX: Show dives with >999mins divetime correctly
heinrichsweikamp
parents: 0
diff changeset
127 output16_3_call_3:
0
heinrichsweikamp
parents:
diff changeset
128 output16_call:
heinrichsweikamp
parents:
diff changeset
129 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
130 incf ignore_digits,F
heinrichsweikamp
parents:
diff changeset
131 clrf WREG
heinrichsweikamp
parents:
diff changeset
132 output16:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
133 movwf cvt_temp4 ; passed from output16dp macro, cleared by others.
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
134 bcf all_zeros_flag ; do not display any zero from here unless there was at least one figure /zero
0
heinrichsweikamp
parents:
diff changeset
135 bsf leading_zeros
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
136 tstfsz cvt_temp4 ; display leading zeros at all?
0
heinrichsweikamp
parents:
diff changeset
137 bcf leading_zeros
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
138 bsf DP_done2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
139 tstfsz cvt_temp4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
140 bcf DP_done2 ; decimal point not yet set
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
141 movff lo, lo_temp
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
142 movff hi, hi_temp
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
143 bcf pre_zero_flag ; do not display leading zeros
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
144 movlw b'00010000' ; 10000s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
145 movwf cvt_temp2
0
heinrichsweikamp
parents:
diff changeset
146 movlw b'00100111'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
147 movwf cvt_temp3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
148 btfsc show_last3 ; display only last three figures?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
149 bra output16_sk5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
150 btfsc show_last4 ; display only last four figures?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
151 bra output16_sk5
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
152 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
153
5ad479f2a868 Merged Screen layout mod #1 into Screen layout work #3
Janos Kovacs <kovjanos@gmail.com>
parents: 275
diff changeset
154 output16_sk5:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
155 bcf show_last4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
156 movlw b'11101000' ; 1000s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
157 movwf cvt_temp2
0
heinrichsweikamp
parents:
diff changeset
158 movlw b'00000011'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
159 movwf cvt_temp3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
160 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
161 bra output16_2 ; NO - use normal display mode
0
heinrichsweikamp
parents:
diff changeset
162
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
163 btfsc all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
164 bra output16_1 ; there was a figure /zero already
0
heinrichsweikamp
parents:
diff changeset
165
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
166 bsf pre_zero_flag ; display figure if zero?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
167 decfsz cvt_temp4,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
168 bcf pre_zero_flag ; NO
0
heinrichsweikamp
parents:
diff changeset
169
heinrichsweikamp
parents:
diff changeset
170 output16_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
171 btfsc DP_done ; decimal point set already?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
172 bsf pre_zero_flag ; YES - so display the rest
0
heinrichsweikamp
parents:
diff changeset
173 output16_2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
174 btfss show_last3 ; display only last three figures?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
175 rcall DEC2ASCII ; NO - show all. Here: 4th order digit
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
176 bcf show_last3 ; YES - so display the rest
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
177 movlw b'01100100' ; 100s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
178 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
179 clrf cvt_temp3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
180 btfsc ignore_digit3 ; ignore 3rd-5th digit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
181 bra output16_5 ; YES - skip the rest
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
182 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
183 bra output16_3 ; NO - use normal display mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
184 btfsc all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
185 bra output16_2_1 ; there was a figure /zero already
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
186 bsf pre_zero_flag ; display figure if zero?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
187 decfsz cvt_temp4,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
188 bcf pre_zero_flag ; NO
0
heinrichsweikamp
parents:
diff changeset
189
heinrichsweikamp
parents:
diff changeset
190 output16_2_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
191 btfsc DP_done ; decimal point set already?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
192 bsf pre_zero_flag ; YES - so display the rest
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
193 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
194 bsf pre_zero_flag ; NO - so display the rest
0
heinrichsweikamp
parents:
diff changeset
195 output16_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
196 rcall DEC2ASCII ; 3th order digit...
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
197 movlw b'00001010' ; 10s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
198 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
199 clrf cvt_temp3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
200 btfsc DP_done2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
201 bra output16_4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
202 btfsc all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
203 bra output16_3_1 ; there was a figure /zero already
0
heinrichsweikamp
parents:
diff changeset
204 bsf pre_zero_flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
205 decfsz cvt_temp4,W
0
heinrichsweikamp
parents:
diff changeset
206 bcf pre_zero_flag
heinrichsweikamp
parents:
diff changeset
207
heinrichsweikamp
parents:
diff changeset
208 output16_3_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
209 btfsc DP_done
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
210 bsf pre_zero_flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
211 btfsc DP_done2
0
heinrichsweikamp
parents:
diff changeset
212 bsf pre_zero_flag
heinrichsweikamp
parents:
diff changeset
213 output16_4:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
214 btfsc ignore_digit4 ; ignore 4-5th digit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
215 bra output16_5 ; YES - skip the rest
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
216 rcall DEC2ASCII ; 2nd order digit
0
heinrichsweikamp
parents:
diff changeset
217
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
218 movlw b'00000001' ; 1s
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
219 movwf cvt_temp2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
220 clrf cvt_temp3
0
heinrichsweikamp
parents:
diff changeset
221 bsf pre_zero_flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
222 btfss ignore_digit5 ; ignore 5th digit?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
223 rcall DEC2ASCII ; 1st order digit
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
224 bcf ignore_digit5 ; YES - clear flag
0
heinrichsweikamp
parents:
diff changeset
225 output16_5:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
226 bcf ignore_digit4 ; clear flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
227 bcf ignore_digit3 ; clear flag
0
heinrichsweikamp
parents:
diff changeset
228 clrf ignore_digits
heinrichsweikamp
parents:
diff changeset
229 incf ignore_digits,F
heinrichsweikamp
parents:
diff changeset
230 bcf DP_done
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
231 return ; done with convert.asm...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
232
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
233
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
234 DEC2ASCII:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
235 clrf cvt_temp1 ; converts into ASCII code
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
236 DEC2ASCII_2:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
237 movf cvt_temp3,W
0
heinrichsweikamp
parents:
diff changeset
238 subwf hi_temp,W
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
239 btfss STATUS,C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
240 bra DEC2ASCII_4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
241 bnz DEC2ASCII_3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
242 movf cvt_temp2,W
0
heinrichsweikamp
parents:
diff changeset
243 subwf lo_temp,W
heinrichsweikamp
parents:
diff changeset
244 btfss STATUS,C
heinrichsweikamp
parents:
diff changeset
245 bra DEC2ASCII_4
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
246 DEC2ASCII_3:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
247 movf cvt_temp3,W
0
heinrichsweikamp
parents:
diff changeset
248 subwf hi_temp,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
249 movf cvt_temp2,W
0
heinrichsweikamp
parents:
diff changeset
250 subwf lo_temp,F
heinrichsweikamp
parents:
diff changeset
251 btfss STATUS,C
heinrichsweikamp
parents:
diff changeset
252 decf hi_temp,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
253 incf cvt_temp1,F
0
heinrichsweikamp
parents:
diff changeset
254 bsf pre_zero_flag
heinrichsweikamp
parents:
diff changeset
255 bra DEC2ASCII_2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
256 DEC2ASCII_4:
0
heinrichsweikamp
parents:
diff changeset
257 decfsz ignore_digits,F
heinrichsweikamp
parents:
diff changeset
258 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
259 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
260 movlw '0' ; offset for ASCII-value
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
261 addwf cvt_temp1,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
262 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
263 bra DEC2ASCII_4_1 ; NO
0
heinrichsweikamp
parents:
diff changeset
264 btfsc leftbind
heinrichsweikamp
parents:
diff changeset
265 bra DEC2ASCII_6
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
266 movlw ' ' ; instead of leading zeros a space!
0
heinrichsweikamp
parents:
diff changeset
267 bra DEC2ASCII_5
heinrichsweikamp
parents:
diff changeset
268 DEC2ASCII_4_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
269 bsf all_zeros_flag ; display any zero from here
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
270 DEC2ASCII_5:
0
heinrichsweikamp
parents:
diff changeset
271 movwf POSTINC2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
272 DEC2ASCII_6:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
273 decfsz cvt_temp4,F ; set decimal point?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
274 RETURN ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
275 movlw "." ; YES
0
heinrichsweikamp
parents:
diff changeset
276 movwf POSTINC2
heinrichsweikamp
parents:
diff changeset
277 bsf DP_done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
278 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
279
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
280
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
281 global outputHEX_call
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
282 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
283 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
284 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
285 rcall outputHEX_nibble ; print nibble as ASCII
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
286 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
287 outputHEX_nibble:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
288 movff cvt_temp1,cvt_temp2 ; create a working copy
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
289 movlw 0x0F ; mask for lower nibble
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
290 andwf cvt_temp2,F ; isolate lower nibble
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
291 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
292 addwf cvt_temp2,F ; add offset
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
293 movlw 0x39 ; ASCII code for "9"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
294 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
295 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
296 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
297 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
298 outputHEX_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
299 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
300 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
301
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
302
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 418
diff changeset
303 END