Added additional entry points that clear the high word of the right operand.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4023 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2009-08-15 20:58:35 +00:00
parent d0f9a0d6a7
commit b1f772e9be
6 changed files with 42 additions and 11 deletions

View File

@@ -4,7 +4,7 @@
; CC65 runtime: long add ; CC65 runtime: long add
; ;
.export tosaddeax .export tosadd0ax, tosaddeax
.import addysp1 .import addysp1
.importzp sp, sreg, tmp1 .importzp sp, sreg, tmp1
@@ -12,6 +12,11 @@
; EAX = TOS + EAX ; EAX = TOS + EAX
tosadd0ax:
ldy #$00
sty sreg
sty sreg+1
tosaddeax: tosaddeax:
clc clc
.if (.cpu .bitand CPU_ISET_65SC02) .if (.cpu .bitand CPU_ISET_65SC02)

View File

@@ -7,9 +7,14 @@
; When negating values, we will ignore the possibility here, that one of the ; When negating values, we will ignore the possibility here, that one of the
; values if $80000000, in which case the negate will fail. ; values if $80000000, in which case the negate will fail.
.export tosdiveax .export tosdiv0ax, tosdiveax
.import poplsargs, udiv32, negeax .import poplsargs, udiv32, negeax
.importzp ptr1, tmp1, tmp2 .importzp sreg, ptr1, tmp1, tmp2
tosdiv0ax:
ldy #$00
sty sreg
sty sreg+1
tosdiveax: tosdiveax:
jsr poplsargs ; Get arguments from stack, adjust sign jsr poplsargs ; Get arguments from stack, adjust sign

View File

@@ -7,10 +7,15 @@
; When negating values, we will ignore the possibility here, that one of the ; When negating values, we will ignore the possibility here, that one of the
; values if $8000, in which case the negate will fail. ; values if $8000, in which case the negate will fail.
.export tosmodeax .export tosmod0ax, tosmodeax
.import poplsargs, udiv32, negeax .import poplsargs, udiv32, negeax
.importzp sreg, ptr1, ptr2, tmp1, tmp3, tmp4 .importzp sreg, ptr1, ptr2, tmp1, tmp3, tmp4
tosmod0ax:
ldy #$00
sty sreg
sty sreg+1
tosmodeax: tosmodeax:
jsr poplsargs ; Get arguments from stack, adjust sign jsr poplsargs ; Get arguments from stack, adjust sign
jsr udiv32 ; Do the division, remainder is in (ptr2:tmp3:tmp4) jsr udiv32 ; Do the division, remainder is in (ptr2:tmp3:tmp4)

View File

@@ -4,10 +4,16 @@
; CC65 runtime: multiplication for long (unsigned) ints ; CC65 runtime: multiplication for long (unsigned) ints
; ;
.export tosumuleax, tosmuleax .export tosumul0ax, tosumuleax, tosmul0ax, tosmuleax
.import addysp1 .import addysp1
.importzp sp, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4 .importzp sp, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4
tosmul0ax:
tosumul0ax:
ldy #$00
sty sreg
sty sreg+1
tosmuleax: tosmuleax:
tosumuleax: tosumuleax:
mul32: sta ptr1 mul32: sta ptr1

View File

@@ -7,12 +7,17 @@
; ;
; EAX = TOS - EAX ; EAX = TOS - EAX
; ;
.export tossubeax .export tossub0ax, tossubeax
.import addysp1 .import addysp1
.importzp sp, sreg .importzp sp, sreg
.macpack cpu .macpack cpu
tossub0ax:
ldy #$00
sty sreg
sty sreg+1
tossubeax: tossubeax:
sec sec
eor #$FF eor #$FF

View File

@@ -4,10 +4,15 @@
; CC65 runtime: modulo operation for long unsigned ints ; CC65 runtime: modulo operation for long unsigned ints
; ;
.export tosumodeax .export tosumod0ax, tosumodeax
.import getlop, udiv32 .import getlop, udiv32
.importzp sreg, tmp3, tmp4, ptr2 .importzp sreg, tmp3, tmp4, ptr2
tosumod0ax:
ldy #$00
sty sreg
sty sreg+1
tosumodeax: tosumodeax:
jsr getlop ; Get the paramameters jsr getlop ; Get the paramameters
jsr udiv32 ; Do the division jsr udiv32 ; Do the division