3 ; 2002-10-22, Greg King
5 ; This signed-division function returns both the quotient and the remainder,
12 ; div_t __fastcall__ div (int numer, int denom);
17 .import tosdivax, negax
18 .importzp sreg, ptr1, tmp1
20 _div: jsr tosdivax ; Division-operator does most of the work
22 ldy sreg ; low byte remainder from sreg
23 sta sreg ; store low byte quotient to sreg
25 lda sreg+1 ; high byte remainder from sreg
26 stx sreg+1 ; store high byte quotient to sreg
28 tax ; high byte remainder to x
29 tya ; low byte remainder to a
31 ; Adjust the sign of the remainder.
32 ; It must be the same as the sign of the dividend.
34 bit tmp1 ; Load high-byte of left argument
35 bpl Pos ; Jump if sign-of-result is positive
36 jmp negax ; Result is negative, adjust the sign