annotate 3rdparty/packages/coyota/bin_dec32.a @ 2861:bd286ab169c7 lwtools-port

Makefiles: Make make info prettier for dsks/ReadMe
author Tormod Volden <debian.tormod@gmail.com>
date Mon, 15 Jul 2013 23:58:09 +0200
parents 0ae4857f8f82
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1909
323e7751c250 Updated
boisy
parents:
diff changeset
1 ************************************************
323e7751c250 Updated
boisy
parents:
diff changeset
2 *
323e7751c250 Updated
boisy
parents:
diff changeset
3 * Binary to decimal conversion (32 bit)
323e7751c250 Updated
boisy
parents:
diff changeset
4
323e7751c250 Updated
boisy
parents:
diff changeset
5 * OTHER MODULES NEEDED: DECTAB$
323e7751c250 Updated
boisy
parents:
diff changeset
6
323e7751c250 Updated
boisy
parents:
diff changeset
7 * ENTRY: X=buffer for ascii string
323e7751c250 Updated
boisy
parents:
diff changeset
8 * Y=bits 31-16 of binary value to convert
323e7751c250 Updated
boisy
parents:
diff changeset
9 * D=bits 15-0 of binary value to convert
323e7751c250 Updated
boisy
parents:
diff changeset
10
323e7751c250 Updated
boisy
parents:
diff changeset
11 * EXIT: all registers (except cc) preserved
323e7751c250 Updated
boisy
parents:
diff changeset
12
323e7751c250 Updated
boisy
parents:
diff changeset
13
323e7751c250 Updated
boisy
parents:
diff changeset
14 nam 32 bit Binary to Decimal Conversion
323e7751c250 Updated
boisy
parents:
diff changeset
15 ttl Assembler Library Module
323e7751c250 Updated
boisy
parents:
diff changeset
16
323e7751c250 Updated
boisy
parents:
diff changeset
17
323e7751c250 Updated
boisy
parents:
diff changeset
18 psect BIN_DEC32,0,0,0,0,0
323e7751c250 Updated
boisy
parents:
diff changeset
19
323e7751c250 Updated
boisy
parents:
diff changeset
20
323e7751c250 Updated
boisy
parents:
diff changeset
21 Base fcb $3B,$9A,$CA,$00 1,000,000,000
323e7751c250 Updated
boisy
parents:
diff changeset
22 fcb $05,$F5,$E1,$00 100,000,000
323e7751c250 Updated
boisy
parents:
diff changeset
23 fcb $00,$98,$96,$80 10,000,000
323e7751c250 Updated
boisy
parents:
diff changeset
24 fcb $00,$0F,$42,$40 1,000,000
323e7751c250 Updated
boisy
parents:
diff changeset
25 fcb $00,$01,$86,$A0 100,000
323e7751c250 Updated
boisy
parents:
diff changeset
26 fcb $00,$00,$27,$10 10,000
323e7751c250 Updated
boisy
parents:
diff changeset
27 fcb $00,$00,$03,$E8 1,000
323e7751c250 Updated
boisy
parents:
diff changeset
28 fcb $00,$00,$00,$64 100
323e7751c250 Updated
boisy
parents:
diff changeset
29 fcb $00,$00,$00,$0A 10
323e7751c250 Updated
boisy
parents:
diff changeset
30 fcb $00,$00,$00,$01 1
323e7751c250 Updated
boisy
parents:
diff changeset
31
323e7751c250 Updated
boisy
parents:
diff changeset
32
323e7751c250 Updated
boisy
parents:
diff changeset
33 * Entry:
323e7751c250 Updated
boisy
parents:
diff changeset
34 * A = format flag (0 = write leading zeros, 1 = do not)
323e7751c250 Updated
boisy
parents:
diff changeset
35 * X = address of buffer to hold number
323e7751c250 Updated
boisy
parents:
diff changeset
36 * Y = address of 32 bit value
323e7751c250 Updated
boisy
parents:
diff changeset
37 * Exit:
323e7751c250 Updated
boisy
parents:
diff changeset
38 * X = address of buffer holding number
323e7751c250 Updated
boisy
parents:
diff changeset
39 BIN_DEC32:
323e7751c250 Updated
boisy
parents:
diff changeset
40 pshs d,x,y,u
323e7751c250 Updated
boisy
parents:
diff changeset
41 tfr x,u
323e7751c250 Updated
boisy
parents:
diff changeset
42 tfr y,x
323e7751c250 Updated
boisy
parents:
diff changeset
43 ldb #10 max number of numbers (10^9)
323e7751c250 Updated
boisy
parents:
diff changeset
44 pshs b save count on stack
323e7751c250 Updated
boisy
parents:
diff changeset
45 leay <Base,pcr point to base of numbers
323e7751c250 Updated
boisy
parents:
diff changeset
46 s@ lda #$30 put #'0
323e7751c250 Updated
boisy
parents:
diff changeset
47 sta ,u at U
323e7751c250 Updated
boisy
parents:
diff changeset
48 s1@ bsr Sub32 ,X=,X-,Y
323e7751c250 Updated
boisy
parents:
diff changeset
49 inc ,u
323e7751c250 Updated
boisy
parents:
diff changeset
50 bcc s1@ if X>0, continue
323e7751c250 Updated
boisy
parents:
diff changeset
51 bsr Add32 add back in
323e7751c250 Updated
boisy
parents:
diff changeset
52 dec ,u+
323e7751c250 Updated
boisy
parents:
diff changeset
53 dec ,s decrement counter
323e7751c250 Updated
boisy
parents:
diff changeset
54 beq done@
323e7751c250 Updated
boisy
parents:
diff changeset
55 lda ,s
323e7751c250 Updated
boisy
parents:
diff changeset
56 cmpa #$09
323e7751c250 Updated
boisy
parents:
diff changeset
57 beq comma@
323e7751c250 Updated
boisy
parents:
diff changeset
58 cmpa #$06
323e7751c250 Updated
boisy
parents:
diff changeset
59 beq comma@
323e7751c250 Updated
boisy
parents:
diff changeset
60 cmpa #$03
323e7751c250 Updated
boisy
parents:
diff changeset
61 bne s2@
323e7751c250 Updated
boisy
parents:
diff changeset
62 comma@ ldb #',
323e7751c250 Updated
boisy
parents:
diff changeset
63 stb ,u+
323e7751c250 Updated
boisy
parents:
diff changeset
64 s2@ leay 4,y point to next
323e7751c250 Updated
boisy
parents:
diff changeset
65 bra s@
323e7751c250 Updated
boisy
parents:
diff changeset
66 done@ leas 1,s
323e7751c250 Updated
boisy
parents:
diff changeset
67 clr ,u put nil byte at end
323e7751c250 Updated
boisy
parents:
diff changeset
68 * 1,234,567,890
323e7751c250 Updated
boisy
parents:
diff changeset
69 tst ,s format flag
323e7751c250 Updated
boisy
parents:
diff changeset
70 beq ex2@
323e7751c250 Updated
boisy
parents:
diff changeset
71 ldb #14 length of string with commas + 1
323e7751c250 Updated
boisy
parents:
diff changeset
72 ldx 2,s get pointer to buffer
323e7751c250 Updated
boisy
parents:
diff changeset
73 a@ decb
323e7751c250 Updated
boisy
parents:
diff changeset
74 beq ex@
323e7751c250 Updated
boisy
parents:
diff changeset
75 lda ,x+ get byte
323e7751c250 Updated
boisy
parents:
diff changeset
76 cmpa #'0
323e7751c250 Updated
boisy
parents:
diff changeset
77 beq a@
323e7751c250 Updated
boisy
parents:
diff changeset
78 cmpa #',
323e7751c250 Updated
boisy
parents:
diff changeset
79 beq a@
323e7751c250 Updated
boisy
parents:
diff changeset
80 ex@ leax -1,x
323e7751c250 Updated
boisy
parents:
diff changeset
81 stx 2,s
323e7751c250 Updated
boisy
parents:
diff changeset
82 ex2@ puls d,x,y,u,pc
323e7751c250 Updated
boisy
parents:
diff changeset
83
323e7751c250 Updated
boisy
parents:
diff changeset
84 * Entry:
323e7751c250 Updated
boisy
parents:
diff changeset
85 * X = address of 32 bit minuend
323e7751c250 Updated
boisy
parents:
diff changeset
86 * Y = address of 32 bit subtrahend
323e7751c250 Updated
boisy
parents:
diff changeset
87 * Exit:
323e7751c250 Updated
boisy
parents:
diff changeset
88 * X = address of 32 bit difference
323e7751c250 Updated
boisy
parents:
diff changeset
89 Sub32 ldd 2,x
323e7751c250 Updated
boisy
parents:
diff changeset
90 subd 2,y
323e7751c250 Updated
boisy
parents:
diff changeset
91 std 2,x
323e7751c250 Updated
boisy
parents:
diff changeset
92 ldd ,x
323e7751c250 Updated
boisy
parents:
diff changeset
93 sbcb 1,y
323e7751c250 Updated
boisy
parents:
diff changeset
94 sbca ,y
323e7751c250 Updated
boisy
parents:
diff changeset
95 std ,x
323e7751c250 Updated
boisy
parents:
diff changeset
96 rts
323e7751c250 Updated
boisy
parents:
diff changeset
97
323e7751c250 Updated
boisy
parents:
diff changeset
98
323e7751c250 Updated
boisy
parents:
diff changeset
99 * Entry:
323e7751c250 Updated
boisy
parents:
diff changeset
100 * X = address of 32 bit number
323e7751c250 Updated
boisy
parents:
diff changeset
101 * Y = address of 32 bit number
323e7751c250 Updated
boisy
parents:
diff changeset
102 * Exit:
323e7751c250 Updated
boisy
parents:
diff changeset
103 * X = address of 32 bit sum
323e7751c250 Updated
boisy
parents:
diff changeset
104 Add32 ldd 2,x
323e7751c250 Updated
boisy
parents:
diff changeset
105 addd 2,y
323e7751c250 Updated
boisy
parents:
diff changeset
106 std 2,x
323e7751c250 Updated
boisy
parents:
diff changeset
107 ldd ,x
323e7751c250 Updated
boisy
parents:
diff changeset
108 adcb 1,y
323e7751c250 Updated
boisy
parents:
diff changeset
109 adca ,y
323e7751c250 Updated
boisy
parents:
diff changeset
110 std ,x
323e7751c250 Updated
boisy
parents:
diff changeset
111 rts
323e7751c250 Updated
boisy
parents:
diff changeset
112
2446
0ae4857f8f82 Save registers in 'sendit'
boisy
parents: 1909
diff changeset
113 endsect