]> git.sur5r.net Git - cc65/blob - libsrc/runtime/lsub.s
2ade75e2e9475604a60c505ee4f3539143db5d81
[cc65] / libsrc / runtime / lsub.s
1 ;
2 ; Ullrich von Bassewitz, 05.08.1998
3 ;
4 ; CC65 runtime: long sub
5 ;
6
7 ;
8 ; EAX = TOS - EAX
9 ;
10         .export         tossubeax
11         .import         addysp1
12         .importzp       sp, sreg
13
14         .macpack        cpu
15
16 tossubeax:
17         sec
18         eor     #$FF
19 .if (.cpu .bitand CPU_ISET_65SC02)
20         adc     (sp)            ; 65SC02 version - saves 2 cycles
21         ldy     #1
22 .else
23         ldy     #0
24         adc     (sp),y          ; lo byte
25         iny
26 .endif
27         pha                     ; Save low byte
28         txa
29         eor     #$FF
30         adc     (sp),y          ; byte 1
31         tax
32         iny
33         lda     (sp),y
34         sbc     sreg            ; byte 2
35         sta     sreg
36         iny
37         lda     (sp),y
38         sbc     sreg+1          ; byte 3
39         sta     sreg+1
40         pla                     ; Restore byte 0
41         jmp     addysp1         ; Drop TOS
42