; CC65 runtime: long add
;
- .export tosaddeax
+ .export tosadd0ax, tosaddeax
.import addysp1
.importzp sp, sreg, tmp1
; EAX = TOS + EAX
+tosadd0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
+
tosaddeax:
clc
.if (.cpu .bitand CPU_ISET_65SC02)
; When negating values, we will ignore the possibility here, that one of the
; values if $80000000, in which case the negate will fail.
- .export tosdiveax
- .import poplsargs, udiv32, negeax
- .importzp ptr1, tmp1, tmp2
+ .export tosdiv0ax, tosdiveax
+ .import poplsargs, udiv32, negeax
+ .importzp sreg, ptr1, tmp1, tmp2
+
+tosdiv0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
tosdiveax:
jsr poplsargs ; Get arguments from stack, adjust sign
; When negating values, we will ignore the possibility here, that one of the
; values if $8000, in which case the negate will fail.
- .export tosmodeax
+ .export tosmod0ax, tosmodeax
.import poplsargs, udiv32, negeax
.importzp sreg, ptr1, ptr2, tmp1, tmp3, tmp4
-tosmodeax:
+tosmod0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
+
+tosmodeax:
jsr poplsargs ; Get arguments from stack, adjust sign
jsr udiv32 ; Do the division, remainder is in (ptr2:tmp3:tmp4)
; CC65 runtime: multiplication for long (unsigned) ints
;
- .export tosumuleax, tosmuleax
+ .export tosumul0ax, tosumuleax, tosmul0ax, tosmuleax
.import addysp1
.importzp sp, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4
+tosmul0ax:
+tosumul0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
+
tosmuleax:
tosumuleax:
mul32: sta ptr1
;
; EAX = TOS - EAX
;
- .export tossubeax
- .import addysp1
- .importzp sp, sreg
+ .export tossub0ax, tossubeax
+ .import addysp1
+ .importzp sp, sreg
.macpack cpu
+tossub0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
+
tossubeax:
sec
eor #$FF
; CC65 runtime: modulo operation for long unsigned ints
;
- .export tosumodeax
+ .export tosumod0ax, tosumodeax
.import getlop, udiv32
.importzp sreg, tmp3, tmp4, ptr2
+tosumod0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
+
tosumodeax:
jsr getlop ; Get the paramameters
jsr udiv32 ; Do the division