fix for mantissa division

This commit is contained in:
FeralChild64 committed 2020-03-20 18:43:56 +01:00
1 parent b94a87a420
commit 0e538dd81d
1 file changed
+29 -16
+29 -16
View File
@@ -5,7 +5,7 @@
// Math package - mantissa division, based on code by Verz // Math package - mantissa division, based on code by Verz
// //
// divident: FAC2_mantissa, divisor: FAC1_mantissa, result: FAC2_mantissa, remainder: RESHO // divident: FAC2_mantissa, divisor: FAC1_mantissa, result: FAC2_mantissa, remainder: RESHO
// temporary storage: INDEX+0, INDEX+1, INDEX+2, INDEX+3 // temporary storage: INDEX+0, INDEX+1, INDEX+2, INDEX+3, .Y
// //
// RESHO (remainder) should be set to 0 before // RESHO (remainder) should be set to 0 before
// //
@@ -36,38 +36,51 @@ div_mantissas_loop:
rol RESHO+1 rol RESHO+1
rol RESHO+0 rol RESHO+0
// Subtract divisor to see if it fits in // Subtract divisor from the remainder, result to INDEX and .Y
lda RESHO+4
sec sec
lda RESHO+4
sbc FACOV
tay
lda RESHO+3
sbc FAC1_mantissa+3 sbc FAC1_mantissa+3
sta INDEX+3 sta INDEX+3
lda RESHO+3 lda RESHO+2
sbc FAC1_mantissa+2 sbc FAC1_mantissa+2
sta INDEX+2 sta INDEX+2
lda RESHO+2 lda RESHO+1
sbc FAC1_mantissa+1 sbc FAC1_mantissa+1
sta INDEX+1 sta INDEX+1
lda RESHO+1 lda RESHO+0
sbc FAC1_mantissa+0 sbc FAC1_mantissa+0
bcc div_mantissas_skip // if Carry is not set then divisor did not fit in remainder yet
sta INDEX+0 sta INDEX+0
lda RESHO+0 // Save subtraction result as new remainder
sbc #$00
bcc div_mantissas_skip // if Carry is not set then divisor did not fit in yet
sta RESHO+0 // else save substraction result as new remainder, tya
lda INDEX+0
sta RESHO+1
lda INDEX+1
sta RESHO+2
lda INDEX+3
sta RESHO+4 sta RESHO+4
inc FAC2_mantissa+3 // and INCrement result cause divisor fit in 1 times lda INDEX+3
sta RESHO+3
lda INDEX+2
sta RESHO+2
lda INDEX+1
sta RESHO+1
lda INDEX+0
sta RESHO+0
// Increment result cause divisor fit in 1 times
inc FAC2_mantissa+3
// FALLTROUGH // FALLTROUGH