]> git.sur5r.net Git - cc65/blob - libsrc/runtime/toslong.s
Added some 65C02 code.
[cc65] / libsrc / runtime / toslong.s
1 ;
2 ; Ullrich von Bassewitz, 25.10.2000
3 ;
4 ; CC65 runtime: Convert tos from int to long
5 ;
6
7         .export         tosulong, toslong
8         .import         decsp2
9         .importzp       sp
10
11 ; Convert TOS from int to long
12
13 tosulong:
14         pha
15         jsr     decsp2          ; Make room
16         ldy     #2
17         lda     (sp),y
18 .ifpc02
19         sta     (sp)            ; 65C02 version
20         iny                     ; Y = 3
21 .else
22         ldy     #0
23         sta     (sp),y
24         ldy     #3
25 .endif
26         lda     (sp),y
27         ldy     #1
28         sta     (sp),y
29         lda     #0              ; Zero extend
30 toslong2:
31         iny
32         sta     (sp),y
33         iny
34         sta     (sp),y
35         pla
36         rts
37
38 toslong:
39         pha
40         jsr     decsp2          ; Make room
41         ldy     #2
42         lda     (sp),y
43 .ifpc02
44         sta     (sp)            ; 65C02 version
45         iny                     ; Y = 3
46 .else
47         ldy     #0
48         sta     (sp),y
49         ldy     #3
50 .endif
51         lda     (sp),y
52         bmi     toslong1
53         ldy     #1
54         sta     (sp),y
55         lda     #$00            ; Positive, high word is zero
56         bne     toslong2
57 toslong1:
58         ldy     #1
59         sta     (sp),y
60         lda     #$FF
61         bne     toslong2
62