]> git.sur5r.net Git - cc65/blob - mod.s
9e2a73ed8e7324d8485b02b703153a744f056d8e
[cc65] / mod.s
1 ;
2 ; Ullrich von Bassewitz, 07.08.1998
3 ;
4 ; CC65 runtime: modulo operation for signed ints
5 ;
6
7 ; When negating values, we will ignore the possibility here, that one of the
8 ; values if $8000, in which case the negate will fail.
9
10         .export         tosmoda0, tosmodax
11         .import         popsargs, udiv16, adjsres
12         .importzp       ptr1
13
14 tosmoda0:
15         ldx     #0
16 tosmodax:
17         jsr     popsargs        ; Get arguments from stack, adjust sign
18         jsr     udiv16          ; Do the division
19         lda     ptr1            ; Result is in sreg, remainder in ptr1
20         ldx     ptr1+1
21         jmp     adjsres         ; Adjust the sign of the result if needed
22
23