]> git.sur5r.net Git - cc65/blob - libsrc/runtime/toslong.s
Fixed a bug
[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 toslong1:
28         ldy     #1
29         sta     (sp),y
30         lda     #0              ; Zero extend
31 toslong2:
32         iny
33         sta     (sp),y
34         iny
35         sta     (sp),y
36         pla
37         rts
38
39 toslong:
40         pha
41         jsr     decsp2          ; Make room
42         ldy     #2
43         lda     (sp),y
44 .ifpc02
45         sta     (sp)            ; 65C02 version
46         iny                     ; Y = 3
47 .else
48         ldy     #0
49         sta     (sp),y
50         ldy     #3
51 .endif
52         lda     (sp),y
53         bpl     toslong1        ; Jump if positive, high word is zero
54         ldy     #1
55         sta     (sp),y
56         lda     #$FF
57         bne     toslong2        ; Branch always
58