Initial revision
[fw/sdcc] / device / lib / small / _strcpy.asm
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.1.9Ga Sun Jan 16 17:31:16 2000
4
5 ;--------------------------------------------------------
6         .module _strcpy
7 ;--------------------------------------------------------
8 ; publics variables in this module
9 ;--------------------------------------------------------
10         .globl _strcpy_PARM_2
11         .globl _strcpy
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 _DUMMY
26         .area   OSEG    (OVR,DATA)
27 _strcpy_PARM_2:
28         .ds     0x0003
29 _strcpy_d_1_1:
30         .ds     0x0003
31 ;--------------------------------------------------------
32 ; indirectly addressable internal ram data
33 ;--------------------------------------------------------
34         .area   ISEG    (DATA)
35 ;--------------------------------------------------------
36 ; bit data
37 ;--------------------------------------------------------
38         .area   BSEG    (BIT)
39 ;--------------------------------------------------------
40 ; external ram data
41 ;--------------------------------------------------------
42         .area   XSEG    (XDATA)
43 ;--------------------------------------------------------
44 ; global & static initialisations
45 ;--------------------------------------------------------
46         .area GSINIT (CODE)
47 ;--------------------------------------------------------
48 ; code
49 ;--------------------------------------------------------
50         .area CSEG (CODE)
51         G$strcpy$0$0 ==.
52 ;       _strcpy.c 27
53 ;       -----------------------------------------
54 ;        function strcpy
55 ;       -----------------------------------------
56 _strcpy:
57         ar2 = 0x02
58         ar3 = 0x03
59         ar4 = 0x04
60         ar5 = 0x05
61         ar6 = 0x06
62         ar7 = 0x07
63         ar0 = 0x00
64         ar1 = 0x01
65 ;       _strcpy.c 35
66         mov     _strcpy_d_1_1,dpl
67         mov     (_strcpy_d_1_1 + 1),dph
68         mov     (_strcpy_d_1_1 + 2),b
69 ;       _strcpy.c 33
70         mov     r5,_strcpy_d_1_1
71         mov     r6,(_strcpy_d_1_1 + 1)
72         mov     r7,(_strcpy_d_1_1 + 2)
73 00101$:
74         mov     ar3,r5
75         mov     ar4,r6
76         mov     ar2,r7
77         inc     r5
78         cjne    r5,#0x00,00108$
79         inc     r6
80 00108$:
81         mov     dpl,_strcpy_PARM_2
82         mov     dph,(_strcpy_PARM_2 + 1)
83         mov     b,(_strcpy_PARM_2 + 2)
84         inc     _strcpy_PARM_2
85         clr     a
86         cjne    a,_strcpy_PARM_2,00109$
87         inc     (_strcpy_PARM_2 + 1)
88 00109$:
89         lcall   __gptrget
90 ; Peephole 190   removed redundant mov
91 ; Peephole 191   removed redundant mov
92         mov  r0,a
93         mov  dpl,r3
94         mov  dph,r4
95         mov  b,r2
96         lcall __gptrput
97 ; Peephole 109   removed ljmp by inverse jump logic
98         jnz  00101$
99 00110$:
100 ;       _strcpy.c 35
101         mov     dpl,_strcpy_d_1_1
102         mov     dph,(_strcpy_d_1_1 + 1)
103         mov     b,(_strcpy_d_1_1 + 2)
104 00104$:
105         C$_strcpy.c$36$1$1 ==.
106         XG$strcpy$0$0 ==.
107         ret
108         .area   CSEG    (CODE)