1
0
mirror of https://github.com/cc65/cc65.git synced 2025-04-05 13:37:17 +00:00

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
;
.export tosaddeax
.export tosadd0ax, tosaddeax
.import addysp1
.importzp sp, sreg, tmp1
@ -12,6 +12,11 @@
; EAX = TOS + EAX
tosadd0ax:
ldy #$00
sty sreg
sty sreg+1
tosaddeax:
clc
.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
; 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

View File

@ -7,11 +7,16 @@
; 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)

View File

@ -4,10 +4,16 @@
; 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

View File

@ -7,12 +7,17 @@
;
; 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

View File

@ -4,10 +4,15 @@
; 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