Initial revision
[fw/sdcc] / device / lib / large / _divslong.asm
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.1.9Ga Sun Jan 16 17:31:23 2000
4
5 ;--------------------------------------------------------
6         .module _divslong
7 ;--------------------------------------------------------
8 ; publics variables in this module
9 ;--------------------------------------------------------
10         .globl __divslong_PARM_2
11         .globl __divslong
12 ;--------------------------------------------------------
13 ; special function registers
14 ;--------------------------------------------------------
15 ;--------------------------------------------------------
16 ; special function bits 
17 ;--------------------------------------------------------
18 ;--------------------------------------------------------
19 ; internal ram data
20 ;--------------------------------------------------------
21         .area   DSEG    (DATA)
22 __divslong_sloc0_1_0:
23         .ds     0x0004
24 __divslong_sloc1_1_0:
25         .ds     0x0004
26 ;--------------------------------------------------------
27 ; overlayable items in internal ram 
28 ;--------------------------------------------------------
29         .area   OSEG    (OVR,DATA)
30 ;--------------------------------------------------------
31 ; indirectly addressable internal ram data
32 ;--------------------------------------------------------
33         .area   ISEG    (DATA)
34 ;--------------------------------------------------------
35 ; bit data
36 ;--------------------------------------------------------
37         .area   BSEG    (BIT)
38 ;--------------------------------------------------------
39 ; external ram data
40 ;--------------------------------------------------------
41         .area   XSEG    (XDATA)
42 __divslong_PARM_2:
43         .ds     0x0004
44 __divslong_a_1_1:
45         .ds     0x0004
46 ;--------------------------------------------------------
47 ; global & static initialisations
48 ;--------------------------------------------------------
49         .area GSINIT (CODE)
50 ;--------------------------------------------------------
51 ; code
52 ;--------------------------------------------------------
53         .area CSEG (CODE)
54         G$_divslong$0$0 ==.
55 ;       _divslong.c 25
56 ;       -----------------------------------------
57 ;        function _divslong
58 ;       -----------------------------------------
59 __divslong:
60         ar2 = 0x02
61         ar3 = 0x03
62         ar4 = 0x04
63         ar5 = 0x05
64         ar6 = 0x06
65         ar7 = 0x07
66         ar0 = 0x00
67         ar1 = 0x01
68 ;       _divslong.c 0
69         push    acc
70         push    b
71         push    dph
72         push    dpl
73         mov     dptr,#__divslong_a_1_1
74         pop     acc
75         movx    @dptr,a
76         pop     acc
77         inc     dptr
78         movx    @dptr,a
79         pop     acc
80         inc     dptr
81         movx    @dptr,a
82         pop     acc
83         inc     dptr
84         movx    @dptr,a
85 ;       _divslong.c 29
86         mov     dptr,#__divslong_a_1_1
87         movx    a,@dptr
88         mov     r2,a
89         inc     dptr
90         movx    a,@dptr
91         mov     r3,a
92         inc     dptr
93         movx    a,@dptr
94         mov     r4,a
95         inc     dptr
96         movx    a,@dptr
97 ; Peephole 105   removed redundant mov
98         mov  r5,a
99 ; Peephole 111   removed ljmp by inverse jump logic
100         jnb  acc.7,00106$
101 00113$:
102         clr     c
103         clr     a
104         subb    a,r2
105         mov     r6,a
106         clr     a
107         subb    a,r3
108         mov     r7,a
109         clr     a
110         subb    a,r4
111         mov     r0,a
112         clr     a
113         subb    a,r5
114         mov     r1,a
115 ; Peephole 132   changed ljmp to sjmp
116         sjmp 00107$
117 00106$:
118         mov     ar6,r2
119         mov     ar7,r3
120         mov     ar0,r4
121         mov     ar1,r5
122 00107$:
123         mov     __divslong_sloc0_1_0,r6
124         mov     (__divslong_sloc0_1_0 + 1),r7
125         mov     (__divslong_sloc0_1_0 + 2),r0
126         mov     (__divslong_sloc0_1_0 + 3),r1
127 ;       _divslong.c 30
128         mov     dptr,#__divslong_PARM_2
129         movx    a,@dptr
130         mov     r6,a
131         inc     dptr
132         movx    a,@dptr
133         mov     r7,a
134         inc     dptr
135         movx    a,@dptr
136         mov     r0,a
137         inc     dptr
138         movx    a,@dptr
139 ; Peephole 105   removed redundant mov
140         mov  r1,a
141         rlc     a
142         clr     a
143         rlc     a
144 ; Peephole 105   removed redundant mov
145         mov  r2,a
146 ; Peephole 110   removed ljmp by inverse jump logic
147         jz  00108$
148 00114$:
149         clr     c
150         clr     a
151         subb    a,r6
152         mov     __divslong_sloc1_1_0,a
153         clr     a
154         subb    a,r7
155         mov     (__divslong_sloc1_1_0 + 1),a
156         clr     a
157         subb    a,r0
158         mov     (__divslong_sloc1_1_0 + 2),a
159         clr     a
160         subb    a,r1
161         mov     (__divslong_sloc1_1_0 + 3),a
162 ; Peephole 132   changed ljmp to sjmp
163         sjmp 00109$
164 00108$:
165         mov     __divslong_sloc1_1_0,r6
166         mov     (__divslong_sloc1_1_0 + 1),r7
167         mov     (__divslong_sloc1_1_0 + 2),r0
168         mov     (__divslong_sloc1_1_0 + 3),r1
169 00109$:
170         mov     dptr,#__divulong_PARM_2
171         mov     a,__divslong_sloc1_1_0
172         movx    @dptr,a
173         inc     dptr
174         mov     a,(__divslong_sloc1_1_0 + 1)
175         movx    @dptr,a
176         inc     dptr
177         mov     a,(__divslong_sloc1_1_0 + 2)
178         movx    @dptr,a
179         inc     dptr
180         mov     a,(__divslong_sloc1_1_0 + 3)
181         movx    @dptr,a
182         push    ar2
183         mov     dpl,__divslong_sloc0_1_0
184         mov     dph,(__divslong_sloc0_1_0 + 1)
185         mov     b,(__divslong_sloc0_1_0 + 2)
186         mov     a,(__divslong_sloc0_1_0 + 3)
187         lcall   __divulong
188         mov     r3,dpl
189         mov     r4,dph
190         mov     r5,b
191         mov     r6,a
192         pop     ar2
193 ;       _divslong.c 31
194         push    ar3
195         push    ar4
196         push    ar5
197         push    ar6
198         mov     dptr,#__divslong_a_1_1
199         movx    a,@dptr
200         mov     r7,a
201         inc     dptr
202         movx    a,@dptr
203         mov     r0,a
204         inc     dptr
205         movx    a,@dptr
206         mov     r1,a
207         inc     dptr
208         movx    a,@dptr
209 ; Peephole 105   removed redundant mov
210         mov  r3,a
211         rlc     a
212         clr     a
213         rlc     a
214         mov     r7,a
215         mov     a,r2
216         xrl     a,ar7
217         pop     ar6
218         pop     ar5
219         pop     ar4
220         pop     ar3
221 ; Peephole 110   removed ljmp by inverse jump logic
222         jz  00102$
223 00115$:
224 ;       _divslong.c 32
225         clr     c
226         clr     a
227         subb    a,r3
228         mov     __divslong_sloc1_1_0,a
229         clr     a
230         subb    a,r4
231         mov     (__divslong_sloc1_1_0 + 1),a
232         clr     a
233         subb    a,r5
234         mov     (__divslong_sloc1_1_0 + 2),a
235         clr     a
236         subb    a,r6
237 ; Peephole 191   removed redundant mov
238         mov  (__divslong_sloc1_1_0 + 3),a
239         mov  dpl,__divslong_sloc1_1_0
240         mov  dph,(__divslong_sloc1_1_0 + 1)
241         mov  b,(__divslong_sloc1_1_0 + 2)
242 ; Peephole 132   changed ljmp to sjmp
243         sjmp 00104$
244 00102$:
245 ;       _divslong.c 34
246         mov     dpl,r3
247         mov     dph,r4
248         mov     b,r5
249         mov     a,r6
250 00104$:
251         C$_divslong.c$35$1$1 ==.
252         XG$_divslong$0$0 ==.
253         ret
254         .area   CSEG    (CODE)