2 ; Convertion routine of 24 bits floating point to ASCII
4 ; written by Vangelis Rokas <vrokas AT otenet.gr>, 2004
7 ; This program is free software; you can redistribute it and/or
8 ; modify it under the terms of the GNU Library General Public License
9 ; as published by the Free Software Foundation; either version 2
10 ; of the License, or (at your option) any later version.
12 ; This library is distributed in the hope that it will be useful,
13 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ; GNU General Public License for more details.
17 ; You should have received a copy of the GNU General Public License
18 ; along with this program; if not, write to the Free Software
19 ; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 ; $Id: cnvfrac.S 3711 2005-03-31 16:25:17Z vrokas $
38 .registers udata_ovr 0x000
106 btfsc r0x00, 0 ; bit 0
121 decfsz round_digit, f
132 btfsc r0x00, 0 ; bit 0
135 btfsc r0x00, 1 ; bit 1
150 decfsz round_digit, f
161 btfsc r0x00, 0 ; bit 0
164 btfsc r0x00, 1 ; bit 1
167 btfsc r0x00, 2 ; bit 2
182 decfsz round_digit, f
193 btfsc r0x00, 1 ; bit 1
196 btfsc r0x00, 2 ; bit 2
199 btfsc r0x00, 3 ; bit 3
214 decfsz round_digit, f
225 btfsc r0x00, 0 ; bit 0
228 btfsc r0x00, 1 ; bit 1
231 btfsc r0x00, 2 ; bit 2
234 btfsc r0x00, 3 ; bit 3
237 btfsc r0x00, 4 ; bit 4
252 decfsz round_digit, f
263 btfsc r0x00, 0 ; bit 0
266 btfsc r0x00, 1 ; bit 1
269 btfsc r0x00, 2 ; bit 2
272 btfsc r0x00, 3 ; bit 3
275 btfsc r0x00, 4 ; bit 4
278 btfsc r0x00, 5 ; bit 5
293 decfsz round_digit, f
304 btfsc r0x00, 0 ; bit 0
307 btfsc r0x00, 2 ; bit 2
310 btfsc r0x00, 3 ; bit 3
313 btfsc r0x00, 4 ; bit 4
316 btfsc r0x00, 5 ; bit 5
319 btfsc r0x00, 6 ; bit 6
334 decfsz round_digit, f
345 btfsc r0x00, 0 ; bit 0
348 btfsc r0x00, 1 ; bit 1
351 btfsc r0x00, 5 ; bit 5
354 btfsc r0x00, 6 ; bit 6
357 btfsc r0x00, 7 ; bit 7
372 decfsz round_digit, f
383 btfsc r0x00, 0 ; bit 0
386 btfsc r0x00, 1 ; bit 1
389 btfsc r0x00, 2 ; bit 2
392 btfsc r0x00, 3 ; bit 3
395 btfsc r0x00, 4 ; bit 4
398 btfsc r0x00, 5 ; bit 5
401 btfsc r0x00, 6 ; bit 6
404 btfsc r0x00, 7 ; bit 7
407 btfsc r0x01, 0 ; bit 8
422 decfsz round_digit, f
433 btfsc r0x00, 0 ; bit 0
436 btfsc r0x00, 1 ; bit 1
439 btfsc r0x00, 2 ; bit 2
442 btfsc r0x00, 3 ; bit 3
445 btfsc r0x00, 4 ; bit 4
448 btfsc r0x00, 5 ; bit 5
451 btfsc r0x00, 6 ; bit 6
454 btfsc r0x00, 7 ; bit 7
457 btfsc r0x01, 0 ; bit 8
460 btfsc r0x01, 1 ; bit 9
475 decfsz round_digit, f
486 btfsc r0x00, 0 ; bit 0
489 btfsc r0x00, 1 ; bit 1
492 btfsc r0x00, 2 ; bit 2
495 btfsc r0x00, 3 ; bit 3
498 btfsc r0x00, 4 ; bit 4
501 btfsc r0x00, 5 ; bit 5
504 btfsc r0x00, 6 ; bit 6
507 btfsc r0x00, 7 ; bit 7
510 btfsc r0x01, 0 ; bit 8
513 btfsc r0x01, 1 ; bit 9
516 btfsc r0x01, 2 ; bit 10
531 decfsz round_digit, f
542 btfsc r0x00, 0 ; bit 0
545 btfsc r0x00, 1 ; bit 1
548 btfsc r0x00, 2 ; bit 2
551 btfsc r0x00, 3 ; bit 3
554 btfsc r0x00, 4 ; bit 4
557 btfsc r0x00, 5 ; bit 5
560 btfsc r0x00, 6 ; bit 6
563 btfsc r0x00, 7 ; bit 7
566 btfsc r0x01, 1 ; bit 9
569 btfsc r0x01, 2 ; bit 10
572 btfsc r0x01, 3 ; bit 11
587 decfsz round_digit, f
598 btfsc r0x00, 0 ; bit 0
601 btfsc r0x00, 1 ; bit 1
604 btfsc r0x00, 2 ; bit 2
607 btfsc r0x00, 3 ; bit 3
610 btfsc r0x00, 4 ; bit 4
613 btfsc r0x00, 5 ; bit 5
616 btfsc r0x00, 6 ; bit 6
619 btfsc r0x00, 7 ; bit 7
622 btfsc r0x01, 0 ; bit 8
625 btfsc r0x01, 1 ; bit 9
628 btfsc r0x01, 2 ; bit 10
631 btfsc r0x01, 3 ; bit 11
634 btfsc r0x01, 4 ; bit 12
649 decfsz round_digit, f
660 btfsc r0x00, 2 ; bit 2
663 btfsc r0x00, 3 ; bit 3
666 btfsc r0x00, 4 ; bit 4
669 btfsc r0x00, 5 ; bit 5
672 btfsc r0x00, 6 ; bit 6
675 btfsc r0x00, 7 ; bit 7
678 btfsc r0x01, 0 ; bit 8
681 btfsc r0x01, 1 ; bit 9
684 btfsc r0x01, 2 ; bit 10
687 btfsc r0x01, 3 ; bit 11
690 btfsc r0x01, 4 ; bit 12
693 btfsc r0x01, 5 ; bit 13
708 decfsz round_digit, f
719 btfsc r0x00, 0 ; bit 0
722 btfsc r0x00, 1 ; bit 1
725 btfsc r0x00, 2 ; bit 2
728 btfsc r0x00, 3 ; bit 3
731 btfsc r0x00, 4 ; bit 4
734 btfsc r0x00, 5 ; bit 5
737 btfsc r0x00, 6 ; bit 6
740 btfsc r0x00, 7 ; bit 7
743 btfsc r0x01, 0 ; bit 8
746 btfsc r0x01, 1 ; bit 9
749 btfsc r0x01, 2 ; bit 10
752 btfsc r0x01, 3 ; bit 11
755 btfsc r0x01, 4 ; bit 12
758 btfsc r0x01, 5 ; bit 13
761 btfsc r0x01, 6 ; bit 14
776 decfsz round_digit, f
787 btfsc r0x00, 0 ; bit 0
790 btfsc r0x00, 1 ; bit 1
793 btfsc r0x00, 2 ; bit 2
796 btfsc r0x00, 3 ; bit 3
799 btfsc r0x00, 4 ; bit 4
802 btfsc r0x00, 5 ; bit 5
805 btfsc r0x00, 6 ; bit 6
808 btfsc r0x00, 7 ; bit 7
811 btfsc r0x01, 0 ; bit 8
814 btfsc r0x01, 1 ; bit 9
817 btfsc r0x01, 2 ; bit 10
820 btfsc r0x01, 5 ; bit 13
823 btfsc r0x01, 6 ; bit 14
826 btfsc r0x01, 7 ; bit 15
841 decfsz round_digit, f
852 btfsc r0x00, 0 ; bit 0
855 btfsc r0x00, 1 ; bit 1
858 btfsc r0x00, 2 ; bit 2
861 btfsc r0x00, 3 ; bit 3
864 btfsc r0x00, 4 ; bit 4
867 btfsc r0x00, 6 ; bit 6
870 btfsc r0x00, 7 ; bit 7
873 btfsc r0x01, 0 ; bit 8
876 btfsc r0x01, 1 ; bit 9
879 btfsc r0x01, 2 ; bit 10
882 btfsc r0x01, 3 ; bit 11
885 btfsc r0x01, 4 ; bit 12
888 btfsc r0x01, 5 ; bit 13
891 btfsc r0x01, 6 ; bit 14
894 btfsc r0x01, 7 ; bit 15
897 btfsc r0x02, 0 ; bit 16
912 decfsz round_digit, f
923 btfsc r0x00, 1 ; bit 1
926 btfsc r0x00, 2 ; bit 2
929 btfsc r0x00, 3 ; bit 3
932 btfsc r0x00, 4 ; bit 4
935 btfsc r0x00, 5 ; bit 5
938 btfsc r0x00, 6 ; bit 6
941 btfsc r0x00, 7 ; bit 7
944 btfsc r0x01, 0 ; bit 8
947 btfsc r0x01, 1 ; bit 9
950 btfsc r0x01, 4 ; bit 12
953 btfsc r0x01, 5 ; bit 13
956 btfsc r0x01, 6 ; bit 14
959 btfsc r0x01, 7 ; bit 15
962 btfsc r0x02, 0 ; bit 16
965 btfsc r0x02, 1 ; bit 17
980 decfsz round_digit, f
991 btfsc r0x00, 5 ; bit 5
994 btfsc r0x00, 6 ; bit 6
997 btfsc r0x00, 7 ; bit 7
1000 btfsc r0x01, 0 ; bit 8
1003 btfsc r0x01, 2 ; bit 10
1006 btfsc r0x01, 3 ; bit 11
1009 btfsc r0x01, 4 ; bit 12
1012 btfsc r0x01, 5 ; bit 13
1015 btfsc r0x01, 6 ; bit 14
1018 btfsc r0x01, 7 ; bit 15
1021 btfsc r0x02, 0 ; bit 16
1024 btfsc r0x02, 1 ; bit 17
1027 btfsc r0x02, 2 ; bit 18
1042 decfsz round_digit, f
1053 btfsc r0x01, 0 ; bit 8
1056 btfsc r0x01, 1 ; bit 9
1059 btfsc r0x01, 2 ; bit 10
1062 btfsc r0x01, 3 ; bit 11
1065 btfsc r0x01, 4 ; bit 12
1068 btfsc r0x01, 5 ; bit 13
1071 btfsc r0x01, 6 ; bit 14
1074 btfsc r0x01, 7 ; bit 15
1077 btfsc r0x02, 1 ; bit 17
1080 btfsc r0x02, 2 ; bit 18
1083 btfsc r0x02, 3 ; bit 19
1098 decfsz round_digit, f
1109 btfsc r0x01, 3 ; bit 11
1112 btfsc r0x01, 4 ; bit 12
1115 btfsc r0x01, 5 ; bit 13
1118 btfsc r0x01, 6 ; bit 14
1121 btfsc r0x01, 7 ; bit 15
1124 btfsc r0x02, 0 ; bit 16
1127 btfsc r0x02, 1 ; bit 17
1130 btfsc r0x02, 2 ; bit 18
1133 btfsc r0x02, 3 ; bit 19
1136 btfsc r0x02, 4 ; bit 20
1151 decfsz round_digit, f
1162 btfsc r0x01, 7 ; bit 15
1165 btfsc r0x02, 0 ; bit 16
1168 btfsc r0x02, 1 ; bit 17
1171 btfsc r0x02, 2 ; bit 18
1174 btfsc r0x02, 3 ; bit 19
1177 btfsc r0x02, 4 ; bit 20
1180 btfsc r0x02, 5 ; bit 21
1195 decfsz round_digit, f
1206 btfsc r0x02, 2 ; bit 18
1209 btfsc r0x02, 3 ; bit 19
1212 btfsc r0x02, 4 ; bit 20
1215 btfsc r0x02, 5 ; bit 21
1218 btfsc r0x02, 6 ; bit 22
1233 decfsz round_digit, f
1244 btfsc r0x02, 5 ; bit 21
1247 btfsc r0x02, 6 ; bit 22
1250 btfsc r0x02, 7 ; bit 23
1265 decfsz round_digit, f
1373 movff PREINC1, d0x24
1374 movff PREINC1, d0x23
1375 movff PREINC1, d0x22
1376 movff PREINC1, d0x21
1377 movff PREINC1, d0x20
1378 movff PREINC1, d0x19
1379 movff PREINC1, d0x18
1380 movff PREINC1, d0x17
1381 movff PREINC1, d0x16
1382 movff PREINC1, d0x15
1383 movff PREINC1, d0x14
1384 movff PREINC1, d0x13
1385 movff PREINC1, d0x12
1386 movff PREINC1, d0x11
1387 movff PREINC1, d0x10
1388 movff PREINC1, d0x09
1389 movff PREINC1, d0x08
1390 movff PREINC1, d0x07
1391 movff PREINC1, d0x06
1392 movff PREINC1, d0x05
1393 movff PREINC1, d0x04
1394 movff PREINC1, d0x03
1395 movff PREINC1, d0x02
1396 movff PREINC1, d0x01
1397 movff PREINC1, d0x00
1404 ;00 0.5000000000000000000000000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1405 ;01 0.2500000000000000000000000 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1406 ;02 0.1250000000000000000000000 1 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1407 ;03 0.0625000000000000000000000 0 6 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1408 ;04 0.0312500000000000000000000 0 3 1 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1409 ;05 0.0156250000000000000000000 0 1 5 6 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1410 ;06 0.0078125000000000000000000 0 0 7 8 1 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1411 ;07 0.0039062500000000000000000 0 0 3 9 0 6 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1412 ;08 0.0019531250000000000000000 0 0 1 9 5 3 1 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1413 ;09 0.0009765625000000000000000 0 0 0 9 7 6 5 6 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1414 ;10 0.0004882812500000000000000 0 0 0 4 8 8 2 8 1 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0
1415 ;11 0.0002441406250000000000000 0 0 0 2 4 4 1 4 0 6 2 5 0 0 0 0 0 0 0 0 0 0 0 0
1416 ;12 0.0001220703125000000000000 0 0 0 1 2 2 0 7 0 3 1 2 5 0 0 0 0 0 0 0 0 0 0 0
1417 ;13 0.0000610351562500000000000 0 0 0 0 6 1 0 3 5 1 5 6 2 5 0 0 0 0 0 0 0 0 0 0
1418 ;14 0.0000305175781250000000000 0 0 0 0 3 0 5 1 7 5 7 8 1 2 5 0 0 0 0 0 0 0 0 0
1419 ;15 0.0000152587890625000000000 0 0 0 0 1 5 2 5 8 7 8 9 0 6 2 5 0 0 0 0 0 0 0 0
1420 ;16 0.0000076293945312500000000 0 0 0 0 0 7 6 2 9 3 9 4 5 3 1 2 5 0 0 0 0 0 0 0
1421 ;17 0.0000038146972656250000000 0 0 0 0 0 3 8 1 4 6 9 7 2 6 5 6 2 5 0 0 0 0 0 0
1422 ;18 0.0000019073486328125000000 0 0 0 0 0 1 9 0 7 3 4 8 6 3 2 8 1 2 5 0 0 0 0 0
1423 ;19 0.0000009536743164062500000 0 0 0 0 0 0 9 5 3 6 7 4 3 1 6 4 0 6 2 5 0 0 0 0
1424 ;20 0.0000004768371582031250000 0 0 0 0 0 0 4 7 6 8 3 7 1 5 8 2 0 3 1 2 5 0 0 0
1425 ;21 0.0000002384185791015625000 0 0 0 0 0 0 2 3 8 4 1 8 5 7 9 1 0 1 5 6 2 5 0 0
1426 ;22 0.0000001192092895507812500 0 0 0 0 0 0 1 1 9 2 0 9 2 8 9 5 5 0 7 8 1 2 5 0
1427 ;23 0.0000000596046447753906250 0 0 0 0 0 0 0 5 9 6 0 4 6 4 4 7 7 5 3 9 0 6 2 5