]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/div.s
no TGI_ERR_NO_MEM or TGI_ERR_NO_IOCB anymore: replaced by TGI_ERR_NO_RES
[cc65] / libsrc / runtime / div.s
index b995b9e873ac1b03f1b8e494f6d7a7d57ab1127a..e419dedffcf08b8fe00717519db762932846958f 100644 (file)
@@ -8,15 +8,30 @@
 ; values if $8000, in which case the negate will fail.
 
                .export         tosdiva0, tosdivax
-       .import         popsargs, udiv16, adjsres
-       .importzp       sreg
+       .import         popsargs, udiv16, negax
+       .importzp       sreg, tmp1, tmp2
 
 tosdiva0:
        ldx     #0
 tosdivax:
        jsr     popsargs        ; Get arguments from stack, adjust sign
        jsr     udiv16          ; Do the division
-       lda     sreg            ; Result is in sreg, remainder in ptr1
-       ldx     sreg+1
-       jmp     adjsres         ; Adjust the sign of the result if needed
+        ldx     sreg+1          ; Load high byte of result
+
+; Adjust the sign of the result. tmp1 contains the high byte of the left
+; operand, tmp2 contains the high byte of the right operand.
+
+        lda     tmp1
+        eor     tmp2
+        bpl     Pos             ; Jump if sign of result positive
+
+; Result is negative
+
+        lda     sreg            ; Load low byte of result
+        jmp     negax           ; Adjust the sign
+
+; Result is positive
+
+Pos:    lda     sreg
+        rts