]> git.sur5r.net Git - cc65/blob - libsrc/common/copydata.s
Copy TGI drivers into main lib dir
[cc65] / libsrc / common / copydata.s
1 ;
2 ; Ullrich von Bassewitz, 07.12.1998
3 ;
4 ; Copy the data segment from the LOAD to the RUN location
5 ;
6
7         .export         copydata
8         .import         __DATA_LOAD__, __DATA_RUN__, __DATA_SIZE__
9         .importzp       ptr1, ptr2
10
11
12 copydata:
13         lda     #<__DATA_LOAD__ ; Source pointer
14         sta     ptr1
15         lda     #>__DATA_LOAD__
16         sta     ptr1+1
17
18         lda     #<__DATA_RUN__  ; Target pointer
19         sta     ptr2
20         lda     #>__DATA_RUN__
21         sta     ptr2+1
22
23         ldy     #$00
24         ldx     #>__DATA_SIZE__ ; Get page count
25         beq     @L2             ; No full pages
26
27 ; Copy full pages
28
29 @L1:    lda     (ptr1),y
30         sta     (ptr2),y
31         iny
32         bne     @L1
33         inc     ptr1+1
34         inc     ptr2+1          ; Bump pointers
35         dex
36         bne     @L1
37
38 ; Copy last page (remember: y contains zero)
39
40 @L2:    ldx     #<__DATA_SIZE__ ; Get remaining bytes
41         beq     @L4
42
43 @L3:    lda     (ptr1),y
44         sta     (ptr2),y
45         iny
46         dex
47         bne     @L3
48
49 ; Done
50
51 @L4:    rts
52
53