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